From 45a9605942f9e4641e47f7ac64807bd43028af7f Mon Sep 17 00:00:00 2001 From: Yutaka HARA Date: Tue, 29 Dec 2020 11:38:03 +0900 Subject: [PATCH] v1.5.2 --- CHANGELOG.md | 3 +- Gemfile.lock | 2 +- build/dxopal.js | 44668 +++++++++------- build/dxopal.min.js | 2 +- doc/api/DXOpal.html | 14 +- doc/api/DXOpal/Constants.html | 12 +- doc/api/DXOpal/Constants/Colors.html | 23 +- doc/api/DXOpal/Font.html | 25 +- doc/api/DXOpal/Image.html | 53 +- doc/api/DXOpal/Input.html | 140 +- doc/api/DXOpal/Input/KeyCodes.html | 36 +- doc/api/DXOpal/Input/MouseCodes.html | 12 +- doc/api/DXOpal/Input/Touch.html | 104 +- doc/api/DXOpal/RemoteResource.html | 40 +- doc/api/DXOpal/Sound.html | 16 +- doc/api/DXOpal/SoundEffect.html | 36 +- doc/api/DXOpal/SoundEffect/WaveTypes.html | 12 +- doc/api/DXOpal/Sprite.html | 28 +- doc/api/DXOpal/Sprite/CollisionArea.html | 25 +- doc/api/DXOpal/Sprite/CollisionArea/Base.html | 16 +- .../DXOpal/Sprite/CollisionArea/Circle.html | 16 +- .../DXOpal/Sprite/CollisionArea/Point.html | 14 +- doc/api/DXOpal/Sprite/CollisionArea/Rect.html | 14 +- .../DXOpal/Sprite/CollisionArea/Triangle.html | 14 +- doc/api/DXOpal/Sprite/CollisionCheck.html | 25 +- .../Sprite/CollisionCheck/ClassMethods.html | 53 +- doc/api/DXOpal/Sprite/Physics.html | 53 +- doc/api/DXOpal/Window.html | 18 +- doc/api/Kernel.html | 2 +- doc/api/_index.html | 14 +- doc/api/class_list.html | 4 +- doc/api/css/style.css | 5 +- doc/api/file.README.html | 43 +- doc/api/file_list.html | 4 +- doc/api/frames.html | 4 +- doc/api/index.html | 43 +- doc/api/js/app.js | 17 +- doc/api/method_list.html | 12 +- doc/api/top-level-namespace.html | 18 +- lib/dxopal/version.rb | 2 +- 40 files changed, 26702 insertions(+), 18940 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2b0841..d82a0fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ -## HEAD +## v1.5.2 (2020-12-29) +- Upgrade opal to 1.0 (#37) - fix: `mouse_release?` returns wrong value (#44) ## v1.5.1 (2020-02-01) diff --git a/Gemfile.lock b/Gemfile.lock index b513ee0..d46b629 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - dxopal (1.5.1) + dxopal (1.5.2) rack (~> 2.0) thor (~> 0.20) diff --git a/build/dxopal.js b/build/dxopal.js index f9ca308..52e8edb 100644 --- a/build/dxopal.js +++ b/build/dxopal.js @@ -51,27 +51,9 @@ // The actual Class class var Class; - // Constructor for instances of BasicObject - function BasicObject_alloc(){} - - // Constructor for instances of Object - function Object_alloc(){} - - // Constructor for instances of Class - function Class_alloc(){} - - // Constructor for instances of Module - function Module_alloc(){} - - // Constructor for instances of NilClass (nil) - function NilClass_alloc(){} - // The Opal object that is exposed globally var Opal = this.Opal = {}; - // All bridged classes - keep track to donate methods from Object - var BridgedClasses = {}; - // This is a useful reference to global object inside ruby files Opal.global = global_object; global_object.Opal = Opal; @@ -81,11 +63,14 @@ missing_require_severity: 'error', // error, warning, ignore unsupported_features_severity: 'warning', // error, warning, ignore enable_stack_trace: true // true, false - } + }; // Minify common function calls - var $hasOwn = Object.hasOwnProperty; - var $slice = Opal.slice = Array.prototype.slice; + var $hasOwn = Object.hasOwnProperty; + var $bind = Function.prototype.bind; + var $setPrototype = Object.setPrototypeOf; + var $slice = Array.prototype.slice; + var $splice = Array.prototype.splice; // Nil object id is always 4 var nil_id = 4; @@ -103,7 +88,11 @@ // Retrieve or assign the id of an object Opal.id = function(obj) { if (obj.$$is_number) return (obj * 2)+1; - return obj.$$id || (obj.$$id = Opal.uid()); + if (obj.$$id != null) { + return obj.$$id; + } + $defineProperty(obj, '$$id', Opal.uid()); + return obj.$$id; }; // Globals table @@ -120,7 +109,7 @@ // Pops an exception from the stack and updates `$!`. Opal.pop_exception = function() { Opal.gvars["!"] = Opal.exceptions.pop() || nil; - } + }; // Inspect any kind of object, including non Ruby ones Opal.inspect = function(obj) { @@ -136,8 +125,32 @@ else { return obj.$inspect(); } + }; + + function $defineProperty(object, name, initialValue) { + if (typeof(object) === "string") { + // Special case for: + // s = "string" + // def s.m; end + // String class is the only class that: + // + compiles to JS primitive + // + allows method definition directly on instances + // numbers, true, false and nil do not support it. + object[name] = initialValue; + } else { + Object.defineProperty(object, name, { + value: initialValue, + enumerable: false, + configurable: true, + writable: true + }); + } } + Opal.defineProperty = $defineProperty; + + Opal.slice = $slice; + // Truth // ----- @@ -220,13 +233,13 @@ if (cref === '::') cref = _Object; - if (!cref.$$is_a_module) { + if (!cref.$$is_module && !cref.$$is_class) { throw new Opal.TypeError(cref.toString() + " is not a class/module"); } result = const_get_name(cref, name); if (result != null) return result; result = const_missing(cref, name, skip_missing); if (result != null) return result; - } + }; // Look for the constant relative to a cref or call `#const_missing` (when the // constant is prefixed by `::`). @@ -237,12 +250,13 @@ if (cref === '::') cref = _Object; - if (!cref.$$is_a_module) { + if (!cref.$$is_module && !cref.$$is_class) { throw new Opal.TypeError(cref.toString() + " is not a class/module"); } if ((cache = cref.$$const_cache) == null) { - cache = cref.$$const_cache = Object.create(null); + $defineProperty(cref, '$$const_cache', Object.create(null)); + cache = cref.$$const_cache; } cached = cache[name]; @@ -266,7 +280,8 @@ var cref = nesting[0], result, current_version = Opal.const_cache_version, cache, cached; if ((cache = nesting.$$const_cache) == null) { - cache = nesting.$$const_cache = Object.create(null); + $defineProperty(nesting, '$$const_cache', Object.create(null)); + cache = nesting.$$const_cache; } cached = cache[name]; @@ -297,11 +312,19 @@ cref.$$const = (cref.$$const || Object.create(null)); cref.$$const[name] = value; + // Add a short helper to navigate constants manually. + // @example + // Opal.$$.Regexp.$$.IGNORECASE + cref.$$ = cref.$$const; + Opal.const_cache_version++; // Expose top level constants onto the Opal object if (cref === _Object) Opal[name] = value; + // Name new class directly onto current scope (Opal.Foo.Baz = klass) + $defineProperty(cref, name, value); + return value; }; @@ -364,38 +387,81 @@ // simply so that classes show up with nicely formatted names inside debuggers // in the web browser (or node/sprockets). // - // The `base` is the current `self` value where the class is being created + // The `scope` is the current `self` value where the class is being created // from. We use this to get the scope for where the class should be created. - // If `base` is an object (not a class/module), we simple get its class and - // use that as the base instead. + // If `scope` is an object (not a class/module), we simple get its class and + // use that as the scope instead. // - // @param base [Object] where the class is being created + // @param scope [Object] where the class is being created // @param superclass [Class,null] superclass of the new class (may be null) // @param id [String] the name of the class to be created // @param constructor [JS.Function] function to use as constructor // // @return new [Class] or existing ruby class // - Opal.klass = function(base, superclass, name, constructor) { - var klass, bridged, alloc; + Opal.allocate_class = function(name, superclass) { + var klass, constructor; - if (base == null) { - base = _Object; + if (superclass != null && superclass.$$bridge) { + // Inheritance from bridged classes requires + // calling original JS constructors + constructor = function() { + var args = $slice.call(arguments), + self = new ($bind.apply(superclass.$$constructor, [null].concat(args)))(); + + // and replacing a __proto__ manually + $setPrototype(self, klass.$$prototype); + return self; + } + } else { + constructor = function(){}; } - // If base is an object, use its class - if (!base.$$is_class && !base.$$is_module) { - base = base.$$class; + if (name) { + $defineProperty(constructor, 'displayName', '::'+name); } - // If the superclass is a function then we're bridging a native JS class - if (typeof(superclass) === 'function') { - bridged = superclass; - superclass = _Object; + klass = constructor; + + $defineProperty(klass, '$$name', name); + $defineProperty(klass, '$$constructor', constructor); + $defineProperty(klass, '$$prototype', constructor.prototype); + $defineProperty(klass, '$$const', {}); + $defineProperty(klass, '$$is_class', true); + $defineProperty(klass, '$$is_a_module', true); + $defineProperty(klass, '$$super', superclass); + $defineProperty(klass, '$$cvars', {}); + $defineProperty(klass, '$$own_included_modules', []); + $defineProperty(klass, '$$own_prepended_modules', []); + $defineProperty(klass, '$$ancestors', []); + $defineProperty(klass, '$$ancestors_cache_version', null); + + $defineProperty(klass.$$prototype, '$$class', klass); + + // By default if there are no singleton class methods + // __proto__ is Class.prototype + // Later singleton methods generate a singleton_class + // and inject it into ancestors chain + if (Opal.Class) { + $setPrototype(klass, Opal.Class.prototype); } + if (superclass != null) { + $setPrototype(klass.$$prototype, superclass.$$prototype); + + if (superclass.$$meta) { + // If superclass has metaclass then we have explicitely inherit it. + Opal.build_class_singleton_class(klass); + } + } + + return klass; + }; + + + function find_existing_class(scope, name) { // Try to find the class in the current scope - klass = const_get_name(base, name); + var klass = const_get_name(scope, name); // If the class exists in the scope, then we must use that if (klass) { @@ -404,268 +470,146 @@ throw Opal.TypeError.$new(name + " is not a class"); } - // Make sure existing class has same superclass - if (superclass && klass.$$super !== superclass) { - throw Opal.TypeError.$new("superclass mismatch for class " + name); - } - return klass; } + } - // Class doesnt exist, create a new one with given superclass... - - // Not specifying a superclass means we can assume it to be Object - if (superclass == null) { - superclass = _Object; + function ensureSuperclassMatch(klass, superclass) { + if (klass.$$super !== superclass) { + throw Opal.TypeError.$new("superclass mismatch for class " + klass.$$name); } + } - // If bridged the JS class will also be the alloc function - alloc = bridged || Opal.boot_class_alloc(name, constructor, superclass); - - // Create the class object (instance of Class) - klass = Opal.setup_class_object(name, alloc, superclass.$$name, superclass.constructor); - - // @property $$super the superclass, doesn't get changed by module inclusions - klass.$$super = superclass; + Opal.klass = function(scope, superclass, name) { + var bridged; - // @property $$parent direct parent class - // starts with the superclass, after klass inclusion is - // the last included klass - klass.$$parent = superclass; + if (scope == null) { + // Global scope + scope = _Object; + } else if (!scope.$$is_class && !scope.$$is_module) { + // Scope is an object, use its class + scope = scope.$$class; + } - Opal.const_set(base, name, klass); + // If the superclass is not an Opal-generated class then we're bridging a native JS class + if (superclass != null && !superclass.hasOwnProperty('$$is_class')) { + bridged = superclass; + superclass = _Object; + } - // Name new class directly onto current scope (Opal.Foo.Baz = klass) - base[name] = klass; + var klass = find_existing_class(scope, name); - if (bridged) { - Opal.bridge(klass, alloc); - } - else { - // Call .inherited() hook with new class on the superclass - if (superclass.$inherited) { - superclass.$inherited(klass); + if (klass) { + if (superclass) { + // Make sure existing class has same superclass + ensureSuperclassMatch(klass, superclass); } + return klass; } - return klass; - }; + // Class doesn't exist, create a new one with given superclass... - // Boot a base class (makes instances). - // - // @param name [String,null] the class name - // @param constructor [JS.Function] the class' instances constructor/alloc function - // @param superclass [Class,null] the superclass object - // @return [JS.Function] the consturctor holding the prototype for the class' instances - Opal.boot_class_alloc = function(name, constructor, superclass) { - if (superclass) { - var alloc_proxy = function() {}; - alloc_proxy.prototype = superclass.$$proto || superclass.prototype; - constructor.prototype = new alloc_proxy(); - } - - if (name) { - constructor.displayName = name+'_alloc'; + // Not specifying a superclass means we can assume it to be Object + if (superclass == null) { + superclass = _Object; } - constructor.prototype.constructor = constructor; - - return constructor; - }; - - Opal.setup_module_or_class = function(module) { - // @property $$id Each class/module is assigned a unique `id` that helps - // comparation and implementation of `#object_id` - module.$$id = Opal.uid(); - - // @property $$is_a_module Will be true for Module and its subclasses - // instances (namely: Class). - module.$$is_a_module = true; - - // @property $$inc included modules - module.$$inc = []; - - // initialize the name with nil - module.$$name = nil; - - // Initialize the constants table - module.$$const = Object.create(null); - - // @property $$cvars class variables defined in the current module - module.$$cvars = Object.create(null); - } - - - - // Adds common/required properties to class object (as in `Class.new`) - // - // @param name [String,null] The name of the class - // - // @param alloc [JS.Function] The constructor of the class' instances - // - // @param superclass_name [String,null] - // The name of the super class, this is - // usefule to build the `.displayName` of the singleton class - // - // @param superclass_alloc [JS.Function] - // The constructor of the superclass from which the singleton_class is - // derived. - // - // @return [Class] - Opal.setup_class_object = function(name, alloc, superclass_name, superclass_alloc) { - // Grab the superclass prototype and use it to build an intermediary object - // in the prototype chain. - var superclass_alloc_proxy = function() {}; - superclass_alloc_proxy.prototype = superclass_alloc.prototype; - superclass_alloc_proxy.displayName = superclass_name; - - var singleton_class_alloc = function() {} - singleton_class_alloc.prototype = new superclass_alloc_proxy(); - - // The built class is the only instance of its singleton_class - var klass = new singleton_class_alloc(); - - Opal.setup_module_or_class(klass); - - // @property $$alloc This is the constructor of instances of the current - // class. Its prototype will be used for method lookup - klass.$$alloc = alloc; - - klass.$$name = name || nil; - - // Set a displayName for the singleton_class - singleton_class_alloc.displayName = "#"))+">"; - - // @property $$proto This is the prototype on which methods will be defined - klass.$$proto = alloc.prototype; - - // @property $$proto.$$class Make available to instances a reference to the - // class they belong to. - klass.$$proto.$$class = klass; - - // @property constructor keeps a ref to the constructor, but apparently the - // constructor is already set on: - // - // `var klass = new constructor` is called. - // - // Maybe there are some browsers not abiding (IE6?) - klass.constructor = singleton_class_alloc; + // Create the class object (instance of Class) + klass = Opal.allocate_class(name, superclass); + Opal.const_set(scope, name, klass); - // @property $$is_class Clearly mark this as a class - klass.$$is_class = true; + // Call .inherited() hook with new class on the superclass + if (superclass.$inherited) { + superclass.$inherited(klass); + } - // @property $$class Classes are instances of the class Class - klass.$$class = Class; + if (bridged) { + Opal.bridge(bridged, klass); + } return klass; }; - // Define new module (or return existing module). The given `base` is basically + // Define new module (or return existing module). The given `scope` is basically // the current `self` value the `module` statement was defined in. If this is - // a ruby module or class, then it is used, otherwise if the base is a ruby - // object then that objects real ruby class is used (e.g. if the base is the - // main object, then the top level `Object` class is used as the base). + // a ruby module or class, then it is used, otherwise if the scope is a ruby + // object then that objects real ruby class is used (e.g. if the scope is the + // main object, then the top level `Object` class is used as the scope). // - // If a module of the given name is already defined in the base, then that + // If a module of the given name is already defined in the scope, then that // instance is just returned. // - // If there is a class of the given name in the base, then an error is - // generated instead (cannot have a class and module of same name in same base). + // If there is a class of the given name in the scope, then an error is + // generated instead (cannot have a class and module of same name in same scope). // - // Otherwise, a new module is created in the base with the given name, and that + // Otherwise, a new module is created in the scope with the given name, and that // new instance is returned back (to be referenced at runtime). // - // @param base [Module, Class] class or module this definition is inside + // @param scope [Module, Class] class or module this definition is inside // @param id [String] the name of the new (or existing) module // // @return [Module] - Opal.module = function(base, name) { - var module; - - if (base == null) { - base = _Object; + Opal.allocate_module = function(name) { + var constructor = function(){}; + if (name) { + $defineProperty(constructor, 'displayName', name+'.$$constructor'); } - if (!base.$$is_class && !base.$$is_module) { - base = base.$$class; - } + var module = constructor; + + if (name) + $defineProperty(constructor, 'displayName', name+'.constructor'); + + $defineProperty(module, '$$name', name); + $defineProperty(module, '$$prototype', constructor.prototype); + $defineProperty(module, '$$const', {}); + $defineProperty(module, '$$is_module', true); + $defineProperty(module, '$$is_a_module', true); + $defineProperty(module, '$$cvars', {}); + $defineProperty(module, '$$iclasses', []); + $defineProperty(module, '$$own_included_modules', []); + $defineProperty(module, '$$own_prepended_modules', []); + $defineProperty(module, '$$ancestors', [module]); + $defineProperty(module, '$$ancestors_cache_version', null); + + $setPrototype(module, Opal.Module.prototype); + + return module; + }; - module = const_get_name(base, name); - if (module == null && base === _Object) module = const_lookup_ancestors(_Object, name); + function find_existing_module(scope, name) { + var module = const_get_name(scope, name); + if (module == null && scope === _Object) module = const_lookup_ancestors(_Object, name); if (module) { if (!module.$$is_module && module !== _Object) { throw Opal.TypeError.$new(name + " is not a module"); } } - else { - module = Opal.module_allocate(Module); - Opal.const_set(base, name, module); - } return module; - }; - - // The implementation for Module#initialize - // @param module [Module] - // @param block [Proc,nil] - // @return nil - Opal.module_initialize = function(module, block) { - if (block !== nil) { - var block_self = block.$$s; - block.$$s = null; - block.call(module); - block.$$s = block_self; - } - return nil; - }; - - // Internal function to create a new module instance. This simply sets up - // the prototype hierarchy and method tables. - // - Opal.module_allocate = function(superclass) { - var mtor = function() {}; - mtor.prototype = superclass.$$alloc.prototype; - - var module_constructor = function() {}; - module_constructor.prototype = new mtor(); - - var module = new module_constructor(); - var module_prototype = {}; - - Opal.setup_module_or_class(module); - - // initialize dependency tracking - module.$$included_in = []; - - // Set the display name of the singleton prototype holder - module_constructor.displayName = "#>" + } - // @property $$proto This is the prototype on which methods will be defined - module.$$proto = module_prototype; + Opal.module = function(scope, name) { + var module; - // @property constructor - // keeps a ref to the constructor, but apparently the - // constructor is already set on: - // - // `var module = new constructor` is called. - // - // Maybe there are some browsers not abiding (IE6?) - module.constructor = module_constructor; + if (scope == null) { + // Global scope + scope = _Object; + } else if (!scope.$$is_class && !scope.$$is_module) { + // Scope is an object, use its class + scope = scope.$$class; + } - // @property $$is_module Clearly mark this as a module - module.$$is_module = true; - module.$$class = Module; + module = find_existing_module(scope, name); - // @property $$super - // the superclass, doesn't get changed by module inclusions - module.$$super = superclass; + if (module) { + return module; + } - // @property $$parent - // direct parent class or module - // starts with the superclass, after module inclusion is - // the last included module - module.$$parent = superclass; + // Module doesnt exist, create a new one... + module = Opal.allocate_module(name); + Opal.const_set(scope, name, module); return module; }; @@ -686,11 +630,13 @@ return object.$$meta; } - if (object.$$is_class || object.$$is_module) { + if (object.hasOwnProperty('$$is_class')) { return Opal.build_class_singleton_class(object); + } else if (object.hasOwnProperty('$$is_module')) { + return Opal.build_module_singletin_class(object); + } else { + return Opal.build_object_singleton_class(object); } - - return Opal.build_object_singleton_class(object); }; // Build the singleton class for an existing class. Class object are built @@ -702,30 +648,45 @@ // // @param klass [Class] // @return [Class] - Opal.build_class_singleton_class = function(object) { - var alloc, superclass, klass; + Opal.build_class_singleton_class = function(klass) { + var superclass, meta; - if (object.$$meta) { - return object.$$meta; + if (klass.$$meta) { + return klass.$$meta; } - // The constructor and prototype of the singleton_class instances is the - // current class constructor and prototype. - alloc = object.constructor; - // The singleton_class superclass is the singleton_class of its superclass; // but BasicObject has no superclass (its `$$super` is null), thus we // fallback on `Class`. - superclass = object === BasicObject ? Class : Opal.build_class_singleton_class(object.$$super); + superclass = klass === BasicObject ? Class : Opal.get_singleton_class(klass.$$super); - klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor); - klass.$$super = superclass; - klass.$$parent = superclass; + meta = Opal.allocate_class(null, superclass, function(){}); - klass.$$is_singleton = true; - klass.$$singleton_of = object; + $defineProperty(meta, '$$is_singleton', true); + $defineProperty(meta, '$$singleton_of', klass); + $defineProperty(klass, '$$meta', meta); + $setPrototype(klass, meta.$$prototype); + // Restoring ClassName.class + $defineProperty(klass, '$$class', Opal.Class); - return object.$$meta = klass; + return meta; + }; + + Opal.build_module_singletin_class = function(mod) { + if (mod.$$meta) { + return mod.$$meta; + } + + var meta = Opal.allocate_class(null, Opal.Module, function(){}); + + $defineProperty(meta, '$$is_singleton', true); + $defineProperty(meta, '$$singleton_of', mod); + $defineProperty(mod, '$$meta', meta); + $setPrototype(mod, meta.$$prototype); + // Restoring ModuleName.class + $defineProperty(mod, '$$class', Opal.Module); + + return meta; }; // Build the singleton class for a Ruby (non class) Object. @@ -734,20 +695,97 @@ // @return [Class] Opal.build_object_singleton_class = function(object) { var superclass = object.$$class, - name = "#>"; + klass = Opal.allocate_class(nil, superclass, function(){}); + + $defineProperty(klass, '$$is_singleton', true); + $defineProperty(klass, '$$singleton_of', object); + + delete klass.$$prototype.$$class; + + $defineProperty(object, '$$meta', klass); + + $setPrototype(object, object.$$meta.$$prototype); + + return klass; + }; + + Opal.is_method = function(prop) { + return (prop[0] === '$' && prop[1] !== '$'); + }; + + Opal.instance_methods = function(mod) { + var exclude = [], results = [], ancestors = Opal.ancestors(mod); + + for (var i = 0, l = ancestors.length; i < l; i++) { + var ancestor = ancestors[i], + proto = ancestor.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + var props = Object.getOwnPropertyNames(proto); + + for (var j = 0, ll = props.length; j < ll; j++) { + var prop = props[j]; - var alloc = Opal.boot_class_alloc(name, function(){}, superclass) - var klass = Opal.setup_class_object(name, alloc, superclass.$$name, superclass.constructor); + if (Opal.is_method(prop)) { + var method_name = prop.slice(1), + method = proto[prop]; - klass.$$super = superclass; - klass.$$parent = superclass; - klass.$$class = superclass.$$class; - klass.$$proto = object; + if (method.$$stub && exclude.indexOf(method_name) === -1) { + exclude.push(method_name); + } + + if (!method.$$stub && results.indexOf(method_name) === -1 && exclude.indexOf(method_name) === -1) { + results.push(method_name); + } + } + } + } + + return results; + }; + + Opal.own_instance_methods = function(mod) { + var results = [], + proto = mod.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } - klass.$$is_singleton = true; - klass.$$singleton_of = object; + var props = Object.getOwnPropertyNames(proto); + + for (var i = 0, length = props.length; i < length; i++) { + var prop = props[i]; + + if (Opal.is_method(prop)) { + var method = proto[prop]; + + if (!method.$$stub) { + var method_name = prop.slice(1); + results.push(method_name); + } + } + } + + return results; + }; + + Opal.methods = function(obj) { + return Opal.instance_methods(Opal.get_singleton_class(obj)); + }; - return object.$$meta = klass; + Opal.own_methods = function(obj) { + return Opal.own_instance_methods(Opal.get_singleton_class(obj)); + }; + + Opal.receiver_methods = function(obj) { + var mod = Opal.get_singleton_class(obj); + var singleton_methods = Opal.own_instance_methods(mod); + var instance_methods = Opal.own_instance_methods(mod.$$super); + return singleton_methods.concat(instance_methods); }; // Returns an object containing all pairs of names/values @@ -770,7 +808,7 @@ } return result; - } + }; // Sets class variable with specified +name+ to +value+ // in provided +module+ @@ -794,111 +832,52 @@ module.$$cvars[name] = value; return value; - } - - // Bridges a single method. - // - // @param target [JS::Function] the constructor of the bridged class - // @param from [Module] the module/class we are importing the method from - // @param name [String] the method name in JS land (i.e. starting with $) - // @param body [JS::Function] the body of the method - Opal.bridge_method = function(target_constructor, from, name, body) { - var ancestors, i, ancestor, length; - - ancestors = target_constructor.$$bridge.$ancestors(); + }; - // order important here, we have to check for method presence in - // ancestors from the bridged class to the last ancestor - for (i = 0, length = ancestors.length; i < length; i++) { - ancestor = ancestors[i]; + function isRoot(proto) { + return proto.hasOwnProperty('$$iclass') && proto.hasOwnProperty('$$root'); + } - if ($hasOwn.call(ancestor.$$proto, name) && - ancestor.$$proto[name] && - !ancestor.$$proto[name].$$donated && - !ancestor.$$proto[name].$$stub && - ancestor !== from) { - break; - } + function own_included_modules(module) { + var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); - if (ancestor === from) { - target_constructor.prototype[name] = body + while (proto) { + if (proto.hasOwnProperty('$$class')) { + // superclass break; } - } - }; - - // Bridges from *donator* to a *target*. - // - // @param target [Module] the potentially associated with bridged classes module - // @param donator [Module] the module/class source of the methods that should be bridged - Opal.bridge_methods = function(target, donator) { - var i, - bridged = BridgedClasses[target.$__id__()], - donator_id = donator.$__id__(); - - if (bridged) { - BridgedClasses[donator_id] = bridged.slice(); - - for (i = bridged.length - 1; i >= 0; i--) { - Opal_bridge_methods_to_constructor(bridged[i], donator) + mod = protoToModule(proto); + if (mod) { + result.push(mod); } + proto = Object.getPrototypeOf(proto); } - }; - - // Actually bridge methods to the bridged (shared) prototype. - function Opal_bridge_methods_to_constructor(target_constructor, donator) { - var i, - method, - methods = donator.$instance_methods(); - for (i = methods.length - 1; i >= 0; i--) { - method = '$' + methods[i]; - Opal.bridge_method(target_constructor, donator, method, donator.$$proto[method]); - } + return result; } - // Associate the target as a bridged class for the current "donator" - function Opal_add_bridged_constructor(target_constructor, donator) { - var donator_id = donator.$__id__(); + function own_prepended_modules(module) { + var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); - if (!BridgedClasses[donator_id]) { - BridgedClasses[donator_id] = []; - } - BridgedClasses[donator_id].push(target_constructor); - } - - // Walks the dependency tree detecting the presence of the base among its - // own dependencies. - // - // @param [Integer] base_id The id of the base module (eg. the "includer") - // @param [Array] deps The array of dependencies (eg. the included module, included.$$deps) - // @param [String] prop The property that holds dependencies (eg. "$$deps") - // @param [JS::Object] seen A JS object holding the cache of already visited objects - // @return [Boolean] true if a cyclic dependency is present - Opal.has_cyclic_dep = function has_cyclic_dep(base_id, deps, prop, seen) { - var i, dep_id, dep; - - for (i = deps.length - 1; i >= 0; i--) { - dep = deps[i]; - dep_id = dep.$$id; - - if (seen[dep_id]) { - continue; - } - seen[dep_id] = true; + if (module.$$prototype.hasOwnProperty('$$dummy')) { + while (proto) { + if (proto === module.$$prototype.$$define_methods_on) { + break; + } - if (dep_id === base_id) { - return true; - } + mod = protoToModule(proto); + if (mod) { + result.push(mod); + } - if (has_cyclic_dep(base_id, dep[prop], prop, seen)) { - return true; + proto = Object.getPrototypeOf(proto); } } - return false; + return result; } + // The actual inclusion of a module into a class. // // ## Class `$$parent` and `iclass` @@ -918,47 +897,240 @@ // @param includer [Module] the target class to include module into // @return [null] Opal.append_features = function(module, includer) { - var iclass, donator, prototype, methods, id, i; + var module_ancestors = Opal.ancestors(module); + var iclasses = []; - // check if this module is already included in the class - for (i = includer.$$inc.length - 1; i >= 0; i--) { - if (includer.$$inc[i] === module) { - return; - } + if (module_ancestors.indexOf(includer) !== -1) { + throw Opal.ArgumentError.$new('cyclic include detected'); } - // Check that the base module is not also a dependency, classes can't be - // dependencies so we have a special case for them. - if (!includer.$$is_class && Opal.has_cyclic_dep(includer.$$id, [module], '$$inc', {})) { - throw Opal.ArgumentError.$new('cyclic include detected') + for (var i = 0, length = module_ancestors.length; i < length; i++) { + var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); + $defineProperty(iclass, '$$included', true); + iclasses.push(iclass); } + var includer_ancestors = Opal.ancestors(includer), + chain = chain_iclasses(iclasses), + start_chain_after, + end_chain_on; + + if (includer_ancestors.indexOf(module) === -1) { + // first time include + + // includer -> chain.first -> ...chain... -> chain.last -> includer.parent + start_chain_after = includer.$$prototype; + end_chain_on = Object.getPrototypeOf(includer.$$prototype); + } else { + // The module has been already included, + // we don't need to put it into the ancestors chain again, + // but this module may have new included modules. + // If it's true we need to copy them. + // + // The simplest way is to replace ancestors chain from + // parent + // | + // `module` iclass (has a $$root flag) + // | + // ...previos chain of module.included_modules ... + // | + // "next ancestor" (has a $$root flag or is a real class) + // + // to + // parent + // | + // `module` iclass (has a $$root flag) + // | + // ...regenerated chain of module.included_modules + // | + // "next ancestor" (has a $$root flag or is a real class) + // + // because there are no intermediate classes between `parent` and `next ancestor`. + // It doesn't break any prototypes of other objects as we don't change class references. + + var proto = includer.$$prototype, parent = proto, module_iclass = Object.getPrototypeOf(parent); + + while (module_iclass != null) { + if (isRoot(module_iclass) && module_iclass.$$module === module) { + break; + } + + parent = module_iclass; + module_iclass = Object.getPrototypeOf(module_iclass); + } + + var next_ancestor = Object.getPrototypeOf(module_iclass); + + // skip non-root iclasses (that were recursively included) + while (next_ancestor.hasOwnProperty('$$iclass') && !isRoot(next_ancestor)) { + next_ancestor = Object.getPrototypeOf(next_ancestor); + } + + start_chain_after = parent; + end_chain_on = next_ancestor; + } + + $setPrototype(start_chain_after, chain.first); + $setPrototype(chain.last, end_chain_on); + + // recalculate own_included_modules cache + includer.$$own_included_modules = own_included_modules(includer); Opal.const_cache_version++; - includer.$$inc.push(module); - module.$$included_in.push(includer); - Opal.bridge_methods(includer, module); - - // iclass - iclass = { - $$name: module.$$name, - $$proto: module.$$proto, - $$parent: includer.$$parent, - $$module: module, - $$iclass: true - }; + }; + + Opal.prepend_features = function(module, prepender) { + // Here we change the ancestors chain from + // + // prepender + // | + // parent + // + // to: + // + // dummy(prepender) + // | + // iclass(module) + // | + // iclass(prepender) + // | + // parent + var module_ancestors = Opal.ancestors(module); + var iclasses = []; + + if (module_ancestors.indexOf(prepender) !== -1) { + throw Opal.ArgumentError.$new('cyclic prepend detected'); + } + + for (var i = 0, length = module_ancestors.length; i < length; i++) { + var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); + $defineProperty(iclass, '$$prepended', true); + iclasses.push(iclass); + } + + var chain = chain_iclasses(iclasses), + dummy_prepender = prepender.$$prototype, + previous_parent = Object.getPrototypeOf(dummy_prepender), + prepender_iclass, + start_chain_after, + end_chain_on; + + if (dummy_prepender.hasOwnProperty('$$dummy')) { + // The module already has some prepended modules + // which means that we don't need to make it "dummy" + prepender_iclass = dummy_prepender.$$define_methods_on; + } else { + // Making the module "dummy" + prepender_iclass = create_dummy_iclass(prepender); + flush_methods_in(prepender); + $defineProperty(dummy_prepender, '$$dummy', true); + $defineProperty(dummy_prepender, '$$define_methods_on', prepender_iclass); + + // Converting + // dummy(prepender) -> previous_parent + // to + // dummy(prepender) -> iclass(prepender) -> previous_parent + $setPrototype(dummy_prepender, prepender_iclass); + $setPrototype(prepender_iclass, previous_parent); + } - includer.$$parent = iclass; + var prepender_ancestors = Opal.ancestors(prepender); - methods = module.$instance_methods(); + if (prepender_ancestors.indexOf(module) === -1) { + // first time prepend - for (i = methods.length - 1; i >= 0; i--) { - Opal.update_includer(module, includer, '$' + methods[i]) + start_chain_after = dummy_prepender; + + // next $$root or prepender_iclass or non-$$iclass + end_chain_on = Object.getPrototypeOf(dummy_prepender); + while (end_chain_on != null) { + if ( + end_chain_on.hasOwnProperty('$$root') || + end_chain_on === prepender_iclass || + !end_chain_on.hasOwnProperty('$$iclass') + ) { + break; + } + + end_chain_on = Object.getPrototypeOf(end_chain_on); + } + } else { + throw Opal.RuntimeError.$new("Prepending a module multiple times is not supported"); } + + $setPrototype(start_chain_after, chain.first); + $setPrototype(chain.last, end_chain_on); + + // recalculate own_prepended_modules cache + prepender.$$own_prepended_modules = own_prepended_modules(prepender); + + Opal.const_cache_version++; }; - // Table that holds all methods that have been defined on all objects - // It is used for defining method stubs for new coming native classes - Opal.stubs = {}; + function flush_methods_in(module) { + var proto = module.$$prototype, + props = Object.getOwnPropertyNames(proto); + + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (Opal.is_method(prop)) { + delete proto[prop]; + } + } + } + + function create_iclass(module) { + var iclass = create_dummy_iclass(module); + + if (module.$$is_module) { + module.$$iclasses.push(iclass); + } + + return iclass; + } + + // Dummy iclass doesn't receive updates when the module gets a new method. + function create_dummy_iclass(module) { + var iclass = {}, + proto = module.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + var props = Object.getOwnPropertyNames(proto), + length = props.length, i; + + for (i = 0; i < length; i++) { + var prop = props[i]; + $defineProperty(iclass, prop, proto[prop]); + } + + $defineProperty(iclass, '$$iclass', true); + $defineProperty(iclass, '$$module', module); + + return iclass; + } + + function chain_iclasses(iclasses) { + var length = iclasses.length, first = iclasses[0]; + + $defineProperty(first, '$$root', true); + + if (length === 1) { + return { first: first, last: first }; + } + + var previous = first; + + for (var i = 1; i < length; i++) { + var current = iclasses[i]; + $setPrototype(previous, current); + previous = current; + } + + + return { first: iclasses[0], last: iclasses[length - 1] }; + } // For performance, some core Ruby classes are toll-free bridged to their // native JavaScript counterparts (e.g. a Ruby Array is a JavaScript Array). @@ -966,7 +1138,7 @@ // This method is used to setup a native constructor (e.g. Array), to have // its prototype act like a normal Ruby class. Firstly, a new Ruby class is // created using the native constructor so that its prototype is set as the - // target for th new class. Note: all bridged classes are set to inherit + // target for the new class. Note: all bridged classes are set to inherit // from Object. // // Example: @@ -977,127 +1149,88 @@ // @param constructor [JS.Function] native JavaScript constructor to use // @return [Class] returns the passed Ruby class // - Opal.bridge = function(klass, constructor) { - if (constructor.$$bridge) { + Opal.bridge = function(native_klass, klass) { + if (native_klass.hasOwnProperty('$$bridge')) { throw Opal.ArgumentError.$new("already bridged"); } - Opal.stub_subscribers.push(constructor.prototype); - - // Populate constructor with previously stored stubs - for (var method_name in Opal.stubs) { - if (!(method_name in constructor.prototype)) { - constructor.prototype[method_name] = Opal.stub_for(method_name); - } - } + var klass_to_inject, klass_reference; - constructor.prototype.$$class = klass; - constructor.$$bridge = klass; + klass_to_inject = klass.$$super || Opal.Object; + klass_reference = klass; + var original_prototype = klass.$$prototype; - var ancestors = klass.$ancestors(); - - // order important here, we have to bridge from the last ancestor to the - // bridged class - for (var i = ancestors.length - 1; i >= 0; i--) { - Opal_add_bridged_constructor(constructor, ancestors[i]); - Opal_bridge_methods_to_constructor(constructor, ancestors[i]); - } - - for (var name in BasicObject_alloc.prototype) { - var method = BasicObject_alloc.prototype[method]; - - if (method && method.$$stub && !(name in constructor.prototype)) { - constructor.prototype[name] = method; - } - } + // constructor is a JS function with a prototype chain like: + // - constructor + // - super + // + // What we need to do is to inject our class (with its prototype chain) + // between constructor and super. For example, after injecting ::Object + // into JS String we get: + // + // - constructor (window.String) + // - Opal.Object + // - Opal.Kernel + // - Opal.BasicObject + // - super (window.Object) + // - null + // + $defineProperty(native_klass, '$$bridge', klass); + $setPrototype(native_klass.prototype, (klass.$$super || Opal.Object).$$prototype); + $defineProperty(klass, '$$prototype', native_klass.prototype); - return klass; + $defineProperty(klass.$$prototype, '$$class', klass); + $defineProperty(klass, '$$constructor', native_klass); + $defineProperty(klass, '$$bridge', true); }; - // Update `jsid` method cache of all classes / modules including `module`. - Opal.update_includer = function(module, includer, jsid) { - var dest, current, body, - klass_includees, j, jj, current_owner_index, module_index; - - body = module.$$proto[jsid]; - dest = includer.$$proto; - current = dest[jsid]; - - if (dest.hasOwnProperty(jsid) && !current.$$donated && !current.$$stub) { - // target class has already defined the same method name - do nothing + function protoToModule(proto) { + if (proto.hasOwnProperty('$$dummy')) { + return; + } else if (proto.hasOwnProperty('$$iclass')) { + return proto.$$module; + } else if (proto.hasOwnProperty('$$class')) { + return proto.$$class; } - else if (dest.hasOwnProperty(jsid) && !current.$$stub) { - // target class includes another module that has defined this method - klass_includees = includer.$$inc; + } - for (j = 0, jj = klass_includees.length; j < jj; j++) { - if (klass_includees[j] === current.$$donated) { - current_owner_index = j; - } - if (klass_includees[j] === module) { - module_index = j; - } - } + function own_ancestors(module) { + return module.$$own_prepended_modules.concat([module]).concat(module.$$own_included_modules); + } - // only redefine method on class if the module was included AFTER - // the module which defined the current method body. Also make sure - // a module can overwrite a method it defined before - if (current_owner_index <= module_index) { - dest[jsid] = body; - dest[jsid].$$donated = module; - } - } - else { - // neither a class, or module included by class, has defined method - dest[jsid] = body; - dest[jsid].$$donated = module; - } + // The Array of ancestors for a given module/class + Opal.ancestors = function(module) { + if (!module) { return []; } - // if the includer is a module, recursively update all of its includres. - if (includer.$$included_in) { - Opal.update_includers(includer, jsid); + if (module.$$ancestors_cache_version === Opal.const_cache_version) { + return module.$$ancestors; } - }; - - // Update `jsid` method cache of all classes / modules including `module`. - Opal.update_includers = function(module, jsid) { - var i, ii, includee, included_in; - included_in = module.$$included_in; + var result = [], i, mods, length; - if (!included_in) { - return; + for (i = 0, mods = own_ancestors(module), length = mods.length; i < length; i++) { + result.push(mods[i]); } - for (i = 0, ii = included_in.length; i < ii; i++) { - includee = included_in[i]; - Opal.update_includer(module, includee, jsid); + if (module.$$super) { + for (i = 0, mods = Opal.ancestors(module.$$super), length = mods.length; i < length; i++) { + result.push(mods[i]); + } } - }; - // The Array of ancestors for a given module/class - Opal.ancestors = function(module_or_class) { - var parent = module_or_class, - result = [], - modules, i, ii, j, jj; + module.$$ancestors_cache_version = Opal.const_cache_version; + module.$$ancestors = result; - while (parent) { - result.push(parent); - for (i = parent.$$inc.length-1; i >= 0; i--) { - modules = Opal.ancestors(parent.$$inc[i]); + return result; + }; - for(j = 0, jj = modules.length; j < jj; j++) { - result.push(modules[j]); - } - } + Opal.included_modules = function(module) { + var result = [], mod = null, proto = Object.getPrototypeOf(module.$$prototype); - // only the actual singleton class gets included in its ancestry - // after that, traverse the normal class hierarchy - if (parent.$$is_singleton && parent.$$singleton_of.$$is_module) { - parent = parent.$$singleton_of.$$super; - } - else { - parent = parent.$$is_class ? parent.$$super : null; + for (; proto && Object.getPrototypeOf(proto); proto = Object.getPrototypeOf(proto)) { + mod = protoToModule(proto); + if (mod && mod.$$is_module && proto.$$iclass && proto.$$included) { + result.push(mod); } } @@ -1136,37 +1269,17 @@ // @param stubs [Array] an array of method stubs to add // @return [undefined] Opal.add_stubs = function(stubs) { - var subscriber, subscribers = Opal.stub_subscribers, - i, ilength = stubs.length, - j, jlength = subscribers.length, - method_name, stub, - opal_stubs = Opal.stubs; + var proto = Opal.BasicObject.$$prototype; - for (i = 0; i < ilength; i++) { - method_name = stubs[i]; + for (var i = 0, length = stubs.length; i < length; i++) { + var stub = stubs[i], existing_method = proto[stub]; - if(!opal_stubs.hasOwnProperty(method_name)) { - // Save method name to populate other subscribers with this stub - opal_stubs[method_name] = true; - stub = Opal.stub_for(method_name); - - for (j = 0; j < jlength; j++) { - subscriber = subscribers[j]; - - if (!(method_name in subscriber)) { - subscriber[method_name] = stub; - } - } + if (existing_method == null || existing_method.$$stub) { + Opal.add_stub_for(proto, stub); } } }; - // Keep a list of prototypes that want method_missing stubs to be added. - // - // @default [Prototype List] BasicObject_alloc.prototype - // - Opal.stub_subscribers = [BasicObject_alloc.prototype]; - // Add a method_missing stub function to the given prototype for the // given name. // @@ -1175,7 +1288,7 @@ // @return [undefined] Opal.add_stub_for = function(prototype, stub) { var method_missing_stub = Opal.stub_for(stub); - prototype[stub] = method_missing_stub; + $defineProperty(prototype, stub, method_missing_stub); }; // Generate the method_missing stub for a given method name. @@ -1215,7 +1328,7 @@ // @raise [ArgumentError] Opal.ac = function(actual, expected, object, meth) { var inspect = ''; - if (object.$$is_class || object.$$is_module) { + if (object.$$is_a_module) { inspect += object.$$name + '.'; } else { @@ -1240,23 +1353,35 @@ // Super dispatcher Opal.find_super_dispatcher = function(obj, mid, current_func, defcheck, defs) { - var dispatcher, super_method; + var jsid = '$' + mid, ancestors, super_method; + + if (obj.hasOwnProperty('$$meta')) { + ancestors = Opal.ancestors(obj.$$meta); + } else { + ancestors = Opal.ancestors(obj.$$class); + } + + var current_index = ancestors.indexOf(current_func.$$owner); + + for (var i = current_index + 1; i < ancestors.length; i++) { + var ancestor = ancestors[i], + proto = ancestor.$$prototype; - if (defs) { - if (obj.$$is_class || obj.$$is_module) { - dispatcher = defs.$$super; + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; } - else { - dispatcher = obj.$$class.$$proto; + + if (proto.hasOwnProperty(jsid)) { + var method = proto[jsid]; + + if (!method.$$stub) { + super_method = method; + } + break; } } - else { - dispatcher = Opal.find_obj_super_dispatcher(obj, mid, current_func); - } - - super_method = dispatcher['$' + mid]; - if (!defcheck && super_method.$$stub && Opal.Kernel.$method_missing === obj.$method_missing) { + if (!defcheck && super_method == null && Opal.Kernel.$method_missing === obj.$method_missing) { // method_missing hasn't been explicitly defined throw Opal.NoMethodError.$new('super: no superclass method `'+mid+"' for "+obj, mid); } @@ -1283,67 +1408,6 @@ return Opal.find_super_dispatcher(obj, call_jsid, current_func, defcheck); }; - Opal.find_obj_super_dispatcher = function(obj, mid, current_func) { - var klass = obj.$$meta || obj.$$class; - - // first we need to find the class/module current_func is located on - klass = Opal.find_owning_class(klass, current_func); - - if (!klass) { - throw new Error("could not find current class for super()"); - } - - return Opal.find_super_func(klass, '$' + mid, current_func); - }; - - Opal.find_owning_class = function(klass, current_func) { - var owner = current_func.$$owner; - - while (klass) { - // repeating for readability - - if (klass.$$iclass && klass.$$module === current_func.$$donated) { - // this klass was the last one the module donated to - // case is also hit with multiple module includes - break; - } - else if (klass.$$iclass && klass.$$module === owner) { - // module has donated to other classes but klass isn't one of those - break; - } - else if (owner.$$is_singleton && klass === owner.$$singleton_of.$$class) { - // cases like stdlib `Singleton::included` that use a singleton of a singleton - break; - } - else if (klass === owner) { - // no modules, pure class inheritance - break; - } - - klass = klass.$$parent; - } - - return klass; - }; - - Opal.find_super_func = function(owning_klass, jsid, current_func) { - var klass = owning_klass.$$parent; - - // now we can find the super - while (klass) { - var working = klass.$$proto[jsid]; - - if (working && working !== current_func) { - // ok - break; - } - - klass = klass.$$parent; - } - - return klass.$$proto; - }; - // Used to return as an expression. Sometimes, we can't simply return from // a javascript function as if we were a method, as the return is used as // an expression, or even inside a block which must "return" to the outer @@ -1436,7 +1500,7 @@ }; Opal.is_a = function(object, klass) { - if (object.$$meta === klass || object.$$class === klass) { + if (klass != null && object.$$meta === klass || object.$$class === klass) { return true; } @@ -1538,13 +1602,13 @@ Opal.extract_kwargs = function(parameters) { var kwargs = parameters[parameters.length - 1]; if (kwargs != null && kwargs['$respond_to?']('to_hash', true)) { - Array.prototype.splice.call(parameters, parameters.length - 1, 1); + $splice.call(parameters, parameters.length - 1, 1); return kwargs.$to_hash(); } else { return Opal.hash2([], {}); } - } + }; // Used to get a list of rest keyword arguments. Method takes the given // keyword args, i.e. the hash literal passed to the method containing all @@ -1560,7 +1624,7 @@ Opal.kwrestargs = function(given_args, used_args) { var keys = [], map = {}, - key = null, + key , given_map = given_args.$$smap; for (key in given_map) { @@ -1601,12 +1665,19 @@ var body = (typeof(method) === 'string') ? recv['$'+method] : method; if (body != null) { - body.$$p = block; + if (typeof block === 'function') { + body.$$p = block; + } return body.apply(recv, args); } return recv.$method_missing.apply(recv, [method].concat(args)); - } + }; + + Opal.lambda = function(block) { + block.$$is_lambda = true; + return block; + }; // Used to define methods on an object. This is a helper method, used by the // compiled source to define methods on special case objects when the compiler @@ -1645,8 +1716,13 @@ // @return [null] // Opal.def = function(obj, jsid, body) { + // Special case for a method definition in the + // top-level namespace + if (obj === Opal.top) { + Opal.defn(Opal.Object, jsid, body) + } // if instance_eval is invoked on a module/class, it sets inst_eval_mod - if (!obj.$$eval && (obj.$$is_class || obj.$$is_module)) { + else if (!obj.$$eval && obj.$$is_a_module) { Opal.defn(obj, jsid, body); } else { @@ -1655,59 +1731,55 @@ }; // Define method on a module or class (see Opal.def). - Opal.defn = function(obj, jsid, body) { - obj.$$proto[jsid] = body; - // for super dispatcher, etc. - body.$$owner = obj; - if (body.displayName == null) body.displayName = jsid.substr(1); + Opal.defn = function(module, jsid, body) { + body.displayName = jsid; + body.$$owner = module; - // is it a module? - if (obj.$$is_module) { - Opal.update_includers(obj, jsid); + var proto = module.$$prototype; + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + $defineProperty(proto, jsid, body); - if (obj.$$module_function) { - Opal.defs(obj, jsid, body); + if (module.$$is_module) { + if (module.$$module_function) { + Opal.defs(module, jsid, body) } - } - // is it a bridged class? - var bridged = obj.$__id__ && !obj.$__id__.$$stub && BridgedClasses[obj.$__id__()]; - if (bridged) { - for (var i = bridged.length - 1; i >= 0; i--) { - Opal.bridge_method(bridged[i], obj, jsid, body); + for (var i = 0, iclasses = module.$$iclasses, length = iclasses.length; i < length; i++) { + var iclass = iclasses[i]; + $defineProperty(iclass, jsid, body); } } - // method_added/singleton_method_added hooks - var singleton_of = obj.$$singleton_of; - if (obj.$method_added && !obj.$method_added.$$stub && !singleton_of) { - obj.$method_added(jsid.substr(1)); + var singleton_of = module.$$singleton_of; + if (module.$method_added && !module.$method_added.$$stub && !singleton_of) { + module.$method_added(jsid.substr(1)); } else if (singleton_of && singleton_of.$singleton_method_added && !singleton_of.$singleton_method_added.$$stub) { singleton_of.$singleton_method_added(jsid.substr(1)); } - - return nil; }; // Define a singleton method on the given object (see Opal.def). Opal.defs = function(obj, jsid, body) { + if (obj.$$is_string || obj.$$is_number) { + throw Opal.TypeError.$new("can't define singleton"); + } Opal.defn(Opal.get_singleton_class(obj), jsid, body) }; // Called from #remove_method. Opal.rdef = function(obj, jsid) { - // TODO: remove from BridgedClasses as well - - if (!$hasOwn.call(obj.$$proto, jsid)) { + if (!$hasOwn.call(obj.$$prototype, jsid)) { throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); } - delete obj.$$proto[jsid]; + delete obj.$$prototype[jsid]; if (obj.$$is_singleton) { - if (obj.$$proto.$singleton_method_removed && !obj.$$proto.$singleton_method_removed.$$stub) { - obj.$$proto.$singleton_method_removed(jsid.substr(1)); + if (obj.$$prototype.$singleton_method_removed && !obj.$$prototype.$singleton_method_removed.$$stub) { + obj.$$prototype.$singleton_method_removed(jsid.substr(1)); } } else { @@ -1719,15 +1791,15 @@ // Called from #undef_method. Opal.udef = function(obj, jsid) { - if (!obj.$$proto[jsid] || obj.$$proto[jsid].$$stub) { + if (!obj.$$prototype[jsid] || obj.$$prototype[jsid].$$stub) { throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); } - Opal.add_stub_for(obj.$$proto, jsid); + Opal.add_stub_for(obj.$$prototype, jsid); if (obj.$$is_singleton) { - if (obj.$$proto.$singleton_method_undefined && !obj.$$proto.$singleton_method_undefined.$$stub) { - obj.$$proto.$singleton_method_undefined(jsid.substr(1)); + if (obj.$$prototype.$singleton_method_undefined && !obj.$$prototype.$singleton_method_undefined.$$stub) { + obj.$$prototype.$singleton_method_undefined(jsid.substr(1)); } } else { @@ -1737,10 +1809,14 @@ } }; + function is_method_body(body) { + return (typeof(body) === "function" && !body.$$stub); + } + Opal.alias = function(obj, name, old) { var id = '$' + name, old_id = '$' + old, - body = obj.$$proto['$' + old], + body = obj.$$prototype['$' + old], alias; // When running inside #instance_eval the alias refers to class methods. @@ -1748,7 +1824,7 @@ return Opal.alias(Opal.get_singleton_class(obj), name, old); } - if (typeof(body) !== "function" || body.$$stub) { + if (!is_method_body(body)) { var ancestor = obj.$$super; while (typeof(body) !== "function" && ancestor) { @@ -1756,7 +1832,12 @@ ancestor = ancestor.$$super; } - if (typeof(body) !== "function" || body.$$stub) { + if (!is_method_body(body) && obj.$$is_module) { + // try to look into Object + body = Opal.Object.$$prototype[old_id] + } + + if (!is_method_body(body)) { throw Opal.NameError.$new("undefined method `" + old + "' for class `" + obj.$name() + "'") } } @@ -1765,7 +1846,7 @@ // to keep the max depth at 1. if (body.$$alias_of) body = body.$$alias_of; - // We need a wrapper because otherwise method $$owner and other properties + // We need a wrapper because otherwise properties // would be ovrewritten on the original body. alias = function() { var block = alias.$$p, args, i, ii; @@ -1796,7 +1877,7 @@ Opal.alias_native = function(obj, name, native_name) { var id = '$' + name, - body = obj.$$proto[native_name]; + body = obj.$$prototype[native_name]; if (typeof(body) !== "function" || body.$$stub) { throw Opal.NameError.$new("undefined native method `" + native_name + "' for class `" + obj.$name() + "'") @@ -2023,7 +2104,7 @@ return arguments[0]; } - hash = new Opal.Hash.$$alloc(); + hash = new Opal.Hash(); Opal.hash_init(hash); if (arguments_length === 1 && arguments[0].$$is_array) { @@ -2077,7 +2158,7 @@ // function. // Opal.hash2 = function(keys, smap) { - var hash = new Opal.Hash.$$alloc(); + var hash = new Opal.Hash(); hash.$$smap = smap; hash.$$map = Object.create(null); @@ -2090,7 +2171,7 @@ // range excludes the last value. // Opal.range = function(first, last, exc) { - var range = new Opal.Range.$$alloc(); + var range = new Opal.Range(); range.begin = first; range.end = last; range.excl = exc; @@ -2135,15 +2216,53 @@ .replace(/[\r]/g, '\\r') .replace(/[\f]/g, '\\f') .replace(/[\t]/g, '\\t'); - } + }; + // Create a global Regexp from a RegExp object and cache the result + // on the object itself ($$g attribute). + // + Opal.global_regexp = function(pattern) { + if (pattern.global) { + return pattern; // RegExp already has the global flag + } + if (pattern.$$g == null) { + pattern.$$g = new RegExp(pattern.source, (pattern.multiline ? 'gm' : 'g') + (pattern.ignoreCase ? 'i' : '')); + } else { + pattern.$$g.lastIndex = null; // reset lastIndex property + } + return pattern.$$g; + }; + + // Create a global multiline Regexp from a RegExp object and cache the result + // on the object itself ($$gm or $$g attribute). + // + Opal.global_multiline_regexp = function(pattern) { + var result; + if (pattern.multiline) { + if (pattern.global) { + return pattern; // RegExp already has the global and multiline flag + } + // we are using the $$g attribute because the Regexp is already multiline + if (pattern.$$g != null) { + result = pattern.$$g; + } else { + result = pattern.$$g = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + } + } else if (pattern.$$gm != null) { + result = pattern.$$gm; + } else { + result = pattern.$$gm = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + } + result.lastIndex = null; // reset lastIndex property + return result; + }; // Require system // -------------- Opal.modules = {}; Opal.loaded_features = ['corelib/runtime']; - Opal.current_dir = '.' + Opal.current_dir = '.'; Opal.require_table = {'corelib/runtime': true}; Opal.normalize = function(path) { @@ -2173,7 +2292,7 @@ path = Opal.normalize(paths[i]); if (Opal.require_table[path]) { - return; + continue; } Opal.loaded_features.push(path); @@ -2196,7 +2315,11 @@ var message = 'cannot load such file -- ' + path; if (severity === "error") { - Opal.LoadError ? Opal.LoadError.$new(message) : function(){throw message}(); + if (Opal.LoadError) { + throw Opal.LoadError.$new(message) + } else { + throw message + } } else if (severity === "warning") { console.warn('WARNING: LoadError: ' + message); @@ -2219,18 +2342,20 @@ // Initialization // -------------- + function $BasicObject() {} + function $Object() {} + function $Module() {} + function $Class() {} - // Constructors for *instances* of core objects - Opal.boot_class_alloc('BasicObject', BasicObject_alloc); - Opal.boot_class_alloc('Object', Object_alloc, BasicObject_alloc); - Opal.boot_class_alloc('Module', Module_alloc, Object_alloc); - Opal.boot_class_alloc('Class', Class_alloc, Module_alloc); + Opal.BasicObject = BasicObject = Opal.allocate_class('BasicObject', null, $BasicObject); + Opal.Object = _Object = Opal.allocate_class('Object', Opal.BasicObject, $Object); + Opal.Module = Module = Opal.allocate_class('Module', Opal.Object, $Module); + Opal.Class = Class = Opal.allocate_class('Class', Opal.Module, $Class); - // Constructors for *classes* of core objects - Opal.BasicObject = BasicObject = Opal.setup_class_object('BasicObject', BasicObject_alloc, 'Class', Class_alloc); - Opal.Object = _Object = Opal.setup_class_object('Object', Object_alloc, 'BasicObject', BasicObject.constructor); - Opal.Module = Module = Opal.setup_class_object('Module', Module_alloc, 'Object', _Object.constructor); - Opal.Class = Class = Opal.setup_class_object('Class', Class_alloc, 'Module', Module.constructor); + $setPrototype(Opal.BasicObject, Opal.Class.$$prototype); + $setPrototype(Opal.Object, Opal.Class.$$prototype); + $setPrototype(Opal.Module, Opal.Class.$$prototype); + $setPrototype(Opal.Class, Opal.Class.$$prototype); // BasicObject can reach itself, avoid const_set to skip the $$base_module logic BasicObject.$$const["BasicObject"] = BasicObject; @@ -2241,26 +2366,14 @@ Opal.const_set(_Object, "Module", Module); Opal.const_set(_Object, "Class", Class); - - // Fix booted classes to use their metaclass + // Fix booted classes to have correct .class value BasicObject.$$class = Class; _Object.$$class = Class; Module.$$class = Class; Class.$$class = Class; - // Fix superclasses of booted classes - BasicObject.$$super = null; - _Object.$$super = BasicObject; - Module.$$super = _Object; - Class.$$super = Module; - - BasicObject.$$parent = null; - _Object.$$parent = BasicObject; - Module.$$parent = _Object; - Class.$$parent = Module; - // Forward .toString() to #to_s - _Object.$$proto.toString = function() { + $defineProperty(_Object.$$prototype, 'toString', function() { var to_s = this.$to_s(); if (to_s.$$is_string && typeof(to_s) === 'object') { // a string created using new String('string') @@ -2268,98 +2381,111 @@ } else { return to_s; } - }; + }); // Make Kernel#require immediately available as it's needed to require all the // other corelib files. - _Object.$$proto.$require = Opal.require; + $defineProperty(_Object.$$prototype, '$require', Opal.require); + + // Add a short helper to navigate constants manually. + // @example + // Opal.$$.Regexp.$$.IGNORECASE + Opal.$$ = _Object.$$; + + // Instantiate the main object + Opal.top = new _Object(); + Opal.top.$to_s = Opal.top.$inspect = function() { return 'main' }; - // Instantiate the top object - Opal.top = new _Object.$$alloc(); // Nil - Opal.klass(_Object, _Object, 'NilClass', NilClass_alloc); - nil = Opal.nil = new NilClass_alloc(); + function $NilClass() {} + Opal.NilClass = Opal.allocate_class('NilClass', Opal.Object, $NilClass); + Opal.const_set(_Object, 'NilClass', Opal.NilClass); + nil = Opal.nil = new Opal.NilClass(); nil.$$id = nil_id; nil.call = nil.apply = function() { throw Opal.LocalJumpError.$new('no block given'); }; + + // Errors Opal.breaker = new Error('unexpected break (old)'); Opal.returner = new Error('unexpected return'); - TypeError.$$super = Error; }).call(this); -Opal.loaded(["corelib/runtime"]); -/* Generated by Opal 0.11.4 */ +Opal.loaded(["corelib/runtime.js"]); +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/helpers"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; Opal.add_stubs(['$new', '$class', '$===', '$respond_to?', '$raise', '$type_error', '$__send__', '$coerce_to', '$nil?', '$<=>', '$coerce_to!', '$!=', '$[]', '$upcase']); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Opal_bridge_1, TMP_Opal_type_error_2, TMP_Opal_coerce_to_3, TMP_Opal_coerce_to$B_4, TMP_Opal_coerce_to$q_5, TMP_Opal_try_convert_6, TMP_Opal_compare_7, TMP_Opal_destructure_8, TMP_Opal_respond_to$q_9, TMP_Opal_inspect_obj_10, TMP_Opal_instance_variable_name$B_11, TMP_Opal_class_variable_name$B_12, TMP_Opal_const_name$B_13, TMP_Opal_pristine_14; + var $nesting = [self].concat($parent_nesting), $Opal_bridge$1, $Opal_type_error$2, $Opal_coerce_to$3, $Opal_coerce_to$excl$4, $Opal_coerce_to$ques$5, $Opal_try_convert$6, $Opal_compare$7, $Opal_destructure$8, $Opal_respond_to$ques$9, $Opal_inspect_obj$10, $Opal_instance_variable_name$excl$11, $Opal_class_variable_name$excl$12, $Opal_const_name$excl$13, $Opal_pristine$14; - Opal.defs(self, '$bridge', TMP_Opal_bridge_1 = function $$bridge(klass, constructor) { + Opal.defs(self, '$bridge', $Opal_bridge$1 = function $$bridge(constructor, klass) { var self = this; - return Opal.bridge(klass, constructor) - }, TMP_Opal_bridge_1.$$arity = 2); - Opal.defs(self, '$type_error', TMP_Opal_type_error_2 = function $$type_error(object, type, method, coerced) { + return Opal.bridge(constructor, klass); + }, $Opal_bridge$1.$$arity = 2); + Opal.defs(self, '$type_error', $Opal_type_error$2 = function $$type_error(object, type, method, coerced) { var $a, self = this; + + if (method == null) { method = nil; - } + }; + if (coerced == null) { coerced = nil; - } + }; if ($truthy(($truthy($a = method) ? coerced : $a))) { - return Opal.const_get_relative($nesting, 'TypeError').$new("" + "can't convert " + (object.$class()) + " into " + (type) + " (" + (object.$class()) + "#" + (method) + " gives " + (coerced.$class())) - } else { - return Opal.const_get_relative($nesting, 'TypeError').$new("" + "no implicit conversion of " + (object.$class()) + " into " + (type)) - } - }, TMP_Opal_type_error_2.$$arity = -3); - Opal.defs(self, '$coerce_to', TMP_Opal_coerce_to_3 = function $$coerce_to(object, type, method) { + return $$($nesting, 'TypeError').$new("" + "can't convert " + (object.$class()) + " into " + (type) + " (" + (object.$class()) + "#" + (method) + " gives " + (coerced.$class()) + ")") + } else { + return $$($nesting, 'TypeError').$new("" + "no implicit conversion of " + (object.$class()) + " into " + (type)) + }; + }, $Opal_type_error$2.$$arity = -3); + Opal.defs(self, '$coerce_to', $Opal_coerce_to$3 = function $$coerce_to(object, type, method) { var self = this; if ($truthy(type['$==='](object))) { return object}; if ($truthy(object['$respond_to?'](method))) { - } else { + } else { self.$raise(self.$type_error(object, type)) }; return object.$__send__(method); - }, TMP_Opal_coerce_to_3.$$arity = 3); - Opal.defs(self, '$coerce_to!', TMP_Opal_coerce_to$B_4 = function(object, type, method) { + }, $Opal_coerce_to$3.$$arity = 3); + Opal.defs(self, '$coerce_to!', $Opal_coerce_to$excl$4 = function(object, type, method) { var self = this, coerced = nil; coerced = self.$coerce_to(object, type, method); if ($truthy(type['$==='](coerced))) { - } else { + } else { self.$raise(self.$type_error(object, type, method, coerced)) }; return coerced; - }, TMP_Opal_coerce_to$B_4.$$arity = 3); - Opal.defs(self, '$coerce_to?', TMP_Opal_coerce_to$q_5 = function(object, type, method) { + }, $Opal_coerce_to$excl$4.$$arity = 3); + Opal.defs(self, '$coerce_to?', $Opal_coerce_to$ques$5 = function(object, type, method) { var self = this, coerced = nil; if ($truthy(object['$respond_to?'](method))) { - } else { + } else { return nil }; coerced = self.$coerce_to(object, type, method); if ($truthy(coerced['$nil?']())) { return nil}; if ($truthy(type['$==='](coerced))) { - } else { + } else { self.$raise(self.$type_error(object, type, method, coerced)) }; return coerced; - }, TMP_Opal_coerce_to$q_5.$$arity = 3); - Opal.defs(self, '$try_convert', TMP_Opal_try_convert_6 = function $$try_convert(object, type, method) { + }, $Opal_coerce_to$ques$5.$$arity = 3); + Opal.defs(self, '$try_convert', $Opal_try_convert$6 = function $$try_convert(object, type, method) { var self = this; @@ -2367,20 +2493,20 @@ Opal.modules["corelib/helpers"] = function(Opal) { return object}; if ($truthy(object['$respond_to?'](method))) { return object.$__send__(method) - } else { + } else { return nil }; - }, TMP_Opal_try_convert_6.$$arity = 3); - Opal.defs(self, '$compare', TMP_Opal_compare_7 = function $$compare(a, b) { + }, $Opal_try_convert$6.$$arity = 3); + Opal.defs(self, '$compare', $Opal_compare$7 = function $$compare(a, b) { var self = this, compare = nil; compare = a['$<=>'](b); if ($truthy(compare === nil)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (a.$class()) + " with " + (b.$class()) + " failed")}; + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (a.$class()) + " with " + (b.$class()) + " failed")}; return compare; - }, TMP_Opal_compare_7.$$arity = 2); - Opal.defs(self, '$destructure', TMP_Opal_destructure_8 = function $$destructure(args) { + }, $Opal_compare$7.$$arity = 2); + Opal.defs(self, '$destructure', $Opal_destructure$8 = function $$destructure(args) { var self = this; @@ -2397,78 +2523,81 @@ Opal.modules["corelib/helpers"] = function(Opal) { return args_ary; } - }, TMP_Opal_destructure_8.$$arity = 1); - Opal.defs(self, '$respond_to?', TMP_Opal_respond_to$q_9 = function(obj, method) { + }, $Opal_destructure$8.$$arity = 1); + Opal.defs(self, '$respond_to?', $Opal_respond_to$ques$9 = function(obj, method, include_all) { var self = this; + if (include_all == null) { + include_all = false; + }; + if (obj == null || !obj.$$class) { return false; } ; - return obj['$respond_to?'](method); - }, TMP_Opal_respond_to$q_9.$$arity = 2); - Opal.defs(self, '$inspect_obj', TMP_Opal_inspect_obj_10 = function $$inspect_obj(obj) { + return obj['$respond_to?'](method, include_all); + }, $Opal_respond_to$ques$9.$$arity = -3); + Opal.defs(self, '$inspect_obj', $Opal_inspect_obj$10 = function $$inspect_obj(obj) { var self = this; - return Opal.inspect(obj) - }, TMP_Opal_inspect_obj_10.$$arity = 1); - Opal.defs(self, '$instance_variable_name!', TMP_Opal_instance_variable_name$B_11 = function(name) { + return Opal.inspect(obj); + }, $Opal_inspect_obj$10.$$arity = 1); + Opal.defs(self, '$instance_variable_name!', $Opal_instance_variable_name$excl$11 = function(name) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($nesting, 'String'), "to_str"); + name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); if ($truthy(/^@[a-zA-Z_][a-zA-Z0-9_]*?$/.test(name))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "'" + (name) + "' is not allowed as an instance variable name", name)) + } else { + self.$raise($$($nesting, 'NameError').$new("" + "'" + (name) + "' is not allowed as an instance variable name", name)) }; return name; - }, TMP_Opal_instance_variable_name$B_11.$$arity = 1); - Opal.defs(self, '$class_variable_name!', TMP_Opal_class_variable_name$B_12 = function(name) { + }, $Opal_instance_variable_name$excl$11.$$arity = 1); + Opal.defs(self, '$class_variable_name!', $Opal_class_variable_name$excl$12 = function(name) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($nesting, 'String'), "to_str"); + name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); if ($truthy(name.length < 3 || name.slice(0,2) !== '@@')) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "`" + (name) + "' is not allowed as a class variable name", name))}; + self.$raise($$($nesting, 'NameError').$new("" + "`" + (name) + "' is not allowed as a class variable name", name))}; return name; - }, TMP_Opal_class_variable_name$B_12.$$arity = 1); - Opal.defs(self, '$const_name!', TMP_Opal_const_name$B_13 = function(const_name) { + }, $Opal_class_variable_name$excl$12.$$arity = 1); + Opal.defs(self, '$const_name!', $Opal_const_name$excl$13 = function(const_name) { var self = this; - const_name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](const_name, Opal.const_get_relative($nesting, 'String'), "to_str"); + const_name = $$($nesting, 'Opal')['$coerce_to!'](const_name, $$($nesting, 'String'), "to_str"); if ($truthy(const_name['$[]'](0)['$!='](const_name['$[]'](0).$upcase()))) { - self.$raise(Opal.const_get_relative($nesting, 'NameError'), "" + "wrong constant name " + (const_name))}; + self.$raise($$($nesting, 'NameError'), "" + "wrong constant name " + (const_name))}; return const_name; - }, TMP_Opal_const_name$B_13.$$arity = 1); - Opal.defs(self, '$pristine', TMP_Opal_pristine_14 = function $$pristine(owner_class, $a_rest) { - var self = this, method_names; + }, $Opal_const_name$excl$13.$$arity = 1); + Opal.defs(self, '$pristine', $Opal_pristine$14 = function $$pristine(owner_class, $a) { + var $post_args, method_names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - method_names = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - method_names[$arg_idx - 1] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + method_names = $post_args;; + var method_name, method; for (var i = method_names.length - 1; i >= 0; i--) { method_name = method_names[i]; - method = owner_class.$$proto['$'+method_name]; + method = owner_class.$$prototype['$'+method_name]; + if (method && !method.$$stub) { method.$$pristine = true; } } ; return nil; - }, TMP_Opal_pristine_14.$$arity = -2); + }, $Opal_pristine$14.$$arity = -2); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/module"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); @@ -2476,53 +2605,56 @@ Opal.modules["corelib/module"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $lambda = Opal.lambda, $range = Opal.range, $hash2 = Opal.hash2; - Opal.add_stubs(['$===', '$raise', '$equal?', '$<', '$>', '$nil?', '$attr_reader', '$attr_writer', '$class_variable_name!', '$new', '$const_name!', '$=~', '$inject', '$split', '$const_get', '$==', '$!', '$start_with?', '$to_proc', '$lambda', '$bind', '$call', '$class', '$append_features', '$included', '$name', '$cover?', '$size', '$merge', '$compile', '$proc', '$+', '$to_s', '$__id__', '$constants', '$include?', '$copy_class_variables', '$copy_constants']); + Opal.add_stubs(['$module_eval', '$to_proc', '$===', '$raise', '$equal?', '$<', '$>', '$nil?', '$attr_reader', '$attr_writer', '$class_variable_name!', '$new', '$const_name!', '$=~', '$inject', '$split', '$const_get', '$==', '$!~', '$start_with?', '$bind', '$call', '$class', '$append_features', '$included', '$name', '$cover?', '$size', '$merge', '$compile', '$proc', '$any?', '$prepend_features', '$prepended', '$to_s', '$__id__', '$constants', '$include?', '$copy_class_variables', '$copy_constants']); return (function($base, $super, $parent_nesting) { - function $Module(){}; - var self = $Module = $klass($base, $super, 'Module', $Module); + var self = $klass($base, $super, 'Module'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_allocate_1, TMP_Module_initialize_2, TMP_Module_$eq$eq$eq_3, TMP_Module_$lt_4, TMP_Module_$lt$eq_5, TMP_Module_$gt_6, TMP_Module_$gt$eq_7, TMP_Module_$lt$eq$gt_8, TMP_Module_alias_method_9, TMP_Module_alias_native_10, TMP_Module_ancestors_11, TMP_Module_append_features_12, TMP_Module_attr_accessor_13, TMP_Module_attr_reader_14, TMP_Module_attr_writer_15, TMP_Module_autoload_16, TMP_Module_class_variables_17, TMP_Module_class_variable_get_18, TMP_Module_class_variable_set_19, TMP_Module_class_variable_defined$q_20, TMP_Module_remove_class_variable_21, TMP_Module_constants_22, TMP_Module_constants_23, TMP_Module_nesting_24, TMP_Module_const_defined$q_25, TMP_Module_const_get_27, TMP_Module_const_missing_28, TMP_Module_const_set_29, TMP_Module_public_constant_30, TMP_Module_define_method_31, TMP_Module_remove_method_33, TMP_Module_singleton_class$q_34, TMP_Module_include_35, TMP_Module_included_modules_36, TMP_Module_include$q_37, TMP_Module_instance_method_38, TMP_Module_instance_methods_39, TMP_Module_included_40, TMP_Module_extended_41, TMP_Module_method_added_42, TMP_Module_method_removed_43, TMP_Module_method_undefined_44, TMP_Module_module_eval_45, TMP_Module_module_exec_47, TMP_Module_method_defined$q_48, TMP_Module_module_function_49, TMP_Module_name_50, TMP_Module_remove_const_51, TMP_Module_to_s_52, TMP_Module_undef_method_53, TMP_Module_instance_variables_54, TMP_Module_dup_55, TMP_Module_copy_class_variables_56, TMP_Module_copy_constants_57; + var $nesting = [self].concat($parent_nesting), $Module_allocate$1, $Module_initialize$2, $Module_$eq_eq_eq$3, $Module_$lt$4, $Module_$lt_eq$5, $Module_$gt$6, $Module_$gt_eq$7, $Module_$lt_eq_gt$8, $Module_alias_method$9, $Module_alias_native$10, $Module_ancestors$11, $Module_append_features$12, $Module_attr_accessor$13, $Module_attr_reader$14, $Module_attr_writer$15, $Module_autoload$16, $Module_class_variables$17, $Module_class_variable_get$18, $Module_class_variable_set$19, $Module_class_variable_defined$ques$20, $Module_remove_class_variable$21, $Module_constants$22, $Module_constants$23, $Module_nesting$24, $Module_const_defined$ques$25, $Module_const_get$26, $Module_const_missing$28, $Module_const_set$29, $Module_public_constant$30, $Module_define_method$31, $Module_remove_method$33, $Module_singleton_class$ques$34, $Module_include$35, $Module_included_modules$36, $Module_include$ques$37, $Module_instance_method$38, $Module_instance_methods$39, $Module_included$40, $Module_extended$41, $Module_extend_object$42, $Module_method_added$43, $Module_method_removed$44, $Module_method_undefined$45, $Module_module_eval$46, $Module_module_exec$48, $Module_method_defined$ques$49, $Module_module_function$50, $Module_name$51, $Module_prepend$52, $Module_prepend_features$53, $Module_prepended$54, $Module_remove_const$55, $Module_to_s$56, $Module_undef_method$57, $Module_instance_variables$58, $Module_dup$59, $Module_copy_class_variables$60, $Module_copy_constants$61; - Opal.defs(self, '$allocate', TMP_Module_allocate_1 = function $$allocate() { + Opal.defs(self, '$allocate', $Module_allocate$1 = function $$allocate() { var self = this; - var module; - - module = Opal.module_allocate(self); + var module = Opal.allocate_module(nil, function(){}); + // Link the prototype of Module subclasses + if (self !== Opal.Module) Object.setPrototypeOf(module, self.$$prototype); return module; - }, TMP_Module_allocate_1.$$arity = 0); + }, $Module_allocate$1.$$arity = 0); - Opal.defn(self, '$initialize', TMP_Module_initialize_2 = function $$initialize() { - var self = this, $iter = TMP_Module_initialize_2.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Module_initialize$2 = function $$initialize() { + var $iter = $Module_initialize$2.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Module_initialize_2.$$p = null; - return Opal.module_initialize(self, block) - }, TMP_Module_initialize_2.$$arity = 0); + if ($iter) $Module_initialize$2.$$p = null; + + + if ($iter) $Module_initialize$2.$$p = null;; + if ((block !== nil)) { + return $send(self, 'module_eval', [], block.$to_proc()) + } else { + return nil + }; + }, $Module_initialize$2.$$arity = 0); - Opal.defn(self, '$===', TMP_Module_$eq$eq$eq_3 = function(object) { + Opal.def(self, '$===', $Module_$eq_eq_eq$3 = function(object) { var self = this; if ($truthy(object == null)) { return false}; - return Opal.is_a(object, self); - }, TMP_Module_$eq$eq$eq_3.$$arity = 1); + return Opal.is_a(object, self);; + }, $Module_$eq_eq_eq$3.$$arity = 1); - Opal.defn(self, '$<', TMP_Module_$lt_4 = function(other) { + Opal.def(self, '$<', $Module_$lt$4 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Module')['$==='](other))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "compared with non class/module") + if ($truthy($$($nesting, 'Module')['$==='](other))) { + } else { + self.$raise($$($nesting, 'TypeError'), "compared with non class/module") }; var working = self, @@ -2547,32 +2679,32 @@ Opal.modules["corelib/module"] = function(Opal) { return nil; ; - }, TMP_Module_$lt_4.$$arity = 1); + }, $Module_$lt$4.$$arity = 1); - Opal.defn(self, '$<=', TMP_Module_$lt$eq_5 = function(other) { + Opal.def(self, '$<=', $Module_$lt_eq$5 = function(other) { var $a, self = this; return ($truthy($a = self['$equal?'](other)) ? $a : $rb_lt(self, other)) - }, TMP_Module_$lt$eq_5.$$arity = 1); + }, $Module_$lt_eq$5.$$arity = 1); - Opal.defn(self, '$>', TMP_Module_$gt_6 = function(other) { + Opal.def(self, '$>', $Module_$gt$6 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Module')['$==='](other))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "compared with non class/module") + if ($truthy($$($nesting, 'Module')['$==='](other))) { + } else { + self.$raise($$($nesting, 'TypeError'), "compared with non class/module") }; return $rb_lt(other, self); - }, TMP_Module_$gt_6.$$arity = 1); + }, $Module_$gt$6.$$arity = 1); - Opal.defn(self, '$>=', TMP_Module_$gt$eq_7 = function(other) { + Opal.def(self, '$>=', $Module_$gt_eq$7 = function(other) { var $a, self = this; return ($truthy($a = self['$equal?'](other)) ? $a : $rb_gt(self, other)) - }, TMP_Module_$gt$eq_7.$$arity = 1); + }, $Module_$gt_eq$7.$$arity = 1); - Opal.defn(self, '$<=>', TMP_Module_$lt$eq$gt_8 = function(other) { + Opal.def(self, '$<=>', $Module_$lt_eq_gt$8 = function(other) { var self = this, lt = nil; @@ -2581,8 +2713,8 @@ Opal.modules["corelib/module"] = function(Opal) { return 0; } ; - if ($truthy(Opal.const_get_relative($nesting, 'Module')['$==='](other))) { - } else { + if ($truthy($$($nesting, 'Module')['$==='](other))) { + } else { return nil }; lt = $rb_lt(self, other); @@ -2590,71 +2722,68 @@ Opal.modules["corelib/module"] = function(Opal) { return nil}; if ($truthy(lt)) { return -1 - } else { + } else { return 1 }; - }, TMP_Module_$lt$eq$gt_8.$$arity = 1); + }, $Module_$lt_eq_gt$8.$$arity = 1); - Opal.defn(self, '$alias_method', TMP_Module_alias_method_9 = function $$alias_method(newname, oldname) { + Opal.def(self, '$alias_method', $Module_alias_method$9 = function $$alias_method(newname, oldname) { var self = this; Opal.alias(self, newname, oldname); return self; - }, TMP_Module_alias_method_9.$$arity = 2); + }, $Module_alias_method$9.$$arity = 2); - Opal.defn(self, '$alias_native', TMP_Module_alias_native_10 = function $$alias_native(mid, jsid) { + Opal.def(self, '$alias_native', $Module_alias_native$10 = function $$alias_native(mid, jsid) { var self = this; + + if (jsid == null) { jsid = mid; - } - + }; Opal.alias_native(self, mid, jsid); return self; - }, TMP_Module_alias_native_10.$$arity = -2); + }, $Module_alias_native$10.$$arity = -2); - Opal.defn(self, '$ancestors', TMP_Module_ancestors_11 = function $$ancestors() { + Opal.def(self, '$ancestors', $Module_ancestors$11 = function $$ancestors() { var self = this; - return Opal.ancestors(self) - }, TMP_Module_ancestors_11.$$arity = 0); + return Opal.ancestors(self); + }, $Module_ancestors$11.$$arity = 0); - Opal.defn(self, '$append_features', TMP_Module_append_features_12 = function $$append_features(includer) { + Opal.def(self, '$append_features', $Module_append_features$12 = function $$append_features(includer) { var self = this; Opal.append_features(self, includer); return self; - }, TMP_Module_append_features_12.$$arity = 1); + }, $Module_append_features$12.$$arity = 1); - Opal.defn(self, '$attr_accessor', TMP_Module_attr_accessor_13 = function $$attr_accessor($a_rest) { - var self = this, names; + Opal.def(self, '$attr_accessor', $Module_attr_accessor$13 = function $$attr_accessor($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; $send(self, 'attr_reader', Opal.to_a(names)); return $send(self, 'attr_writer', Opal.to_a(names)); - }, TMP_Module_attr_accessor_13.$$arity = -1); + }, $Module_attr_accessor$13.$$arity = -1); Opal.alias(self, "attr", "attr_accessor"); - Opal.defn(self, '$attr_reader', TMP_Module_attr_reader_14 = function $$attr_reader($a_rest) { - var self = this, names; + Opal.def(self, '$attr_reader', $Module_attr_reader$14 = function $$attr_reader($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } - var proto = self.$$proto; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + + var proto = self.$$prototype; for (var i = names.length - 1; i >= 0; i--) { var name = names[i], @@ -2675,34 +2804,27 @@ Opal.modules["corelib/module"] = function(Opal) { })(ivar); // initialize the instance variable as nil - proto[ivar] = nil; + Opal.defineProperty(proto, ivar, nil); body.$$parameters = []; body.$$arity = 0; - if (self.$$is_singleton) { - proto.constructor.prototype[id] = body; - } - else { - Opal.defn(self, id, body); - } + Opal.defn(self, id, body); } ; return nil; - }, TMP_Module_attr_reader_14.$$arity = -1); + }, $Module_attr_reader$14.$$arity = -1); - Opal.defn(self, '$attr_writer', TMP_Module_attr_writer_15 = function $$attr_writer($a_rest) { - var self = this, names; + Opal.def(self, '$attr_writer', $Module_attr_writer$15 = function $$attr_writer($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } - var proto = self.$$proto; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + + var proto = self.$$prototype; for (var i = names.length - 1; i >= 0; i--) { var name = names[i], @@ -2721,20 +2843,15 @@ Opal.modules["corelib/module"] = function(Opal) { body.$$arity = 1; // initialize the instance variable as nil - proto[ivar] = nil; + Opal.defineProperty(proto, ivar, nil); - if (self.$$is_singleton) { - proto.constructor.prototype[id] = body; - } - else { - Opal.defn(self, id, body); - } + Opal.defn(self, id, body); } ; return nil; - }, TMP_Module_attr_writer_15.$$arity = -1); + }, $Module_attr_writer$15.$$arity = -1); - Opal.defn(self, '$autoload', TMP_Module_autoload_16 = function $$autoload(const$, path) { + Opal.def(self, '$autoload', $Module_autoload$16 = function $$autoload(const$, path) { var self = this; @@ -2743,72 +2860,76 @@ Opal.modules["corelib/module"] = function(Opal) { self.$$autoload[const$] = path; return nil; - }, TMP_Module_autoload_16.$$arity = 2); + }, $Module_autoload$16.$$arity = 2); - Opal.defn(self, '$class_variables', TMP_Module_class_variables_17 = function $$class_variables() { + Opal.def(self, '$class_variables', $Module_class_variables$17 = function $$class_variables() { var self = this; - return Object.keys(Opal.class_variables(self)) - }, TMP_Module_class_variables_17.$$arity = 0); + return Object.keys(Opal.class_variables(self)); + }, $Module_class_variables$17.$$arity = 0); - Opal.defn(self, '$class_variable_get', TMP_Module_class_variable_get_18 = function $$class_variable_get(name) { + Opal.def(self, '$class_variable_get', $Module_class_variable_get$18 = function $$class_variable_get(name) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$class_variable_name!'](name); + name = $$($nesting, 'Opal')['$class_variable_name!'](name); var value = Opal.class_variables(self)[name]; if (value == null) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "uninitialized class variable " + (name) + " in " + (self), name)) + self.$raise($$($nesting, 'NameError').$new("" + "uninitialized class variable " + (name) + " in " + (self), name)) } return value; ; - }, TMP_Module_class_variable_get_18.$$arity = 1); + }, $Module_class_variable_get$18.$$arity = 1); - Opal.defn(self, '$class_variable_set', TMP_Module_class_variable_set_19 = function $$class_variable_set(name, value) { + Opal.def(self, '$class_variable_set', $Module_class_variable_set$19 = function $$class_variable_set(name, value) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$class_variable_name!'](name); - return Opal.class_variable_set(self, name, value); - }, TMP_Module_class_variable_set_19.$$arity = 2); + name = $$($nesting, 'Opal')['$class_variable_name!'](name); + return Opal.class_variable_set(self, name, value);; + }, $Module_class_variable_set$19.$$arity = 2); - Opal.defn(self, '$class_variable_defined?', TMP_Module_class_variable_defined$q_20 = function(name) { + Opal.def(self, '$class_variable_defined?', $Module_class_variable_defined$ques$20 = function(name) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$class_variable_name!'](name); - return Opal.class_variables(self).hasOwnProperty(name); - }, TMP_Module_class_variable_defined$q_20.$$arity = 1); + name = $$($nesting, 'Opal')['$class_variable_name!'](name); + return Opal.class_variables(self).hasOwnProperty(name);; + }, $Module_class_variable_defined$ques$20.$$arity = 1); - Opal.defn(self, '$remove_class_variable', TMP_Module_remove_class_variable_21 = function $$remove_class_variable(name) { + Opal.def(self, '$remove_class_variable', $Module_remove_class_variable$21 = function $$remove_class_variable(name) { var self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$class_variable_name!'](name); + name = $$($nesting, 'Opal')['$class_variable_name!'](name); if (Opal.hasOwnProperty.call(self.$$cvars, name)) { var value = self.$$cvars[name]; delete self.$$cvars[name]; return value; } else { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "cannot remove " + (name) + " for " + (self))) + self.$raise($$($nesting, 'NameError'), "" + "cannot remove " + (name) + " for " + (self)) } ; - }, TMP_Module_remove_class_variable_21.$$arity = 1); + }, $Module_remove_class_variable$21.$$arity = 1); - Opal.defn(self, '$constants', TMP_Module_constants_22 = function $$constants(inherit) { + Opal.def(self, '$constants', $Module_constants$22 = function $$constants(inherit) { var self = this; + + if (inherit == null) { inherit = true; - } - return Opal.constants(self, inherit) - }, TMP_Module_constants_22.$$arity = -1); - Opal.defs(self, '$constants', TMP_Module_constants_23 = function $$constants(inherit) { + }; + return Opal.constants(self, inherit);; + }, $Module_constants$22.$$arity = -1); + Opal.defs(self, '$constants', $Module_constants$23 = function $$constants(inherit) { var self = this; + ; + if (inherit == null) { var nesting = (self.$$nesting || []).concat(Opal.Object), constant, constants = {}, @@ -2823,25 +2944,26 @@ Opal.modules["corelib/module"] = function(Opal) { } else { return Opal.constants(self, inherit) } - - }, TMP_Module_constants_23.$$arity = -1); - Opal.defs(self, '$nesting', TMP_Module_nesting_24 = function $$nesting() { + ; + }, $Module_constants$23.$$arity = -1); + Opal.defs(self, '$nesting', $Module_nesting$24 = function $$nesting() { var self = this; - return self.$$nesting || [] - }, TMP_Module_nesting_24.$$arity = 0); + return self.$$nesting || []; + }, $Module_nesting$24.$$arity = 0); - Opal.defn(self, '$const_defined?', TMP_Module_const_defined$q_25 = function(name, inherit) { + Opal.def(self, '$const_defined?', $Module_const_defined$ques$25 = function(name, inherit) { var self = this; + + if (inherit == null) { inherit = true; - } - - name = Opal.const_get_relative($nesting, 'Opal')['$const_name!'](name); - if ($truthy(name['$=~'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) + }; + name = $$($nesting, 'Opal')['$const_name!'](name); + if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { + } else { + self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) }; var module, modules = [self], module_constants, i, ii; @@ -2865,39 +2987,49 @@ Opal.modules["corelib/module"] = function(Opal) { return false; ; - }, TMP_Module_const_defined$q_25.$$arity = -2); + }, $Module_const_defined$ques$25.$$arity = -2); - Opal.defn(self, '$const_get', TMP_Module_const_get_27 = function $$const_get(name, inherit) { - var TMP_26, self = this; + Opal.def(self, '$const_get', $Module_const_get$26 = function $$const_get(name, inherit) { + var $$27, self = this; + + if (inherit == null) { inherit = true; - } - - name = Opal.const_get_relative($nesting, 'Opal')['$const_name!'](name); + }; + name = $$($nesting, 'Opal')['$const_name!'](name); if (name.indexOf('::') === 0 && name !== '::'){ name = name.slice(2); } ; if ($truthy(name.indexOf('::') != -1 && name != '::')) { - return $send(name.$split("::"), 'inject', [self], (TMP_26 = function(o, c){var self = TMP_26.$$s || this; -if (o == null) o = nil;if (c == null) c = nil; - return o.$const_get(c)}, TMP_26.$$s = self, TMP_26.$$arity = 2, TMP_26))}; - if ($truthy(name['$=~'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) + return $send(name.$split("::"), 'inject', [self], ($$27 = function(o, c){var self = $$27.$$s || this; + + + + if (o == null) { + o = nil; + }; + + if (c == null) { + c = nil; + }; + return o.$const_get(c);}, $$27.$$s = self, $$27.$$arity = 2, $$27))}; + if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { + } else { + self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) }; if (inherit) { - return Opal.const_get_relative([self], name); + return $$([self], name); } else { return Opal.const_get_local(self, name); } ; - }, TMP_Module_const_get_27.$$arity = -2); + }, $Module_const_get$26.$$arity = -2); - Opal.defn(self, '$const_missing', TMP_Module_const_missing_28 = function $$const_missing(name) { + Opal.def(self, '$const_missing', $Module_const_missing$28 = function $$const_missing(name) { var self = this, full_const_name = nil; @@ -2912,53 +3044,54 @@ if (o == null) o = nil;if (c == null) c = nil; } } ; - full_const_name = (function() {if (self['$=='](Opal.const_get_relative($nesting, 'Object'))) { + full_const_name = (function() {if (self['$==']($$($nesting, 'Object'))) { return name - } else { + } else { return "" + (self) + "::" + (name) }; return nil; })(); - return self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "uninitialized constant " + (full_const_name), name)); - }, TMP_Module_const_missing_28.$$arity = 1); + return self.$raise($$($nesting, 'NameError').$new("" + "uninitialized constant " + (full_const_name), name)); + }, $Module_const_missing$28.$$arity = 1); - Opal.defn(self, '$const_set', TMP_Module_const_set_29 = function $$const_set(name, value) { + Opal.def(self, '$const_set', $Module_const_set$29 = function $$const_set(name, value) { var $a, self = this; - name = Opal.const_get_relative($nesting, 'Opal')['$const_name!'](name); - if ($truthy(($truthy($a = name['$=~'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'CONST_NAME_REGEXP'))['$!']()) ? $a : name['$start_with?']("::")))) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "wrong constant name " + (name), name))}; + name = $$($nesting, 'Opal')['$const_name!'](name); + if ($truthy(($truthy($a = name['$!~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP'))) ? $a : name['$start_with?']("::")))) { + self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name))}; Opal.const_set(self, name, value); return value; - }, TMP_Module_const_set_29.$$arity = 2); + }, $Module_const_set$29.$$arity = 2); - Opal.defn(self, '$public_constant', TMP_Module_public_constant_30 = function $$public_constant(const_name) { + Opal.def(self, '$public_constant', $Module_public_constant$30 = function $$public_constant(const_name) { var self = this; return nil - }, TMP_Module_public_constant_30.$$arity = 1); + }, $Module_public_constant$30.$$arity = 1); - Opal.defn(self, '$define_method', TMP_Module_define_method_31 = function $$define_method(name, method) { - var $a, TMP_32, self = this, $iter = TMP_Module_define_method_31.$$p, block = $iter || nil, $case = nil; + Opal.def(self, '$define_method', $Module_define_method$31 = function $$define_method(name, method) { + var $iter = $Module_define_method$31.$$p, block = $iter || nil, $a, $$32, self = this, $case = nil; - if ($iter) TMP_Module_define_method_31.$$p = null; + if ($iter) $Module_define_method$31.$$p = null; + + if ($iter) $Module_define_method$31.$$p = null;; + ; if ($truthy(method === undefined && block === nil)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to create a Proc object without a block")}; + self.$raise($$($nesting, 'ArgumentError'), "tried to create a Proc object without a block")}; block = ($truthy($a = block) ? $a : (function() {$case = method; - if (Opal.const_get_relative($nesting, 'Proc')['$===']($case)) {return method} - else if (Opal.const_get_relative($nesting, 'Method')['$===']($case)) {return method.$to_proc().$$unbound} - else if (Opal.const_get_relative($nesting, 'UnboundMethod')['$===']($case)) {return $send(self, 'lambda', [], (TMP_32 = function($b_rest){var self = TMP_32.$$s || this, args, bound = nil; + if ($$($nesting, 'Proc')['$===']($case)) {return method} + else if ($$($nesting, 'Method')['$===']($case)) {return method.$to_proc().$$unbound} + else if ($$($nesting, 'UnboundMethod')['$===']($case)) {return $lambda(($$32 = function($b){var self = $$32.$$s || this, $post_args, args, bound = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; bound = method.$bind(self); - return $send(bound, 'call', Opal.to_a(args));}, TMP_32.$$s = self, TMP_32.$$arity = -1, TMP_32))} - else {return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + (block.$class()) + " (expected Proc/Method)")}})()); + return $send(bound, 'call', Opal.to_a(args));}, $$32.$$s = self, $$32.$$arity = -1, $$32))} + else {return self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (block.$class()) + " (expected Proc/Method)")}})()); var id = '$' + name; @@ -2971,48 +3104,44 @@ if (o == null) o = nil;if (c == null) c = nil; return name; ; - }, TMP_Module_define_method_31.$$arity = -2); + }, $Module_define_method$31.$$arity = -2); - Opal.defn(self, '$remove_method', TMP_Module_remove_method_33 = function $$remove_method($a_rest) { - var self = this, names; + Opal.def(self, '$remove_method', $Module_remove_method$33 = function $$remove_method($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + for (var i = 0, length = names.length; i < length; i++) { Opal.rdef(self, "$" + names[i]); } ; return self; - }, TMP_Module_remove_method_33.$$arity = -1); + }, $Module_remove_method$33.$$arity = -1); - Opal.defn(self, '$singleton_class?', TMP_Module_singleton_class$q_34 = function() { + Opal.def(self, '$singleton_class?', $Module_singleton_class$ques$34 = function() { var self = this; - return !!self.$$is_singleton - }, TMP_Module_singleton_class$q_34.$$arity = 0); + return !!self.$$is_singleton; + }, $Module_singleton_class$ques$34.$$arity = 0); - Opal.defn(self, '$include', TMP_Module_include_35 = function $$include($a_rest) { - var self = this, mods; + Opal.def(self, '$include', $Module_include$35 = function $$include($a) { + var $post_args, mods, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - mods = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - mods[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + mods = $post_args;; + for (var i = mods.length - 1; i >= 0; i--) { var mod = mods[i]; if (!mod.$$is_module) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); } (mod).$append_features(self); @@ -3020,45 +3149,20 @@ if (o == null) o = nil;if (c == null) c = nil; } ; return self; - }, TMP_Module_include_35.$$arity = -1); + }, $Module_include$35.$$arity = -1); - Opal.defn(self, '$included_modules', TMP_Module_included_modules_36 = function $$included_modules() { + Opal.def(self, '$included_modules', $Module_included_modules$36 = function $$included_modules() { var self = this; - - var results; - - var module_chain = function(klass) { - var included = []; - - for (var i = 0, ii = klass.$$inc.length; i < ii; i++) { - var mod_or_class = klass.$$inc[i]; - included.push(mod_or_class); - included = included.concat(module_chain(mod_or_class)); - } - - return included; - }; - - results = module_chain(self); - - // need superclass's modules - if (self.$$is_class) { - for (var cls = self; cls; cls = cls.$$super) { - results = results.concat(module_chain(cls)); - } - } - - return results; - - }, TMP_Module_included_modules_36.$$arity = 0); + return Opal.included_modules(self); + }, $Module_included_modules$36.$$arity = 0); - Opal.defn(self, '$include?', TMP_Module_include$q_37 = function(mod) { + Opal.def(self, '$include?', $Module_include$ques$37 = function(mod) { var self = this; if (!mod.$$is_module) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); } var i, ii, mod2, ancestors = Opal.ancestors(self); @@ -3072,129 +3176,117 @@ if (o == null) o = nil;if (c == null) c = nil; return false; - }, TMP_Module_include$q_37.$$arity = 1); + }, $Module_include$ques$37.$$arity = 1); - Opal.defn(self, '$instance_method', TMP_Module_instance_method_38 = function $$instance_method(name) { + Opal.def(self, '$instance_method', $Module_instance_method$38 = function $$instance_method(name) { var self = this; - var meth = self.$$proto['$' + name]; + var meth = self.$$prototype['$' + name]; if (!meth || meth.$$stub) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$name()) + "'", name)); + self.$raise($$($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$name()) + "'", name)); } - return Opal.const_get_relative($nesting, 'UnboundMethod').$new(self, meth.$$owner || self, meth, name); + return $$($nesting, 'UnboundMethod').$new(self, meth.$$owner || self, meth, name); - }, TMP_Module_instance_method_38.$$arity = 1); + }, $Module_instance_method$38.$$arity = 1); - Opal.defn(self, '$instance_methods', TMP_Module_instance_methods_39 = function $$instance_methods(include_super) { + Opal.def(self, '$instance_methods', $Module_instance_methods$39 = function $$instance_methods(include_super) { var self = this; + + if (include_super == null) { include_super = true; - } + }; - var value, - methods = [], - proto = self.$$proto; - - for (var prop in proto) { - if (prop.charAt(0) !== '$' || prop.charAt(1) === '$') { - continue; - } - - value = proto[prop]; - - if (typeof(value) !== "function") { - continue; - } - - if (value.$$stub) { - continue; - } - - if (!self.$$is_module) { - if (self !== Opal.BasicObject && value === Opal.BasicObject.$$proto[prop]) { - continue; - } - - if (!include_super && !proto.hasOwnProperty(prop)) { - continue; - } - - if (!include_super && value.$$donated) { - continue; - } - } - - methods.push(prop.substr(1)); + if ($truthy(include_super)) { + return Opal.instance_methods(self); + } else { + return Opal.own_instance_methods(self); } - - return methods; - - }, TMP_Module_instance_methods_39.$$arity = -1); + ; + }, $Module_instance_methods$39.$$arity = -1); - Opal.defn(self, '$included', TMP_Module_included_40 = function $$included(mod) { + Opal.def(self, '$included', $Module_included$40 = function $$included(mod) { var self = this; return nil - }, TMP_Module_included_40.$$arity = 1); + }, $Module_included$40.$$arity = 1); - Opal.defn(self, '$extended', TMP_Module_extended_41 = function $$extended(mod) { + Opal.def(self, '$extended', $Module_extended$41 = function $$extended(mod) { var self = this; return nil - }, TMP_Module_extended_41.$$arity = 1); + }, $Module_extended$41.$$arity = 1); - Opal.defn(self, '$method_added', TMP_Module_method_added_42 = function $$method_added($a_rest) { + Opal.def(self, '$extend_object', $Module_extend_object$42 = function $$extend_object(object) { var self = this; return nil - }, TMP_Module_method_added_42.$$arity = -1); + }, $Module_extend_object$42.$$arity = 1); - Opal.defn(self, '$method_removed', TMP_Module_method_removed_43 = function $$method_removed($a_rest) { - var self = this; + Opal.def(self, '$method_added', $Module_method_added$43 = function $$method_added($a) { + var $post_args, self = this; - return nil - }, TMP_Module_method_removed_43.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $Module_method_added$43.$$arity = -1); - Opal.defn(self, '$method_undefined', TMP_Module_method_undefined_44 = function $$method_undefined($a_rest) { - var self = this; + Opal.def(self, '$method_removed', $Module_method_removed$44 = function $$method_removed($a) { + var $post_args, self = this; - return nil - }, TMP_Module_method_undefined_44.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $Module_method_removed$44.$$arity = -1); - Opal.defn(self, '$module_eval', TMP_Module_module_eval_45 = function $$module_eval($a_rest) { - var $b, TMP_46, self = this, args, $iter = TMP_Module_module_eval_45.$$p, block = $iter || nil, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; + Opal.def(self, '$method_undefined', $Module_method_undefined$45 = function $$method_undefined($a) { + var $post_args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Module_module_eval_45.$$p = null; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $Module_method_undefined$45.$$arity = -1); + + Opal.def(self, '$module_eval', $Module_module_eval$46 = function $$module_eval($a) { + var $iter = $Module_module_eval$46.$$p, block = $iter || nil, $post_args, args, $b, $$47, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; + + if ($iter) $Module_module_eval$46.$$p = null; + + + if ($iter) $Module_module_eval$46.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) { if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) { - } else { - Opal.const_get_relative($nesting, 'Kernel').$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") + } else { + $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") }; $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; default_eval_options = $hash2(["file", "eval"], {"file": ($truthy($b = file) ? $b : "(eval)"), "eval": true}); compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); - compiled = Opal.const_get_relative($nesting, 'Opal').$compile(string, compiling_options); - block = $send(Opal.const_get_relative($nesting, 'Kernel'), 'proc', [], (TMP_46 = function(){var self = TMP_46.$$s || this; + compiled = $$($nesting, 'Opal').$compile(string, compiling_options); + block = $send($$($nesting, 'Kernel'), 'proc', [], ($$47 = function(){var self = $$47.$$s || this; return (function(self) { return eval(compiled); })(self) - }, TMP_46.$$s = self, TMP_46.$$arity = 0, TMP_46)); - } else if ($truthy($rb_gt(args.$size(), 0))) { - Opal.const_get_relative($nesting, 'Kernel').$raise(Opal.const_get_relative($nesting, 'ArgumentError'), $rb_plus("" + "wrong number of arguments (" + (args.$size()) + " for 0)", "\n\n NOTE:If you want to enable passing a String argument please add \"require 'opal-parser'\" to your script\n"))}; + }, $$47.$$s = self, $$47.$$arity = 0, $$47)); + } else if ($truthy(args['$any?']())) { + $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), "" + ("" + "wrong number of arguments (" + (args.$size()) + " for 0)") + "\n\n NOTE:If you want to enable passing a String argument please add \"require 'opal-parser'\" to your script\n")}; var old = block.$$s, result; @@ -3205,22 +3297,23 @@ if (o == null) o = nil;if (c == null) c = nil; return result; ; - }, TMP_Module_module_eval_45.$$arity = -1); + }, $Module_module_eval$46.$$arity = -1); Opal.alias(self, "class_eval", "module_eval"); - Opal.defn(self, '$module_exec', TMP_Module_module_exec_47 = function $$module_exec($a_rest) { - var self = this, args, $iter = TMP_Module_module_exec_47.$$p, block = $iter || nil; + Opal.def(self, '$module_exec', $Module_module_exec$48 = function $$module_exec($a) { + var $iter = $Module_module_exec$48.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Module_module_exec_47.$$p = null; + if ($iter) $Module_module_exec$48.$$p = null; + + + if ($iter) $Module_module_exec$48.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if (block === nil) { - self.$raise(Opal.const_get_relative($nesting, 'LocalJumpError'), "no block given") + self.$raise($$($nesting, 'LocalJumpError'), "no block given") } var block_self = block.$$s, result; @@ -3230,28 +3323,27 @@ if (o == null) o = nil;if (c == null) c = nil; block.$$s = block_self; return result; - - }, TMP_Module_module_exec_47.$$arity = -1); + ; + }, $Module_module_exec$48.$$arity = -1); Opal.alias(self, "class_exec", "module_exec"); - Opal.defn(self, '$method_defined?', TMP_Module_method_defined$q_48 = function(method) { + Opal.def(self, '$method_defined?', $Module_method_defined$ques$49 = function(method) { var self = this; - var body = self.$$proto['$' + method]; + var body = self.$$prototype['$' + method]; return (!!body) && !body.$$stub; - }, TMP_Module_method_defined$q_48.$$arity = 1); + }, $Module_method_defined$ques$49.$$arity = 1); - Opal.defn(self, '$module_function', TMP_Module_module_function_49 = function $$module_function($a_rest) { - var self = this, methods; + Opal.def(self, '$module_function', $Module_module_function$50 = function $$module_function($a) { + var $post_args, methods, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - methods = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - methods[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + methods = $post_args;; if (methods.length === 0) { self.$$module_function = true; @@ -3260,17 +3352,17 @@ if (o == null) o = nil;if (c == null) c = nil; for (var i = 0, length = methods.length; i < length; i++) { var meth = methods[i], id = '$' + meth, - func = self.$$proto[id]; + func = self.$$prototype[id]; Opal.defs(self, id, func); } } return self; + ; + }, $Module_module_function$50.$$arity = -1); - }, TMP_Module_module_function_49.$$arity = -1); - - Opal.defn(self, '$name', TMP_Module_name_50 = function $$name() { + Opal.def(self, '$name', $Module_name$51 = function $$name() { var self = this; @@ -3299,39 +3391,84 @@ if (o == null) o = nil;if (c == null) c = nil; return self.$$full_name = result.join('::'); - }, TMP_Module_name_50.$$arity = 0); + }, $Module_name$51.$$arity = 0); + + Opal.def(self, '$prepend', $Module_prepend$52 = function $$prepend($a) { + var $post_args, mods, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + mods = $post_args;; + + if (mods.length === 0) { + self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (given 0, expected 1+)") + } + + for (var i = mods.length - 1; i >= 0; i--) { + var mod = mods[i]; + + if (!mod.$$is_module) { + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); + } + + (mod).$prepend_features(self); + (mod).$prepended(self); + } + ; + return self; + }, $Module_prepend$52.$$arity = -1); + + Opal.def(self, '$prepend_features', $Module_prepend_features$53 = function $$prepend_features(prepender) { + var self = this; + + + + if (!self.$$is_module) { + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (self.$class()) + " (expected Module)"); + } + + Opal.prepend_features(self, prepender) + ; + return self; + }, $Module_prepend_features$53.$$arity = 1); + + Opal.def(self, '$prepended', $Module_prepended$54 = function $$prepended(mod) { + var self = this; + + return nil + }, $Module_prepended$54.$$arity = 1); - Opal.defn(self, '$remove_const', TMP_Module_remove_const_51 = function $$remove_const(name) { + Opal.def(self, '$remove_const', $Module_remove_const$55 = function $$remove_const(name) { var self = this; - return Opal.const_remove(self, name) - }, TMP_Module_remove_const_51.$$arity = 1); + return Opal.const_remove(self, name); + }, $Module_remove_const$55.$$arity = 1); - Opal.defn(self, '$to_s', TMP_Module_to_s_52 = function $$to_s() { + Opal.def(self, '$to_s', $Module_to_s$56 = function $$to_s() { var $a, self = this; return ($truthy($a = Opal.Module.$name.call(self)) ? $a : "" + "#<" + (self.$$is_module ? 'Module' : 'Class') + ":0x" + (self.$__id__().$to_s(16)) + ">") - }, TMP_Module_to_s_52.$$arity = 0); + }, $Module_to_s$56.$$arity = 0); - Opal.defn(self, '$undef_method', TMP_Module_undef_method_53 = function $$undef_method($a_rest) { - var self = this, names; + Opal.def(self, '$undef_method', $Module_undef_method$57 = function $$undef_method($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + for (var i = 0, length = names.length; i < length; i++) { Opal.udef(self, "$" + names[i]); } ; return self; - }, TMP_Module_undef_method_53.$$arity = -1); + }, $Module_undef_method$57.$$arity = -1); - Opal.defn(self, '$instance_variables', TMP_Module_instance_variables_54 = function $$instance_variables() { + Opal.def(self, '$instance_variables', $Module_instance_variables$58 = function $$instance_variables() { var self = this, consts = nil; @@ -3347,24 +3484,24 @@ if (o == null) o = nil;if (c == null) c = nil; return result; ; - }, TMP_Module_instance_variables_54.$$arity = 0); + }, $Module_instance_variables$58.$$arity = 0); - Opal.defn(self, '$dup', TMP_Module_dup_55 = function $$dup() { - var self = this, $iter = TMP_Module_dup_55.$$p, $yield = $iter || nil, copy = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$dup', $Module_dup$59 = function $$dup() { + var $iter = $Module_dup$59.$$p, $yield = $iter || nil, self = this, copy = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Module_dup_55.$$p = null; + if ($iter) $Module_dup$59.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - copy = $send(self, Opal.find_super_dispatcher(self, 'dup', TMP_Module_dup_55, false), $zuper, $iter); + copy = $send(self, Opal.find_super_dispatcher(self, 'dup', $Module_dup$59, false), $zuper, $iter); copy.$copy_class_variables(self); copy.$copy_constants(self); return copy; - }, TMP_Module_dup_55.$$arity = 0); + }, $Module_dup$59.$$arity = 0); - Opal.defn(self, '$copy_class_variables', TMP_Module_copy_class_variables_56 = function $$copy_class_variables(other) { + Opal.def(self, '$copy_class_variables', $Module_copy_class_variables$60 = function $$copy_class_variables(other) { var self = this; @@ -3372,8 +3509,8 @@ if (o == null) o = nil;if (c == null) c = nil; self.$$cvars[name] = other.$$cvars[name]; } - }, TMP_Module_copy_class_variables_56.$$arity = 1); - return (Opal.defn(self, '$copy_constants', TMP_Module_copy_constants_57 = function $$copy_constants(other) { + }, $Module_copy_class_variables$60.$$arity = 1); + return (Opal.def(self, '$copy_constants', $Module_copy_constants$61 = function $$copy_constants(other) { var self = this; @@ -3383,66 +3520,67 @@ if (o == null) o = nil;if (c == null) c = nil; Opal.const_set(self, name, other_constants[name]); } - }, TMP_Module_copy_constants_57.$$arity = 1), nil) && 'copy_constants'; + }, $Module_copy_constants$61.$$arity = 1), nil) && 'copy_constants'; })($nesting[0], null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/class"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - Opal.add_stubs(['$require', '$initialize_copy', '$allocate', '$name', '$to_s']); + Opal.add_stubs(['$require', '$class_eval', '$to_proc', '$initialize_copy', '$allocate', '$name', '$to_s']); self.$require("corelib/module"); return (function($base, $super, $parent_nesting) { - function $Class(){}; - var self = $Class = $klass($base, $super, 'Class', $Class); + var self = $klass($base, $super, 'Class'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Class_new_1, TMP_Class_allocate_2, TMP_Class_inherited_3, TMP_Class_initialize_dup_4, TMP_Class_new_5, TMP_Class_superclass_6, TMP_Class_to_s_7; + var $nesting = [self].concat($parent_nesting), $Class_new$1, $Class_allocate$2, $Class_inherited$3, $Class_initialize_dup$4, $Class_new$5, $Class_superclass$6, $Class_to_s$7; - Opal.defs(self, '$new', TMP_Class_new_1 = function(superclass) { - var self = this, $iter = TMP_Class_new_1.$$p, block = $iter || nil; + Opal.defs(self, '$new', $Class_new$1 = function(superclass) { + var $iter = $Class_new$1.$$p, block = $iter || nil, self = this; + if ($iter) $Class_new$1.$$p = null; + + + if ($iter) $Class_new$1.$$p = null;; + if (superclass == null) { - superclass = Opal.const_get_relative($nesting, 'Object'); - } - if ($iter) TMP_Class_new_1.$$p = null; + superclass = $$($nesting, 'Object'); + }; if (!superclass.$$is_class) { throw Opal.TypeError.$new("superclass must be a Class"); } - var alloc = Opal.boot_class_alloc(null, function(){}, superclass); - var klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor); - - klass.$$super = superclass; - klass.$$parent = superclass; - + var klass = Opal.allocate_class(nil, superclass); superclass.$inherited(klass); - Opal.module_initialize(klass, block); - + (function() {if ((block !== nil)) { + return $send((klass), 'class_eval', [], block.$to_proc()) + } else { + return nil + }; return nil; })() return klass; + ; + }, $Class_new$1.$$arity = -1); - }, TMP_Class_new_1.$$arity = -1); - - Opal.defn(self, '$allocate', TMP_Class_allocate_2 = function $$allocate() { + Opal.def(self, '$allocate', $Class_allocate$2 = function $$allocate() { var self = this; - var obj = new self.$$alloc(); + var obj = new self.$$constructor(); obj.$$id = Opal.uid(); return obj; - }, TMP_Class_allocate_2.$$arity = 0); + }, $Class_allocate$2.$$arity = 0); - Opal.defn(self, '$inherited', TMP_Class_inherited_3 = function $$inherited(cls) { + Opal.def(self, '$inherited', $Class_inherited$3 = function $$inherited(cls) { var self = this; return nil - }, TMP_Class_inherited_3.$$arity = 1); + }, $Class_inherited$3.$$arity = 1); - Opal.defn(self, '$initialize_dup', TMP_Class_initialize_dup_4 = function $$initialize_dup(original) { + Opal.def(self, '$initialize_dup', $Class_initialize_dup$4 = function $$initialize_dup(original) { var self = this; @@ -3451,101 +3589,109 @@ Opal.modules["corelib/class"] = function(Opal) { self.$$name = null; self.$$full_name = null; ; - }, TMP_Class_initialize_dup_4.$$arity = 1); + }, $Class_initialize_dup$4.$$arity = 1); - Opal.defn(self, '$new', TMP_Class_new_5 = function($a_rest) { - var self = this, args, $iter = TMP_Class_new_5.$$p, block = $iter || nil; + Opal.def(self, '$new', $Class_new$5 = function($a) { + var $iter = $Class_new$5.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Class_new_5.$$p = null; + if ($iter) $Class_new$5.$$p = null; + + + if ($iter) $Class_new$5.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var object = self.$allocate(); Opal.send(object, object.$initialize, args, block); return object; + ; + }, $Class_new$5.$$arity = -1); - }, TMP_Class_new_5.$$arity = -1); - - Opal.defn(self, '$superclass', TMP_Class_superclass_6 = function $$superclass() { + Opal.def(self, '$superclass', $Class_superclass$6 = function $$superclass() { var self = this; - return self.$$super || nil - }, TMP_Class_superclass_6.$$arity = 0); - return (Opal.defn(self, '$to_s', TMP_Class_to_s_7 = function $$to_s() { - var self = this, $iter = TMP_Class_to_s_7.$$p, $yield = $iter || nil; + return self.$$super || nil; + }, $Class_superclass$6.$$arity = 0); + return (Opal.def(self, '$to_s', $Class_to_s$7 = function $$to_s() { + var $iter = $Class_to_s$7.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Class_to_s_7.$$p = null; + if ($iter) $Class_to_s$7.$$p = null; var singleton_of = self.$$singleton_of; - if (singleton_of && (singleton_of.$$is_class || singleton_of.$$is_module)) { + if (singleton_of && (singleton_of.$$is_a_module)) { return "" + "#"; } else if (singleton_of) { // a singleton class created from an object return "" + "#>"; } - return $send(self, Opal.find_super_dispatcher(self, 'to_s', TMP_Class_to_s_7, false), [], null); + return $send(self, Opal.find_super_dispatcher(self, 'to_s', $Class_to_s$7, false), [], null); - }, TMP_Class_to_s_7.$$arity = 0), nil) && 'to_s'; + }, $Class_to_s$7.$$arity = 0), nil) && 'to_s'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/basic_object"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$==', '$!', '$nil?', '$cover?', '$size', '$raise', '$merge', '$compile', '$proc', '$>', '$new', '$inspect']); + Opal.add_stubs(['$==', '$!', '$nil?', '$cover?', '$size', '$raise', '$merge', '$compile', '$proc', '$any?', '$inspect', '$new']); return (function($base, $super, $parent_nesting) { - function $BasicObject(){}; - var self = $BasicObject = $klass($base, $super, 'BasicObject', $BasicObject); + var self = $klass($base, $super, 'BasicObject'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BasicObject_initialize_1, TMP_BasicObject_$eq$eq_2, TMP_BasicObject_eql$q_3, TMP_BasicObject___id___4, TMP_BasicObject___send___5, TMP_BasicObject_$B_6, TMP_BasicObject_$B$eq_7, TMP_BasicObject_instance_eval_8, TMP_BasicObject_instance_exec_10, TMP_BasicObject_singleton_method_added_11, TMP_BasicObject_singleton_method_removed_12, TMP_BasicObject_singleton_method_undefined_13, TMP_BasicObject_method_missing_14; + var $nesting = [self].concat($parent_nesting), $BasicObject_initialize$1, $BasicObject_$eq_eq$2, $BasicObject_eql$ques$3, $BasicObject___id__$4, $BasicObject___send__$5, $BasicObject_$excl$6, $BasicObject_$not_eq$7, $BasicObject_instance_eval$8, $BasicObject_instance_exec$10, $BasicObject_singleton_method_added$11, $BasicObject_singleton_method_removed$12, $BasicObject_singleton_method_undefined$13, $BasicObject_class$14, $BasicObject_method_missing$15; - Opal.defn(self, '$initialize', TMP_BasicObject_initialize_1 = function $$initialize($a_rest) { - var self = this; + Opal.def(self, '$initialize', $BasicObject_initialize$1 = function $$initialize($a) { + var $post_args, self = this; - return nil - }, TMP_BasicObject_initialize_1.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $BasicObject_initialize$1.$$arity = -1); - Opal.defn(self, '$==', TMP_BasicObject_$eq$eq_2 = function(other) { + Opal.def(self, '$==', $BasicObject_$eq_eq$2 = function(other) { var self = this; - return self === other - }, TMP_BasicObject_$eq$eq_2.$$arity = 1); + return self === other; + }, $BasicObject_$eq_eq$2.$$arity = 1); - Opal.defn(self, '$eql?', TMP_BasicObject_eql$q_3 = function(other) { + Opal.def(self, '$eql?', $BasicObject_eql$ques$3 = function(other) { var self = this; return self['$=='](other) - }, TMP_BasicObject_eql$q_3.$$arity = 1); + }, $BasicObject_eql$ques$3.$$arity = 1); Opal.alias(self, "equal?", "=="); - Opal.defn(self, '$__id__', TMP_BasicObject___id___4 = function $$__id__() { + Opal.def(self, '$__id__', $BasicObject___id__$4 = function $$__id__() { var self = this; - return self.$$id || (self.$$id = Opal.uid()) - }, TMP_BasicObject___id___4.$$arity = 0); + + if (self.$$id != null) { + return self.$$id; + } + Opal.defineProperty(self, '$$id', Opal.uid()); + return self.$$id; - Opal.defn(self, '$__send__', TMP_BasicObject___send___5 = function $$__send__(symbol, $a_rest) { - var self = this, args, $iter = TMP_BasicObject___send___5.$$p, block = $iter || nil; + }, $BasicObject___id__$4.$$arity = 0); + + Opal.def(self, '$__send__', $BasicObject___send__$5 = function $$__send__(symbol, $a) { + var $iter = $BasicObject___send__$5.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_BasicObject___send___5.$$p = null; + if ($iter) $BasicObject___send__$5.$$p = null; + + + if ($iter) $BasicObject___send__$5.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; var func = self['$' + symbol] @@ -3562,51 +3708,51 @@ Opal.modules["corelib/basic_object"] = function(Opal) { } return self.$method_missing.apply(self, [symbol].concat(args)); + ; + }, $BasicObject___send__$5.$$arity = -2); - }, TMP_BasicObject___send___5.$$arity = -2); - - Opal.defn(self, '$!', TMP_BasicObject_$B_6 = function() { + Opal.def(self, '$!', $BasicObject_$excl$6 = function() { var self = this; return false - }, TMP_BasicObject_$B_6.$$arity = 0); + }, $BasicObject_$excl$6.$$arity = 0); - Opal.defn(self, '$!=', TMP_BasicObject_$B$eq_7 = function(other) { + Opal.def(self, '$!=', $BasicObject_$not_eq$7 = function(other) { var self = this; return self['$=='](other)['$!']() - }, TMP_BasicObject_$B$eq_7.$$arity = 1); + }, $BasicObject_$not_eq$7.$$arity = 1); - Opal.defn(self, '$instance_eval', TMP_BasicObject_instance_eval_8 = function $$instance_eval($a_rest) { - var $b, TMP_9, self = this, args, $iter = TMP_BasicObject_instance_eval_8.$$p, block = $iter || nil, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; + Opal.def(self, '$instance_eval', $BasicObject_instance_eval$8 = function $$instance_eval($a) { + var $iter = $BasicObject_instance_eval$8.$$p, block = $iter || nil, $post_args, args, $b, $$9, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_BasicObject_instance_eval_8.$$p = null; + if ($iter) $BasicObject_instance_eval$8.$$p = null; + + if ($iter) $BasicObject_instance_eval$8.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) { if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) { - } else { - Opal.const_get_qualified('::', 'Kernel').$raise(Opal.const_get_qualified('::', 'ArgumentError'), "wrong number of arguments (0 for 1..3)") + } else { + $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "wrong number of arguments (0 for 1..3)") }; $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; default_eval_options = $hash2(["file", "eval"], {"file": ($truthy($b = file) ? $b : "(eval)"), "eval": true}); compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); - compiled = Opal.const_get_qualified('::', 'Opal').$compile(string, compiling_options); - block = $send(Opal.const_get_qualified('::', 'Kernel'), 'proc', [], (TMP_9 = function(){var self = TMP_9.$$s || this; + compiled = $$$('::', 'Opal').$compile(string, compiling_options); + block = $send($$$('::', 'Kernel'), 'proc', [], ($$9 = function(){var self = $$9.$$s || this; return (function(self) { return eval(compiled); })(self) - }, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9)); - } else if ($truthy($rb_gt(args.$size(), 0))) { - Opal.const_get_qualified('::', 'Kernel').$raise(Opal.const_get_qualified('::', 'ArgumentError'), "" + "wrong number of arguments (" + (args.$size()) + " for 0)")}; + }, $$9.$$s = self, $$9.$$arity = 0, $$9)); + } else if ($truthy(args['$any?']())) { + $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "" + "wrong number of arguments (" + (args.$size()) + " for 0)")}; var old = block.$$s, result; @@ -3616,7 +3762,7 @@ Opal.modules["corelib/basic_object"] = function(Opal) { // Need to pass $$eval so that method definitions know if this is // being done on a class/module. Cannot be compiler driven since // send(:instance_eval) needs to work. - if (self.$$is_class || self.$$is_module) { + if (self.$$is_a_module) { self.$$eval = true; try { result = block.call(self, self); @@ -3633,22 +3779,22 @@ Opal.modules["corelib/basic_object"] = function(Opal) { return result; ; - }, TMP_BasicObject_instance_eval_8.$$arity = -1); + }, $BasicObject_instance_eval$8.$$arity = -1); - Opal.defn(self, '$instance_exec', TMP_BasicObject_instance_exec_10 = function $$instance_exec($a_rest) { - var self = this, args, $iter = TMP_BasicObject_instance_exec_10.$$p, block = $iter || nil; + Opal.def(self, '$instance_exec', $BasicObject_instance_exec$10 = function $$instance_exec($a) { + var $iter = $BasicObject_instance_exec$10.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_BasicObject_instance_exec_10.$$p = null; + if ($iter) $BasicObject_instance_exec$10.$$p = null; + + + if ($iter) $BasicObject_instance_exec$10.$$p = null;; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(block)) { - } else { - Opal.const_get_qualified('::', 'Kernel').$raise(Opal.const_get_qualified('::', 'ArgumentError'), "no block given") + } else { + $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "no block given") }; var block_self = block.$$s, @@ -3656,7 +3802,7 @@ Opal.modules["corelib/basic_object"] = function(Opal) { block.$$s = null; - if (self.$$is_class || self.$$is_module) { + if (self.$$is_a_module) { self.$$eval = true; try { result = block.apply(self, args); @@ -3673,95 +3819,113 @@ Opal.modules["corelib/basic_object"] = function(Opal) { return result; ; - }, TMP_BasicObject_instance_exec_10.$$arity = -1); + }, $BasicObject_instance_exec$10.$$arity = -1); - Opal.defn(self, '$singleton_method_added', TMP_BasicObject_singleton_method_added_11 = function $$singleton_method_added($a_rest) { - var self = this; + Opal.def(self, '$singleton_method_added', $BasicObject_singleton_method_added$11 = function $$singleton_method_added($a) { + var $post_args, self = this; - return nil - }, TMP_BasicObject_singleton_method_added_11.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $BasicObject_singleton_method_added$11.$$arity = -1); - Opal.defn(self, '$singleton_method_removed', TMP_BasicObject_singleton_method_removed_12 = function $$singleton_method_removed($a_rest) { - var self = this; + Opal.def(self, '$singleton_method_removed', $BasicObject_singleton_method_removed$12 = function $$singleton_method_removed($a) { + var $post_args, self = this; - return nil - }, TMP_BasicObject_singleton_method_removed_12.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $BasicObject_singleton_method_removed$12.$$arity = -1); + + Opal.def(self, '$singleton_method_undefined', $BasicObject_singleton_method_undefined$13 = function $$singleton_method_undefined($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $BasicObject_singleton_method_undefined$13.$$arity = -1); - Opal.defn(self, '$singleton_method_undefined', TMP_BasicObject_singleton_method_undefined_13 = function $$singleton_method_undefined($a_rest) { + Opal.def(self, '$class', $BasicObject_class$14 = function() { var self = this; - return nil - }, TMP_BasicObject_singleton_method_undefined_13.$$arity = -1); - return (Opal.defn(self, '$method_missing', TMP_BasicObject_method_missing_14 = function $$method_missing(symbol, $a_rest) { - var self = this, args, $iter = TMP_BasicObject_method_missing_14.$$p, block = $iter || nil; - - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_BasicObject_method_missing_14.$$p = null; - return Opal.const_get_qualified('::', 'Kernel').$raise(Opal.const_get_qualified('::', 'NoMethodError').$new((function() {if ($truthy(self.$inspect && !self.$inspect.$$stub)) { + return self.$$class; + }, $BasicObject_class$14.$$arity = 0); + return (Opal.def(self, '$method_missing', $BasicObject_method_missing$15 = function $$method_missing(symbol, $a) { + var $iter = $BasicObject_method_missing$15.$$p, block = $iter || nil, $post_args, args, self = this, message = nil; + + if ($iter) $BasicObject_method_missing$15.$$p = null; + + + if ($iter) $BasicObject_method_missing$15.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + message = (function() {if ($truthy(self.$inspect && !self.$inspect.$$stub)) { return "" + "undefined method `" + (symbol) + "' for " + (self.$inspect()) + ":" + (self.$$class) - } else { + } else { return "" + "undefined method `" + (symbol) + "' for " + (self.$$class) - }; return nil; })(), symbol)) - }, TMP_BasicObject_method_missing_14.$$arity = -2), nil) && 'method_missing'; + }; return nil; })(); + return $$$('::', 'Kernel').$raise($$$('::', 'NoMethodError').$new(message, symbol)); + }, $BasicObject_method_missing$15.$$arity = -2), nil) && 'method_missing'; })($nesting[0], null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/kernel"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $klass = Opal.klass; - Opal.add_stubs(['$raise', '$new', '$inspect', '$!', '$=~', '$==', '$object_id', '$class', '$coerce_to?', '$<<', '$allocate', '$copy_instance_variables', '$copy_singleton_methods', '$initialize_clone', '$initialize_copy', '$define_method', '$singleton_class', '$to_proc', '$initialize_dup', '$for', '$>', '$size', '$pop', '$call', '$coerce_to', '$append_features', '$extended', '$length', '$respond_to?', '$[]', '$nil?', '$to_a', '$to_int', '$fetch', '$Integer', '$Float', '$to_ary', '$to_str', '$to_s', '$__id__', '$instance_variable_name!', '$coerce_to!', '$===', '$enum_for', '$result', '$print', '$format', '$puts', '$each', '$<=', '$empty?', '$exception', '$kind_of?', '$rand', '$respond_to_missing?', '$try_convert!', '$expand_path', '$join', '$start_with?', '$srand', '$new_seed', '$sym', '$arg', '$open', '$include']); + Opal.add_stubs(['$raise', '$new', '$inspect', '$!', '$=~', '$==', '$object_id', '$class', '$coerce_to?', '$<<', '$allocate', '$copy_instance_variables', '$copy_singleton_methods', '$initialize_clone', '$initialize_copy', '$define_method', '$singleton_class', '$to_proc', '$initialize_dup', '$for', '$empty?', '$pop', '$call', '$coerce_to', '$append_features', '$extend_object', '$extended', '$__id__', '$to_s', '$instance_variable_name!', '$respond_to?', '$to_int', '$coerce_to!', '$Integer', '$nil?', '$===', '$enum_for', '$result', '$any?', '$print', '$format', '$puts', '$each', '$<=', '$length', '$[]', '$exception', '$is_a?', '$rand', '$respond_to_missing?', '$try_convert!', '$expand_path', '$join', '$start_with?', '$new_seed', '$srand', '$sym', '$arg', '$open', '$include']); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_method_missing_1, TMP_Kernel_$eq$_2, TMP_Kernel_$B$_3, TMP_Kernel_$eq$eq$eq_4, TMP_Kernel_$lt$eq$gt_5, TMP_Kernel_method_6, TMP_Kernel_methods_7, TMP_Kernel_Array_8, TMP_Kernel_at_exit_9, TMP_Kernel_caller_10, TMP_Kernel_class_11, TMP_Kernel_copy_instance_variables_12, TMP_Kernel_copy_singleton_methods_13, TMP_Kernel_clone_14, TMP_Kernel_initialize_clone_15, TMP_Kernel_define_singleton_method_16, TMP_Kernel_dup_17, TMP_Kernel_initialize_dup_18, TMP_Kernel_enum_for_19, TMP_Kernel_equal$q_20, TMP_Kernel_exit_21, TMP_Kernel_extend_22, TMP_Kernel_format_23, TMP_Kernel_hash_24, TMP_Kernel_initialize_copy_25, TMP_Kernel_inspect_26, TMP_Kernel_instance_of$q_27, TMP_Kernel_instance_variable_defined$q_28, TMP_Kernel_instance_variable_get_29, TMP_Kernel_instance_variable_set_30, TMP_Kernel_remove_instance_variable_31, TMP_Kernel_instance_variables_32, TMP_Kernel_Integer_33, TMP_Kernel_Float_34, TMP_Kernel_Hash_35, TMP_Kernel_is_a$q_36, TMP_Kernel_itself_37, TMP_Kernel_lambda_38, TMP_Kernel_load_39, TMP_Kernel_loop_40, TMP_Kernel_nil$q_42, TMP_Kernel_printf_43, TMP_Kernel_proc_44, TMP_Kernel_puts_45, TMP_Kernel_p_47, TMP_Kernel_print_48, TMP_Kernel_warn_49, TMP_Kernel_raise_50, TMP_Kernel_rand_51, TMP_Kernel_respond_to$q_52, TMP_Kernel_respond_to_missing$q_53, TMP_Kernel_require_54, TMP_Kernel_require_relative_55, TMP_Kernel_require_tree_56, TMP_Kernel_singleton_class_57, TMP_Kernel_sleep_58, TMP_Kernel_srand_59, TMP_Kernel_String_60, TMP_Kernel_tap_61, TMP_Kernel_to_proc_62, TMP_Kernel_to_s_63, TMP_Kernel_catch_64, TMP_Kernel_throw_65, TMP_Kernel_open_66; + var $nesting = [self].concat($parent_nesting), $Kernel_method_missing$1, $Kernel_$eq_tilde$2, $Kernel_$excl_tilde$3, $Kernel_$eq_eq_eq$4, $Kernel_$lt_eq_gt$5, $Kernel_method$6, $Kernel_methods$7, $Kernel_public_methods$8, $Kernel_Array$9, $Kernel_at_exit$10, $Kernel_caller$11, $Kernel_class$12, $Kernel_copy_instance_variables$13, $Kernel_copy_singleton_methods$14, $Kernel_clone$15, $Kernel_initialize_clone$16, $Kernel_define_singleton_method$17, $Kernel_dup$18, $Kernel_initialize_dup$19, $Kernel_enum_for$20, $Kernel_equal$ques$21, $Kernel_exit$22, $Kernel_extend$23, $Kernel_hash$24, $Kernel_initialize_copy$25, $Kernel_inspect$26, $Kernel_instance_of$ques$27, $Kernel_instance_variable_defined$ques$28, $Kernel_instance_variable_get$29, $Kernel_instance_variable_set$30, $Kernel_remove_instance_variable$31, $Kernel_instance_variables$32, $Kernel_Integer$33, $Kernel_Float$34, $Kernel_Hash$35, $Kernel_is_a$ques$36, $Kernel_itself$37, $Kernel_lambda$38, $Kernel_load$39, $Kernel_loop$40, $Kernel_nil$ques$42, $Kernel_printf$43, $Kernel_proc$44, $Kernel_puts$45, $Kernel_p$46, $Kernel_print$48, $Kernel_warn$49, $Kernel_raise$50, $Kernel_rand$51, $Kernel_respond_to$ques$52, $Kernel_respond_to_missing$ques$53, $Kernel_require$54, $Kernel_require_relative$55, $Kernel_require_tree$56, $Kernel_singleton_class$57, $Kernel_sleep$58, $Kernel_srand$59, $Kernel_String$60, $Kernel_tap$61, $Kernel_to_proc$62, $Kernel_to_s$63, $Kernel_catch$64, $Kernel_throw$65, $Kernel_open$66, $Kernel_yield_self$67; - Opal.defn(self, '$method_missing', TMP_Kernel_method_missing_1 = function $$method_missing(symbol, $a_rest) { - var self = this, args, $iter = TMP_Kernel_method_missing_1.$$p, block = $iter || nil; + Opal.def(self, '$method_missing', $Kernel_method_missing$1 = function $$method_missing(symbol, $a) { + var $iter = $Kernel_method_missing$1.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Kernel_method_missing_1.$$p = null; - return self.$raise(Opal.const_get_relative($nesting, 'NoMethodError').$new("" + "undefined method `" + (symbol) + "' for " + (self.$inspect()), symbol, args)) - }, TMP_Kernel_method_missing_1.$$arity = -2); + if ($iter) $Kernel_method_missing$1.$$p = null; + + + if ($iter) $Kernel_method_missing$1.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + return self.$raise($$($nesting, 'NoMethodError').$new("" + "undefined method `" + (symbol) + "' for " + (self.$inspect()), symbol, args)); + }, $Kernel_method_missing$1.$$arity = -2); - Opal.defn(self, '$=~', TMP_Kernel_$eq$_2 = function(obj) { + Opal.def(self, '$=~', $Kernel_$eq_tilde$2 = function(obj) { var self = this; return false - }, TMP_Kernel_$eq$_2.$$arity = 1); + }, $Kernel_$eq_tilde$2.$$arity = 1); - Opal.defn(self, '$!~', TMP_Kernel_$B$_3 = function(obj) { + Opal.def(self, '$!~', $Kernel_$excl_tilde$3 = function(obj) { var self = this; return self['$=~'](obj)['$!']() - }, TMP_Kernel_$B$_3.$$arity = 1); + }, $Kernel_$excl_tilde$3.$$arity = 1); - Opal.defn(self, '$===', TMP_Kernel_$eq$eq$eq_4 = function(other) { + Opal.def(self, '$===', $Kernel_$eq_eq_eq$4 = function(other) { var $a, self = this; return ($truthy($a = self.$object_id()['$=='](other.$object_id())) ? $a : self['$=='](other)) - }, TMP_Kernel_$eq$eq$eq_4.$$arity = 1); + }, $Kernel_$eq_eq_eq$4.$$arity = 1); - Opal.defn(self, '$<=>', TMP_Kernel_$lt$eq$gt_5 = function(other) { + Opal.def(self, '$<=>', $Kernel_$lt_eq_gt$5 = function(other) { var self = this; @@ -3776,50 +3940,57 @@ Opal.modules["corelib/kernel"] = function(Opal) { return nil; - }, TMP_Kernel_$lt$eq$gt_5.$$arity = 1); + }, $Kernel_$lt_eq_gt$5.$$arity = 1); - Opal.defn(self, '$method', TMP_Kernel_method_6 = function $$method(name) { + Opal.def(self, '$method', $Kernel_method$6 = function $$method(name) { var self = this; var meth = self['$' + name]; if (!meth || meth.$$stub) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$class()) + "'", name)); + self.$raise($$($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$class()) + "'", name)); } - return Opal.const_get_relative($nesting, 'Method').$new(self, meth.$$owner || self.$class(), meth, name); + return $$($nesting, 'Method').$new(self, meth.$$owner || self.$class(), meth, name); - }, TMP_Kernel_method_6.$$arity = 1); + }, $Kernel_method$6.$$arity = 1); - Opal.defn(self, '$methods', TMP_Kernel_methods_7 = function $$methods(all) { + Opal.def(self, '$methods', $Kernel_methods$7 = function $$methods(all) { var self = this; + + if (all == null) { all = true; - } + }; - var methods = []; - - for (var key in self) { - if (key[0] == "$" && typeof(self[key]) === "function") { - if (all == false || all === nil) { - if (!Opal.hasOwnProperty.call(self, key)) { - continue; - } - } - if (self[key].$$stub === undefined) { - methods.push(key.substr(1)); - } - } + if ($truthy(all)) { + return Opal.methods(self); + } else { + return Opal.own_methods(self); } - - return methods; + ; + }, $Kernel_methods$7.$$arity = -1); - }, TMP_Kernel_methods_7.$$arity = -1); - Opal.alias(self, "public_methods", "methods"); + Opal.def(self, '$public_methods', $Kernel_public_methods$8 = function $$public_methods(all) { + var self = this; + + + + if (all == null) { + all = true; + }; + + if ($truthy(all)) { + return Opal.methods(self); + } else { + return Opal.receiver_methods(self); + } + ; + }, $Kernel_public_methods$8.$$arity = -1); - Opal.defn(self, '$Array', TMP_Kernel_Array_8 = function $$Array(object) { + Opal.def(self, '$Array', $Kernel_Array$9 = function $$Array(object) { var self = this; @@ -3833,45 +4004,46 @@ Opal.modules["corelib/kernel"] = function(Opal) { return object; } - coerced = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](object, Opal.const_get_relative($nesting, 'Array'), "to_ary"); + coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), "to_ary"); if (coerced !== nil) { return coerced; } - coerced = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](object, Opal.const_get_relative($nesting, 'Array'), "to_a"); + coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), "to_a"); if (coerced !== nil) { return coerced; } return [object]; - }, TMP_Kernel_Array_8.$$arity = 1); + }, $Kernel_Array$9.$$arity = 1); - Opal.defn(self, '$at_exit', TMP_Kernel_at_exit_9 = function $$at_exit() { - var $a, self = this, $iter = TMP_Kernel_at_exit_9.$$p, block = $iter || nil; + Opal.def(self, '$at_exit', $Kernel_at_exit$10 = function $$at_exit() { + var $iter = $Kernel_at_exit$10.$$p, block = $iter || nil, $a, self = this; if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; - if ($iter) TMP_Kernel_at_exit_9.$$p = null; + if ($iter) $Kernel_at_exit$10.$$p = null; + + if ($iter) $Kernel_at_exit$10.$$p = null;; $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []); return $gvars.__at_exit__['$<<'](block); - }, TMP_Kernel_at_exit_9.$$arity = 0); + }, $Kernel_at_exit$10.$$arity = 0); - Opal.defn(self, '$caller', TMP_Kernel_caller_10 = function $$caller($a_rest) { - var self = this, args; + Opal.def(self, '$caller', $Kernel_caller$11 = function $$caller($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return [] - }, TMP_Kernel_caller_10.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return []; + }, $Kernel_caller$11.$$arity = -1); - Opal.defn(self, '$class', TMP_Kernel_class_11 = function() { + Opal.def(self, '$class', $Kernel_class$12 = function() { var self = this; - return self.$$class - }, TMP_Kernel_class_11.$$arity = 0); + return self.$$class; + }, $Kernel_class$12.$$arity = 0); - Opal.defn(self, '$copy_instance_variables', TMP_Kernel_copy_instance_variables_12 = function $$copy_instance_variables(other) { + Opal.def(self, '$copy_instance_variables', $Kernel_copy_instance_variables$13 = function $$copy_instance_variables(other) { var self = this; @@ -3883,69 +4055,82 @@ Opal.modules["corelib/kernel"] = function(Opal) { } } - }, TMP_Kernel_copy_instance_variables_12.$$arity = 1); + }, $Kernel_copy_instance_variables$13.$$arity = 1); - Opal.defn(self, '$copy_singleton_methods', TMP_Kernel_copy_singleton_methods_13 = function $$copy_singleton_methods(other) { + Opal.def(self, '$copy_singleton_methods', $Kernel_copy_singleton_methods$14 = function $$copy_singleton_methods(other) { var self = this; - var name; + var i, name, names, length; if (other.hasOwnProperty('$$meta')) { - var other_singleton_class_proto = Opal.get_singleton_class(other).$$proto; - var self_singleton_class_proto = Opal.get_singleton_class(self).$$proto; + var other_singleton_class = Opal.get_singleton_class(other); + var self_singleton_class = Opal.get_singleton_class(self); + names = Object.getOwnPropertyNames(other_singleton_class.$$prototype); - for (name in other_singleton_class_proto) { - if (name.charAt(0) === '$' && other_singleton_class_proto.hasOwnProperty(name)) { - self_singleton_class_proto[name] = other_singleton_class_proto[name]; + for (i = 0, length = names.length; i < length; i++) { + name = names[i]; + if (Opal.is_method(name)) { + self_singleton_class.$$prototype[name] = other_singleton_class.$$prototype[name]; } } + + self_singleton_class.$$const = Object.assign({}, other_singleton_class.$$const); + Object.setPrototypeOf( + self_singleton_class.$$prototype, + Object.getPrototypeOf(other_singleton_class.$$prototype) + ); } - for (name in other) { + for (i = 0, names = Object.getOwnPropertyNames(other), length = names.length; i < length; i++) { + name = names[i]; if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) { self[name] = other[name]; } } - }, TMP_Kernel_copy_singleton_methods_13.$$arity = 1); + }, $Kernel_copy_singleton_methods$14.$$arity = 1); - Opal.defn(self, '$clone', TMP_Kernel_clone_14 = function $$clone($kwargs) { - var self = this, freeze, copy = nil; + Opal.def(self, '$clone', $Kernel_clone$15 = function $$clone($kwargs) { + var freeze, self = this, copy = nil; - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } - } + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + freeze = $kwargs.$$smap["freeze"]; if (freeze == null) { freeze = true - } - + }; copy = self.$class().$allocate(); copy.$copy_instance_variables(self); copy.$copy_singleton_methods(self); copy.$initialize_clone(self); return copy; - }, TMP_Kernel_clone_14.$$arity = -1); + }, $Kernel_clone$15.$$arity = -1); - Opal.defn(self, '$initialize_clone', TMP_Kernel_initialize_clone_15 = function $$initialize_clone(other) { + Opal.def(self, '$initialize_clone', $Kernel_initialize_clone$16 = function $$initialize_clone(other) { var self = this; return self.$initialize_copy(other) - }, TMP_Kernel_initialize_clone_15.$$arity = 1); + }, $Kernel_initialize_clone$16.$$arity = 1); - Opal.defn(self, '$define_singleton_method', TMP_Kernel_define_singleton_method_16 = function $$define_singleton_method(name, method) { - var self = this, $iter = TMP_Kernel_define_singleton_method_16.$$p, block = $iter || nil; + Opal.def(self, '$define_singleton_method', $Kernel_define_singleton_method$17 = function $$define_singleton_method(name, method) { + var $iter = $Kernel_define_singleton_method$17.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Kernel_define_singleton_method_16.$$p = null; - return $send(self.$singleton_class(), 'define_method', [name, method], block.$to_proc()) - }, TMP_Kernel_define_singleton_method_16.$$arity = -2); + if ($iter) $Kernel_define_singleton_method$17.$$p = null; + + + if ($iter) $Kernel_define_singleton_method$17.$$p = null;; + ; + return $send(self.$singleton_class(), 'define_method', [name, method], block.$to_proc()); + }, $Kernel_define_singleton_method$17.$$arity = -2); - Opal.defn(self, '$dup', TMP_Kernel_dup_17 = function $$dup() { + Opal.def(self, '$dup', $Kernel_dup$18 = function $$dup() { var self = this, copy = nil; @@ -3953,47 +4138,54 @@ Opal.modules["corelib/kernel"] = function(Opal) { copy.$copy_instance_variables(self); copy.$initialize_dup(self); return copy; - }, TMP_Kernel_dup_17.$$arity = 0); + }, $Kernel_dup$18.$$arity = 0); - Opal.defn(self, '$initialize_dup', TMP_Kernel_initialize_dup_18 = function $$initialize_dup(other) { + Opal.def(self, '$initialize_dup', $Kernel_initialize_dup$19 = function $$initialize_dup(other) { var self = this; return self.$initialize_copy(other) - }, TMP_Kernel_initialize_dup_18.$$arity = 1); + }, $Kernel_initialize_dup$19.$$arity = 1); - Opal.defn(self, '$enum_for', TMP_Kernel_enum_for_19 = function $$enum_for(method, $a_rest) { - var self = this, args, $iter = TMP_Kernel_enum_for_19.$$p, block = $iter || nil; + Opal.def(self, '$enum_for', $Kernel_enum_for$20 = function $$enum_for($a, $b) { + var $iter = $Kernel_enum_for$20.$$p, block = $iter || nil, $post_args, method, args, self = this; + if ($iter) $Kernel_enum_for$20.$$p = null; + + + if ($iter) $Kernel_enum_for$20.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + if ($post_args.length > 0) { + method = $post_args[0]; + $post_args.splice(0, 1); + } if (method == null) { method = "each"; - } - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Kernel_enum_for_19.$$p = null; - return $send(Opal.const_get_relative($nesting, 'Enumerator'), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()) - }, TMP_Kernel_enum_for_19.$$arity = -1); + }; + + args = $post_args;; + return $send($$($nesting, 'Enumerator'), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()); + }, $Kernel_enum_for$20.$$arity = -1); Opal.alias(self, "to_enum", "enum_for"); - Opal.defn(self, '$equal?', TMP_Kernel_equal$q_20 = function(other) { + Opal.def(self, '$equal?', $Kernel_equal$ques$21 = function(other) { var self = this; - return self === other - }, TMP_Kernel_equal$q_20.$$arity = 1); + return self === other; + }, $Kernel_equal$ques$21.$$arity = 1); - Opal.defn(self, '$exit', TMP_Kernel_exit_21 = function $$exit(status) { + Opal.def(self, '$exit', $Kernel_exit$22 = function $$exit(status) { var $a, self = this, block = nil; if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; + + if (status == null) { status = true; - } - + }; $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []); - while ($truthy($rb_gt($gvars.__at_exit__.$size(), 0))) { + while (!($truthy($gvars.__at_exit__['$empty?']()))) { block = $gvars.__at_exit__.$pop(); block.$call(); @@ -4002,875 +4194,324 @@ Opal.modules["corelib/kernel"] = function(Opal) { if (status.$$is_boolean) { status = status ? 0 : 1; } else { - status = Opal.const_get_relative($nesting, 'Opal').$coerce_to(status, Opal.const_get_relative($nesting, 'Integer'), "to_int") + status = $$($nesting, 'Opal').$coerce_to(status, $$($nesting, 'Integer'), "to_int") } Opal.exit(status); ; return nil; - }, TMP_Kernel_exit_21.$$arity = -1); + }, $Kernel_exit$22.$$arity = -1); - Opal.defn(self, '$extend', TMP_Kernel_extend_22 = function $$extend($a_rest) { - var self = this, mods; + Opal.def(self, '$extend', $Kernel_extend$23 = function $$extend($a) { + var $post_args, mods, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - mods = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - mods[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + mods = $post_args;; + var singleton = self.$singleton_class(); for (var i = mods.length - 1; i >= 0; i--) { var mod = mods[i]; if (!mod.$$is_module) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); } (mod).$append_features(singleton); + (mod).$extend_object(self); (mod).$extended(self); } ; return self; - }, TMP_Kernel_extend_22.$$arity = -1); + }, $Kernel_extend$23.$$arity = -1); - Opal.defn(self, '$format', TMP_Kernel_format_23 = function $$format(format_string, $a_rest) { - var $b, self = this, args, ary = nil; - if ($gvars.DEBUG == null) $gvars.DEBUG = nil; + Opal.def(self, '$hash', $Kernel_hash$24 = function $$hash() { + var self = this; + + return self.$__id__() + }, $Kernel_hash$24.$$arity = 0); + + Opal.def(self, '$initialize_copy', $Kernel_initialize_copy$25 = function $$initialize_copy(other) { + var self = this; + + return nil + }, $Kernel_initialize_copy$25.$$arity = 1); + + Opal.def(self, '$inspect', $Kernel_inspect$26 = function $$inspect() { + var self = this; + + return self.$to_s() + }, $Kernel_inspect$26.$$arity = 0); + + Opal.def(self, '$instance_of?', $Kernel_instance_of$ques$27 = function(klass) { + var self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; + + if (!klass.$$is_class && !klass.$$is_module) { + self.$raise($$($nesting, 'TypeError'), "class or module required"); } + + return self.$$class === klass; + + }, $Kernel_instance_of$ques$27.$$arity = 1); + + Opal.def(self, '$instance_variable_defined?', $Kernel_instance_variable_defined$ques$28 = function(name) { + var self = this; + - if ($truthy((($b = args.$length()['$=='](1)) ? args['$[]'](0)['$respond_to?']("to_ary") : args.$length()['$=='](1)))) { - - ary = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](args['$[]'](0), Opal.const_get_relative($nesting, 'Array'), "to_ary"); - if ($truthy(ary['$nil?']())) { - } else { - args = ary.$to_a() - };}; + name = $$($nesting, 'Opal')['$instance_variable_name!'](name); + return Opal.hasOwnProperty.call(self, name.substr(1));; + }, $Kernel_instance_variable_defined$ques$28.$$arity = 1); + + Opal.def(self, '$instance_variable_get', $Kernel_instance_variable_get$29 = function $$instance_variable_get(name) { + var self = this; + - var result = '', - //used for slicing: - begin_slice = 0, - end_slice, - //used for iterating over the format string: - i, - len = format_string.length, - //used for processing field values: - arg, - str, - //used for processing %g and %G fields: - exponent, - //used for keeping track of width and precision: - width, - precision, - //used for holding temporary values: - tmp_num, - //used for processing %{} and %<> fileds: - hash_parameter_key, - closing_brace_char, - //used for processing %b, %B, %o, %x, and %X fields: - base_number, - base_prefix, - base_neg_zero_regex, - base_neg_zero_digit, - //used for processing arguments: - next_arg, - seq_arg_num = 1, - pos_arg_num = 0, - //used for keeping track of flags: - flags, - FNONE = 0, - FSHARP = 1, - FMINUS = 2, - FPLUS = 4, - FZERO = 8, - FSPACE = 16, - FWIDTH = 32, - FPREC = 64, - FPREC0 = 128; + name = $$($nesting, 'Opal')['$instance_variable_name!'](name); + + var ivar = self[Opal.ivar(name.substr(1))]; - function CHECK_FOR_FLAGS() { - if (flags&FWIDTH) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "flag after width") } - if (flags&FPREC0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "flag after precision") } - } + return ivar == null ? nil : ivar; + ; + }, $Kernel_instance_variable_get$29.$$arity = 1); + + Opal.def(self, '$instance_variable_set', $Kernel_instance_variable_set$30 = function $$instance_variable_set(name, value) { + var self = this; - function CHECK_FOR_WIDTH() { - if (flags&FWIDTH) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "width given twice") } - if (flags&FPREC0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "width after precision") } - } + + name = $$($nesting, 'Opal')['$instance_variable_name!'](name); + return self[Opal.ivar(name.substr(1))] = value;; + }, $Kernel_instance_variable_set$30.$$arity = 2); + + Opal.def(self, '$remove_instance_variable', $Kernel_remove_instance_variable$31 = function $$remove_instance_variable(name) { + var self = this; - function GET_NTH_ARG(num) { - if (num >= args.length) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "too few arguments") } - return args[num]; + + name = $$($nesting, 'Opal')['$instance_variable_name!'](name); + + var key = Opal.ivar(name.substr(1)), + val; + if (self.hasOwnProperty(key)) { + val = self[key]; + delete self[key]; + return val; } + ; + return self.$raise($$($nesting, 'NameError'), "" + "instance variable " + (name) + " not defined"); + }, $Kernel_remove_instance_variable$31.$$arity = 1); + + Opal.def(self, '$instance_variables', $Kernel_instance_variables$32 = function $$instance_variables() { + var self = this; - function GET_NEXT_ARG() { - switch (pos_arg_num) { - case -1: self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with numbered") - case -2: self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with named") + + var result = [], ivar; + + for (var name in self) { + if (self.hasOwnProperty(name) && name.charAt(0) !== '$') { + if (name.substr(-1) === '$') { + ivar = name.slice(0, name.length - 1); + } else { + ivar = name; + } + result.push('@' + ivar); } - pos_arg_num = seq_arg_num++; - return GET_NTH_ARG(pos_arg_num - 1); } - function GET_POS_ARG(num) { - if (pos_arg_num > 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after unnumbered(" + (pos_arg_num) + ")") + return result; + + }, $Kernel_instance_variables$32.$$arity = 0); + + Opal.def(self, '$Integer', $Kernel_Integer$33 = function $$Integer(value, base) { + var self = this; + + + ; + + var i, str, base_digits; + + if (!value.$$is_string) { + if (base !== undefined) { + self.$raise($$($nesting, 'ArgumentError'), "base specified for non string value") } - if (pos_arg_num === -2) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after named") + if (value === nil) { + self.$raise($$($nesting, 'TypeError'), "can't convert nil into Integer") } - if (num < 1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid index - " + (num) + "$") + if (value.$$is_number) { + if (value === Infinity || value === -Infinity || isNaN(value)) { + self.$raise($$($nesting, 'FloatDomainError'), value) + } + return Math.floor(value); } - pos_arg_num = -1; - return GET_NTH_ARG(num - 1); + if (value['$respond_to?']("to_int")) { + i = value.$to_int(); + if (i !== nil) { + return i; + } + } + return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Integer'), "to_i"); } - function GET_ARG() { - return (next_arg === undefined ? GET_NEXT_ARG() : next_arg); + if (value === "0") { + return 0; } - function READ_NUM(label) { - var num, str = ''; - for (;; i++) { - if (i === len) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "malformed format string - %*[0-9]") - } - if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) { - i--; - num = parseInt(str, 10) || 0; - if (num > 2147483647) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + (label) + " too big") - } - return num; - } - str += format_string.charAt(i); + if (base === undefined) { + base = 0; + } else { + base = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), "to_int"); + if (base === 1 || base < 0 || base > 36) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base)) } } - function READ_NUM_AFTER_ASTER(label) { - var arg, num = READ_NUM(label); - if (format_string.charAt(i + 1) === '$') { - i++; - arg = GET_POS_ARG(num); - } else { - arg = GET_NEXT_ARG(); - } - return (arg).$to_int(); - } + str = value.toLowerCase(); - for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) { - str = undefined; + str = str.replace(/(\d)_(?=\d)/g, '$1'); - flags = FNONE; - width = -1; - precision = -1; - next_arg = undefined; + str = str.replace(/^(\s*[+-]?)(0[bodx]?)/, function (_, head, flag) { + switch (flag) { + case '0b': + if (base === 0 || base === 2) { + base = 2; + return head; + } + case '0': + case '0o': + if (base === 0 || base === 8) { + base = 8; + return head; + } + case '0d': + if (base === 0 || base === 10) { + base = 10; + return head; + } + case '0x': + if (base === 0 || base === 16) { + base = 16; + return head; + } + } + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") + }); - end_slice = i; + base = (base === 0 ? 10 : base); - i++; + base_digits = '0-' + (base <= 10 ? base - 1 : '9a-' + String.fromCharCode(97 + (base - 11))); - switch (format_string.charAt(i)) { - case '%': - begin_slice = i; - case '': - case '\n': - case '\0': - i++; - continue; - } + if (!(new RegExp('^\\s*[+-]?[' + base_digits + ']+\\s*$')).test(str)) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") + } - format_sequence: for (; i < len; i++) { - switch (format_string.charAt(i)) { + i = parseInt(str, base); - case ' ': - CHECK_FOR_FLAGS(); - flags |= FSPACE; - continue format_sequence; + if (isNaN(i)) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") + } - case '#': - CHECK_FOR_FLAGS(); - flags |= FSHARP; - continue format_sequence; + return i; + ; + }, $Kernel_Integer$33.$$arity = -2); + + Opal.def(self, '$Float', $Kernel_Float$34 = function $$Float(value) { + var self = this; - case '+': - CHECK_FOR_FLAGS(); - flags |= FPLUS; - continue format_sequence; + + var str; - case '-': - CHECK_FOR_FLAGS(); - flags |= FMINUS; - continue format_sequence; + if (value === nil) { + self.$raise($$($nesting, 'TypeError'), "can't convert nil into Float") + } - case '0': - CHECK_FOR_FLAGS(); - flags |= FZERO; - continue format_sequence; + if (value.$$is_string) { + str = value.toString(); - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - tmp_num = READ_NUM('width'); - if (format_string.charAt(i + 1) === '$') { - if (i + 2 === len) { - str = '%'; - i++; - break format_sequence; - } - if (next_arg !== undefined) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "value given twice - %" + (tmp_num) + "$") - } - next_arg = GET_POS_ARG(tmp_num); - i++; - } else { - CHECK_FOR_WIDTH(); - flags |= FWIDTH; - width = tmp_num; - } - continue format_sequence; + str = str.replace(/(\d)_(?=\d)/g, '$1'); - case '<': - case '\{': - closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\}'); - hash_parameter_key = ''; + //Special case for hex strings only: + if (/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)) { + return self.$Integer(str); + } - i++; + if (!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Float(): \"" + (value) + "\"") + } - for (;; i++) { - if (i === len) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "malformed name - unmatched parenthesis") - } - if (format_string.charAt(i) === closing_brace_char) { + return parseFloat(str); + } - if (pos_arg_num > 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after unnumbered(" + (pos_arg_num) + ")") - } - if (pos_arg_num === -1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after numbered") - } - pos_arg_num = -2; - - if (args[0] === undefined || !args[0].$$is_hash) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "one hash required") - } - - next_arg = (args[0]).$fetch(hash_parameter_key); - - if (closing_brace_char === '>') { - continue format_sequence; - } else { - str = next_arg.toString(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - } - } - hash_parameter_key += format_string.charAt(i); - } - - case '*': - i++; - CHECK_FOR_WIDTH(); - flags |= FWIDTH; - width = READ_NUM_AFTER_ASTER('width'); - if (width < 0) { - flags |= FMINUS; - width = -width; - } - continue format_sequence; - - case '.': - if (flags&FPREC0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "precision given twice") - } - flags |= FPREC|FPREC0; - precision = 0; - i++; - if (format_string.charAt(i) === '*') { - i++; - precision = READ_NUM_AFTER_ASTER('precision'); - if (precision < 0) { - flags &= ~FPREC; - } - continue format_sequence; - } - precision = READ_NUM('precision'); - continue format_sequence; - - case 'd': - case 'i': - case 'u': - arg = self.$Integer(GET_ARG()); - if (arg >= 0) { - str = arg.toString(); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - str = (-arg).toString(); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 1) { str = '0' + str; } - str = '-' + str; - } else { - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } - break format_sequence; - - case 'b': - case 'B': - case 'o': - case 'x': - case 'X': - switch (format_string.charAt(i)) { - case 'b': - case 'B': - base_number = 2; - base_prefix = '0b'; - base_neg_zero_regex = /^1+/; - base_neg_zero_digit = '1'; - break; - case 'o': - base_number = 8; - base_prefix = '0'; - base_neg_zero_regex = /^3?7+/; - base_neg_zero_digit = '7'; - break; - case 'x': - case 'X': - base_number = 16; - base_prefix = '0x'; - base_neg_zero_regex = /^f+/; - base_neg_zero_digit = 'f'; - break; - } - arg = self.$Integer(GET_ARG()); - if (arg >= 0) { - str = arg.toString(base_number); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; } - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - if (flags&FPLUS || flags&FSPACE) { - str = (-arg).toString(base_number); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; } - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - } else { - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } else { - str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit); - while (str.length < precision - 2) { str = base_neg_zero_digit + str; } - if (flags&FMINUS) { - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; } - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - } else { - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } - } - if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) { - str = str.toUpperCase(); - } - break format_sequence; - - case 'f': - case 'e': - case 'E': - case 'g': - case 'G': - arg = self.$Float(GET_ARG()); - if (arg >= 0 || isNaN(arg)) { - if (arg === Infinity) { - str = 'Inf'; - } else { - switch (format_string.charAt(i)) { - case 'f': - str = arg.toFixed(precision === -1 ? 6 : precision); - break; - case 'e': - case 'E': - str = arg.toExponential(precision === -1 ? 6 : precision); - break; - case 'g': - case 'G': - str = arg.toExponential(); - exponent = parseInt(str.split('e')[1], 10); - if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { - str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); - } - break; - } - } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && arg !== Infinity && !isNaN(arg)) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - if (arg === -Infinity) { - str = 'Inf'; - } else { - switch (format_string.charAt(i)) { - case 'f': - str = (-arg).toFixed(precision === -1 ? 6 : precision); - break; - case 'e': - case 'E': - str = (-arg).toExponential(precision === -1 ? 6 : precision); - break; - case 'g': - case 'G': - str = (-arg).toExponential(); - exponent = parseInt(str.split('e')[1], 10); - if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { - str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); - } - break; - } - } - if (flags&FMINUS) { - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && arg !== -Infinity) { - while (str.length < width - 1) { str = '0' + str; } - str = '-' + str; - } else { - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } - if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) { - str = str.toUpperCase(); - } - str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2'); - break format_sequence; - - case 'a': - case 'A': - // Not implemented because there are no specs for this field type. - self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), "`A` and `a` format field types are not implemented in Opal yet") - - case 'c': - arg = GET_ARG(); - if ((arg)['$respond_to?']("to_ary")) { arg = (arg).$to_ary()[0]; } - if ((arg)['$respond_to?']("to_str")) { - str = (arg).$to_str(); - } else { - str = String.fromCharCode(Opal.const_get_relative($nesting, 'Opal').$coerce_to(arg, Opal.const_get_relative($nesting, 'Integer'), "to_int")); - } - if (str.length !== 1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "%c requires a character") - } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - case 'p': - str = (GET_ARG()).$inspect(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - case 's': - str = (GET_ARG()).$to_s(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - default: - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "malformed format string - %" + (format_string.charAt(i))) - } - } - - if (str === undefined) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "malformed format string - %") - } - - result += format_string.slice(begin_slice, end_slice) + str; - begin_slice = i + 1; - } - - if ($gvars.DEBUG && pos_arg_num >= 0 && seq_arg_num < args.length) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "too many arguments for format string") - } - - return result + format_string.slice(begin_slice); - ; - }, TMP_Kernel_format_23.$$arity = -2); - - Opal.defn(self, '$hash', TMP_Kernel_hash_24 = function $$hash() { - var self = this; - - return self.$__id__() - }, TMP_Kernel_hash_24.$$arity = 0); - - Opal.defn(self, '$initialize_copy', TMP_Kernel_initialize_copy_25 = function $$initialize_copy(other) { - var self = this; - - return nil - }, TMP_Kernel_initialize_copy_25.$$arity = 1); - - Opal.defn(self, '$inspect', TMP_Kernel_inspect_26 = function $$inspect() { - var self = this; - - return self.$to_s() - }, TMP_Kernel_inspect_26.$$arity = 0); - - Opal.defn(self, '$instance_of?', TMP_Kernel_instance_of$q_27 = function(klass) { - var self = this; - - - if (!klass.$$is_class && !klass.$$is_module) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "class or module required"); - } - - return self.$$class === klass; - - }, TMP_Kernel_instance_of$q_27.$$arity = 1); - - Opal.defn(self, '$instance_variable_defined?', TMP_Kernel_instance_variable_defined$q_28 = function(name) { - var self = this; - - - name = Opal.const_get_relative($nesting, 'Opal')['$instance_variable_name!'](name); - return Opal.hasOwnProperty.call(self, name.substr(1)); - }, TMP_Kernel_instance_variable_defined$q_28.$$arity = 1); - - Opal.defn(self, '$instance_variable_get', TMP_Kernel_instance_variable_get_29 = function $$instance_variable_get(name) { - var self = this; - - - name = Opal.const_get_relative($nesting, 'Opal')['$instance_variable_name!'](name); - - var ivar = self[Opal.ivar(name.substr(1))]; - - return ivar == null ? nil : ivar; - ; - }, TMP_Kernel_instance_variable_get_29.$$arity = 1); - - Opal.defn(self, '$instance_variable_set', TMP_Kernel_instance_variable_set_30 = function $$instance_variable_set(name, value) { - var self = this; - - - name = Opal.const_get_relative($nesting, 'Opal')['$instance_variable_name!'](name); - return self[Opal.ivar(name.substr(1))] = value; - }, TMP_Kernel_instance_variable_set_30.$$arity = 2); - - Opal.defn(self, '$remove_instance_variable', TMP_Kernel_remove_instance_variable_31 = function $$remove_instance_variable(name) { - var self = this; - - - name = Opal.const_get_relative($nesting, 'Opal')['$instance_variable_name!'](name); - - var key = Opal.ivar(name.substr(1)), - val; - if (self.hasOwnProperty(key)) { - val = self[key]; - delete self[key]; - return val; - } - ; - return self.$raise(Opal.const_get_relative($nesting, 'NameError'), "" + "instance variable " + (name) + " not defined"); - }, TMP_Kernel_remove_instance_variable_31.$$arity = 1); + return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Float'), "to_f"); - Opal.defn(self, '$instance_variables', TMP_Kernel_instance_variables_32 = function $$instance_variables() { - var self = this; - - - var result = [], ivar; - - for (var name in self) { - if (self.hasOwnProperty(name) && name.charAt(0) !== '$') { - if (name.substr(-1) === '$') { - ivar = name.slice(0, name.length - 1); - } else { - ivar = name; - } - result.push('@' + ivar); - } - } - - return result; + }, $Kernel_Float$34.$$arity = 1); - }, TMP_Kernel_instance_variables_32.$$arity = 0); - - Opal.defn(self, '$Integer', TMP_Kernel_Integer_33 = function $$Integer(value, base) { - var self = this; - - - var i, str, base_digits; - - if (!value.$$is_string) { - if (base !== undefined) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "base specified for non string value") - } - if (value === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "can't convert nil into Integer") - } - if (value.$$is_number) { - if (value === Infinity || value === -Infinity || isNaN(value)) { - self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), value) - } - return Math.floor(value); - } - if (value['$respond_to?']("to_int")) { - i = value.$to_int(); - if (i !== nil) { - return i; - } - } - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](value, Opal.const_get_relative($nesting, 'Integer'), "to_i"); - } - - if (value === "0") { - return 0; - } - - if (base === undefined) { - base = 0; - } else { - base = Opal.const_get_relative($nesting, 'Opal').$coerce_to(base, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - if (base === 1 || base < 0 || base > 36) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid radix " + (base)) - } - } - - str = value.toLowerCase(); - - str = str.replace(/(\d)_(?=\d)/g, '$1'); - - str = str.replace(/^(\s*[+-]?)(0[bodx]?)/, function (_, head, flag) { - switch (flag) { - case '0b': - if (base === 0 || base === 2) { - base = 2; - return head; - } - case '0': - case '0o': - if (base === 0 || base === 8) { - base = 8; - return head; - } - case '0d': - if (base === 0 || base === 10) { - base = 10; - return head; - } - case '0x': - if (base === 0 || base === 16) { - base = 16; - return head; - } - } - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - }); - - base = (base === 0 ? 10 : base); - - base_digits = '0-' + (base <= 10 ? base - 1 : '9a-' + String.fromCharCode(97 + (base - 11))); - - if (!(new RegExp('^\\s*[+-]?[' + base_digits + ']+\\s*$')).test(str)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - } - - i = parseInt(str, base); - - if (isNaN(i)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - } - - return i; - - }, TMP_Kernel_Integer_33.$$arity = -2); - - Opal.defn(self, '$Float', TMP_Kernel_Float_34 = function $$Float(value) { - var self = this; - - - var str; - - if (value === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "can't convert nil into Float") - } - - if (value.$$is_string) { - str = value.toString(); - - str = str.replace(/(\d)_(?=\d)/g, '$1'); - - //Special case for hex strings only: - if (/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)) { - return self.$Integer(str); - } - - if (!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid value for Float(): \"" + (value) + "\"") - } - - return parseFloat(str); - } - - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](value, Opal.const_get_relative($nesting, 'Float'), "to_f"); - - }, TMP_Kernel_Float_34.$$arity = 1); - - Opal.defn(self, '$Hash', TMP_Kernel_Hash_35 = function $$Hash(arg) { + Opal.def(self, '$Hash', $Kernel_Hash$35 = function $$Hash(arg) { var $a, self = this; if ($truthy(($truthy($a = arg['$nil?']()) ? $a : arg['$==']([])))) { return $hash2([], {})}; - if ($truthy(Opal.const_get_relative($nesting, 'Hash')['$==='](arg))) { + if ($truthy($$($nesting, 'Hash')['$==='](arg))) { return arg}; - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](arg, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); - }, TMP_Kernel_Hash_35.$$arity = 1); + return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'Hash'), "to_hash"); + }, $Kernel_Hash$35.$$arity = 1); - Opal.defn(self, '$is_a?', TMP_Kernel_is_a$q_36 = function(klass) { + Opal.def(self, '$is_a?', $Kernel_is_a$ques$36 = function(klass) { var self = this; if (!klass.$$is_class && !klass.$$is_module) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "class or module required"); + self.$raise($$($nesting, 'TypeError'), "class or module required"); } return Opal.is_a(self, klass); - }, TMP_Kernel_is_a$q_36.$$arity = 1); + }, $Kernel_is_a$ques$36.$$arity = 1); - Opal.defn(self, '$itself', TMP_Kernel_itself_37 = function $$itself() { + Opal.def(self, '$itself', $Kernel_itself$37 = function $$itself() { var self = this; return self - }, TMP_Kernel_itself_37.$$arity = 0); + }, $Kernel_itself$37.$$arity = 0); Opal.alias(self, "kind_of?", "is_a?"); - Opal.defn(self, '$lambda', TMP_Kernel_lambda_38 = function $$lambda() { - var self = this, $iter = TMP_Kernel_lambda_38.$$p, block = $iter || nil; + Opal.def(self, '$lambda', $Kernel_lambda$38 = function $$lambda() { + var $iter = $Kernel_lambda$38.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Kernel_lambda_38.$$p = null; + if ($iter) $Kernel_lambda$38.$$p = null; - block.$$is_lambda = true; - return block; - }, TMP_Kernel_lambda_38.$$arity = 0); + + if ($iter) $Kernel_lambda$38.$$p = null;; + return Opal.lambda(block);; + }, $Kernel_lambda$38.$$arity = 0); - Opal.defn(self, '$load', TMP_Kernel_load_39 = function $$load(file) { + Opal.def(self, '$load', $Kernel_load$39 = function $$load(file) { var self = this; - file = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](file, Opal.const_get_relative($nesting, 'String'), "to_str"); + file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), "to_str"); return Opal.load(file); - }, TMP_Kernel_load_39.$$arity = 1); + }, $Kernel_load$39.$$arity = 1); - Opal.defn(self, '$loop', TMP_Kernel_loop_40 = function $$loop() { - var TMP_41, $a, self = this, $iter = TMP_Kernel_loop_40.$$p, $yield = $iter || nil, e = nil; + Opal.def(self, '$loop', $Kernel_loop$40 = function $$loop() { + var $$41, $a, $iter = $Kernel_loop$40.$$p, $yield = $iter || nil, self = this, e = nil; - if ($iter) TMP_Kernel_loop_40.$$p = null; + if ($iter) $Kernel_loop$40.$$p = null; if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["loop"], (TMP_41 = function(){var self = TMP_41.$$s || this; + } else { + return $send(self, 'enum_for', ["loop"], ($$41 = function(){var self = $$41.$$s || this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY')}, TMP_41.$$s = self, TMP_41.$$arity = 0, TMP_41)) + return $$$($$($nesting, 'Float'), 'INFINITY')}, $$41.$$s = self, $$41.$$arity = 0, $$41)) }; while ($truthy(true)) { try { Opal.yieldX($yield, []) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'StopIteration')])) {e = $err; + if (Opal.rescue($err, [$$($nesting, 'StopIteration')])) {e = $err; try { return e.$result() } finally { Opal.pop_exception() } @@ -4878,137 +4519,141 @@ Opal.modules["corelib/kernel"] = function(Opal) { }; }; return self; - }, TMP_Kernel_loop_40.$$arity = 0); + }, $Kernel_loop$40.$$arity = 0); - Opal.defn(self, '$nil?', TMP_Kernel_nil$q_42 = function() { + Opal.def(self, '$nil?', $Kernel_nil$ques$42 = function() { var self = this; return false - }, TMP_Kernel_nil$q_42.$$arity = 0); + }, $Kernel_nil$ques$42.$$arity = 0); Opal.alias(self, "object_id", "__id__"); - Opal.defn(self, '$printf', TMP_Kernel_printf_43 = function $$printf($a_rest) { - var self = this, args; + Opal.def(self, '$printf', $Kernel_printf$43 = function $$printf($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy($rb_gt(args.$length(), 0))) { + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + if ($truthy(args['$any?']())) { self.$print($send(self, 'format', Opal.to_a(args)))}; return nil; - }, TMP_Kernel_printf_43.$$arity = -1); + }, $Kernel_printf$43.$$arity = -1); - Opal.defn(self, '$proc', TMP_Kernel_proc_44 = function $$proc() { - var self = this, $iter = TMP_Kernel_proc_44.$$p, block = $iter || nil; + Opal.def(self, '$proc', $Kernel_proc$44 = function $$proc() { + var $iter = $Kernel_proc$44.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Kernel_proc_44.$$p = null; + if ($iter) $Kernel_proc$44.$$p = null; + + if ($iter) $Kernel_proc$44.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to create Proc object without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to create Proc object without a block") }; block.$$is_lambda = false; return block; - }, TMP_Kernel_proc_44.$$arity = 0); + }, $Kernel_proc$44.$$arity = 0); - Opal.defn(self, '$puts', TMP_Kernel_puts_45 = function $$puts($a_rest) { - var self = this, strs; + Opal.def(self, '$puts', $Kernel_puts$45 = function $$puts($a) { + var $post_args, strs, self = this; if ($gvars.stdout == null) $gvars.stdout = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send($gvars.stdout, 'puts', Opal.to_a(strs)) - }, TMP_Kernel_puts_45.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; + return $send($gvars.stdout, 'puts', Opal.to_a(strs)); + }, $Kernel_puts$45.$$arity = -1); - Opal.defn(self, '$p', TMP_Kernel_p_47 = function $$p($a_rest) { - var TMP_46, self = this, args; + Opal.def(self, '$p', $Kernel_p$46 = function $$p($a) { + var $post_args, args, $$47, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - $send(args, 'each', [], (TMP_46 = function(obj){var self = TMP_46.$$s || this; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + $send(args, 'each', [], ($$47 = function(obj){var self = $$47.$$s || this; if ($gvars.stdout == null) $gvars.stdout = nil; -if (obj == null) obj = nil; - return $gvars.stdout.$puts(obj.$inspect())}, TMP_46.$$s = self, TMP_46.$$arity = 1, TMP_46)); + + + + if (obj == null) { + obj = nil; + }; + return $gvars.stdout.$puts(obj.$inspect());}, $$47.$$s = self, $$47.$$arity = 1, $$47)); if ($truthy($rb_le(args.$length(), 1))) { return args['$[]'](0) - } else { + } else { return args }; - }, TMP_Kernel_p_47.$$arity = -1); + }, $Kernel_p$46.$$arity = -1); - Opal.defn(self, '$print', TMP_Kernel_print_48 = function $$print($a_rest) { - var self = this, strs; + Opal.def(self, '$print', $Kernel_print$48 = function $$print($a) { + var $post_args, strs, self = this; if ($gvars.stdout == null) $gvars.stdout = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send($gvars.stdout, 'print', Opal.to_a(strs)) - }, TMP_Kernel_print_48.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; + return $send($gvars.stdout, 'print', Opal.to_a(strs)); + }, $Kernel_print$48.$$arity = -1); - Opal.defn(self, '$warn', TMP_Kernel_warn_49 = function $$warn($a_rest) { - var $b, self = this, strs; + Opal.def(self, '$warn', $Kernel_warn$49 = function $$warn($a) { + var $post_args, strs, $b, self = this; if ($gvars.VERBOSE == null) $gvars.VERBOSE = nil; if ($gvars.stderr == null) $gvars.stderr = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; if ($truthy(($truthy($b = $gvars.VERBOSE['$nil?']()) ? $b : strs['$empty?']()))) { return nil - } else { + } else { return $send($gvars.stderr, 'puts', Opal.to_a(strs)) - } - }, TMP_Kernel_warn_49.$$arity = -1); + }; + }, $Kernel_warn$49.$$arity = -1); - Opal.defn(self, '$raise', TMP_Kernel_raise_50 = function $$raise(exception, string, _backtrace) { + Opal.def(self, '$raise', $Kernel_raise$50 = function $$raise(exception, string, _backtrace) { var self = this; if ($gvars["!"] == null) $gvars["!"] = nil; + + ; + if (string == null) { string = nil; - } + }; + if (_backtrace == null) { _backtrace = nil; - } + }; if (exception == null && $gvars["!"] !== nil) { throw $gvars["!"]; } if (exception == null) { - exception = Opal.const_get_relative($nesting, 'RuntimeError').$new(); + exception = $$($nesting, 'RuntimeError').$new(); } else if (exception.$$is_string) { - exception = Opal.const_get_relative($nesting, 'RuntimeError').$new(exception); + exception = $$($nesting, 'RuntimeError').$new(exception); } // using respond_to? and not an undefined check to avoid method_missing matching as true else if (exception.$$is_class && exception['$respond_to?']("exception")) { exception = exception.$exception(string); } - else if (exception['$kind_of?'](Opal.const_get_relative($nesting, 'Exception'))) { + else if (exception['$is_a?']($$($nesting, 'Exception'))) { // exception is fine } else { - exception = Opal.const_get_relative($nesting, 'TypeError').$new("exception class/object expected"); + exception = $$($nesting, 'TypeError').$new("exception class/object expected"); } if ($gvars["!"] !== nil) { @@ -5018,17 +4663,18 @@ if (obj == null) obj = nil; $gvars["!"] = exception; throw exception; - - }, TMP_Kernel_raise_50.$$arity = -1); + ; + }, $Kernel_raise$50.$$arity = -1); Opal.alias(self, "fail", "raise"); - Opal.defn(self, '$rand', TMP_Kernel_rand_51 = function $$rand(max) { + Opal.def(self, '$rand', $Kernel_rand$51 = function $$rand(max) { var self = this; + ; if (max === undefined) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Random'), 'DEFAULT').$rand(); + return $$$($$($nesting, 'Random'), 'DEFAULT').$rand(); } if (max.$$is_number) { @@ -5045,16 +4691,17 @@ if (obj == null) obj = nil; } } ; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Random'), 'DEFAULT').$rand(max); - }, TMP_Kernel_rand_51.$$arity = -1); + return $$$($$($nesting, 'Random'), 'DEFAULT').$rand(max); + }, $Kernel_rand$51.$$arity = -1); - Opal.defn(self, '$respond_to?', TMP_Kernel_respond_to$q_52 = function(name, include_all) { + Opal.def(self, '$respond_to?', $Kernel_respond_to$ques$52 = function(name, include_all) { var self = this; + + if (include_all == null) { include_all = false; - } - + }; if ($truthy(self['$respond_to_missing?'](name, include_all))) { return true}; @@ -5065,41 +4712,43 @@ if (obj == null) obj = nil; } ; return false; - }, TMP_Kernel_respond_to$q_52.$$arity = -2); + }, $Kernel_respond_to$ques$52.$$arity = -2); - Opal.defn(self, '$respond_to_missing?', TMP_Kernel_respond_to_missing$q_53 = function(method_name, include_all) { + Opal.def(self, '$respond_to_missing?', $Kernel_respond_to_missing$ques$53 = function(method_name, include_all) { var self = this; + + if (include_all == null) { include_all = false; - } - return false - }, TMP_Kernel_respond_to_missing$q_53.$$arity = -2); + }; + return false; + }, $Kernel_respond_to_missing$ques$53.$$arity = -2); - Opal.defn(self, '$require', TMP_Kernel_require_54 = function $$require(file) { + Opal.def(self, '$require', $Kernel_require$54 = function $$require(file) { var self = this; - file = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](file, Opal.const_get_relative($nesting, 'String'), "to_str"); + file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), "to_str"); return Opal.require(file); - }, TMP_Kernel_require_54.$$arity = 1); + }, $Kernel_require$54.$$arity = 1); - Opal.defn(self, '$require_relative', TMP_Kernel_require_relative_55 = function $$require_relative(file) { + Opal.def(self, '$require_relative', $Kernel_require_relative$55 = function $$require_relative(file) { var self = this; - Opal.const_get_relative($nesting, 'Opal')['$try_convert!'](file, Opal.const_get_relative($nesting, 'String'), "to_str"); - file = Opal.const_get_relative($nesting, 'File').$expand_path(Opal.const_get_relative($nesting, 'File').$join(Opal.current_file, "..", file)); + $$($nesting, 'Opal')['$try_convert!'](file, $$($nesting, 'String'), "to_str"); + file = $$($nesting, 'File').$expand_path($$($nesting, 'File').$join(Opal.current_file, "..", file)); return Opal.require(file); - }, TMP_Kernel_require_relative_55.$$arity = 1); + }, $Kernel_require_relative$55.$$arity = 1); - Opal.defn(self, '$require_tree', TMP_Kernel_require_tree_56 = function $$require_tree(path) { + Opal.def(self, '$require_tree', $Kernel_require_tree$56 = function $$require_tree(path) { var self = this; var result = []; - path = Opal.const_get_relative($nesting, 'File').$expand_path(path) + path = $$($nesting, 'File').$expand_path(path) path = Opal.normalize(path); if (path === '.') path = ''; for (var name in Opal.modules) { @@ -5110,31 +4759,33 @@ if (obj == null) obj = nil; return result; - }, TMP_Kernel_require_tree_56.$$arity = 1); + }, $Kernel_require_tree$56.$$arity = 1); Opal.alias(self, "send", "__send__"); Opal.alias(self, "public_send", "__send__"); - Opal.defn(self, '$singleton_class', TMP_Kernel_singleton_class_57 = function $$singleton_class() { + Opal.def(self, '$singleton_class', $Kernel_singleton_class$57 = function $$singleton_class() { var self = this; - return Opal.get_singleton_class(self) - }, TMP_Kernel_singleton_class_57.$$arity = 0); + return Opal.get_singleton_class(self); + }, $Kernel_singleton_class$57.$$arity = 0); - Opal.defn(self, '$sleep', TMP_Kernel_sleep_58 = function $$sleep(seconds) { + Opal.def(self, '$sleep', $Kernel_sleep$58 = function $$sleep(seconds) { var self = this; + + if (seconds == null) { seconds = nil; - } + }; if (seconds === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "can't convert NilClass into time interval") + self.$raise($$($nesting, 'TypeError'), "can't convert NilClass into time interval") } if (!seconds.$$is_number) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't convert " + (seconds.$class()) + " into time interval") + self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (seconds.$class()) + " into time interval") } if (seconds < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "time interval must be positive") + self.$raise($$($nesting, 'ArgumentError'), "time interval must be positive") } var get_time = Opal.global.performance ? function() {return performance.now()} : @@ -5143,54 +4794,57 @@ if (obj == null) obj = nil; var t = get_time(); while (get_time() - t <= seconds * 1000); return seconds; + ; + }, $Kernel_sleep$58.$$arity = -1); - }, TMP_Kernel_sleep_58.$$arity = -1); - Opal.alias(self, "sprintf", "format"); - - Opal.defn(self, '$srand', TMP_Kernel_srand_59 = function $$srand(seed) { + Opal.def(self, '$srand', $Kernel_srand$59 = function $$srand(seed) { var self = this; + + if (seed == null) { - seed = Opal.const_get_relative($nesting, 'Random').$new_seed(); - } - return Opal.const_get_relative($nesting, 'Random').$srand(seed) - }, TMP_Kernel_srand_59.$$arity = -1); + seed = $$($nesting, 'Random').$new_seed(); + }; + return $$($nesting, 'Random').$srand(seed); + }, $Kernel_srand$59.$$arity = -1); - Opal.defn(self, '$String', TMP_Kernel_String_60 = function $$String(str) { + Opal.def(self, '$String', $Kernel_String$60 = function $$String(str) { var $a, self = this; - return ($truthy($a = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](str, Opal.const_get_relative($nesting, 'String'), "to_str")) ? $a : Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](str, Opal.const_get_relative($nesting, 'String'), "to_s")) - }, TMP_Kernel_String_60.$$arity = 1); + return ($truthy($a = $$($nesting, 'Opal')['$coerce_to?'](str, $$($nesting, 'String'), "to_str")) ? $a : $$($nesting, 'Opal')['$coerce_to!'](str, $$($nesting, 'String'), "to_s")) + }, $Kernel_String$60.$$arity = 1); - Opal.defn(self, '$tap', TMP_Kernel_tap_61 = function $$tap() { - var self = this, $iter = TMP_Kernel_tap_61.$$p, block = $iter || nil; + Opal.def(self, '$tap', $Kernel_tap$61 = function $$tap() { + var $iter = $Kernel_tap$61.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Kernel_tap_61.$$p = null; + if ($iter) $Kernel_tap$61.$$p = null; + + if ($iter) $Kernel_tap$61.$$p = null;; Opal.yield1(block, self); return self; - }, TMP_Kernel_tap_61.$$arity = 0); + }, $Kernel_tap$61.$$arity = 0); - Opal.defn(self, '$to_proc', TMP_Kernel_to_proc_62 = function $$to_proc() { + Opal.def(self, '$to_proc', $Kernel_to_proc$62 = function $$to_proc() { var self = this; return self - }, TMP_Kernel_to_proc_62.$$arity = 0); + }, $Kernel_to_proc$62.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Kernel_to_s_63 = function $$to_s() { + Opal.def(self, '$to_s', $Kernel_to_s$63 = function $$to_s() { var self = this; return "" + "#<" + (self.$class()) + ":0x" + (self.$__id__().$to_s(16)) + ">" - }, TMP_Kernel_to_s_63.$$arity = 0); + }, $Kernel_to_s$63.$$arity = 0); - Opal.defn(self, '$catch', TMP_Kernel_catch_64 = function(sym) { - var self = this, $iter = TMP_Kernel_catch_64.$$p, $yield = $iter || nil, e = nil; + Opal.def(self, '$catch', $Kernel_catch$64 = function(sym) { + var $iter = $Kernel_catch$64.$$p, $yield = $iter || nil, self = this, e = nil; - if ($iter) TMP_Kernel_catch_64.$$p = null; + if ($iter) $Kernel_catch$64.$$p = null; try { return Opal.yieldX($yield, []); } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'UncaughtThrowError')])) {e = $err; + if (Opal.rescue($err, [$$($nesting, 'UncaughtThrowError')])) {e = $err; try { if (e.$sym()['$=='](sym)) { @@ -5199,44 +4853,57 @@ if (obj == null) obj = nil; } finally { Opal.pop_exception() } } else { throw $err; } } - }, TMP_Kernel_catch_64.$$arity = 1); + }, $Kernel_catch$64.$$arity = 1); - Opal.defn(self, '$throw', TMP_Kernel_throw_65 = function($a_rest) { - var self = this, args; + Opal.def(self, '$throw', $Kernel_throw$65 = function($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self.$raise(Opal.const_get_relative($nesting, 'UncaughtThrowError').$new(args)) - }, TMP_Kernel_throw_65.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self.$raise($$($nesting, 'UncaughtThrowError'), args); + }, $Kernel_throw$65.$$arity = -1); - Opal.defn(self, '$open', TMP_Kernel_open_66 = function $$open($a_rest) { - var self = this, args, $iter = TMP_Kernel_open_66.$$p, block = $iter || nil; + Opal.def(self, '$open', $Kernel_open$66 = function $$open($a) { + var $iter = $Kernel_open$66.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Kernel_open_66.$$p = null; - return $send(Opal.const_get_relative($nesting, 'File'), 'open', Opal.to_a(args), block.$to_proc()) - }, TMP_Kernel_open_66.$$arity = -1); + if ($iter) $Kernel_open$66.$$p = null; + + + if ($iter) $Kernel_open$66.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send($$($nesting, 'File'), 'open', Opal.to_a(args), block.$to_proc()); + }, $Kernel_open$66.$$arity = -1); + + Opal.def(self, '$yield_self', $Kernel_yield_self$67 = function $$yield_self() { + var $$68, $iter = $Kernel_yield_self$67.$$p, $yield = $iter || nil, self = this; + + if ($iter) $Kernel_yield_self$67.$$p = null; + + if (($yield !== nil)) { + } else { + return $send(self, 'enum_for', ["yield_self"], ($$68 = function(){var self = $$68.$$s || this; + + return 1}, $$68.$$s = self, $$68.$$arity = 0, $$68)) + }; + return Opal.yield1($yield, self);; + }, $Kernel_yield_self$67.$$arity = 0); })($nesting[0], $nesting); return (function($base, $super, $parent_nesting) { - function $Object(){}; - var self = $Object = $klass($base, $super, 'Object', $Object); + var self = $klass($base, $super, 'Object'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - return self.$include(Opal.const_get_relative($nesting, 'Kernel')) + return self.$include($$($nesting, 'Kernel')) })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/error"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -5244,31 +4911,29 @@ Opal.modules["corelib/error"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $module = Opal.module, $hash2 = Opal.hash2; - Opal.add_stubs(['$new', '$clone', '$to_s', '$empty?', '$class', '$+', '$attr_reader', '$[]', '$>', '$length', '$inspect']); + Opal.add_stubs(['$new', '$clone', '$to_s', '$empty?', '$class', '$raise', '$+', '$attr_reader', '$[]', '$>', '$length', '$inspect']); (function($base, $super, $parent_nesting) { - function $Exception(){}; - var self = $Exception = $klass($base, $super, 'Exception', $Exception); + var self = $klass($base, $super, 'Exception'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Exception_new_1, TMP_Exception_exception_2, TMP_Exception_initialize_3, TMP_Exception_backtrace_4, TMP_Exception_exception_5, TMP_Exception_message_6, TMP_Exception_inspect_7, TMP_Exception_to_s_8; + var $nesting = [self].concat($parent_nesting), $Exception_new$1, $Exception_exception$2, $Exception_initialize$3, $Exception_backtrace$4, $Exception_exception$5, $Exception_message$6, $Exception_inspect$7, $Exception_set_backtrace$8, $Exception_to_s$9; - def.message = nil; + self.$$prototype.message = nil; - var Kernel$raise = Opal.const_get_relative($nesting, 'Kernel').$raise; - Opal.defs(self, '$new', TMP_Exception_new_1 = function($a_rest) { - var self = this, args; + var stack_trace_limit; + Opal.defs(self, '$new', $Exception_new$1 = function($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var message = (args.length > 0) ? args[0] : nil; - var error = new self.$$alloc(message); + var error = new self.$$constructor(message); error.name = self.$$name; error.message = message; Opal.send(error, error.$initialize, args); @@ -5279,40 +4944,44 @@ Opal.modules["corelib/error"] = function(Opal) { // https://nodejs.org/dist/latest-v6.x/docs/api/errors.html if (Opal.config.enable_stack_trace && Error.captureStackTrace) { // Passing Kernel.raise will cut the stack trace from that point above - Error.captureStackTrace(error, Kernel$raise); + Error.captureStackTrace(error, stack_trace_limit); } return error; - - }, TMP_Exception_new_1.$$arity = -1); - Opal.defs(self, '$exception', TMP_Exception_exception_2 = function $$exception($a_rest) { - var self = this, args; + ; + }, $Exception_new$1.$$arity = -1); + stack_trace_limit = self.$new; + Opal.defs(self, '$exception', $Exception_exception$2 = function $$exception($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self, 'new', Opal.to_a(args)) - }, TMP_Exception_exception_2.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self, 'new', Opal.to_a(args)); + }, $Exception_exception$2.$$arity = -1); - Opal.defn(self, '$initialize', TMP_Exception_initialize_3 = function $$initialize($a_rest) { - var self = this, args; + Opal.def(self, '$initialize', $Exception_initialize$3 = function $$initialize($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self.message = (args.length > 0) ? args[0] : nil - }, TMP_Exception_initialize_3.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self.message = (args.length > 0) ? args[0] : nil;; + }, $Exception_initialize$3.$$arity = -1); - Opal.defn(self, '$backtrace', TMP_Exception_backtrace_4 = function $$backtrace() { + Opal.def(self, '$backtrace', $Exception_backtrace$4 = function $$backtrace() { var self = this; + if (self.backtrace) { + // nil is a valid backtrace + return self.backtrace; + } + var backtrace = self.stack; if (typeof(backtrace) === 'string') { @@ -5324,14 +4993,16 @@ Opal.modules["corelib/error"] = function(Opal) { return []; - }, TMP_Exception_backtrace_4.$$arity = 0); + }, $Exception_backtrace$4.$$arity = 0); - Opal.defn(self, '$exception', TMP_Exception_exception_5 = function $$exception(str) { + Opal.def(self, '$exception', $Exception_exception$5 = function $$exception(str) { var self = this; + + if (str == null) { str = nil; - } + }; if (str === nil || self === str) { return self; @@ -5339,357 +5010,427 @@ Opal.modules["corelib/error"] = function(Opal) { var cloned = self.$clone(); cloned.message = str; + cloned.stack = self.stack; return cloned; + ; + }, $Exception_exception$5.$$arity = -1); - }, TMP_Exception_exception_5.$$arity = -1); - - Opal.defn(self, '$message', TMP_Exception_message_6 = function $$message() { + Opal.def(self, '$message', $Exception_message$6 = function $$message() { var self = this; return self.$to_s() - }, TMP_Exception_message_6.$$arity = 0); + }, $Exception_message$6.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Exception_inspect_7 = function $$inspect() { + Opal.def(self, '$inspect', $Exception_inspect$7 = function $$inspect() { var self = this, as_str = nil; as_str = self.$to_s(); if ($truthy(as_str['$empty?']())) { return self.$class().$to_s() - } else { + } else { return "" + "#<" + (self.$class().$to_s()) + ": " + (self.$to_s()) + ">" }; - }, TMP_Exception_inspect_7.$$arity = 0); - return (Opal.defn(self, '$to_s', TMP_Exception_to_s_8 = function $$to_s() { + }, $Exception_inspect$7.$$arity = 0); + + Opal.def(self, '$set_backtrace', $Exception_set_backtrace$8 = function $$set_backtrace(backtrace) { + var self = this; + + + var valid = true, i, ii; + + if (backtrace === nil) { + self.backtrace = nil; + self.stack = ''; + } else if (backtrace.$$is_string) { + self.backtrace = [backtrace]; + self.stack = backtrace; + } else { + if (backtrace.$$is_array) { + for (i = 0, ii = backtrace.length; i < ii; i++) { + if (!backtrace[i].$$is_string) { + valid = false; + break; + } + } + } else { + valid = false; + } + + if (valid === false) { + self.$raise($$($nesting, 'TypeError'), "backtrace must be Array of String") + } + + self.backtrace = backtrace; + self.stack = backtrace.join('\n'); + } + + return backtrace; + + }, $Exception_set_backtrace$8.$$arity = 1); + return (Opal.def(self, '$to_s', $Exception_to_s$9 = function $$to_s() { var $a, $b, self = this; return ($truthy($a = ($truthy($b = self.message) ? self.message.$to_s() : $b)) ? $a : self.$class().$to_s()) - }, TMP_Exception_to_s_8.$$arity = 0), nil) && 'to_s'; + }, $Exception_to_s$9.$$arity = 0), nil) && 'to_s'; })($nesting[0], Error, $nesting); (function($base, $super, $parent_nesting) { - function $ScriptError(){}; - var self = $ScriptError = $klass($base, $super, 'ScriptError', $ScriptError); + var self = $klass($base, $super, 'ScriptError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $SyntaxError(){}; - var self = $SyntaxError = $klass($base, $super, 'SyntaxError', $SyntaxError); + var self = $klass($base, $super, 'SyntaxError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'ScriptError'), $nesting); + })($nesting[0], $$($nesting, 'ScriptError'), $nesting); (function($base, $super, $parent_nesting) { - function $LoadError(){}; - var self = $LoadError = $klass($base, $super, 'LoadError', $LoadError); + var self = $klass($base, $super, 'LoadError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'ScriptError'), $nesting); + })($nesting[0], $$($nesting, 'ScriptError'), $nesting); (function($base, $super, $parent_nesting) { - function $NotImplementedError(){}; - var self = $NotImplementedError = $klass($base, $super, 'NotImplementedError', $NotImplementedError); + var self = $klass($base, $super, 'NotImplementedError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'ScriptError'), $nesting); + })($nesting[0], $$($nesting, 'ScriptError'), $nesting); (function($base, $super, $parent_nesting) { - function $SystemExit(){}; - var self = $SystemExit = $klass($base, $super, 'SystemExit', $SystemExit); + var self = $klass($base, $super, 'SystemExit'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $NoMemoryError(){}; - var self = $NoMemoryError = $klass($base, $super, 'NoMemoryError', $NoMemoryError); + var self = $klass($base, $super, 'NoMemoryError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $SignalException(){}; - var self = $SignalException = $klass($base, $super, 'SignalException', $SignalException); + var self = $klass($base, $super, 'SignalException'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $Interrupt(){}; - var self = $Interrupt = $klass($base, $super, 'Interrupt', $Interrupt); + var self = $klass($base, $super, 'Interrupt'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $SecurityError(){}; - var self = $SecurityError = $klass($base, $super, 'SecurityError', $SecurityError); + var self = $klass($base, $super, 'SecurityError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $StandardError(){}; - var self = $StandardError = $klass($base, $super, 'StandardError', $StandardError); + var self = $klass($base, $super, 'StandardError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); (function($base, $super, $parent_nesting) { - function $ZeroDivisionError(){}; - var self = $ZeroDivisionError = $klass($base, $super, 'ZeroDivisionError', $ZeroDivisionError); + var self = $klass($base, $super, 'EncodingError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $NameError(){}; - var self = $NameError = $klass($base, $super, 'NameError', $NameError); + var self = $klass($base, $super, 'ZeroDivisionError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $NoMethodError(){}; - var self = $NoMethodError = $klass($base, $super, 'NoMethodError', $NoMethodError); + var self = $klass($base, $super, 'NameError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'NameError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $RuntimeError(){}; - var self = $RuntimeError = $klass($base, $super, 'RuntimeError', $RuntimeError); + var self = $klass($base, $super, 'NoMethodError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'NameError'), $nesting); (function($base, $super, $parent_nesting) { - function $LocalJumpError(){}; - var self = $LocalJumpError = $klass($base, $super, 'LocalJumpError', $LocalJumpError); + var self = $klass($base, $super, 'RuntimeError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $TypeError(){}; - var self = $TypeError = $klass($base, $super, 'TypeError', $TypeError); + var self = $klass($base, $super, 'FrozenError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'RuntimeError'), $nesting); (function($base, $super, $parent_nesting) { - function $ArgumentError(){}; - var self = $ArgumentError = $klass($base, $super, 'ArgumentError', $ArgumentError); + var self = $klass($base, $super, 'LocalJumpError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $IndexError(){}; - var self = $IndexError = $klass($base, $super, 'IndexError', $IndexError); + var self = $klass($base, $super, 'TypeError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $StopIteration(){}; - var self = $StopIteration = $klass($base, $super, 'StopIteration', $StopIteration); + var self = $klass($base, $super, 'ArgumentError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'IndexError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $KeyError(){}; - var self = $KeyError = $klass($base, $super, 'KeyError', $KeyError); + var self = $klass($base, $super, 'IndexError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'IndexError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $RangeError(){}; - var self = $RangeError = $klass($base, $super, 'RangeError', $RangeError); + var self = $klass($base, $super, 'StopIteration'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'IndexError'), $nesting); (function($base, $super, $parent_nesting) { - function $FloatDomainError(){}; - var self = $FloatDomainError = $klass($base, $super, 'FloatDomainError', $FloatDomainError); + var self = $klass($base, $super, 'KeyError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'RangeError'), $nesting); + })($nesting[0], $$($nesting, 'IndexError'), $nesting); (function($base, $super, $parent_nesting) { - function $IOError(){}; - var self = $IOError = $klass($base, $super, 'IOError', $IOError); + var self = $klass($base, $super, 'RangeError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $SystemCallError(){}; - var self = $SystemCallError = $klass($base, $super, 'SystemCallError', $SystemCallError); + var self = $klass($base, $super, 'FloatDomainError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'RangeError'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IOError'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'StandardError'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SystemCallError'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $parent_nesting) { - var $Errno, self = $Errno = $module($base, 'Errno'); + var self = $module($base, 'Errno'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $EINVAL(){}; - var self = $EINVAL = $klass($base, $super, 'EINVAL', $EINVAL); + var self = $klass($base, $super, 'EINVAL'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_EINVAL_new_9; + var $nesting = [self].concat($parent_nesting), $EINVAL_new$10; - return Opal.defs(self, '$new', TMP_EINVAL_new_9 = function(name) { - var self = this, $iter = TMP_EINVAL_new_9.$$p, $yield = $iter || nil, message = nil; + return (Opal.defs(self, '$new', $EINVAL_new$10 = function(name) { + var $iter = $EINVAL_new$10.$$p, $yield = $iter || nil, self = this, message = nil; + if ($iter) $EINVAL_new$10.$$p = null; + + if (name == null) { name = nil; - } - if ($iter) TMP_EINVAL_new_9.$$p = null; - + }; message = "Invalid argument"; if ($truthy(name)) { message = $rb_plus(message, "" + " - " + (name))}; - return $send(self, Opal.find_super_dispatcher(self, 'new', TMP_EINVAL_new_9, false, $EINVAL), [message], null); - }, TMP_EINVAL_new_9.$$arity = -1) - })($nesting[0], Opal.const_get_relative($nesting, 'SystemCallError'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'new', $EINVAL_new$10, false, self.$$class.$$prototype), [message], null); + }, $EINVAL_new$10.$$arity = -1), nil) && 'new' + })($nesting[0], $$($nesting, 'SystemCallError'), $nesting) })($nesting[0], $nesting); (function($base, $super, $parent_nesting) { - function $UncaughtThrowError(){}; - var self = $UncaughtThrowError = $klass($base, $super, 'UncaughtThrowError', $UncaughtThrowError); + var self = $klass($base, $super, 'UncaughtThrowError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UncaughtThrowError_initialize_10; + var $nesting = [self].concat($parent_nesting), $UncaughtThrowError_initialize$11; - def.sym = nil; + self.$$prototype.sym = nil; self.$attr_reader("sym", "arg"); - return (Opal.defn(self, '$initialize', TMP_UncaughtThrowError_initialize_10 = function $$initialize(args) { - var self = this, $iter = TMP_UncaughtThrowError_initialize_10.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $UncaughtThrowError_initialize$11 = function $$initialize(args) { + var $iter = $UncaughtThrowError_initialize$11.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_UncaughtThrowError_initialize_10.$$p = null; + if ($iter) $UncaughtThrowError_initialize$11.$$p = null; self.sym = args['$[]'](0); if ($truthy($rb_gt(args.$length(), 1))) { self.arg = args['$[]'](1)}; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_UncaughtThrowError_initialize_10, false), ["" + "uncaught throw " + (self.sym.$inspect())], null); - }, TMP_UncaughtThrowError_initialize_10.$$arity = 1), nil) && 'initialize'; - })($nesting[0], Opal.const_get_relative($nesting, 'ArgumentError'), $nesting); + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $UncaughtThrowError_initialize$11, false), ["" + "uncaught throw " + (self.sym.$inspect())], null); + }, $UncaughtThrowError_initialize$11.$$arity = 1), nil) && 'initialize'; + })($nesting[0], $$($nesting, 'ArgumentError'), $nesting); (function($base, $super, $parent_nesting) { - function $NameError(){}; - var self = $NameError = $klass($base, $super, 'NameError', $NameError); + var self = $klass($base, $super, 'NameError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NameError_initialize_11; + var $nesting = [self].concat($parent_nesting), $NameError_initialize$12; self.$attr_reader("name"); - return (Opal.defn(self, '$initialize', TMP_NameError_initialize_11 = function $$initialize(message, name) { - var self = this, $iter = TMP_NameError_initialize_11.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $NameError_initialize$12 = function $$initialize(message, name) { + var $iter = $NameError_initialize$12.$$p, $yield = $iter || nil, self = this; + if ($iter) $NameError_initialize$12.$$p = null; + + if (name == null) { name = nil; - } - if ($iter) TMP_NameError_initialize_11.$$p = null; - - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_NameError_initialize_11, false), [message], null); + }; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $NameError_initialize$12, false), [message], null); return (self.name = name); - }, TMP_NameError_initialize_11.$$arity = -2), nil) && 'initialize'; + }, $NameError_initialize$12.$$arity = -2), nil) && 'initialize'; })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $NoMethodError(){}; - var self = $NoMethodError = $klass($base, $super, 'NoMethodError', $NoMethodError); + var self = $klass($base, $super, 'NoMethodError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NoMethodError_initialize_12; + var $nesting = [self].concat($parent_nesting), $NoMethodError_initialize$13; self.$attr_reader("args"); - return (Opal.defn(self, '$initialize', TMP_NoMethodError_initialize_12 = function $$initialize(message, name, args) { - var self = this, $iter = TMP_NoMethodError_initialize_12.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $NoMethodError_initialize$13 = function $$initialize(message, name, args) { + var $iter = $NoMethodError_initialize$13.$$p, $yield = $iter || nil, self = this; + if ($iter) $NoMethodError_initialize$13.$$p = null; + + if (name == null) { name = nil; - } + }; + if (args == null) { args = []; - } - if ($iter) TMP_NoMethodError_initialize_12.$$p = null; - - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_NoMethodError_initialize_12, false), [message, name], null); + }; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $NoMethodError_initialize$13, false), [message, name], null); return (self.args = args); - }, TMP_NoMethodError_initialize_12.$$arity = -2), nil) && 'initialize'; + }, $NoMethodError_initialize$13.$$arity = -2), nil) && 'initialize'; })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $StopIteration(){}; - var self = $StopIteration = $klass($base, $super, 'StopIteration', $StopIteration); + var self = $klass($base, $super, 'StopIteration'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_reader("result") })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'KeyError'); + + var $nesting = [self].concat($parent_nesting), $KeyError_initialize$14, $KeyError_receiver$15, $KeyError_key$16; + + self.$$prototype.receiver = self.$$prototype.key = nil; + + + Opal.def(self, '$initialize', $KeyError_initialize$14 = function $$initialize(message, $kwargs) { + var receiver, key, $iter = $KeyError_initialize$14.$$p, $yield = $iter || nil, self = this; + + if ($iter) $KeyError_initialize$14.$$p = null; + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + receiver = $kwargs.$$smap["receiver"]; + if (receiver == null) { + receiver = nil + }; + + key = $kwargs.$$smap["key"]; + if (key == null) { + key = nil + }; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $KeyError_initialize$14, false), [message], null); + self.receiver = receiver; + return (self.key = key); + }, $KeyError_initialize$14.$$arity = -2); + + Opal.def(self, '$receiver', $KeyError_receiver$15 = function $$receiver() { + var $a, self = this; + + return ($truthy($a = self.receiver) ? $a : self.$raise($$($nesting, 'ArgumentError'), "no receiver is available")) + }, $KeyError_receiver$15.$$arity = 0); + return (Opal.def(self, '$key', $KeyError_key$16 = function $$key() { + var $a, self = this; + + return ($truthy($a = self.key) ? $a : self.$raise($$($nesting, 'ArgumentError'), "no key is available")) + }, $KeyError_key$16.$$arity = 0), nil) && 'key'; + })($nesting[0], null, $nesting); return (function($base, $parent_nesting) { - var $JS, self = $JS = $module($base, 'JS'); + var self = $module($base, 'JS'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Error(){}; - var self = $Error = $klass($base, $super, 'Error', $Error); + var self = $klass($base, $super, 'Error'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil })($nesting[0], null, $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/constants"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.const_set($nesting[0], 'RUBY_PLATFORM', "opal"); Opal.const_set($nesting[0], 'RUBY_ENGINE', "opal"); - Opal.const_set($nesting[0], 'RUBY_VERSION', "2.4.5"); - Opal.const_set($nesting[0], 'RUBY_ENGINE_VERSION', "0.11.4"); - Opal.const_set($nesting[0], 'RUBY_RELEASE_DATE', "2018-11-07"); + Opal.const_set($nesting[0], 'RUBY_VERSION', "2.5.8"); + Opal.const_set($nesting[0], 'RUBY_ENGINE_VERSION', "1.0.5"); + Opal.const_set($nesting[0], 'RUBY_RELEASE_DATE', "2020-12-24"); Opal.const_set($nesting[0], 'RUBY_PATCHLEVEL', 0); Opal.const_set($nesting[0], 'RUBY_REVISION', 0); - Opal.const_set($nesting[0], 'RUBY_COPYRIGHT', "opal - Copyright (C) 2013-2015 Adam Beynon"); - return Opal.const_set($nesting[0], 'RUBY_DESCRIPTION', "" + "opal " + (Opal.const_get_relative($nesting, 'RUBY_ENGINE_VERSION')) + " (" + (Opal.const_get_relative($nesting, 'RUBY_RELEASE_DATE')) + " revision " + (Opal.const_get_relative($nesting, 'RUBY_REVISION')) + ")"); + Opal.const_set($nesting[0], 'RUBY_COPYRIGHT', "opal - Copyright (C) 2013-2020 Adam Beynon and the Opal contributors"); + return Opal.const_set($nesting[0], 'RUBY_DESCRIPTION', "" + "opal " + ($$($nesting, 'RUBY_ENGINE_VERSION')) + " (" + ($$($nesting, 'RUBY_RELEASE_DATE')) + " revision " + ($$($nesting, 'RUBY_REVISION')) + ")"); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/base"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$require']); @@ -5703,281 +5444,279 @@ Opal.modules["opal/base"] = function(Opal) { return self.$require("corelib/constants"); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/nil"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy; Opal.add_stubs(['$raise', '$name', '$new', '$>', '$length', '$Rational']); (function($base, $super, $parent_nesting) { - function $NilClass(){}; - var self = $NilClass = $klass($base, $super, 'NilClass', $NilClass); + var self = $klass($base, $super, 'NilClass'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NilClass_$B_2, TMP_NilClass_$_3, TMP_NilClass_$_4, TMP_NilClass_$_5, TMP_NilClass_$eq$eq_6, TMP_NilClass_dup_7, TMP_NilClass_clone_8, TMP_NilClass_inspect_9, TMP_NilClass_nil$q_10, TMP_NilClass_singleton_class_11, TMP_NilClass_to_a_12, TMP_NilClass_to_h_13, TMP_NilClass_to_i_14, TMP_NilClass_to_s_15, TMP_NilClass_to_c_16, TMP_NilClass_rationalize_17, TMP_NilClass_to_r_18, TMP_NilClass_instance_variables_19; + var $nesting = [self].concat($parent_nesting), $NilClass_$excl$2, $NilClass_$$3, $NilClass_$$4, $NilClass_$$5, $NilClass_$eq_eq$6, $NilClass_dup$7, $NilClass_clone$8, $NilClass_inspect$9, $NilClass_nil$ques$10, $NilClass_singleton_class$11, $NilClass_to_a$12, $NilClass_to_h$13, $NilClass_to_i$14, $NilClass_to_s$15, $NilClass_to_c$16, $NilClass_rationalize$17, $NilClass_to_r$18, $NilClass_instance_variables$19; - def.$$meta = self; + self.$$prototype.$$meta = self; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1; + var $nesting = [self].concat($parent_nesting), $allocate$1; - Opal.defn(self, '$allocate', TMP_allocate_1 = function $$allocate() { + Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, TMP_allocate_1.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) + }, $allocate$1.$$arity = 0); Opal.udef(self, '$' + "new");; return nil;; })(Opal.get_singleton_class(self), $nesting); - Opal.defn(self, '$!', TMP_NilClass_$B_2 = function() { + Opal.def(self, '$!', $NilClass_$excl$2 = function() { var self = this; return true - }, TMP_NilClass_$B_2.$$arity = 0); + }, $NilClass_$excl$2.$$arity = 0); - Opal.defn(self, '$&', TMP_NilClass_$_3 = function(other) { + Opal.def(self, '$&', $NilClass_$$3 = function(other) { var self = this; return false - }, TMP_NilClass_$_3.$$arity = 1); + }, $NilClass_$$3.$$arity = 1); - Opal.defn(self, '$|', TMP_NilClass_$_4 = function(other) { + Opal.def(self, '$|', $NilClass_$$4 = function(other) { var self = this; - return other !== false && other !== nil - }, TMP_NilClass_$_4.$$arity = 1); + return other !== false && other !== nil; + }, $NilClass_$$4.$$arity = 1); - Opal.defn(self, '$^', TMP_NilClass_$_5 = function(other) { + Opal.def(self, '$^', $NilClass_$$5 = function(other) { var self = this; - return other !== false && other !== nil - }, TMP_NilClass_$_5.$$arity = 1); + return other !== false && other !== nil; + }, $NilClass_$$5.$$arity = 1); - Opal.defn(self, '$==', TMP_NilClass_$eq$eq_6 = function(other) { + Opal.def(self, '$==', $NilClass_$eq_eq$6 = function(other) { var self = this; - return other === nil - }, TMP_NilClass_$eq$eq_6.$$arity = 1); + return other === nil; + }, $NilClass_$eq_eq$6.$$arity = 1); - Opal.defn(self, '$dup', TMP_NilClass_dup_7 = function $$dup() { + Opal.def(self, '$dup', $NilClass_dup$7 = function $$dup() { var self = this; return nil - }, TMP_NilClass_dup_7.$$arity = 0); + }, $NilClass_dup$7.$$arity = 0); - Opal.defn(self, '$clone', TMP_NilClass_clone_8 = function $$clone($kwargs) { - var self = this, freeze; + Opal.def(self, '$clone', $NilClass_clone$8 = function $$clone($kwargs) { + var freeze, self = this; - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } - } + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + freeze = $kwargs.$$smap["freeze"]; if (freeze == null) { freeze = true - } - return nil - }, TMP_NilClass_clone_8.$$arity = -1); + }; + return nil; + }, $NilClass_clone$8.$$arity = -1); - Opal.defn(self, '$inspect', TMP_NilClass_inspect_9 = function $$inspect() { + Opal.def(self, '$inspect', $NilClass_inspect$9 = function $$inspect() { var self = this; return "nil" - }, TMP_NilClass_inspect_9.$$arity = 0); + }, $NilClass_inspect$9.$$arity = 0); - Opal.defn(self, '$nil?', TMP_NilClass_nil$q_10 = function() { + Opal.def(self, '$nil?', $NilClass_nil$ques$10 = function() { var self = this; return true - }, TMP_NilClass_nil$q_10.$$arity = 0); + }, $NilClass_nil$ques$10.$$arity = 0); - Opal.defn(self, '$singleton_class', TMP_NilClass_singleton_class_11 = function $$singleton_class() { + Opal.def(self, '$singleton_class', $NilClass_singleton_class$11 = function $$singleton_class() { var self = this; - return Opal.const_get_relative($nesting, 'NilClass') - }, TMP_NilClass_singleton_class_11.$$arity = 0); + return $$($nesting, 'NilClass') + }, $NilClass_singleton_class$11.$$arity = 0); - Opal.defn(self, '$to_a', TMP_NilClass_to_a_12 = function $$to_a() { + Opal.def(self, '$to_a', $NilClass_to_a$12 = function $$to_a() { var self = this; return [] - }, TMP_NilClass_to_a_12.$$arity = 0); + }, $NilClass_to_a$12.$$arity = 0); - Opal.defn(self, '$to_h', TMP_NilClass_to_h_13 = function $$to_h() { + Opal.def(self, '$to_h', $NilClass_to_h$13 = function $$to_h() { var self = this; - return Opal.hash() - }, TMP_NilClass_to_h_13.$$arity = 0); + return Opal.hash(); + }, $NilClass_to_h$13.$$arity = 0); - Opal.defn(self, '$to_i', TMP_NilClass_to_i_14 = function $$to_i() { + Opal.def(self, '$to_i', $NilClass_to_i$14 = function $$to_i() { var self = this; return 0 - }, TMP_NilClass_to_i_14.$$arity = 0); + }, $NilClass_to_i$14.$$arity = 0); Opal.alias(self, "to_f", "to_i"); - Opal.defn(self, '$to_s', TMP_NilClass_to_s_15 = function $$to_s() { + Opal.def(self, '$to_s', $NilClass_to_s$15 = function $$to_s() { var self = this; return "" - }, TMP_NilClass_to_s_15.$$arity = 0); + }, $NilClass_to_s$15.$$arity = 0); - Opal.defn(self, '$to_c', TMP_NilClass_to_c_16 = function $$to_c() { + Opal.def(self, '$to_c', $NilClass_to_c$16 = function $$to_c() { var self = this; - return Opal.const_get_relative($nesting, 'Complex').$new(0, 0) - }, TMP_NilClass_to_c_16.$$arity = 0); + return $$($nesting, 'Complex').$new(0, 0) + }, $NilClass_to_c$16.$$arity = 0); - Opal.defn(self, '$rationalize', TMP_NilClass_rationalize_17 = function $$rationalize($a_rest) { - var self = this, args; + Opal.def(self, '$rationalize', $NilClass_rationalize$17 = function $$rationalize($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy($rb_gt(args.$length(), 1))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'))}; + self.$raise($$($nesting, 'ArgumentError'))}; return self.$Rational(0, 1); - }, TMP_NilClass_rationalize_17.$$arity = -1); + }, $NilClass_rationalize$17.$$arity = -1); - Opal.defn(self, '$to_r', TMP_NilClass_to_r_18 = function $$to_r() { + Opal.def(self, '$to_r', $NilClass_to_r$18 = function $$to_r() { var self = this; return self.$Rational(0, 1) - }, TMP_NilClass_to_r_18.$$arity = 0); - return (Opal.defn(self, '$instance_variables', TMP_NilClass_instance_variables_19 = function $$instance_variables() { + }, $NilClass_to_r$18.$$arity = 0); + return (Opal.def(self, '$instance_variables', $NilClass_instance_variables$19 = function $$instance_variables() { var self = this; return [] - }, TMP_NilClass_instance_variables_19.$$arity = 0), nil) && 'instance_variables'; + }, $NilClass_instance_variables$19.$$arity = 0), nil) && 'instance_variables'; })($nesting[0], null, $nesting); return Opal.const_set($nesting[0], 'NIL', nil); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/boolean"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2; Opal.add_stubs(['$raise', '$name']); (function($base, $super, $parent_nesting) { - function $Boolean(){}; - var self = $Boolean = $klass($base, $super, 'Boolean', $Boolean); + var self = $klass($base, $super, 'Boolean'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Boolean___id___2, TMP_Boolean_$B_3, TMP_Boolean_$_4, TMP_Boolean_$_5, TMP_Boolean_$_6, TMP_Boolean_$eq$eq_7, TMP_Boolean_singleton_class_8, TMP_Boolean_to_s_9, TMP_Boolean_dup_10, TMP_Boolean_clone_11; + var $nesting = [self].concat($parent_nesting), $Boolean___id__$2, $Boolean_$excl$3, $Boolean_$$4, $Boolean_$$5, $Boolean_$$6, $Boolean_$eq_eq$7, $Boolean_singleton_class$8, $Boolean_to_s$9, $Boolean_dup$10, $Boolean_clone$11; - def.$$is_boolean = true; - def.$$meta = self; + Opal.defineProperty(self.$$prototype, '$$is_boolean', true); + Opal.defineProperty(self.$$prototype, '$$meta', self); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1; + var $nesting = [self].concat($parent_nesting), $allocate$1; - Opal.defn(self, '$allocate', TMP_allocate_1 = function $$allocate() { + Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, TMP_allocate_1.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) + }, $allocate$1.$$arity = 0); Opal.udef(self, '$' + "new");; return nil;; })(Opal.get_singleton_class(self), $nesting); - Opal.defn(self, '$__id__', TMP_Boolean___id___2 = function $$__id__() { + Opal.def(self, '$__id__', $Boolean___id__$2 = function $$__id__() { var self = this; - return self.valueOf() ? 2 : 0 - }, TMP_Boolean___id___2.$$arity = 0); + return self.valueOf() ? 2 : 0; + }, $Boolean___id__$2.$$arity = 0); Opal.alias(self, "object_id", "__id__"); - Opal.defn(self, '$!', TMP_Boolean_$B_3 = function() { + Opal.def(self, '$!', $Boolean_$excl$3 = function() { var self = this; - return self != true - }, TMP_Boolean_$B_3.$$arity = 0); + return self != true; + }, $Boolean_$excl$3.$$arity = 0); - Opal.defn(self, '$&', TMP_Boolean_$_4 = function(other) { + Opal.def(self, '$&', $Boolean_$$4 = function(other) { var self = this; - return (self == true) ? (other !== false && other !== nil) : false - }, TMP_Boolean_$_4.$$arity = 1); + return (self == true) ? (other !== false && other !== nil) : false; + }, $Boolean_$$4.$$arity = 1); - Opal.defn(self, '$|', TMP_Boolean_$_5 = function(other) { + Opal.def(self, '$|', $Boolean_$$5 = function(other) { var self = this; - return (self == true) ? true : (other !== false && other !== nil) - }, TMP_Boolean_$_5.$$arity = 1); + return (self == true) ? true : (other !== false && other !== nil); + }, $Boolean_$$5.$$arity = 1); - Opal.defn(self, '$^', TMP_Boolean_$_6 = function(other) { + Opal.def(self, '$^', $Boolean_$$6 = function(other) { var self = this; - return (self == true) ? (other === false || other === nil) : (other !== false && other !== nil) - }, TMP_Boolean_$_6.$$arity = 1); + return (self == true) ? (other === false || other === nil) : (other !== false && other !== nil); + }, $Boolean_$$6.$$arity = 1); - Opal.defn(self, '$==', TMP_Boolean_$eq$eq_7 = function(other) { + Opal.def(self, '$==', $Boolean_$eq_eq$7 = function(other) { var self = this; - return (self == true) === other.valueOf() - }, TMP_Boolean_$eq$eq_7.$$arity = 1); + return (self == true) === other.valueOf(); + }, $Boolean_$eq_eq$7.$$arity = 1); Opal.alias(self, "equal?", "=="); Opal.alias(self, "eql?", "=="); - Opal.defn(self, '$singleton_class', TMP_Boolean_singleton_class_8 = function $$singleton_class() { + Opal.def(self, '$singleton_class', $Boolean_singleton_class$8 = function $$singleton_class() { var self = this; - return Opal.const_get_relative($nesting, 'Boolean') - }, TMP_Boolean_singleton_class_8.$$arity = 0); + return $$($nesting, 'Boolean') + }, $Boolean_singleton_class$8.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Boolean_to_s_9 = function $$to_s() { + Opal.def(self, '$to_s', $Boolean_to_s$9 = function $$to_s() { var self = this; - return (self == true) ? 'true' : 'false' - }, TMP_Boolean_to_s_9.$$arity = 0); + return (self == true) ? 'true' : 'false'; + }, $Boolean_to_s$9.$$arity = 0); - Opal.defn(self, '$dup', TMP_Boolean_dup_10 = function $$dup() { + Opal.def(self, '$dup', $Boolean_dup$10 = function $$dup() { var self = this; return self - }, TMP_Boolean_dup_10.$$arity = 0); - return (Opal.defn(self, '$clone', TMP_Boolean_clone_11 = function $$clone($kwargs) { - var self = this, freeze; + }, $Boolean_dup$10.$$arity = 0); + return (Opal.def(self, '$clone', $Boolean_clone$11 = function $$clone($kwargs) { + var freeze, self = this; - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } - } + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + freeze = $kwargs.$$smap["freeze"]; if (freeze == null) { freeze = true - } - return self - }, TMP_Boolean_clone_11.$$arity = -1), nil) && 'clone'; + }; + return self; + }, $Boolean_clone$11.$$arity = -1), nil) && 'clone'; })($nesting[0], Boolean, $nesting); - Opal.const_set($nesting[0], 'TrueClass', Opal.const_get_relative($nesting, 'Boolean')); - Opal.const_set($nesting[0], 'FalseClass', Opal.const_get_relative($nesting, 'Boolean')); + Opal.const_set($nesting[0], 'TrueClass', $$($nesting, 'Boolean')); + Opal.const_set($nesting[0], 'FalseClass', $$($nesting, 'Boolean')); Opal.const_set($nesting[0], 'TRUE', true); return Opal.const_set($nesting[0], 'FALSE', false); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/comparable"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -5985,36 +5724,40 @@ Opal.modules["corelib/comparable"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - Opal.add_stubs(['$===', '$>', '$<', '$equal?', '$<=>', '$normalize', '$raise', '$class']); + Opal.add_stubs(['$>', '$<', '$===', '$raise', '$class', '$equal?', '$<=>']); return (function($base, $parent_nesting) { - var $Comparable, self = $Comparable = $module($base, 'Comparable'); + var self = $module($base, 'Comparable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Comparable_normalize_1, TMP_Comparable_$eq$eq_2, TMP_Comparable_$gt_3, TMP_Comparable_$gt$eq_4, TMP_Comparable_$lt_5, TMP_Comparable_$lt$eq_6, TMP_Comparable_between$q_7, TMP_Comparable_clamp_8; + var $nesting = [self].concat($parent_nesting), $Comparable_$eq_eq$1, $Comparable_$gt$2, $Comparable_$gt_eq$3, $Comparable_$lt$4, $Comparable_$lt_eq$5, $Comparable_between$ques$6, $Comparable_clamp$7, $case = nil; - Opal.defs(self, '$normalize', TMP_Comparable_normalize_1 = function $$normalize(what) { - var self = this; + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } - - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](what))) { - return what}; - if ($truthy($rb_gt(what, 0))) { - return 1}; - if ($truthy($rb_lt(what, 0))) { - return -1}; + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } return 0; - }, TMP_Comparable_normalize_1.$$arity = 1); + } + + function fail_comparison(lhs, rhs) { + var class_name; + (function() {$case = rhs; + if (nil['$===']($case) || true['$===']($case) || false['$===']($case) || $$($nesting, 'Integer')['$===']($case) || $$($nesting, 'Float')['$===']($case)) {return class_name = rhs.$inspect();} + else {return class_name = rhs.$$class;}})() + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + ; - Opal.defn(self, '$==', TMP_Comparable_$eq$eq_2 = function(other) { + Opal.def(self, '$==', $Comparable_$eq_eq$1 = function(other) { var self = this, cmp = nil; - try { - - if ($truthy(self['$equal?'](other))) { - return true}; - + + if ($truthy(self['$equal?'](other))) { + return true}; + if (self["$<=>"] == Opal.Kernel["$<=>"]) { return false; } @@ -6025,65 +5768,58 @@ Opal.modules["corelib/comparable"] = function(Opal) { return false; } ; - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - return false - }; - return Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp) == 0; - } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'StandardError')])) { - try { - return false - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, TMP_Comparable_$eq$eq_2.$$arity = 1); + if ($truthy((cmp = self['$<=>'](other)))) { + } else { + return false + }; + return normalize(cmp) == 0;; + }, $Comparable_$eq_eq$1.$$arity = 1); - Opal.defn(self, '$>', TMP_Comparable_$gt_3 = function(other) { + Opal.def(self, '$>', $Comparable_$gt$2 = function(other) { var self = this, cmp = nil; if ($truthy((cmp = self['$<=>'](other)))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed") + } else { + fail_comparison(self, other) }; - return Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp) > 0; - }, TMP_Comparable_$gt_3.$$arity = 1); + return normalize(cmp) > 0;; + }, $Comparable_$gt$2.$$arity = 1); - Opal.defn(self, '$>=', TMP_Comparable_$gt$eq_4 = function(other) { + Opal.def(self, '$>=', $Comparable_$gt_eq$3 = function(other) { var self = this, cmp = nil; if ($truthy((cmp = self['$<=>'](other)))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed") + } else { + fail_comparison(self, other) }; - return Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp) >= 0; - }, TMP_Comparable_$gt$eq_4.$$arity = 1); + return normalize(cmp) >= 0;; + }, $Comparable_$gt_eq$3.$$arity = 1); - Opal.defn(self, '$<', TMP_Comparable_$lt_5 = function(other) { + Opal.def(self, '$<', $Comparable_$lt$4 = function(other) { var self = this, cmp = nil; if ($truthy((cmp = self['$<=>'](other)))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed") + } else { + fail_comparison(self, other) }; - return Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp) < 0; - }, TMP_Comparable_$lt_5.$$arity = 1); + return normalize(cmp) < 0;; + }, $Comparable_$lt$4.$$arity = 1); - Opal.defn(self, '$<=', TMP_Comparable_$lt$eq_6 = function(other) { + Opal.def(self, '$<=', $Comparable_$lt_eq$5 = function(other) { var self = this, cmp = nil; if ($truthy((cmp = self['$<=>'](other)))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed") + } else { + fail_comparison(self, other) }; - return Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp) <= 0; - }, TMP_Comparable_$lt$eq_6.$$arity = 1); + return normalize(cmp) <= 0;; + }, $Comparable_$lt_eq$5.$$arity = 1); - Opal.defn(self, '$between?', TMP_Comparable_between$q_7 = function(min, max) { + Opal.def(self, '$between?', $Comparable_between$ques$6 = function(min, max) { var self = this; @@ -6092,111 +5828,114 @@ Opal.modules["corelib/comparable"] = function(Opal) { if ($rb_gt(self, max)) { return false}; return true; - }, TMP_Comparable_between$q_7.$$arity = 2); + }, $Comparable_between$ques$6.$$arity = 2); - Opal.defn(self, '$clamp', TMP_Comparable_clamp_8 = function $$clamp(min, max) { + Opal.def(self, '$clamp', $Comparable_clamp$7 = function $$clamp(min, max) { var self = this, cmp = nil; cmp = min['$<=>'](max); if ($truthy(cmp)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (min.$class()) + " with " + (max.$class()) + " failed") + } else { + fail_comparison(min, max) }; - if ($truthy($rb_gt(Opal.const_get_relative($nesting, 'Comparable').$normalize(cmp), 0))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "min argument must be smaller than max argument")}; - if ($truthy($rb_lt(Opal.const_get_relative($nesting, 'Comparable').$normalize(self['$<=>'](min)), 0))) { + if ($truthy(normalize(cmp) > 0)) { + self.$raise($$($nesting, 'ArgumentError'), "min argument must be smaller than max argument")}; + if ($truthy(normalize(self['$<=>'](min)) < 0)) { return min}; - if ($truthy($rb_gt(Opal.const_get_relative($nesting, 'Comparable').$normalize(self['$<=>'](max)), 0))) { + if ($truthy(normalize(self['$<=>'](max)) > 0)) { return max}; return self; - }, TMP_Comparable_clamp_8.$$arity = 2); + }, $Comparable_clamp$7.$$arity = 2); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/regexp"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars; - Opal.add_stubs(['$nil?', '$[]', '$raise', '$escape', '$options', '$to_str', '$new', '$join', '$coerce_to!', '$!', '$match', '$coerce_to?', '$begin', '$coerce_to', '$call', '$=~', '$attr_reader', '$===', '$inspect', '$to_a']); + Opal.add_stubs(['$nil?', '$[]', '$raise', '$escape', '$options', '$to_str', '$new', '$join', '$coerce_to!', '$!', '$match', '$coerce_to?', '$begin', '$coerce_to', '$=~', '$attr_reader', '$===', '$inspect', '$to_a']); (function($base, $super, $parent_nesting) { - function $RegexpError(){}; - var self = $RegexpError = $klass($base, $super, 'RegexpError', $RegexpError); + var self = $klass($base, $super, 'RegexpError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); (function($base, $super, $parent_nesting) { - function $Regexp(){}; - var self = $Regexp = $klass($base, $super, 'Regexp', $Regexp); + var self = $klass($base, $super, 'Regexp'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Regexp_$eq$eq_6, TMP_Regexp_$eq$eq$eq_7, TMP_Regexp_$eq$_8, TMP_Regexp_inspect_9, TMP_Regexp_match_10, TMP_Regexp_match$q_11, TMP_Regexp_$_12, TMP_Regexp_source_13, TMP_Regexp_options_14, TMP_Regexp_casefold$q_15; + var $nesting = [self].concat($parent_nesting), $Regexp_$eq_eq$6, $Regexp_$eq_eq_eq$7, $Regexp_$eq_tilde$8, $Regexp_inspect$9, $Regexp_match$10, $Regexp_match$ques$11, $Regexp_$$12, $Regexp_source$13, $Regexp_options$14, $Regexp_casefold$ques$15; Opal.const_set($nesting[0], 'IGNORECASE', 1); + Opal.const_set($nesting[0], 'EXTENDED', 2); Opal.const_set($nesting[0], 'MULTILINE', 4); - def.$$is_regexp = true; + Opal.defineProperty(self.$$prototype, '$$is_regexp', true); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1, TMP_escape_2, TMP_last_match_3, TMP_union_4, TMP_new_5; + var $nesting = [self].concat($parent_nesting), $allocate$1, $escape$2, $last_match$3, $union$4, $new$5; - Opal.defn(self, '$allocate', TMP_allocate_1 = function $$allocate() { - var self = this, $iter = TMP_allocate_1.$$p, $yield = $iter || nil, allocated = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { + var $iter = $allocate$1.$$p, $yield = $iter || nil, self = this, allocated = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_allocate_1.$$p = null; + if ($iter) $allocate$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - allocated = $send(self, Opal.find_super_dispatcher(self, 'allocate', TMP_allocate_1, false), $zuper, $iter); + allocated = $send(self, Opal.find_super_dispatcher(self, 'allocate', $allocate$1, false), $zuper, $iter); allocated.uninitialized = true; return allocated; - }, TMP_allocate_1.$$arity = 0); + }, $allocate$1.$$arity = 0); - Opal.defn(self, '$escape', TMP_escape_2 = function $$escape(string) { + Opal.def(self, '$escape', $escape$2 = function $$escape(string) { var self = this; - return Opal.escape_regexp(string) - }, TMP_escape_2.$$arity = 1); + return Opal.escape_regexp(string); + }, $escape$2.$$arity = 1); - Opal.defn(self, '$last_match', TMP_last_match_3 = function $$last_match(n) { + Opal.def(self, '$last_match', $last_match$3 = function $$last_match(n) { var self = this; if ($gvars["~"] == null) $gvars["~"] = nil; + + if (n == null) { n = nil; - } + }; if ($truthy(n['$nil?']())) { return $gvars["~"] - } else { + } else { return $gvars["~"]['$[]'](n) - } - }, TMP_last_match_3.$$arity = -1); + }; + }, $last_match$3.$$arity = -1); Opal.alias(self, "quote", "escape"); - Opal.defn(self, '$union', TMP_union_4 = function $$union($a_rest) { - var self = this, parts; + Opal.def(self, '$union', $union$4 = function $$union($a) { + var $post_args, parts, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - parts = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - parts[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + parts = $post_args;; + var is_first_part_array, quoted_validated, part, options, each_part_options; if (parts.length == 0) { return /(?!)/; } + // return fast if there's only one element + if (parts.length == 1 && parts[0].$$is_regexp) { + return parts[0]; + } // cover the 2 arrays passed as arguments case is_first_part_array = parts[0].$$is_array; if (parts.length > 1 && is_first_part_array) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "no implicit conversion of Array into String") + self.$raise($$($nesting, 'TypeError'), "no implicit conversion of Array into String") } // deal with splat issues (related to https://github.com/opal/opal/issues/858) if (is_first_part_array) { @@ -6212,7 +5951,7 @@ Opal.modules["corelib/regexp"] = function(Opal) { else if (part.$$is_regexp) { each_part_options = (part).$options(); if (options != undefined && options != each_part_options) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "All expressions must use the same options") + self.$raise($$($nesting, 'TypeError'), "All expressions must use the same options") } options = each_part_options; quoted_validated.push('('+part.source+')'); @@ -6223,19 +5962,21 @@ Opal.modules["corelib/regexp"] = function(Opal) { } ; return self.$new((quoted_validated).$join("|"), options); - }, TMP_union_4.$$arity = -1); - return (Opal.defn(self, '$new', TMP_new_5 = function(regexp, options) { + }, $union$4.$$arity = -1); + return (Opal.def(self, '$new', $new$5 = function(regexp, options) { var self = this; + ; + if (regexp.$$is_regexp) { return new RegExp(regexp); } - regexp = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](regexp, Opal.const_get_relative($nesting, 'String'), "to_str"); + regexp = $$($nesting, 'Opal')['$coerce_to!'](regexp, $$($nesting, 'String'), "to_str"); if (regexp.charAt(regexp.length - 1) === '\\' && regexp.charAt(regexp.length - 2) !== '\\') { - self.$raise(Opal.const_get_relative($nesting, 'RegexpError'), "" + "too short escape sequence: /" + (regexp) + "/") + self.$raise($$($nesting, 'RegexpError'), "" + "too short escape sequence: /" + (regexp) + "/") } if (options === undefined || options['$!']()) { @@ -6244,8 +5985,8 @@ Opal.modules["corelib/regexp"] = function(Opal) { if (options.$$is_number) { var temp = ''; - if (Opal.const_get_relative($nesting, 'IGNORECASE') & options) { temp += 'i'; } - if (Opal.const_get_relative($nesting, 'MULTILINE') & options) { temp += 'm'; } + if ($$($nesting, 'IGNORECASE') & options) { temp += 'i'; } + if ($$($nesting, 'MULTILINE') & options) { temp += 'm'; } options = temp; } else { @@ -6253,31 +5994,31 @@ Opal.modules["corelib/regexp"] = function(Opal) { } return new RegExp(regexp, options); - - }, TMP_new_5.$$arity = -2), nil) && 'new'; + ; + }, $new$5.$$arity = -2), nil) && 'new'; })(Opal.get_singleton_class(self), $nesting); - Opal.defn(self, '$==', TMP_Regexp_$eq$eq_6 = function(other) { + Opal.def(self, '$==', $Regexp_$eq_eq$6 = function(other) { var self = this; - return other.constructor == RegExp && self.toString() === other.toString() - }, TMP_Regexp_$eq$eq_6.$$arity = 1); + return other instanceof RegExp && self.toString() === other.toString(); + }, $Regexp_$eq_eq$6.$$arity = 1); - Opal.defn(self, '$===', TMP_Regexp_$eq$eq$eq_7 = function(string) { + Opal.def(self, '$===', $Regexp_$eq_eq_eq$7 = function(string) { var self = this; - return self.$match(Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](string, Opal.const_get_relative($nesting, 'String'), "to_str")) !== nil - }, TMP_Regexp_$eq$eq$eq_7.$$arity = 1); + return self.$match($$($nesting, 'Opal')['$coerce_to?'](string, $$($nesting, 'String'), "to_str")) !== nil + }, $Regexp_$eq_eq_eq$7.$$arity = 1); - Opal.defn(self, '$=~', TMP_Regexp_$eq$_8 = function(string) { + Opal.def(self, '$=~', $Regexp_$eq_tilde$8 = function(string) { var $a, self = this; if ($gvars["~"] == null) $gvars["~"] = nil; return ($truthy($a = self.$match(string)) ? $gvars["~"].$begin(0) : $a) - }, TMP_Regexp_$eq$_8.$$arity = 1); + }, $Regexp_$eq_tilde$8.$$arity = 1); Opal.alias(self, "eql?", "=="); - Opal.defn(self, '$inspect', TMP_Regexp_inspect_9 = function $$inspect() { + Opal.def(self, '$inspect', $Regexp_inspect$9 = function $$inspect() { var self = this; @@ -6313,29 +6054,40 @@ Opal.modules["corelib/regexp"] = function(Opal) { return value; } - }, TMP_Regexp_inspect_9.$$arity = 0); + }, $Regexp_inspect$9.$$arity = 0); - Opal.defn(self, '$match', TMP_Regexp_match_10 = function $$match(string, pos) { - var self = this, $iter = TMP_Regexp_match_10.$$p, block = $iter || nil; + Opal.def(self, '$match', $Regexp_match$10 = function $$match(string, pos) { + var $iter = $Regexp_match$10.$$p, block = $iter || nil, self = this; if ($gvars["~"] == null) $gvars["~"] = nil; - if ($iter) TMP_Regexp_match_10.$$p = null; + if ($iter) $Regexp_match$10.$$p = null; + + + if ($iter) $Regexp_match$10.$$p = null;; + ; if (self.uninitialized) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "uninitialized Regexp") + self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") } if (pos === undefined) { - pos = 0; - } else { - pos = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pos, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + if (string === nil) return ($gvars["~"] = nil); + var m = self.exec($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str")); + if (m) { + ($gvars["~"] = $$($nesting, 'MatchData').$new(self, m)); + return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); + } else { + return ($gvars["~"] = nil); + } } + pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), "to_int"); + if (string === nil) { return ($gvars["~"] = nil); } - string = Opal.const_get_relative($nesting, 'Opal').$coerce_to(string, Opal.const_get_relative($nesting, 'String'), "to_str"); + string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str"); if (pos < 0) { pos += string.length; @@ -6344,16 +6096,8 @@ Opal.modules["corelib/regexp"] = function(Opal) { } } - var source = self.source; - var flags = 'g'; - // m flag + a . in Ruby will match white space, but in JS, it only matches beginning/ending of lines, so we get the equivalent here - if (self.multiline) { - source = source.replace('.', "[\\s\\S]"); - flags += 'm'; - } - // global RegExp maintains state, so not using self/this - var md, re = new RegExp(source, flags + (self.ignoreCase ? 'i' : '')); + var md, re = Opal.global_regexp(self); while (true) { md = re.exec(string); @@ -6361,33 +6105,35 @@ Opal.modules["corelib/regexp"] = function(Opal) { return ($gvars["~"] = nil); } if (md.index >= pos) { - ($gvars["~"] = Opal.const_get_relative($nesting, 'MatchData').$new(re, md)) - return block === nil ? $gvars["~"] : block.$call($gvars["~"]); + ($gvars["~"] = $$($nesting, 'MatchData').$new(re, md)); + return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); } re.lastIndex = md.index + 1; } + ; + }, $Regexp_match$10.$$arity = -2); - }, TMP_Regexp_match_10.$$arity = -2); - - Opal.defn(self, '$match?', TMP_Regexp_match$q_11 = function(string, pos) { + Opal.def(self, '$match?', $Regexp_match$ques$11 = function(string, pos) { var self = this; + ; + if (self.uninitialized) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "uninitialized Regexp") + self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") } if (pos === undefined) { - pos = 0; - } else { - pos = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pos, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + return string === nil ? false : self.test($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str")); } + pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), "to_int"); + if (string === nil) { return false; } - string = Opal.const_get_relative($nesting, 'Opal').$coerce_to(string, Opal.const_get_relative($nesting, 'String'), "to_str"); + string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str"); if (pos < 0) { pos += string.length; @@ -6396,16 +6142,8 @@ Opal.modules["corelib/regexp"] = function(Opal) { } } - var source = self.source; - var flags = 'g'; - // m flag + a . in Ruby will match white space, but in JS, it only matches beginning/ending of lines, so we get the equivalent here - if (self.multiline) { - source = source.replace('.', "[\\s\\S]"); - flags += 'm'; - } - // global RegExp maintains state, so not using self/this - var md, re = new RegExp(source, flags + (self.ignoreCase ? 'i' : '')); + var md, re = Opal.global_regexp(self); md = re.exec(string); if (md === null || md.index < pos) { @@ -6413,59 +6151,58 @@ Opal.modules["corelib/regexp"] = function(Opal) { } else { return true; } + ; + }, $Regexp_match$ques$11.$$arity = -2); - }, TMP_Regexp_match$q_11.$$arity = -2); - - Opal.defn(self, '$~', TMP_Regexp_$_12 = function() { + Opal.def(self, '$~', $Regexp_$$12 = function() { var self = this; if ($gvars._ == null) $gvars._ = nil; return self['$=~']($gvars._) - }, TMP_Regexp_$_12.$$arity = 0); + }, $Regexp_$$12.$$arity = 0); - Opal.defn(self, '$source', TMP_Regexp_source_13 = function $$source() { + Opal.def(self, '$source', $Regexp_source$13 = function $$source() { var self = this; - return self.source - }, TMP_Regexp_source_13.$$arity = 0); + return self.source; + }, $Regexp_source$13.$$arity = 0); - Opal.defn(self, '$options', TMP_Regexp_options_14 = function $$options() { + Opal.def(self, '$options', $Regexp_options$14 = function $$options() { var self = this; if (self.uninitialized) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "uninitialized Regexp") + self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") } var result = 0; // should be supported in IE6 according to https://msdn.microsoft.com/en-us/library/7f5z26w4(v=vs.94).aspx if (self.multiline) { - result |= Opal.const_get_relative($nesting, 'MULTILINE'); + result |= $$($nesting, 'MULTILINE'); } if (self.ignoreCase) { - result |= Opal.const_get_relative($nesting, 'IGNORECASE'); + result |= $$($nesting, 'IGNORECASE'); } return result; - }, TMP_Regexp_options_14.$$arity = 0); + }, $Regexp_options$14.$$arity = 0); - Opal.defn(self, '$casefold?', TMP_Regexp_casefold$q_15 = function() { + Opal.def(self, '$casefold?', $Regexp_casefold$ques$15 = function() { var self = this; - return self.ignoreCase - }, TMP_Regexp_casefold$q_15.$$arity = 0); + return self.ignoreCase; + }, $Regexp_casefold$ques$15.$$arity = 0); return Opal.alias(self, "to_s", "source"); })($nesting[0], RegExp, $nesting); return (function($base, $super, $parent_nesting) { - function $MatchData(){}; - var self = $MatchData = $klass($base, $super, 'MatchData', $MatchData); + var self = $klass($base, $super, 'MatchData'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchData_initialize_16, TMP_MatchData_$$_17, TMP_MatchData_offset_18, TMP_MatchData_$eq$eq_19, TMP_MatchData_begin_20, TMP_MatchData_end_21, TMP_MatchData_captures_22, TMP_MatchData_inspect_23, TMP_MatchData_length_24, TMP_MatchData_to_a_25, TMP_MatchData_to_s_26, TMP_MatchData_values_at_27; + var $nesting = [self].concat($parent_nesting), $MatchData_initialize$16, $MatchData_$$$17, $MatchData_offset$18, $MatchData_$eq_eq$19, $MatchData_begin$20, $MatchData_end$21, $MatchData_captures$22, $MatchData_inspect$23, $MatchData_length$24, $MatchData_to_a$25, $MatchData_to_s$26, $MatchData_values_at$27; - def.matches = nil; + self.$$prototype.matches = nil; self.$attr_reader("post_match", "pre_match", "regexp", "string"); - Opal.defn(self, '$initialize', TMP_MatchData_initialize_16 = function $$initialize(regexp, match_groups) { + Opal.def(self, '$initialize', $MatchData_initialize$16 = function $$initialize(regexp, match_groups) { var self = this; @@ -6488,72 +6225,71 @@ Opal.modules["corelib/regexp"] = function(Opal) { } } ; - }, TMP_MatchData_initialize_16.$$arity = 2); + }, $MatchData_initialize$16.$$arity = 2); - Opal.defn(self, '$[]', TMP_MatchData_$$_17 = function($a_rest) { - var self = this, args; + Opal.def(self, '$[]', $MatchData_$$$17 = function($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.matches, '[]', Opal.to_a(args)) - }, TMP_MatchData_$$_17.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.matches, '[]', Opal.to_a(args)); + }, $MatchData_$$$17.$$arity = -1); - Opal.defn(self, '$offset', TMP_MatchData_offset_18 = function $$offset(n) { + Opal.def(self, '$offset', $MatchData_offset$18 = function $$offset(n) { var self = this; if (n !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "MatchData#offset only supports 0th element") + self.$raise($$($nesting, 'ArgumentError'), "MatchData#offset only supports 0th element") } return [self.begin, self.begin + self.matches[n].length]; - }, TMP_MatchData_offset_18.$$arity = 1); + }, $MatchData_offset$18.$$arity = 1); - Opal.defn(self, '$==', TMP_MatchData_$eq$eq_19 = function(other) { + Opal.def(self, '$==', $MatchData_$eq_eq$19 = function(other) { var $a, $b, $c, $d, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'MatchData')['$==='](other))) { - } else { + if ($truthy($$($nesting, 'MatchData')['$==='](other))) { + } else { return false }; return ($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = self.string == other.string) ? self.regexp.toString() == other.regexp.toString() : $d)) ? self.pre_match == other.pre_match : $c)) ? self.post_match == other.post_match : $b)) ? self.begin == other.begin : $a); - }, TMP_MatchData_$eq$eq_19.$$arity = 1); + }, $MatchData_$eq_eq$19.$$arity = 1); Opal.alias(self, "eql?", "=="); - Opal.defn(self, '$begin', TMP_MatchData_begin_20 = function $$begin(n) { + Opal.def(self, '$begin', $MatchData_begin$20 = function $$begin(n) { var self = this; if (n !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "MatchData#begin only supports 0th element") + self.$raise($$($nesting, 'ArgumentError'), "MatchData#begin only supports 0th element") } return self.begin; - }, TMP_MatchData_begin_20.$$arity = 1); + }, $MatchData_begin$20.$$arity = 1); - Opal.defn(self, '$end', TMP_MatchData_end_21 = function $$end(n) { + Opal.def(self, '$end', $MatchData_end$21 = function $$end(n) { var self = this; if (n !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "MatchData#end only supports 0th element") + self.$raise($$($nesting, 'ArgumentError'), "MatchData#end only supports 0th element") } return self.begin + self.matches[n].length; - }, TMP_MatchData_end_21.$$arity = 1); + }, $MatchData_end$21.$$arity = 1); - Opal.defn(self, '$captures', TMP_MatchData_captures_22 = function $$captures() { + Opal.def(self, '$captures', $MatchData_captures$22 = function $$captures() { var self = this; return self.matches.slice(1) - }, TMP_MatchData_captures_22.$$arity = 0); + }, $MatchData_captures$22.$$arity = 0); - Opal.defn(self, '$inspect', TMP_MatchData_inspect_23 = function $$inspect() { + Opal.def(self, '$inspect', $MatchData_inspect$23 = function $$inspect() { var self = this; @@ -6565,35 +6301,34 @@ Opal.modules["corelib/regexp"] = function(Opal) { return str + ">"; - }, TMP_MatchData_inspect_23.$$arity = 0); + }, $MatchData_inspect$23.$$arity = 0); - Opal.defn(self, '$length', TMP_MatchData_length_24 = function $$length() { + Opal.def(self, '$length', $MatchData_length$24 = function $$length() { var self = this; return self.matches.length - }, TMP_MatchData_length_24.$$arity = 0); + }, $MatchData_length$24.$$arity = 0); Opal.alias(self, "size", "length"); - Opal.defn(self, '$to_a', TMP_MatchData_to_a_25 = function $$to_a() { + Opal.def(self, '$to_a', $MatchData_to_a$25 = function $$to_a() { var self = this; return self.matches - }, TMP_MatchData_to_a_25.$$arity = 0); + }, $MatchData_to_a$25.$$arity = 0); - Opal.defn(self, '$to_s', TMP_MatchData_to_s_26 = function $$to_s() { + Opal.def(self, '$to_s', $MatchData_to_s$26 = function $$to_s() { var self = this; return self.matches[0] - }, TMP_MatchData_to_s_26.$$arity = 0); - return (Opal.defn(self, '$values_at', TMP_MatchData_values_at_27 = function $$values_at($a_rest) { - var self = this, args; + }, $MatchData_to_s$26.$$arity = 0); + return (Opal.def(self, '$values_at', $MatchData_values_at$27 = function $$values_at($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var i, a, index, values = []; @@ -6605,7 +6340,7 @@ Opal.modules["corelib/regexp"] = function(Opal) { Array.prototype.splice.apply(args, a); } - index = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](args[i], Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal')['$coerce_to!'](args[i], $$($nesting, 'Integer'), "to_int"); if (index < 0) { index += self.matches.length; @@ -6619,12 +6354,12 @@ Opal.modules["corelib/regexp"] = function(Opal) { } return values; - - }, TMP_MatchData_values_at_27.$$arity = -1), nil) && 'values_at'; + ; + }, $MatchData_values_at$27.$$arity = -1), nil) && 'values_at'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/string"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); @@ -6632,79 +6367,90 @@ Opal.modules["corelib/string"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; - Opal.add_stubs(['$require', '$include', '$coerce_to?', '$coerce_to', '$raise', '$===', '$format', '$to_s', '$respond_to?', '$to_str', '$<=>', '$==', '$=~', '$new', '$empty?', '$ljust', '$ceil', '$/', '$+', '$rjust', '$floor', '$to_a', '$each_char', '$to_proc', '$coerce_to!', '$copy_singleton_methods', '$initialize_clone', '$initialize_dup', '$enum_for', '$size', '$chomp', '$[]', '$to_i', '$each_line', '$class', '$match', '$captures', '$proc', '$succ', '$escape']); + Opal.add_stubs(['$require', '$include', '$coerce_to?', '$coerce_to', '$raise', '$===', '$format', '$to_s', '$respond_to?', '$to_str', '$<=>', '$==', '$=~', '$new', '$force_encoding', '$casecmp', '$empty?', '$ljust', '$ceil', '$/', '$+', '$rjust', '$floor', '$to_a', '$each_char', '$to_proc', '$coerce_to!', '$copy_singleton_methods', '$initialize_clone', '$initialize_dup', '$enum_for', '$size', '$chomp', '$[]', '$to_i', '$each_line', '$encoding', '$class', '$match', '$match?', '$captures', '$proc', '$succ', '$escape']); self.$require("corelib/comparable"); self.$require("corelib/regexp"); (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); + var self = $klass($base, $super, 'String'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String___id___1, TMP_String_try_convert_2, TMP_String_new_3, TMP_String_initialize_4, TMP_String_$_5, TMP_String_$_6, TMP_String_$_7, TMP_String_$lt$eq$gt_8, TMP_String_$eq$eq_9, TMP_String_$eq$_10, TMP_String_$$_11, TMP_String_capitalize_12, TMP_String_casecmp_13, TMP_String_center_14, TMP_String_chars_15, TMP_String_chomp_16, TMP_String_chop_17, TMP_String_chr_18, TMP_String_clone_19, TMP_String_dup_20, TMP_String_count_21, TMP_String_delete_22, TMP_String_downcase_23, TMP_String_each_char_24, TMP_String_each_line_26, TMP_String_empty$q_27, TMP_String_end_with$q_28, TMP_String_gsub_29, TMP_String_hash_30, TMP_String_hex_31, TMP_String_include$q_32, TMP_String_index_33, TMP_String_inspect_34, TMP_String_intern_35, TMP_String_lines_36, TMP_String_length_37, TMP_String_ljust_38, TMP_String_lstrip_39, TMP_String_ascii_only$q_40, TMP_String_match_41, TMP_String_next_42, TMP_String_oct_43, TMP_String_ord_44, TMP_String_partition_45, TMP_String_reverse_46, TMP_String_rindex_47, TMP_String_rjust_48, TMP_String_rpartition_49, TMP_String_rstrip_50, TMP_String_scan_51, TMP_String_split_52, TMP_String_squeeze_53, TMP_String_start_with$q_54, TMP_String_strip_55, TMP_String_sub_56, TMP_String_sum_57, TMP_String_swapcase_58, TMP_String_to_f_59, TMP_String_to_i_60, TMP_String_to_proc_62, TMP_String_to_s_63, TMP_String_tr_64, TMP_String_tr_s_65, TMP_String_upcase_66, TMP_String_upto_67, TMP_String_instance_variables_68, TMP_String__load_69, TMP_String_unpack_70; + var $nesting = [self].concat($parent_nesting), $String___id__$1, $String_try_convert$2, $String_new$3, $String_initialize$4, $String_$percent$5, $String_$$6, $String_$plus$7, $String_$lt_eq_gt$8, $String_$eq_eq$9, $String_$eq_tilde$10, $String_$$$11, $String_b$12, $String_capitalize$13, $String_casecmp$14, $String_casecmp$ques$15, $String_center$16, $String_chars$17, $String_chomp$18, $String_chop$19, $String_chr$20, $String_clone$21, $String_dup$22, $String_count$23, $String_delete$24, $String_delete_prefix$25, $String_delete_suffix$26, $String_downcase$27, $String_each_char$28, $String_each_line$30, $String_empty$ques$31, $String_end_with$ques$32, $String_gsub$33, $String_hash$34, $String_hex$35, $String_include$ques$36, $String_index$37, $String_inspect$38, $String_intern$39, $String_lines$40, $String_length$41, $String_ljust$42, $String_lstrip$43, $String_ascii_only$ques$44, $String_match$45, $String_match$ques$46, $String_next$47, $String_oct$48, $String_ord$49, $String_partition$50, $String_reverse$51, $String_rindex$52, $String_rjust$53, $String_rpartition$54, $String_rstrip$55, $String_scan$56, $String_split$57, $String_squeeze$58, $String_start_with$ques$59, $String_strip$60, $String_sub$61, $String_sum$62, $String_swapcase$63, $String_to_f$64, $String_to_i$65, $String_to_proc$66, $String_to_s$68, $String_tr$69, $String_tr_s$70, $String_upcase$71, $String_upto$72, $String_instance_variables$73, $String__load$74, $String_unicode_normalize$75, $String_unicode_normalized$ques$76, $String_unpack$77, $String_unpack1$78; - def.length = nil; - self.$include(Opal.const_get_relative($nesting, 'Comparable')); - def.$$is_string = true; + self.$include($$($nesting, 'Comparable')); - Opal.defn(self, '$__id__', TMP_String___id___1 = function $$__id__() { + Opal.defineProperty(self.$$prototype, '$$is_string', true); + + Opal.defineProperty(self.$$prototype, '$$cast', function(string) { + var klass = this.$$class; + if (klass.$$constructor === String) { + return string; + } else { + return new klass.$$constructor(string); + } + }); + ; + + Opal.def(self, '$__id__', $String___id__$1 = function $$__id__() { var self = this; - return self.toString() - }, TMP_String___id___1.$$arity = 0); + return self.toString(); + }, $String___id__$1.$$arity = 0); Opal.alias(self, "object_id", "__id__"); - Opal.defs(self, '$try_convert', TMP_String_try_convert_2 = function $$try_convert(what) { + Opal.defs(self, '$try_convert', $String_try_convert$2 = function $$try_convert(what) { var self = this; - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](what, Opal.const_get_relative($nesting, 'String'), "to_str") - }, TMP_String_try_convert_2.$$arity = 1); - Opal.defs(self, '$new', TMP_String_new_3 = function(str) { + return $$($nesting, 'Opal')['$coerce_to?'](what, $$($nesting, 'String'), "to_str") + }, $String_try_convert$2.$$arity = 1); + Opal.defs(self, '$new', $String_new$3 = function(str) { var self = this; + + if (str == null) { str = ""; - } - - str = Opal.const_get_relative($nesting, 'Opal').$coerce_to(str, Opal.const_get_relative($nesting, 'String'), "to_str"); - return new String(str); - }, TMP_String_new_3.$$arity = -1); + }; + str = $$($nesting, 'Opal').$coerce_to(str, $$($nesting, 'String'), "to_str"); + return new self.$$constructor(str);; + }, $String_new$3.$$arity = -1); - Opal.defn(self, '$initialize', TMP_String_initialize_4 = function $$initialize(str) { + Opal.def(self, '$initialize', $String_initialize$4 = function $$initialize(str) { var self = this; + ; if (str === undefined) { return self; } ; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), "Mutable strings are not supported in Opal."); - }, TMP_String_initialize_4.$$arity = -1); + return self.$raise($$($nesting, 'NotImplementedError'), "Mutable strings are not supported in Opal."); + }, $String_initialize$4.$$arity = -1); - Opal.defn(self, '$%', TMP_String_$_5 = function(data) { + Opal.def(self, '$%', $String_$percent$5 = function(data) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](data))) { + if ($truthy($$($nesting, 'Array')['$==='](data))) { return $send(self, 'format', [self].concat(Opal.to_a(data))) - } else { + } else { return self.$format(self, data) } - }, TMP_String_$_5.$$arity = 1); + }, $String_$percent$5.$$arity = 1); - Opal.defn(self, '$*', TMP_String_$_6 = function(count) { + Opal.def(self, '$*', $String_$$6 = function(count) { var self = this; - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); if (count < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative argument") + self.$raise($$($nesting, 'ArgumentError'), "negative argument") } if (count === 0) { - return ''; + return self.$$cast(''); } var result = '', @@ -6715,7 +6461,7 @@ Opal.modules["corelib/string"] = function(Opal) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat if (string.length * count >= 1 << 28) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "multiply count must not overflow maximum string size") + self.$raise($$($nesting, 'RangeError'), "multiply count must not overflow maximum string size") } for (;;) { @@ -6729,26 +6475,26 @@ Opal.modules["corelib/string"] = function(Opal) { string += string; } - return result; + return self.$$cast(result); - }, TMP_String_$_6.$$arity = 1); + }, $String_$$6.$$arity = 1); - Opal.defn(self, '$+', TMP_String_$_7 = function(other) { + Opal.def(self, '$+', $String_$plus$7 = function(other) { var self = this; - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'String'), "to_str"); + other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str"); return self + other.$to_s(); - }, TMP_String_$_7.$$arity = 1); + }, $String_$plus$7.$$arity = 1); - Opal.defn(self, '$<=>', TMP_String_$lt$eq$gt_8 = function(other) { + Opal.def(self, '$<=>', $String_$lt_eq_gt$8 = function(other) { var self = this; if ($truthy(other['$respond_to?']("to_str"))) { other = other.$to_str().$to_s(); - return self > other ? 1 : (self < other ? -1 : 0); - } else { + return self > other ? 1 : (self < other ? -1 : 0);; + } else { var cmp = other['$<=>'](self); @@ -6760,46 +6506,48 @@ Opal.modules["corelib/string"] = function(Opal) { } } - }, TMP_String_$lt$eq$gt_8.$$arity = 1); + }, $String_$lt_eq_gt$8.$$arity = 1); - Opal.defn(self, '$==', TMP_String_$eq$eq_9 = function(other) { + Opal.def(self, '$==', $String_$eq_eq$9 = function(other) { var self = this; if (other.$$is_string) { return self.toString() === other.toString(); } - if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](other, "to_str")) { + if ($$($nesting, 'Opal')['$respond_to?'](other, "to_str")) { return other['$=='](self); } return false; - }, TMP_String_$eq$eq_9.$$arity = 1); + }, $String_$eq_eq$9.$$arity = 1); Opal.alias(self, "eql?", "=="); Opal.alias(self, "===", "=="); - Opal.defn(self, '$=~', TMP_String_$eq$_10 = function(other) { + Opal.def(self, '$=~', $String_$eq_tilde$10 = function(other) { var self = this; if (other.$$is_string) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "type mismatch: String given"); + self.$raise($$($nesting, 'TypeError'), "type mismatch: String given"); } return other['$=~'](self); - }, TMP_String_$eq$_10.$$arity = 1); + }, $String_$eq_tilde$10.$$arity = 1); - Opal.defn(self, '$[]', TMP_String_$$_11 = function(index, length) { + Opal.def(self, '$[]', $String_$$$11 = function(index, length) { var self = this; + ; + var size = self.length, exclude; if (index.$$is_range) { exclude = index.excl; - length = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index.end, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index.begin, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + length = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), "to_int"); if (Math.abs(index) > size) { return nil; @@ -6823,15 +6571,15 @@ Opal.modules["corelib/string"] = function(Opal) { length = 0; } - return self.substr(index, length); + return self.$$cast(self.substr(index, length)); } if (index.$$is_string) { if (length != null) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError')) + self.$raise($$($nesting, 'TypeError')) } - return self.indexOf(index) !== -1 ? index : nil; + return self.indexOf(index) !== -1 ? self.$$cast(index) : nil; } @@ -6843,27 +6591,27 @@ Opal.modules["corelib/string"] = function(Opal) { return nil; } - ($gvars["~"] = Opal.const_get_relative($nesting, 'MatchData').$new(index, match)) + ($gvars["~"] = $$($nesting, 'MatchData').$new(index, match)) if (length == null) { - return match[0]; + return self.$$cast(match[0]); } - length = Opal.const_get_relative($nesting, 'Opal').$coerce_to(length, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); if (length < 0 && -length < match.length) { - return match[length += match.length]; + return self.$$cast(match[length += match.length]); } if (length >= 0 && length < match.length) { - return match[length]; + return self.$$cast(match[length]); } return nil; } - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (index < 0) { index += size; @@ -6873,10 +6621,10 @@ Opal.modules["corelib/string"] = function(Opal) { if (index >= size || index < 0) { return nil; } - return self.substr(index, 1); + return self.$$cast(self.substr(index, 1)); } - length = Opal.const_get_relative($nesting, 'Opal').$coerce_to(length, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); if (length < 0) { return nil; @@ -6886,22 +6634,32 @@ Opal.modules["corelib/string"] = function(Opal) { return nil; } - return self.substr(index, length); - - }, TMP_String_$$_11.$$arity = -2); + return self.$$cast(self.substr(index, length)); + ; + }, $String_$$$11.$$arity = -2); Opal.alias(self, "byteslice", "[]"); - Opal.defn(self, '$capitalize', TMP_String_capitalize_12 = function $$capitalize() { + Opal.def(self, '$b', $String_b$12 = function $$b() { + var self = this; + + return self.$force_encoding("binary") + }, $String_b$12.$$arity = 0); + + Opal.def(self, '$capitalize', $String_capitalize$13 = function $$capitalize() { var self = this; - return self.charAt(0).toUpperCase() + self.substr(1).toLowerCase() - }, TMP_String_capitalize_12.$$arity = 0); + return self.$$cast(self.charAt(0).toUpperCase() + self.substr(1).toLowerCase()); + }, $String_capitalize$13.$$arity = 0); - Opal.defn(self, '$casecmp', TMP_String_casecmp_13 = function $$casecmp(other) { + Opal.def(self, '$casecmp', $String_casecmp$14 = function $$casecmp(other) { var self = this; - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + if ($truthy(other['$respond_to?']("to_str"))) { + } else { + return nil + }; + other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str").$to_s(); var ascii_only = /^[\x00-\x7F]*$/; if (ascii_only.test(self) && ascii_only.test(other)) { @@ -6910,96 +6668,118 @@ Opal.modules["corelib/string"] = function(Opal) { } ; return self['$<=>'](other); - }, TMP_String_casecmp_13.$$arity = 1); + }, $String_casecmp$14.$$arity = 1); - Opal.defn(self, '$center', TMP_String_center_14 = function $$center(width, padstr) { + Opal.def(self, '$casecmp?', $String_casecmp$ques$15 = function(other) { var self = this; - if (padstr == null) { - padstr = " "; + + var cmp = self.$casecmp(other); + if (cmp === nil) { + return nil; + } else { + return cmp === 0; } + + }, $String_casecmp$ques$15.$$arity = 1); + + Opal.def(self, '$center', $String_center$16 = function $$center(width, padstr) { + var self = this; + + - width = Opal.const_get_relative($nesting, 'Opal').$coerce_to(width, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - padstr = Opal.const_get_relative($nesting, 'Opal').$coerce_to(padstr, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + if (padstr == null) { + padstr = " "; + }; + width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); + padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); if ($truthy(padstr['$empty?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "zero width padding")}; + self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; if ($truthy(width <= self.length)) { return self}; var ljustified = self.$ljust($rb_divide($rb_plus(width, self.length), 2).$ceil(), padstr), rjustified = self.$rjust($rb_divide($rb_plus(width, self.length), 2).$floor(), padstr); - return rjustified + ljustified.slice(self.length); + return self.$$cast(rjustified + ljustified.slice(self.length)); ; - }, TMP_String_center_14.$$arity = -2); + }, $String_center$16.$$arity = -2); - Opal.defn(self, '$chars', TMP_String_chars_15 = function $$chars() { - var self = this, $iter = TMP_String_chars_15.$$p, block = $iter || nil; + Opal.def(self, '$chars', $String_chars$17 = function $$chars() { + var $iter = $String_chars$17.$$p, block = $iter || nil, self = this; - if ($iter) TMP_String_chars_15.$$p = null; + if ($iter) $String_chars$17.$$p = null; + + if ($iter) $String_chars$17.$$p = null;; if ($truthy(block)) { - } else { + } else { return self.$each_char().$to_a() }; return $send(self, 'each_char', [], block.$to_proc()); - }, TMP_String_chars_15.$$arity = 0); + }, $String_chars$17.$$arity = 0); - Opal.defn(self, '$chomp', TMP_String_chomp_16 = function $$chomp(separator) { + Opal.def(self, '$chomp', $String_chomp$18 = function $$chomp(separator) { var self = this; if ($gvars["/"] == null) $gvars["/"] = nil; + + if (separator == null) { separator = $gvars["/"]; - } - + }; if ($truthy(separator === nil || self.length === 0)) { return self}; - separator = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](separator, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + separator = $$($nesting, 'Opal')['$coerce_to!'](separator, $$($nesting, 'String'), "to_str").$to_s(); + var result; + if (separator === "\n") { - return self.replace(/\r?\n?$/, ''); + result = self.replace(/\r?\n?$/, ''); } else if (separator === "") { - return self.replace(/(\r?\n)+$/, ''); + result = self.replace(/(\r?\n)+$/, ''); } - else if (self.length > separator.length) { + else if (self.length >= separator.length) { var tail = self.substr(self.length - separator.length, separator.length); if (tail === separator) { - return self.substr(0, self.length - separator.length); + result = self.substr(0, self.length - separator.length); } } + + if (result != null) { + return self.$$cast(result); + } ; return self; - }, TMP_String_chomp_16.$$arity = -1); + }, $String_chomp$18.$$arity = -1); - Opal.defn(self, '$chop', TMP_String_chop_17 = function $$chop() { + Opal.def(self, '$chop', $String_chop$19 = function $$chop() { var self = this; - var length = self.length; + var length = self.length, result; if (length <= 1) { - return ""; + result = ""; + } else if (self.charAt(length - 1) === "\n" && self.charAt(length - 2) === "\r") { + result = self.substr(0, length - 2); + } else { + result = self.substr(0, length - 1); } - if (self.charAt(length - 1) === "\n" && self.charAt(length - 2) === "\r") { - return self.substr(0, length - 2); - } - else { - return self.substr(0, length - 1); - } + return self.$$cast(result); - }, TMP_String_chop_17.$$arity = 0); + }, $String_chop$19.$$arity = 0); - Opal.defn(self, '$chr', TMP_String_chr_18 = function $$chr() { + Opal.def(self, '$chr', $String_chr$20 = function $$chr() { var self = this; - return self.charAt(0) - }, TMP_String_chr_18.$$arity = 0); + return self.charAt(0); + }, $String_chr$20.$$arity = 0); - Opal.defn(self, '$clone', TMP_String_clone_19 = function $$clone() { + Opal.def(self, '$clone', $String_clone$21 = function $$clone() { var self = this, copy = nil; @@ -7007,75 +6787,107 @@ Opal.modules["corelib/string"] = function(Opal) { copy.$copy_singleton_methods(self); copy.$initialize_clone(self); return copy; - }, TMP_String_clone_19.$$arity = 0); + }, $String_clone$21.$$arity = 0); - Opal.defn(self, '$dup', TMP_String_dup_20 = function $$dup() { + Opal.def(self, '$dup', $String_dup$22 = function $$dup() { var self = this, copy = nil; copy = self.slice(); copy.$initialize_dup(self); return copy; - }, TMP_String_dup_20.$$arity = 0); + }, $String_dup$22.$$arity = 0); - Opal.defn(self, '$count', TMP_String_count_21 = function $$count($a_rest) { - var self = this, sets; + Opal.def(self, '$count', $String_count$23 = function $$count($a) { + var $post_args, sets, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - sets = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - sets[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + sets = $post_args;; if (sets.length === 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") + self.$raise($$($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") } var char_class = char_class_from_char_sets(sets); if (char_class === null) { return 0; } return self.length - self.replace(new RegExp(char_class, 'g'), '').length; + ; + }, $String_count$23.$$arity = -1); - }, TMP_String_count_21.$$arity = -1); - - Opal.defn(self, '$delete', TMP_String_delete_22 = function($a_rest) { - var self = this, sets; + Opal.def(self, '$delete', $String_delete$24 = function($a) { + var $post_args, sets, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - sets = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - sets[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + sets = $post_args;; if (sets.length === 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") + self.$raise($$($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") } var char_class = char_class_from_char_sets(sets); if (char_class === null) { return self; } - return self.replace(new RegExp(char_class, 'g'), ''); + return self.$$cast(self.replace(new RegExp(char_class, 'g'), '')); + ; + }, $String_delete$24.$$arity = -1); - }, TMP_String_delete_22.$$arity = -1); + Opal.def(self, '$delete_prefix', $String_delete_prefix$25 = function $$delete_prefix(prefix) { + var self = this; + + + if (!prefix.$$is_string) { + (prefix = $$($nesting, 'Opal').$coerce_to(prefix, $$($nesting, 'String'), "to_str")) + } + + if (self.slice(0, prefix.length) === prefix) { + return self.$$cast(self.slice(prefix.length)); + } else { + return self; + } + + }, $String_delete_prefix$25.$$arity = 1); - Opal.defn(self, '$downcase', TMP_String_downcase_23 = function $$downcase() { + Opal.def(self, '$delete_suffix', $String_delete_suffix$26 = function $$delete_suffix(suffix) { var self = this; - return self.toLowerCase() - }, TMP_String_downcase_23.$$arity = 0); + + if (!suffix.$$is_string) { + (suffix = $$($nesting, 'Opal').$coerce_to(suffix, $$($nesting, 'String'), "to_str")) + } + + if (self.slice(self.length - suffix.length) === suffix) { + return self.$$cast(self.slice(0, self.length - suffix.length)); + } else { + return self; + } + + }, $String_delete_suffix$26.$$arity = 1); + + Opal.def(self, '$downcase', $String_downcase$27 = function $$downcase() { + var self = this; + + return self.$$cast(self.toLowerCase()); + }, $String_downcase$27.$$arity = 0); - Opal.defn(self, '$each_char', TMP_String_each_char_24 = function $$each_char() { - var TMP_25, self = this, $iter = TMP_String_each_char_24.$$p, block = $iter || nil; + Opal.def(self, '$each_char', $String_each_char$28 = function $$each_char() { + var $iter = $String_each_char$28.$$p, block = $iter || nil, $$29, self = this; - if ($iter) TMP_String_each_char_24.$$p = null; + if ($iter) $String_each_char$28.$$p = null; + + if ($iter) $String_each_char$28.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_char"], (TMP_25 = function(){var self = TMP_25.$$s || this; + } else { + return $send(self, 'enum_for', ["each_char"], ($$29 = function(){var self = $$29.$$s || this; - return self.$size()}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25)) + return self.$size()}, $$29.$$s = self, $$29.$$arity = 0, $$29)) }; for (var i = 0, length = self.length; i < length; i++) { @@ -7083,19 +6895,22 @@ Opal.modules["corelib/string"] = function(Opal) { } ; return self; - }, TMP_String_each_char_24.$$arity = 0); + }, $String_each_char$28.$$arity = 0); - Opal.defn(self, '$each_line', TMP_String_each_line_26 = function $$each_line(separator) { - var self = this, $iter = TMP_String_each_line_26.$$p, block = $iter || nil; + Opal.def(self, '$each_line', $String_each_line$30 = function $$each_line(separator) { + var $iter = $String_each_line$30.$$p, block = $iter || nil, self = this; if ($gvars["/"] == null) $gvars["/"] = nil; + if ($iter) $String_each_line$30.$$p = null; + + + if ($iter) $String_each_line$30.$$p = null;; + if (separator == null) { separator = $gvars["/"]; - } - if ($iter) TMP_String_each_line_26.$$p = null; - + }; if ((block !== nil)) { - } else { + } else { return self.$enum_for("each_line", separator) }; @@ -7105,14 +6920,15 @@ Opal.modules["corelib/string"] = function(Opal) { return self; } - separator = Opal.const_get_relative($nesting, 'Opal').$coerce_to(separator, Opal.const_get_relative($nesting, 'String'), "to_str") + separator = $$($nesting, 'Opal').$coerce_to(separator, $$($nesting, 'String'), "to_str") var a, i, n, length, chomped, trailing, splitted; if (separator.length === 0) { for (a = self.split(/(\n{2,})/), i = 0, n = a.length; i < n; i += 2) { if (a[i] || a[i + 1]) { - Opal.yield1(block, (a[i] || "") + (a[i + 1] || "")); + var value = (a[i] || "") + (a[i + 1] || ""); + Opal.yield1(block, self.$$cast(value)); } } @@ -7125,35 +6941,33 @@ Opal.modules["corelib/string"] = function(Opal) { for (i = 0, length = splitted.length; i < length; i++) { if (i < length - 1 || trailing) { - Opal.yield1(block, splitted[i] + separator); + Opal.yield1(block, self.$$cast(splitted[i] + separator)); } else { - Opal.yield1(block, splitted[i]); + Opal.yield1(block, self.$$cast(splitted[i])); } } ; return self; - }, TMP_String_each_line_26.$$arity = -1); + }, $String_each_line$30.$$arity = -1); - Opal.defn(self, '$empty?', TMP_String_empty$q_27 = function() { + Opal.def(self, '$empty?', $String_empty$ques$31 = function() { var self = this; - return self.length === 0 - }, TMP_String_empty$q_27.$$arity = 0); + return self.length === 0; + }, $String_empty$ques$31.$$arity = 0); - Opal.defn(self, '$end_with?', TMP_String_end_with$q_28 = function($a_rest) { - var self = this, suffixes; + Opal.def(self, '$end_with?', $String_end_with$ques$32 = function($a) { + var $post_args, suffixes, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - suffixes = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - suffixes[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + suffixes = $post_args;; + for (var i = 0, length = suffixes.length; i < length; i++) { - var suffix = Opal.const_get_relative($nesting, 'Opal').$coerce_to(suffixes[i], Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + var suffix = $$($nesting, 'Opal').$coerce_to(suffixes[i], $$($nesting, 'String'), "to_str").$to_s(); if (self.length >= suffix.length && self.substr(self.length - suffix.length, suffix.length) == suffix) { @@ -7162,14 +6976,17 @@ Opal.modules["corelib/string"] = function(Opal) { } ; return false; - }, TMP_String_end_with$q_28.$$arity = -1); - Opal.alias(self, "eql?", "=="); + }, $String_end_with$ques$32.$$arity = -1); Opal.alias(self, "equal?", "==="); - Opal.defn(self, '$gsub', TMP_String_gsub_29 = function $$gsub(pattern, replacement) { - var self = this, $iter = TMP_String_gsub_29.$$p, block = $iter || nil; + Opal.def(self, '$gsub', $String_gsub$33 = function $$gsub(pattern, replacement) { + var $iter = $String_gsub$33.$$p, block = $iter || nil, self = this; - if ($iter) TMP_String_gsub_29.$$p = null; + if ($iter) $String_gsub$33.$$p = null; + + + if ($iter) $String_gsub$33.$$p = null;; + ; if (replacement === undefined && block === nil) { return self.$enum_for("gsub", pattern); @@ -7178,12 +6995,13 @@ Opal.modules["corelib/string"] = function(Opal) { var result = '', match_data = nil, index = 0, match, _replacement; if (pattern.$$is_regexp) { - pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + pattern = Opal.global_multiline_regexp(pattern); } else { - pattern = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pattern, Opal.const_get_relative($nesting, 'String'), "to_str"); + pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); } + var lastIndex; while (true) { match = pattern.exec(self); @@ -7193,17 +7011,19 @@ Opal.modules["corelib/string"] = function(Opal) { break; } - match_data = Opal.const_get_relative($nesting, 'MatchData').$new(pattern, match); + match_data = $$($nesting, 'MatchData').$new(pattern, match); if (replacement === undefined) { + lastIndex = pattern.lastIndex; _replacement = block(match[0]); + pattern.lastIndex = lastIndex; // save and restore lastIndex } else if (replacement.$$is_hash) { _replacement = (replacement)['$[]'](match[0]).$to_s(); } else { if (!replacement.$$is_string) { - replacement = Opal.const_get_relative($nesting, 'Opal').$coerce_to(replacement, Opal.const_get_relative($nesting, 'String'), "to_str"); + replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), "to_str"); } _replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { if (slashes.length % 2 === 0) { @@ -7236,37 +7056,39 @@ Opal.modules["corelib/string"] = function(Opal) { } ($gvars["~"] = match_data) - return result; - - }, TMP_String_gsub_29.$$arity = -2); + return self.$$cast(result); + ; + }, $String_gsub$33.$$arity = -2); - Opal.defn(self, '$hash', TMP_String_hash_30 = function $$hash() { + Opal.def(self, '$hash', $String_hash$34 = function $$hash() { var self = this; - return self.toString() - }, TMP_String_hash_30.$$arity = 0); + return self.toString(); + }, $String_hash$34.$$arity = 0); - Opal.defn(self, '$hex', TMP_String_hex_31 = function $$hex() { + Opal.def(self, '$hex', $String_hex$35 = function $$hex() { var self = this; return self.$to_i(16) - }, TMP_String_hex_31.$$arity = 0); + }, $String_hex$35.$$arity = 0); - Opal.defn(self, '$include?', TMP_String_include$q_32 = function(other) { + Opal.def(self, '$include?', $String_include$ques$36 = function(other) { var self = this; if (!other.$$is_string) { - (other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'String'), "to_str")) + (other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str")) } return self.indexOf(other) !== -1; - }, TMP_String_include$q_32.$$arity = 1); + }, $String_include$ques$36.$$arity = 1); - Opal.defn(self, '$index', TMP_String_index_33 = function $$index(search, offset) { + Opal.def(self, '$index', $String_index$37 = function $$index(search, offset) { var self = this; + ; + var index, match, regex; @@ -7274,7 +7096,7 @@ Opal.modules["corelib/string"] = function(Opal) { if (offset === undefined) { offset = 0; } else { - offset = Opal.const_get_relative($nesting, 'Opal').$coerce_to(offset, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int"); if (offset < 0) { offset += self.length; if (offset < 0) { @@ -7284,7 +7106,7 @@ Opal.modules["corelib/string"] = function(Opal) { } if (search.$$is_regexp) { - regex = new RegExp(search.source, 'gm' + (search.ignoreCase ? 'i' : '')); + regex = Opal.global_multiline_regexp(search); while (true) { match = regex.exec(self); if (match === null) { @@ -7293,14 +7115,14 @@ Opal.modules["corelib/string"] = function(Opal) { break; } if (match.index >= offset) { - ($gvars["~"] = Opal.const_get_relative($nesting, 'MatchData').$new(regex, match)) + ($gvars["~"] = $$($nesting, 'MatchData').$new(regex, match)) index = match.index; break; } regex.lastIndex = match.index + 1; } } else { - search = Opal.const_get_relative($nesting, 'Opal').$coerce_to(search, Opal.const_get_relative($nesting, 'String'), "to_str"); + search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), "to_str"); if (search.length === 0 && offset > self.length) { index = -1; } else { @@ -7309,10 +7131,10 @@ Opal.modules["corelib/string"] = function(Opal) { } return index === -1 ? nil : index; + ; + }, $String_index$37.$$arity = -2); - }, TMP_String_index_33.$$arity = -2); - - Opal.defn(self, '$inspect', TMP_String_inspect_34 = function $$inspect() { + Opal.def(self, '$inspect', $String_inspect$38 = function $$inspect() { var self = this; @@ -7334,48 +7156,52 @@ Opal.modules["corelib/string"] = function(Opal) { }); return '"' + escaped.replace(/\#[\$\@\{]/g, '\\$&') + '"'; - }, TMP_String_inspect_34.$$arity = 0); + }, $String_inspect$38.$$arity = 0); - Opal.defn(self, '$intern', TMP_String_intern_35 = function $$intern() { + Opal.def(self, '$intern', $String_intern$39 = function $$intern() { var self = this; - return self - }, TMP_String_intern_35.$$arity = 0); + return self.toString(); + }, $String_intern$39.$$arity = 0); - Opal.defn(self, '$lines', TMP_String_lines_36 = function $$lines(separator) { - var self = this, $iter = TMP_String_lines_36.$$p, block = $iter || nil, e = nil; + Opal.def(self, '$lines', $String_lines$40 = function $$lines(separator) { + var $iter = $String_lines$40.$$p, block = $iter || nil, self = this, e = nil; if ($gvars["/"] == null) $gvars["/"] = nil; + if ($iter) $String_lines$40.$$p = null; + + + if ($iter) $String_lines$40.$$p = null;; + if (separator == null) { separator = $gvars["/"]; - } - if ($iter) TMP_String_lines_36.$$p = null; - + }; e = $send(self, 'each_line', [separator], block.$to_proc()); if ($truthy(block)) { return self - } else { + } else { return e.$to_a() }; - }, TMP_String_lines_36.$$arity = -1); + }, $String_lines$40.$$arity = -1); - Opal.defn(self, '$length', TMP_String_length_37 = function $$length() { + Opal.def(self, '$length', $String_length$41 = function $$length() { var self = this; - return self.length - }, TMP_String_length_37.$$arity = 0); + return self.length; + }, $String_length$41.$$arity = 0); - Opal.defn(self, '$ljust', TMP_String_ljust_38 = function $$ljust(width, padstr) { + Opal.def(self, '$ljust', $String_ljust$42 = function $$ljust(width, padstr) { var self = this; + + if (padstr == null) { padstr = " "; - } - - width = Opal.const_get_relative($nesting, 'Opal').$coerce_to(width, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - padstr = Opal.const_get_relative($nesting, 'Opal').$coerce_to(padstr, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + }; + width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); + padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); if ($truthy(padstr['$empty?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "zero width padding")}; + self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; if ($truthy(width <= self.length)) { return self}; @@ -7388,43 +7214,63 @@ Opal.modules["corelib/string"] = function(Opal) { result += padstr; } - return self + result.slice(0, width); + return self.$$cast(self + result.slice(0, width)); ; - }, TMP_String_ljust_38.$$arity = -2); + }, $String_ljust$42.$$arity = -2); - Opal.defn(self, '$lstrip', TMP_String_lstrip_39 = function $$lstrip() { + Opal.def(self, '$lstrip', $String_lstrip$43 = function $$lstrip() { var self = this; - return self.replace(/^\s*/, '') - }, TMP_String_lstrip_39.$$arity = 0); + return self.replace(/^\s*/, ''); + }, $String_lstrip$43.$$arity = 0); - Opal.defn(self, '$ascii_only?', TMP_String_ascii_only$q_40 = function() { + Opal.def(self, '$ascii_only?', $String_ascii_only$ques$44 = function() { var self = this; - return self.match(/[ -~\n]*/)[0] === self - }, TMP_String_ascii_only$q_40.$$arity = 0); + + if (self.$encoding()['$==']($$$($$($nesting, 'Encoding'), 'UTF_16BE'))) { + return false}; + return /^[\x00-\x7F]*$/.test(self);; + }, $String_ascii_only$ques$44.$$arity = 0); - Opal.defn(self, '$match', TMP_String_match_41 = function $$match(pattern, pos) { - var $a, self = this, $iter = TMP_String_match_41.$$p, block = $iter || nil; + Opal.def(self, '$match', $String_match$45 = function $$match(pattern, pos) { + var $iter = $String_match$45.$$p, block = $iter || nil, $a, self = this; - if ($iter) TMP_String_match_41.$$p = null; + if ($iter) $String_match$45.$$p = null; - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?']("to_str")))) { - pattern = Opal.const_get_relative($nesting, 'Regexp').$new(pattern.$to_str())}; - if ($truthy(Opal.const_get_relative($nesting, 'Regexp')['$==='](pattern))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + (pattern.$class()) + " (expected Regexp)") + + if ($iter) $String_match$45.$$p = null;; + ; + if ($truthy(($truthy($a = $$($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?']("to_str")))) { + pattern = $$($nesting, 'Regexp').$new(pattern.$to_str())}; + if ($truthy($$($nesting, 'Regexp')['$==='](pattern))) { + } else { + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (pattern.$class()) + " (expected Regexp)") }; return $send(pattern, 'match', [self, pos], block.$to_proc()); - }, TMP_String_match_41.$$arity = -2); + }, $String_match$45.$$arity = -2); - Opal.defn(self, '$next', TMP_String_next_42 = function $$next() { + Opal.def(self, '$match?', $String_match$ques$46 = function(pattern, pos) { + var $a, self = this; + + + ; + if ($truthy(($truthy($a = $$($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?']("to_str")))) { + pattern = $$($nesting, 'Regexp').$new(pattern.$to_str())}; + if ($truthy($$($nesting, 'Regexp')['$==='](pattern))) { + } else { + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (pattern.$class()) + " (expected Regexp)") + }; + return pattern['$match?'](self, pos); + }, $String_match$ques$46.$$arity = -2); + + Opal.def(self, '$next', $String_next$47 = function $$next() { var self = this; var i = self.length; if (i === 0) { - return ''; + return self.$$cast(''); } var result = self; var first_alphanum_char_index = self.search(/[a-zA-Z0-9]/); @@ -7486,11 +7332,11 @@ Opal.modules["corelib/string"] = function(Opal) { break; } } - return result; + return self.$$cast(result); - }, TMP_String_next_42.$$arity = 0); + }, $String_next$47.$$arity = 0); - Opal.defn(self, '$oct', TMP_String_oct_43 = function $$oct() { + Opal.def(self, '$oct', $String_oct$48 = function $$oct() { var self = this; @@ -7533,15 +7379,15 @@ Opal.modules["corelib/string"] = function(Opal) { result = parseInt(string.replace(/_(?!_)/g, ''), radix); return isNaN(result) ? 0 : result; - }, TMP_String_oct_43.$$arity = 0); + }, $String_oct$48.$$arity = 0); - Opal.defn(self, '$ord', TMP_String_ord_44 = function $$ord() { + Opal.def(self, '$ord', $String_ord$49 = function $$ord() { var self = this; - return self.charCodeAt(0) - }, TMP_String_ord_44.$$arity = 0); + return self.charCodeAt(0); + }, $String_ord$49.$$arity = 0); - Opal.defn(self, '$partition', TMP_String_partition_45 = function $$partition(sep) { + Opal.def(self, '$partition', $String_partition$50 = function $$partition(sep) { var self = this; @@ -7552,12 +7398,12 @@ Opal.modules["corelib/string"] = function(Opal) { if (m === null) { i = -1; } else { - Opal.const_get_relative($nesting, 'MatchData').$new(sep, m); + $$($nesting, 'MatchData').$new(sep, m); sep = m[0]; i = m.index; } } else { - sep = Opal.const_get_relative($nesting, 'Opal').$coerce_to(sep, Opal.const_get_relative($nesting, 'String'), "to_str"); + sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), "to_str"); i = self.indexOf(sep); } @@ -7571,24 +7417,26 @@ Opal.modules["corelib/string"] = function(Opal) { self.slice(i + sep.length) ]; - }, TMP_String_partition_45.$$arity = 1); + }, $String_partition$50.$$arity = 1); - Opal.defn(self, '$reverse', TMP_String_reverse_46 = function $$reverse() { + Opal.def(self, '$reverse', $String_reverse$51 = function $$reverse() { var self = this; - return self.split('').reverse().join('') - }, TMP_String_reverse_46.$$arity = 0); + return self.split('').reverse().join(''); + }, $String_reverse$51.$$arity = 0); - Opal.defn(self, '$rindex', TMP_String_rindex_47 = function $$rindex(search, offset) { + Opal.def(self, '$rindex', $String_rindex$52 = function $$rindex(search, offset) { var self = this; + ; + var i, m, r, _m; if (offset === undefined) { offset = self.length; } else { - offset = Opal.const_get_relative($nesting, 'Opal').$coerce_to(offset, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int"); if (offset < 0) { offset += self.length; if (offset < 0) { @@ -7599,7 +7447,7 @@ Opal.modules["corelib/string"] = function(Opal) { if (search.$$is_regexp) { m = null; - r = new RegExp(search.source, 'gm' + (search.ignoreCase ? 'i' : '')); + r = Opal.global_multiline_regexp(search); while (true) { _m = r.exec(self); if (_m === null || _m.index > offset) { @@ -7612,29 +7460,30 @@ Opal.modules["corelib/string"] = function(Opal) { ($gvars["~"] = nil) i = -1; } else { - Opal.const_get_relative($nesting, 'MatchData').$new(r, m); + $$($nesting, 'MatchData').$new(r, m); i = m.index; } } else { - search = Opal.const_get_relative($nesting, 'Opal').$coerce_to(search, Opal.const_get_relative($nesting, 'String'), "to_str"); + search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), "to_str"); i = self.lastIndexOf(search, offset); } return i === -1 ? nil : i; + ; + }, $String_rindex$52.$$arity = -2); - }, TMP_String_rindex_47.$$arity = -2); - - Opal.defn(self, '$rjust', TMP_String_rjust_48 = function $$rjust(width, padstr) { + Opal.def(self, '$rjust', $String_rjust$53 = function $$rjust(width, padstr) { var self = this; + + if (padstr == null) { padstr = " "; - } - - width = Opal.const_get_relative($nesting, 'Opal').$coerce_to(width, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - padstr = Opal.const_get_relative($nesting, 'Opal').$coerce_to(padstr, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + }; + width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); + padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); if ($truthy(padstr['$empty?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "zero width padding")}; + self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; if ($truthy(width <= self.length)) { return self}; @@ -7643,11 +7492,11 @@ Opal.modules["corelib/string"] = function(Opal) { result = Array(patterns + 1).join(padstr), remaining = chars - result.length; - return result + padstr.slice(0, remaining) + self; + return self.$$cast(result + padstr.slice(0, remaining) + self); ; - }, TMP_String_rjust_48.$$arity = -2); + }, $String_rjust$53.$$arity = -2); - Opal.defn(self, '$rpartition', TMP_String_rpartition_49 = function $$rpartition(sep) { + Opal.def(self, '$rpartition', $String_rpartition$54 = function $$rpartition(sep) { var self = this; @@ -7655,7 +7504,7 @@ Opal.modules["corelib/string"] = function(Opal) { if (sep.$$is_regexp) { m = null; - r = new RegExp(sep.source, 'gm' + (sep.ignoreCase ? 'i' : '')); + r = Opal.global_multiline_regexp(sep); while (true) { _m = r.exec(self); @@ -7669,13 +7518,13 @@ Opal.modules["corelib/string"] = function(Opal) { if (m === null) { i = -1; } else { - Opal.const_get_relative($nesting, 'MatchData').$new(r, m); + $$($nesting, 'MatchData').$new(r, m); sep = m[0]; i = m.index; } } else { - sep = Opal.const_get_relative($nesting, 'Opal').$coerce_to(sep, Opal.const_get_relative($nesting, 'String'), "to_str"); + sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), "to_str"); i = self.lastIndexOf(sep); } @@ -7689,32 +7538,35 @@ Opal.modules["corelib/string"] = function(Opal) { self.slice(i + sep.length) ]; - }, TMP_String_rpartition_49.$$arity = 1); + }, $String_rpartition$54.$$arity = 1); - Opal.defn(self, '$rstrip', TMP_String_rstrip_50 = function $$rstrip() { + Opal.def(self, '$rstrip', $String_rstrip$55 = function $$rstrip() { var self = this; - return self.replace(/[\s\u0000]*$/, '') - }, TMP_String_rstrip_50.$$arity = 0); + return self.replace(/[\s\u0000]*$/, ''); + }, $String_rstrip$55.$$arity = 0); - Opal.defn(self, '$scan', TMP_String_scan_51 = function $$scan(pattern) { - var self = this, $iter = TMP_String_scan_51.$$p, block = $iter || nil; + Opal.def(self, '$scan', $String_scan$56 = function $$scan(pattern) { + var $iter = $String_scan$56.$$p, block = $iter || nil, self = this; - if ($iter) TMP_String_scan_51.$$p = null; + if ($iter) $String_scan$56.$$p = null; + + + if ($iter) $String_scan$56.$$p = null;; var result = [], match_data = nil, match; if (pattern.$$is_regexp) { - pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + pattern = Opal.global_multiline_regexp(pattern); } else { - pattern = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pattern, Opal.const_get_relative($nesting, 'String'), "to_str"); + pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); } while ((match = pattern.exec(self)) != null) { - match_data = Opal.const_get_relative($nesting, 'MatchData').$new(pattern, match); + match_data = $$($nesting, 'MatchData').$new(pattern, match); if (block === nil) { match.length == 1 ? result.push(match[0]) : result.push((match_data).$captures()); } else { @@ -7728,16 +7580,19 @@ Opal.modules["corelib/string"] = function(Opal) { ($gvars["~"] = match_data) return (block !== nil ? self : result); - - }, TMP_String_scan_51.$$arity = 1); + ; + }, $String_scan$56.$$arity = 1); Opal.alias(self, "size", "length"); Opal.alias(self, "slice", "[]"); - Opal.defn(self, '$split', TMP_String_split_52 = function $$split(pattern, limit) { + Opal.def(self, '$split', $String_split$57 = function $$split(pattern, limit) { var $a, self = this; if ($gvars[";"] == null) $gvars[";"] = nil; + ; + ; + if (self.length === 0) { return []; } @@ -7745,7 +7600,7 @@ Opal.modules["corelib/string"] = function(Opal) { if (limit === undefined) { limit = 0; } else { - limit = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](limit, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + limit = $$($nesting, 'Opal')['$coerce_to!'](limit, $$($nesting, 'Integer'), "to_int"); if (limit === 1) { return [self]; } @@ -7762,9 +7617,9 @@ Opal.modules["corelib/string"] = function(Opal) { i, ii; if (pattern.$$is_regexp) { - pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + pattern = Opal.global_multiline_regexp(pattern); } else { - pattern = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pattern, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str").$to_s(); if (pattern === ' ') { pattern = /\s+/gm; string = string.replace(/^\s+/, ''); @@ -7776,17 +7631,24 @@ Opal.modules["corelib/string"] = function(Opal) { result = string.split(pattern); if (result.length === 1 && result[0] === string) { - return result; + return [self.$$cast(result[0])]; } while ((i = result.indexOf(undefined)) !== -1) { result.splice(i, 1); } + function castResult() { + for (i = 0; i < result.length; i++) { + result[i] = self.$$cast(result[i]); + } + } + if (limit === 0) { while (result[result.length - 1] === '') { result.length -= 1; } + castResult(); return result; } @@ -7798,15 +7660,18 @@ Opal.modules["corelib/string"] = function(Opal) { result.push(''); } } + castResult(); return result; } if (match !== null && match[0] === '') { result.splice(limit - 1, result.length - 1, result.slice(limit - 1).join('')); + castResult(); return result; } if (limit >= result.length) { + castResult(); return result; } @@ -7820,43 +7685,42 @@ Opal.modules["corelib/string"] = function(Opal) { match = pattern.exec(string); } result.splice(limit - 1, result.length - 1, string.slice(index)); + castResult(); return result; + ; + }, $String_split$57.$$arity = -1); - }, TMP_String_split_52.$$arity = -1); - - Opal.defn(self, '$squeeze', TMP_String_squeeze_53 = function $$squeeze($a_rest) { - var self = this, sets; + Opal.def(self, '$squeeze', $String_squeeze$58 = function $$squeeze($a) { + var $post_args, sets, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - sets = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - sets[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + sets = $post_args;; if (sets.length === 0) { - return self.replace(/(.)\1+/g, '$1'); + return self.$$cast(self.replace(/(.)\1+/g, '$1')); } var char_class = char_class_from_char_sets(sets); if (char_class === null) { return self; } - return self.replace(new RegExp('(' + char_class + ')\\1+', 'g'), '$1'); - - }, TMP_String_squeeze_53.$$arity = -1); + return self.$$cast(self.replace(new RegExp('(' + char_class + ')\\1+', 'g'), '$1')); + ; + }, $String_squeeze$58.$$arity = -1); - Opal.defn(self, '$start_with?', TMP_String_start_with$q_54 = function($a_rest) { - var self = this, prefixes; + Opal.def(self, '$start_with?', $String_start_with$ques$59 = function($a) { + var $post_args, prefixes, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - prefixes = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - prefixes[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + prefixes = $post_args;; for (var i = 0, length = prefixes.length; i < length; i++) { - var prefix = Opal.const_get_relative($nesting, 'Opal').$coerce_to(prefixes[i], Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + var prefix = $$($nesting, 'Opal').$coerce_to(prefixes[i], $$($nesting, 'String'), "to_str").$to_s(); if (self.indexOf(prefix) === 0) { return true; @@ -7864,79 +7728,90 @@ Opal.modules["corelib/string"] = function(Opal) { } return false; + ; + }, $String_start_with$ques$59.$$arity = -1); - }, TMP_String_start_with$q_54.$$arity = -1); - - Opal.defn(self, '$strip', TMP_String_strip_55 = function $$strip() { + Opal.def(self, '$strip', $String_strip$60 = function $$strip() { var self = this; - return self.replace(/^\s*/, '').replace(/[\s\u0000]*$/, '') - }, TMP_String_strip_55.$$arity = 0); + return self.replace(/^\s*/, '').replace(/[\s\u0000]*$/, ''); + }, $String_strip$60.$$arity = 0); - Opal.defn(self, '$sub', TMP_String_sub_56 = function $$sub(pattern, replacement) { - var self = this, $iter = TMP_String_sub_56.$$p, block = $iter || nil; + Opal.def(self, '$sub', $String_sub$61 = function $$sub(pattern, replacement) { + var $iter = $String_sub$61.$$p, block = $iter || nil, self = this; - if ($iter) TMP_String_sub_56.$$p = null; + if ($iter) $String_sub$61.$$p = null; + + + if ($iter) $String_sub$61.$$p = null;; + ; if (!pattern.$$is_regexp) { - pattern = Opal.const_get_relative($nesting, 'Opal').$coerce_to(pattern, Opal.const_get_relative($nesting, 'String'), "to_str"); + pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); } - var result = pattern.exec(self); + var result, match = pattern.exec(self); - if (result === null) { + if (match === null) { ($gvars["~"] = nil) - return self.toString(); - } + result = self.toString(); + } else { + $$($nesting, 'MatchData').$new(pattern, match) - Opal.const_get_relative($nesting, 'MatchData').$new(pattern, result) + if (replacement === undefined) { - if (replacement === undefined) { - if (block === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "wrong number of arguments (1 for 2)") - } - return self.slice(0, result.index) + block(result[0]) + self.slice(result.index + result[0].length); - } + if (block === nil) { + self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (1 for 2)") + } + result = self.slice(0, match.index) + block(match[0]) + self.slice(match.index + match[0].length); - if (replacement.$$is_hash) { - return self.slice(0, result.index) + (replacement)['$[]'](result[0]).$to_s() + self.slice(result.index + result[0].length); - } + } else if (replacement.$$is_hash) { - replacement = Opal.const_get_relative($nesting, 'Opal').$coerce_to(replacement, Opal.const_get_relative($nesting, 'String'), "to_str"); + result = self.slice(0, match.index) + (replacement)['$[]'](match[0]).$to_s() + self.slice(match.index + match[0].length); - replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { - if (slashes.length % 2 === 0) { - return original; - } - switch (command) { - case "+": - for (var i = result.length - 1; i > 0; i--) { - if (result[i] !== undefined) { - return slashes.slice(1) + result[i]; + } else { + + replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), "to_str"); + + replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { + if (slashes.length % 2 === 0) { + return original; } - } - return ''; - case "&": return slashes.slice(1) + result[0]; - case "`": return slashes.slice(1) + self.slice(0, result.index); - case "'": return slashes.slice(1) + self.slice(result.index + result[0].length); - default: return slashes.slice(1) + (result[command] || ''); + switch (command) { + case "+": + for (var i = match.length - 1; i > 0; i--) { + if (match[i] !== undefined) { + return slashes.slice(1) + match[i]; + } + } + return ''; + case "&": return slashes.slice(1) + match[0]; + case "`": return slashes.slice(1) + self.slice(0, match.index); + case "'": return slashes.slice(1) + self.slice(match.index + match[0].length); + default: return slashes.slice(1) + (match[command] || ''); + } + }).replace(/\\\\/g, '\\'); + + result = self.slice(0, match.index) + replacement + self.slice(match.index + match[0].length); } - }).replace(/\\\\/g, '\\'); + } - return self.slice(0, result.index) + replacement + self.slice(result.index + result[0].length); - - }, TMP_String_sub_56.$$arity = -2); + return self.$$cast(result); + ; + }, $String_sub$61.$$arity = -2); Opal.alias(self, "succ", "next"); - Opal.defn(self, '$sum', TMP_String_sum_57 = function $$sum(n) { + Opal.def(self, '$sum', $String_sum$62 = function $$sum(n) { var self = this; + + if (n == null) { n = 16; - } + }; - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); var result = 0, length = self.length, @@ -7951,10 +7826,10 @@ Opal.modules["corelib/string"] = function(Opal) { } return result & (Math.pow(2, n) - 1); + ; + }, $String_sum$62.$$arity = -1); - }, TMP_String_sum_57.$$arity = -1); - - Opal.defn(self, '$swapcase', TMP_String_swapcase_58 = function $$swapcase() { + Opal.def(self, '$swapcase', $String_swapcase$63 = function $$swapcase() { var self = this; @@ -7968,9 +7843,9 @@ Opal.modules["corelib/string"] = function(Opal) { return self.$class().$new(str); - }, TMP_String_swapcase_58.$$arity = 0); + }, $String_swapcase$63.$$arity = 0); - Opal.defn(self, '$to_f', TMP_String_to_f_59 = function $$to_f() { + Opal.def(self, '$to_f', $String_to_f$64 = function $$to_f() { var self = this; @@ -7987,21 +7862,23 @@ Opal.modules["corelib/string"] = function(Opal) { return result; } - }, TMP_String_to_f_59.$$arity = 0); + }, $String_to_f$64.$$arity = 0); - Opal.defn(self, '$to_i', TMP_String_to_i_60 = function $$to_i(base) { + Opal.def(self, '$to_i', $String_to_i$65 = function $$to_i(base) { var self = this; + + if (base == null) { base = 10; - } + }; var result, string = self.toLowerCase(), - radix = Opal.const_get_relative($nesting, 'Opal').$coerce_to(base, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + radix = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), "to_int"); if (radix === 1 || radix < 0 || radix > 36) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid radix " + (radix)) + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (radix)) } if (/^\s*_/.test(string)) { @@ -8050,48 +7927,65 @@ Opal.modules["corelib/string"] = function(Opal) { result = parseInt(string.replace(/_(?!_)/g, ''), radix); return isNaN(result) ? 0 : result; + ; + }, $String_to_i$65.$$arity = -1); - }, TMP_String_to_i_60.$$arity = -1); - - Opal.defn(self, '$to_proc', TMP_String_to_proc_62 = function $$to_proc() { - var TMP_61, self = this, sym = nil; + Opal.def(self, '$to_proc', $String_to_proc$66 = function $$to_proc() { + var $$67, $iter = $String_to_proc$66.$$p, $yield = $iter || nil, self = this, method_name = nil; + if ($iter) $String_to_proc$66.$$p = null; - sym = self.valueOf(); - return $send(self, 'proc', [], (TMP_61 = function($a_rest){var self = TMP_61.$$s || this, block, args; + method_name = $rb_plus("$", self.valueOf()); + return $send(self, 'proc', [], ($$67 = function($a){var self = $$67.$$s || this, $iter = $$67.$$p, block = $iter || nil, $post_args, args; - block = TMP_61.$$p || nil; - if (block) TMP_61.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + if ($iter) $$67.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + if (args.length === 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no receiver given") + self.$raise($$($nesting, 'ArgumentError'), "no receiver given") } - var obj = args.shift(); - if (obj == null) obj = nil; - return Opal.send(obj, sym, args, block); - }, TMP_61.$$s = self, TMP_61.$$arity = -1, TMP_61)); - }, TMP_String_to_proc_62.$$arity = 0); + + var recv = args[0]; + + if (recv == null) recv = nil; + + var body = recv[method_name]; + + if (!body) { + return recv.$method_missing.apply(recv, args); + } + + if (typeof block === 'function') { + body.$$p = block; + } + + if (args.length === 1) { + return body.call(recv); + } else { + return body.apply(recv, args.slice(1)); + } + ;}, $$67.$$s = self, $$67.$$arity = -1, $$67)); + }, $String_to_proc$66.$$arity = 0); - Opal.defn(self, '$to_s', TMP_String_to_s_63 = function $$to_s() { + Opal.def(self, '$to_s', $String_to_s$68 = function $$to_s() { var self = this; - return self.toString() - }, TMP_String_to_s_63.$$arity = 0); + return self.toString(); + }, $String_to_s$68.$$arity = 0); Opal.alias(self, "to_str", "to_s"); Opal.alias(self, "to_sym", "intern"); - Opal.defn(self, '$tr', TMP_String_tr_64 = function $$tr(from, to) { + Opal.def(self, '$tr', $String_tr$69 = function $$tr(from, to) { var self = this; - from = Opal.const_get_relative($nesting, 'Opal').$coerce_to(from, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); - to = Opal.const_get_relative($nesting, 'Opal').$coerce_to(to, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), "to_str").$to_s(); + to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), "to_str").$to_s(); if (from.length == 0 || from === to) { return self; @@ -8138,7 +8032,7 @@ Opal.modules["corelib/string"] = function(Opal) { start = last_from.charCodeAt(0); end = ch.charCodeAt(0); if (start > end) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") } for (c = start + 1; c < end; c++) { from_chars_expanded.push(String.fromCharCode(c)); @@ -8187,7 +8081,7 @@ Opal.modules["corelib/string"] = function(Opal) { start = last_to.charCodeAt(0); end = ch.charCodeAt(0); if (start > end) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") } for (c = start + 1; c < end; c++) { to_chars_expanded.push(String.fromCharCode(c)); @@ -8229,16 +8123,16 @@ Opal.modules["corelib/string"] = function(Opal) { new_str += (sub != null ? sub : ch); } } - return new_str; + return self.$$cast(new_str); ; - }, TMP_String_tr_64.$$arity = 2); + }, $String_tr$69.$$arity = 2); - Opal.defn(self, '$tr_s', TMP_String_tr_s_65 = function $$tr_s(from, to) { + Opal.def(self, '$tr_s', $String_tr_s$70 = function $$tr_s(from, to) { var self = this; - from = Opal.const_get_relative($nesting, 'Opal').$coerce_to(from, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); - to = Opal.const_get_relative($nesting, 'Opal').$coerce_to(to, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s(); + from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), "to_str").$to_s(); + to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), "to_str").$to_s(); if (from.length == 0) { return self; @@ -8285,7 +8179,7 @@ Opal.modules["corelib/string"] = function(Opal) { start = last_from.charCodeAt(0); end = ch.charCodeAt(0); if (start > end) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") } for (c = start + 1; c < end; c++) { from_chars_expanded.push(String.fromCharCode(c)); @@ -8334,7 +8228,7 @@ Opal.modules["corelib/string"] = function(Opal) { start = last_from.charCodeAt(0); end = ch.charCodeAt(0); if (start > end) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") } for (c = start + 1; c < end; c++) { to_chars_expanded.push(String.fromCharCode(c)); @@ -8394,29 +8288,32 @@ Opal.modules["corelib/string"] = function(Opal) { } } } - return new_str; + return self.$$cast(new_str); ; - }, TMP_String_tr_s_65.$$arity = 2); + }, $String_tr_s$70.$$arity = 2); - Opal.defn(self, '$upcase', TMP_String_upcase_66 = function $$upcase() { + Opal.def(self, '$upcase', $String_upcase$71 = function $$upcase() { var self = this; - return self.toUpperCase() - }, TMP_String_upcase_66.$$arity = 0); + return self.$$cast(self.toUpperCase()); + }, $String_upcase$71.$$arity = 0); - Opal.defn(self, '$upto', TMP_String_upto_67 = function $$upto(stop, excl) { - var self = this, $iter = TMP_String_upto_67.$$p, block = $iter || nil; + Opal.def(self, '$upto', $String_upto$72 = function $$upto(stop, excl) { + var $iter = $String_upto$72.$$p, block = $iter || nil, self = this; + if ($iter) $String_upto$72.$$p = null; + + + if ($iter) $String_upto$72.$$p = null;; + if (excl == null) { excl = false; - } - if ($iter) TMP_String_upto_67.$$p = null; - + }; if ((block !== nil)) { - } else { + } else { return self.$enum_for("upto", stop, excl) }; - stop = Opal.const_get_relative($nesting, 'Opal').$coerce_to(stop, Opal.const_get_relative($nesting, 'String'), "to_str"); + stop = $$($nesting, 'Opal').$coerce_to(stop, $$($nesting, 'String'), "to_str"); var a, b, s = self.toString(); @@ -8465,7 +8362,7 @@ Opal.modules["corelib/string"] = function(Opal) { } return self; ; - }, TMP_String_upto_67.$$arity = -2); + }, $String_upto$72.$$arity = -2); function char_class_from_char_sets(sets) { function explode_sequences_in_character_set(set) { @@ -8482,7 +8379,7 @@ Opal.modules["corelib/string"] = function(Opal) { char_code_from = set.charCodeAt(i - 1); char_code_upto = set.charCodeAt(i + 1); if (char_code_from > char_code_upto) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid range \"" + (char_code_from) + "-" + (char_code_upto) + "\" in string transliteration") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (char_code_from) + "-" + (char_code_upto) + "\" in string transliteration") } for (char_code = char_code_from + 1; char_code < char_code_upto + 1; char_code++) { result += String.fromCharCode(char_code); @@ -8518,7 +8415,7 @@ Opal.modules["corelib/string"] = function(Opal) { neg_intersection = ''; for (i = 0, len = sets.length; i < len; i++) { - set = Opal.const_get_relative($nesting, 'Opal').$coerce_to(sets[i], Opal.const_get_relative($nesting, 'String'), "to_str"); + set = $$($nesting, 'Opal').$coerce_to(sets[i], $$($nesting, 'String'), "to_str"); neg = (set.charAt(0) === '^' && set.length > 1); set = explode_sequences_in_character_set(neg ? set.slice(1) : set); if (neg) { @@ -8541,60 +8438,64 @@ Opal.modules["corelib/string"] = function(Opal) { } if (pos_intersection.length > 0) { - return '[' + Opal.const_get_relative($nesting, 'Regexp').$escape(pos_intersection) + ']'; + return '[' + $$($nesting, 'Regexp').$escape(pos_intersection) + ']'; } if (neg_intersection.length > 0) { - return '[^' + Opal.const_get_relative($nesting, 'Regexp').$escape(neg_intersection) + ']'; + return '[^' + $$($nesting, 'Regexp').$escape(neg_intersection) + ']'; } return null; } ; - Opal.defn(self, '$instance_variables', TMP_String_instance_variables_68 = function $$instance_variables() { + Opal.def(self, '$instance_variables', $String_instance_variables$73 = function $$instance_variables() { var self = this; return [] - }, TMP_String_instance_variables_68.$$arity = 0); - Opal.defs(self, '$_load', TMP_String__load_69 = function $$_load($a_rest) { - var self = this, args; - - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self, 'new', Opal.to_a(args)) - }, TMP_String__load_69.$$arity = -1); - return (Opal.defn(self, '$unpack', TMP_String_unpack_70 = function $$unpack(pattern) { - var self = this, $case = nil; + }, $String_instance_variables$73.$$arity = 0); + Opal.defs(self, '$_load', $String__load$74 = function $$_load($a) { + var $post_args, args, self = this; - function stringToBytes(string) { - var i, - singleByte, - l = string.length, - result = []; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self, 'new', Opal.to_a(args)); + }, $String__load$74.$$arity = -1); + + Opal.def(self, '$unicode_normalize', $String_unicode_normalize$75 = function $$unicode_normalize(form) { + var self = this; - for (i = 0; i < l; i++) { - singleByte = string.charCodeAt(i); - result.push(singleByte); - } - return result; - } - ; - return (function() {$case = pattern; - if ("U*"['$===']($case) || "C*"['$===']($case)) {return stringToBytes(self);} - else {return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'))}})(); - }, TMP_String_unpack_70.$$arity = 1), nil) && 'unpack'; + + ; + return self.toString();; + }, $String_unicode_normalize$75.$$arity = -1); + + Opal.def(self, '$unicode_normalized?', $String_unicode_normalized$ques$76 = function(form) { + var self = this; + + + ; + return true; + }, $String_unicode_normalized$ques$76.$$arity = -1); + + Opal.def(self, '$unpack', $String_unpack$77 = function $$unpack(format) { + var self = this; + + return self.$raise("To use String#unpack, you must first require 'corelib/string/unpack'.") + }, $String_unpack$77.$$arity = 1); + return (Opal.def(self, '$unpack1', $String_unpack1$78 = function $$unpack1(format) { + var self = this; + + return self.$raise("To use String#unpack1, you must first require 'corelib/string/unpack'.") + }, $String_unpack1$78.$$arity = 1), nil) && 'unpack1'; })($nesting[0], String, $nesting); - return Opal.const_set($nesting[0], 'Symbol', Opal.const_get_relative($nesting, 'String')); + return Opal.const_set($nesting[0], 'Symbol', $$($nesting, 'String')); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/enumerable"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -8614,108 +8515,161 @@ Opal.modules["corelib/enumerable"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $falsy = Opal.falsy, $hash2 = Opal.hash2; + function $rb_le(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy, $hash2 = Opal.hash2, $lambda = Opal.lambda; - Opal.add_stubs(['$each', '$destructure', '$to_enum', '$enumerator_size', '$new', '$yield', '$raise', '$slice_when', '$!', '$enum_for', '$flatten', '$map', '$warn', '$proc', '$==', '$nil?', '$respond_to?', '$coerce_to!', '$>', '$*', '$coerce_to', '$try_convert', '$<', '$+', '$-', '$ceil', '$/', '$size', '$===', '$<<', '$[]', '$[]=', '$inspect', '$__send__', '$<=>', '$first', '$reverse', '$sort', '$to_proc', '$compare', '$call', '$dup', '$to_a', '$lambda', '$sort!', '$map!', '$has_key?', '$values', '$zip']); + Opal.add_stubs(['$each', '$public_send', '$destructure', '$to_enum', '$enumerator_size', '$new', '$yield', '$raise', '$slice_when', '$!', '$enum_for', '$flatten', '$map', '$warn', '$proc', '$==', '$nil?', '$respond_to?', '$coerce_to!', '$>', '$*', '$coerce_to', '$try_convert', '$<', '$+', '$-', '$ceil', '$/', '$size', '$__send__', '$length', '$<=', '$[]', '$push', '$<<', '$[]=', '$===', '$inspect', '$<=>', '$first', '$reverse', '$sort', '$to_proc', '$compare', '$call', '$dup', '$to_a', '$sort!', '$map!', '$key?', '$values', '$zip']); return (function($base, $parent_nesting) { - var $Enumerable, self = $Enumerable = $module($base, 'Enumerable'); + var self = $module($base, 'Enumerable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerable_all$q_1, TMP_Enumerable_any$q_4, TMP_Enumerable_chunk_7, TMP_Enumerable_chunk_while_10, TMP_Enumerable_collect_12, TMP_Enumerable_collect_concat_14, TMP_Enumerable_count_17, TMP_Enumerable_cycle_21, TMP_Enumerable_detect_23, TMP_Enumerable_drop_25, TMP_Enumerable_drop_while_26, TMP_Enumerable_each_cons_27, TMP_Enumerable_each_entry_29, TMP_Enumerable_each_slice_31, TMP_Enumerable_each_with_index_33, TMP_Enumerable_each_with_object_35, TMP_Enumerable_entries_37, TMP_Enumerable_find_all_38, TMP_Enumerable_find_index_40, TMP_Enumerable_first_45, TMP_Enumerable_grep_46, TMP_Enumerable_grep_v_47, TMP_Enumerable_group_by_48, TMP_Enumerable_include$q_51, TMP_Enumerable_inject_52, TMP_Enumerable_lazy_54, TMP_Enumerable_enumerator_size_55, TMP_Enumerable_max_56, TMP_Enumerable_max_by_57, TMP_Enumerable_min_59, TMP_Enumerable_min_by_60, TMP_Enumerable_minmax_62, TMP_Enumerable_minmax_by_64, TMP_Enumerable_none$q_65, TMP_Enumerable_one$q_68, TMP_Enumerable_partition_71, TMP_Enumerable_reject_73, TMP_Enumerable_reverse_each_75, TMP_Enumerable_slice_before_77, TMP_Enumerable_slice_after_79, TMP_Enumerable_slice_when_82, TMP_Enumerable_sort_84, TMP_Enumerable_sort_by_86, TMP_Enumerable_sum_91, TMP_Enumerable_take_93, TMP_Enumerable_take_while_94, TMP_Enumerable_uniq_96, TMP_Enumerable_zip_98; + var $nesting = [self].concat($parent_nesting), $Enumerable_all$ques$1, $Enumerable_any$ques$5, $Enumerable_chunk$9, $Enumerable_chunk_while$12, $Enumerable_collect$14, $Enumerable_collect_concat$16, $Enumerable_count$19, $Enumerable_cycle$23, $Enumerable_detect$25, $Enumerable_drop$27, $Enumerable_drop_while$28, $Enumerable_each_cons$29, $Enumerable_each_entry$31, $Enumerable_each_slice$33, $Enumerable_each_with_index$35, $Enumerable_each_with_object$37, $Enumerable_entries$39, $Enumerable_find_all$40, $Enumerable_find_index$42, $Enumerable_first$45, $Enumerable_grep$48, $Enumerable_grep_v$50, $Enumerable_group_by$52, $Enumerable_include$ques$54, $Enumerable_inject$56, $Enumerable_lazy$57, $Enumerable_enumerator_size$59, $Enumerable_max$60, $Enumerable_max_by$61, $Enumerable_min$63, $Enumerable_min_by$64, $Enumerable_minmax$66, $Enumerable_minmax_by$68, $Enumerable_none$ques$69, $Enumerable_one$ques$73, $Enumerable_partition$77, $Enumerable_reject$79, $Enumerable_reverse_each$81, $Enumerable_slice_before$83, $Enumerable_slice_after$85, $Enumerable_slice_when$88, $Enumerable_sort$90, $Enumerable_sort_by$92, $Enumerable_sum$97, $Enumerable_take$99, $Enumerable_take_while$100, $Enumerable_uniq$102, $Enumerable_zip$104; - Opal.defn(self, '$all?', TMP_Enumerable_all$q_1 = function() {try { + function comparableForPattern(value) { + if (value.length === 0) { + value = [nil]; + } - var TMP_2, TMP_3, self = this, $iter = TMP_Enumerable_all$q_1.$$p, block = $iter || nil; + if (value.length > 1) { + value = [value]; + } - if ($iter) TMP_Enumerable_all$q_1.$$p = null; + return value; + } + ; + + Opal.def(self, '$all?', $Enumerable_all$ques$1 = function(pattern) {try { + + var $iter = $Enumerable_all$ques$1.$$p, block = $iter || nil, $$2, $$3, $$4, self = this; + + if ($iter) $Enumerable_all$ques$1.$$p = null; - if ((block !== nil)) { - $send(self, 'each', [], (TMP_2 = function($a_rest){var self = TMP_2.$$s || this, value; + + if ($iter) $Enumerable_all$ques$1.$$p = null;; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], ($$2 = function($a){var self = $$2.$$s || this, $post_args, value, comparable = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { return nil - } else { + } else { Opal.ret(false) - }}, TMP_2.$$s = self, TMP_2.$$arity = -1, TMP_2)) - } else { - $send(self, 'each', [], (TMP_3 = function($a_rest){var self = TMP_3.$$s || this, value; + };}, $$2.$$s = self, $$2.$$arity = -1, $$2)) + } else if ((block !== nil)) { + $send(self, 'each', [], ($$3 = function($a){var self = $$3.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.const_get_relative($nesting, 'Opal').$destructure(value))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { return nil - } else { + } else { Opal.ret(false) - }}, TMP_3.$$s = self, TMP_3.$$arity = -1, TMP_3)) + };}, $$3.$$s = self, $$3.$$arity = -1, $$3)) + } else { + $send(self, 'each', [], ($$4 = function($a){var self = $$4.$$s || this, $post_args, value; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy($$($nesting, 'Opal').$destructure(value))) { + return nil + } else { + Opal.ret(false) + };}, $$4.$$s = self, $$4.$$arity = -1, $$4)) }; return true; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_all$q_1.$$arity = 0); + }, $Enumerable_all$ques$1.$$arity = -1); - Opal.defn(self, '$any?', TMP_Enumerable_any$q_4 = function() {try { + Opal.def(self, '$any?', $Enumerable_any$ques$5 = function(pattern) {try { - var TMP_5, TMP_6, self = this, $iter = TMP_Enumerable_any$q_4.$$p, block = $iter || nil; + var $iter = $Enumerable_any$ques$5.$$p, block = $iter || nil, $$6, $$7, $$8, self = this; - if ($iter) TMP_Enumerable_any$q_4.$$p = null; + if ($iter) $Enumerable_any$ques$5.$$p = null; - if ((block !== nil)) { - $send(self, 'each', [], (TMP_5 = function($a_rest){var self = TMP_5.$$s || this, value; + + if ($iter) $Enumerable_any$ques$5.$$p = null;; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], ($$6 = function($a){var self = $$6.$$s || this, $post_args, value, comparable = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { Opal.ret(true) - } else { + } else { return nil - }}, TMP_5.$$s = self, TMP_5.$$arity = -1, TMP_5)) - } else { - $send(self, 'each', [], (TMP_6 = function($a_rest){var self = TMP_6.$$s || this, value; + };}, $$6.$$s = self, $$6.$$arity = -1, $$6)) + } else if ((block !== nil)) { + $send(self, 'each', [], ($$7 = function($a){var self = $$7.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.const_get_relative($nesting, 'Opal').$destructure(value))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { Opal.ret(true) - } else { + } else { return nil - }}, TMP_6.$$s = self, TMP_6.$$arity = -1, TMP_6)) + };}, $$7.$$s = self, $$7.$$arity = -1, $$7)) + } else { + $send(self, 'each', [], ($$8 = function($a){var self = $$8.$$s || this, $post_args, value; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy($$($nesting, 'Opal').$destructure(value))) { + Opal.ret(true) + } else { + return nil + };}, $$8.$$s = self, $$8.$$arity = -1, $$8)) }; return false; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_any$q_4.$$arity = 0); + }, $Enumerable_any$ques$5.$$arity = -1); - Opal.defn(self, '$chunk', TMP_Enumerable_chunk_7 = function $$chunk() { - var TMP_8, TMP_9, self = this, $iter = TMP_Enumerable_chunk_7.$$p, block = $iter || nil; + Opal.def(self, '$chunk', $Enumerable_chunk$9 = function $$chunk() { + var $iter = $Enumerable_chunk$9.$$p, block = $iter || nil, $$10, $$11, self = this; - if ($iter) TMP_Enumerable_chunk_7.$$p = null; + if ($iter) $Enumerable_chunk$9.$$p = null; + + if ($iter) $Enumerable_chunk$9.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'to_enum', ["chunk"], (TMP_8 = function(){var self = TMP_8.$$s || this; + } else { + return $send(self, 'to_enum', ["chunk"], ($$10 = function(){var self = $$10.$$s || this; - return self.$enumerator_size()}, TMP_8.$$s = self, TMP_8.$$arity = 0, TMP_8)) + return self.$enumerator_size()}, $$10.$$s = self, $$10.$$arity = 0, $$10)) }; - return $send(Opal.const_get_qualified('::', 'Enumerator'), 'new', [], (TMP_9 = function(yielder){var self = TMP_9.$$s || this; -if (yielder == null) yielder = nil; + return $send($$$('::', 'Enumerator'), 'new', [], ($$11 = function(yielder){var self = $$11.$$s || this; + + + if (yielder == null) { + yielder = nil; + }; + var previous = nil, accumulate = []; function releaseAccumulate() { @@ -8746,33 +8700,46 @@ if (yielder == null) yielder = nil; self.$each(); releaseAccumulate(); - }, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); - }, TMP_Enumerable_chunk_7.$$arity = 0); + ;}, $$11.$$s = self, $$11.$$arity = 1, $$11)); + }, $Enumerable_chunk$9.$$arity = 0); - Opal.defn(self, '$chunk_while', TMP_Enumerable_chunk_while_10 = function $$chunk_while() { - var TMP_11, self = this, $iter = TMP_Enumerable_chunk_while_10.$$p, block = $iter || nil; + Opal.def(self, '$chunk_while', $Enumerable_chunk_while$12 = function $$chunk_while() { + var $iter = $Enumerable_chunk_while$12.$$p, block = $iter || nil, $$13, self = this; - if ($iter) TMP_Enumerable_chunk_while_10.$$p = null; + if ($iter) $Enumerable_chunk_while$12.$$p = null; + + if ($iter) $Enumerable_chunk_while$12.$$p = null;; if ((block !== nil)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no block given") + } else { + self.$raise($$($nesting, 'ArgumentError'), "no block given") }; - return $send(self, 'slice_when', [], (TMP_11 = function(before, after){var self = TMP_11.$$s || this; -if (before == null) before = nil;if (after == null) after = nil; - return Opal.yieldX(block, [before, after])['$!']()}, TMP_11.$$s = self, TMP_11.$$arity = 2, TMP_11)); - }, TMP_Enumerable_chunk_while_10.$$arity = 0); + return $send(self, 'slice_when', [], ($$13 = function(before, after){var self = $$13.$$s || this; + + + + if (before == null) { + before = nil; + }; + + if (after == null) { + after = nil; + }; + return Opal.yieldX(block, [before, after])['$!']();}, $$13.$$s = self, $$13.$$arity = 2, $$13)); + }, $Enumerable_chunk_while$12.$$arity = 0); - Opal.defn(self, '$collect', TMP_Enumerable_collect_12 = function $$collect() { - var TMP_13, self = this, $iter = TMP_Enumerable_collect_12.$$p, block = $iter || nil; + Opal.def(self, '$collect', $Enumerable_collect$14 = function $$collect() { + var $iter = $Enumerable_collect$14.$$p, block = $iter || nil, $$15, self = this; - if ($iter) TMP_Enumerable_collect_12.$$p = null; + if ($iter) $Enumerable_collect$14.$$p = null; + + if ($iter) $Enumerable_collect$14.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect"], (TMP_13 = function(){var self = TMP_13.$$s || this; + } else { + return $send(self, 'enum_for', ["collect"], ($$15 = function(){var self = $$15.$$s || this; - return self.$enumerator_size()}, TMP_13.$$s = self, TMP_13.$$arity = 0, TMP_13)) + return self.$enumerator_size()}, $$15.$$s = self, $$15.$$arity = 0, $$15)) }; var result = []; @@ -8787,29 +8754,39 @@ if (before == null) before = nil;if (after == null) after = nil; return result; ; - }, TMP_Enumerable_collect_12.$$arity = 0); + }, $Enumerable_collect$14.$$arity = 0); - Opal.defn(self, '$collect_concat', TMP_Enumerable_collect_concat_14 = function $$collect_concat() { - var TMP_15, TMP_16, self = this, $iter = TMP_Enumerable_collect_concat_14.$$p, block = $iter || nil; + Opal.def(self, '$collect_concat', $Enumerable_collect_concat$16 = function $$collect_concat() { + var $iter = $Enumerable_collect_concat$16.$$p, block = $iter || nil, $$17, $$18, self = this; - if ($iter) TMP_Enumerable_collect_concat_14.$$p = null; + if ($iter) $Enumerable_collect_concat$16.$$p = null; + + if ($iter) $Enumerable_collect_concat$16.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect_concat"], (TMP_15 = function(){var self = TMP_15.$$s || this; + } else { + return $send(self, 'enum_for', ["collect_concat"], ($$17 = function(){var self = $$17.$$s || this; - return self.$enumerator_size()}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15)) + return self.$enumerator_size()}, $$17.$$s = self, $$17.$$arity = 0, $$17)) }; - return $send(self, 'map', [], (TMP_16 = function(item){var self = TMP_16.$$s || this; -if (item == null) item = nil; - return Opal.yield1(block, item);}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16)).$flatten(1); - }, TMP_Enumerable_collect_concat_14.$$arity = 0); + return $send(self, 'map', [], ($$18 = function(item){var self = $$18.$$s || this; + + + + if (item == null) { + item = nil; + }; + return Opal.yield1(block, item);;}, $$18.$$s = self, $$18.$$arity = 1, $$18)).$flatten(1); + }, $Enumerable_collect_concat$16.$$arity = 0); - Opal.defn(self, '$count', TMP_Enumerable_count_17 = function $$count(object) { - var TMP_18, TMP_19, TMP_20, self = this, $iter = TMP_Enumerable_count_17.$$p, block = $iter || nil, result = nil; + Opal.def(self, '$count', $Enumerable_count$19 = function $$count(object) { + var $iter = $Enumerable_count$19.$$p, block = $iter || nil, $$20, $$21, $$22, self = this, result = nil; - if ($iter) TMP_Enumerable_count_17.$$p = null; + if ($iter) $Enumerable_count$19.$$p = null; + + if ($iter) $Enumerable_count$19.$$p = null;; + ; result = 0; if (object != null && block !== nil) { @@ -8817,67 +8794,68 @@ if (item == null) item = nil; } ; if ($truthy(object != null)) { - block = $send(self, 'proc', [], (TMP_18 = function($a_rest){var self = TMP_18.$$s || this, args; + block = $send(self, 'proc', [], ($$20 = function($a){var self = $$20.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return Opal.const_get_relative($nesting, 'Opal').$destructure(args)['$=='](object)}, TMP_18.$$s = self, TMP_18.$$arity = -1, TMP_18)) + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $$($nesting, 'Opal').$destructure(args)['$=='](object);}, $$20.$$s = self, $$20.$$arity = -1, $$20)) } else if ($truthy(block['$nil?']())) { - block = $send(self, 'proc', [], (TMP_19 = function(){var self = TMP_19.$$s || this; + block = $send(self, 'proc', [], ($$21 = function(){var self = $$21.$$s || this; - return true}, TMP_19.$$s = self, TMP_19.$$arity = 0, TMP_19))}; - $send(self, 'each', [], (TMP_20 = function($a_rest){var self = TMP_20.$$s || this, args; + return true}, $$21.$$s = self, $$21.$$arity = 0, $$21))}; + $send(self, 'each', [], ($$22 = function($a){var self = $$22.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.yieldX(block, args))) { - return result++ - } else { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + if ($truthy(Opal.yieldX(block, args))) { + return result++; + } else { return nil - }}, TMP_20.$$s = self, TMP_20.$$arity = -1, TMP_20)); + };}, $$22.$$s = self, $$22.$$arity = -1, $$22)); return result; - }, TMP_Enumerable_count_17.$$arity = -1); + }, $Enumerable_count$19.$$arity = -1); - Opal.defn(self, '$cycle', TMP_Enumerable_cycle_21 = function $$cycle(n) { - var TMP_22, self = this, $iter = TMP_Enumerable_cycle_21.$$p, block = $iter || nil; + Opal.def(self, '$cycle', $Enumerable_cycle$23 = function $$cycle(n) { + var $iter = $Enumerable_cycle$23.$$p, block = $iter || nil, $$24, self = this; + if ($iter) $Enumerable_cycle$23.$$p = null; + + + if ($iter) $Enumerable_cycle$23.$$p = null;; + if (n == null) { n = nil; - } - if ($iter) TMP_Enumerable_cycle_21.$$p = null; - + }; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["cycle", n], (TMP_22 = function(){var self = TMP_22.$$s || this; + } else { + return $send(self, 'enum_for', ["cycle", n], ($$24 = function(){var self = $$24.$$s || this; - if (n['$=='](nil)) { + if ($truthy(n['$nil?']())) { if ($truthy(self['$respond_to?']("size"))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') - } else { + return $$$($$($nesting, 'Float'), 'INFINITY') + } else { return nil } - } else { + } else { - n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if ($truthy($rb_gt(n, 0))) { return $rb_times(self.$enumerator_size(), n) - } else { + } else { return 0 }; - }}, TMP_22.$$s = self, TMP_22.$$arity = 0, TMP_22)) + }}, $$24.$$s = self, $$24.$$arity = 0, $$24)) }; if ($truthy(n['$nil?']())) { - } else { + } else { - n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if ($truthy(n <= 0)) { return nil}; }; @@ -8886,7 +8864,7 @@ if (item == null) item = nil; all = [], i, length, value; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); all.push(param); @@ -8919,33 +8897,34 @@ if (item == null) item = nil; } } ; - }, TMP_Enumerable_cycle_21.$$arity = -1); + }, $Enumerable_cycle$23.$$arity = -1); - Opal.defn(self, '$detect', TMP_Enumerable_detect_23 = function $$detect(ifnone) {try { + Opal.def(self, '$detect', $Enumerable_detect$25 = function $$detect(ifnone) {try { - var TMP_24, self = this, $iter = TMP_Enumerable_detect_23.$$p, block = $iter || nil; + var $iter = $Enumerable_detect$25.$$p, block = $iter || nil, $$26, self = this; - if ($iter) TMP_Enumerable_detect_23.$$p = null; + if ($iter) $Enumerable_detect$25.$$p = null; + + if ($iter) $Enumerable_detect$25.$$p = null;; + ; if ((block !== nil)) { - } else { + } else { return self.$enum_for("detect", ifnone) }; - $send(self, 'each', [], (TMP_24 = function($a_rest){var self = TMP_24.$$s || this, args, value = nil; + $send(self, 'each', [], ($$26 = function($a){var self = $$26.$$s || this, $post_args, args, value = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - value = Opal.const_get_relative($nesting, 'Opal').$destructure(args); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + value = $$($nesting, 'Opal').$destructure(args); if ($truthy(Opal.yield1(block, value))) { Opal.ret(value) - } else { + } else { return nil - };}, TMP_24.$$s = self, TMP_24.$$arity = -1, TMP_24)); + };}, $$26.$$s = self, $$26.$$arity = -1, $$26)); if (ifnone !== undefined) { if (typeof(ifnone) === 'function') { @@ -8957,22 +8936,22 @@ if (item == null) item = nil; ; return nil; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_detect_23.$$arity = -1); + }, $Enumerable_detect$25.$$arity = -1); - Opal.defn(self, '$drop', TMP_Enumerable_drop_25 = function $$drop(number) { + Opal.def(self, '$drop', $Enumerable_drop$27 = function $$drop(number) { var self = this; - number = Opal.const_get_relative($nesting, 'Opal').$coerce_to(number, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), "to_int"); if ($truthy(number < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "attempt to drop negative size")}; + self.$raise($$($nesting, 'ArgumentError'), "attempt to drop negative size")}; var result = [], current = 0; self.$each.$$p = function() { if (number <= current) { - result.push(Opal.const_get_relative($nesting, 'Opal').$destructure(arguments)); + result.push($$($nesting, 'Opal').$destructure(arguments)); } current++; @@ -8982,15 +8961,17 @@ if (item == null) item = nil; return result; ; - }, TMP_Enumerable_drop_25.$$arity = 1); + }, $Enumerable_drop$27.$$arity = 1); - Opal.defn(self, '$drop_while', TMP_Enumerable_drop_while_26 = function $$drop_while() { - var self = this, $iter = TMP_Enumerable_drop_while_26.$$p, block = $iter || nil; + Opal.def(self, '$drop_while', $Enumerable_drop_while$28 = function $$drop_while() { + var $iter = $Enumerable_drop_while$28.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Enumerable_drop_while_26.$$p = null; + if ($iter) $Enumerable_drop_while$28.$$p = null; + + if ($iter) $Enumerable_drop_while$28.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("drop_while") }; @@ -8998,7 +8979,7 @@ if (item == null) item = nil; dropping = true; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); if (dropping) { var value = Opal.yield1(block, param); @@ -9017,21 +8998,23 @@ if (item == null) item = nil; return result; ; - }, TMP_Enumerable_drop_while_26.$$arity = 0); + }, $Enumerable_drop_while$28.$$arity = 0); - Opal.defn(self, '$each_cons', TMP_Enumerable_each_cons_27 = function $$each_cons(n) { - var TMP_28, self = this, $iter = TMP_Enumerable_each_cons_27.$$p, block = $iter || nil; + Opal.def(self, '$each_cons', $Enumerable_each_cons$29 = function $$each_cons(n) { + var $iter = $Enumerable_each_cons$29.$$p, block = $iter || nil, $$30, self = this; - if ($iter) TMP_Enumerable_each_cons_27.$$p = null; + if ($iter) $Enumerable_each_cons$29.$$p = null; + + if ($iter) $Enumerable_each_cons$29.$$p = null;; if ($truthy(arguments.length != 1)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 1)")}; - n = Opal.const_get_relative($nesting, 'Opal').$try_convert(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 1)")}; + n = $$($nesting, 'Opal').$try_convert(n, $$($nesting, 'Integer'), "to_int"); if ($truthy(n <= 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "invalid size")}; + self.$raise($$($nesting, 'ArgumentError'), "invalid size")}; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_cons", n], (TMP_28 = function(){var self = TMP_28.$$s || this, $a, enum_size = nil; + } else { + return $send(self, 'enum_for', ["each_cons", n], ($$30 = function(){var self = $$30.$$s || this, $a, enum_size = nil; enum_size = self.$enumerator_size(); @@ -9039,15 +9022,15 @@ if (item == null) item = nil; return nil } else if ($truthy(($truthy($a = enum_size['$=='](0)) ? $a : $rb_lt(enum_size, n)))) { return 0 - } else { + } else { return $rb_plus($rb_minus(enum_size, n), 1) - };}, TMP_28.$$s = self, TMP_28.$$arity = 0, TMP_28)) + };}, $$30.$$s = self, $$30.$$arity = 0, $$30)) }; var buffer = [], result = nil; self.$each.$$p = function() { - var element = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var element = $$($nesting, 'Opal').$destructure(arguments); buffer.push(element); if (buffer.length > n) { buffer.shift(); @@ -9061,28 +9044,28 @@ if (item == null) item = nil; return result; ; - }, TMP_Enumerable_each_cons_27.$$arity = 1); + }, $Enumerable_each_cons$29.$$arity = 1); - Opal.defn(self, '$each_entry', TMP_Enumerable_each_entry_29 = function $$each_entry($a_rest) { - var TMP_30, self = this, data, $iter = TMP_Enumerable_each_entry_29.$$p, block = $iter || nil; + Opal.def(self, '$each_entry', $Enumerable_each_entry$31 = function $$each_entry($a) { + var $iter = $Enumerable_each_entry$31.$$p, block = $iter || nil, $post_args, data, $$32, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - data = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - data[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Enumerable_each_entry_29.$$p = null; + if ($iter) $Enumerable_each_entry$31.$$p = null; + + + if ($iter) $Enumerable_each_entry$31.$$p = null;; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + data = $post_args;; if ((block !== nil)) { - } else { - return $send(self, 'to_enum', ["each_entry"].concat(Opal.to_a(data)), (TMP_30 = function(){var self = TMP_30.$$s || this; + } else { + return $send(self, 'to_enum', ["each_entry"].concat(Opal.to_a(data)), ($$32 = function(){var self = $$32.$$s || this; - return self.$enumerator_size()}, TMP_30.$$s = self, TMP_30.$$arity = 0, TMP_30)) + return self.$enumerator_size()}, $$32.$$s = self, $$32.$$arity = 0, $$32)) }; self.$each.$$p = function() { - var item = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var item = $$($nesting, 'Opal').$destructure(arguments); Opal.yield1(block, item); } @@ -9091,32 +9074,34 @@ if (item == null) item = nil; return self; ; - }, TMP_Enumerable_each_entry_29.$$arity = -1); + }, $Enumerable_each_entry$31.$$arity = -1); - Opal.defn(self, '$each_slice', TMP_Enumerable_each_slice_31 = function $$each_slice(n) { - var TMP_32, self = this, $iter = TMP_Enumerable_each_slice_31.$$p, block = $iter || nil; + Opal.def(self, '$each_slice', $Enumerable_each_slice$33 = function $$each_slice(n) { + var $iter = $Enumerable_each_slice$33.$$p, block = $iter || nil, $$34, self = this; - if ($iter) TMP_Enumerable_each_slice_31.$$p = null; + if ($iter) $Enumerable_each_slice$33.$$p = null; - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + + if ($iter) $Enumerable_each_slice$33.$$p = null;; + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); if ($truthy(n <= 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "invalid slice size")}; + self.$raise($$($nesting, 'ArgumentError'), "invalid slice size")}; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_slice", n], (TMP_32 = function(){var self = TMP_32.$$s || this; + } else { + return $send(self, 'enum_for', ["each_slice", n], ($$34 = function(){var self = $$34.$$s || this; if ($truthy(self['$respond_to?']("size"))) { return $rb_divide(self.$size(), n).$ceil() - } else { + } else { return nil - }}, TMP_32.$$s = self, TMP_32.$$arity = 0, TMP_32)) + }}, $$34.$$s = self, $$34.$$arity = 0, $$34)) }; var result, slice = [] self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); slice.push(param); @@ -9138,31 +9123,31 @@ if (item == null) item = nil; } ; return nil; - }, TMP_Enumerable_each_slice_31.$$arity = 1); + }, $Enumerable_each_slice$33.$$arity = 1); - Opal.defn(self, '$each_with_index', TMP_Enumerable_each_with_index_33 = function $$each_with_index($a_rest) { - var TMP_34, self = this, args, $iter = TMP_Enumerable_each_with_index_33.$$p, block = $iter || nil; + Opal.def(self, '$each_with_index', $Enumerable_each_with_index$35 = function $$each_with_index($a) { + var $iter = $Enumerable_each_with_index$35.$$p, block = $iter || nil, $post_args, args, $$36, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Enumerable_each_with_index_33.$$p = null; + if ($iter) $Enumerable_each_with_index$35.$$p = null; + + + if ($iter) $Enumerable_each_with_index$35.$$p = null;; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_with_index"].concat(Opal.to_a(args)), (TMP_34 = function(){var self = TMP_34.$$s || this; + } else { + return $send(self, 'enum_for', ["each_with_index"].concat(Opal.to_a(args)), ($$36 = function(){var self = $$36.$$s || this; - return self.$enumerator_size()}, TMP_34.$$s = self, TMP_34.$$arity = 0, TMP_34)) + return self.$enumerator_size()}, $$36.$$s = self, $$36.$$arity = 0, $$36)) }; var result, index = 0; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); block(param, index); @@ -9176,24 +9161,26 @@ if (item == null) item = nil; } ; return self; - }, TMP_Enumerable_each_with_index_33.$$arity = -1); + }, $Enumerable_each_with_index$35.$$arity = -1); - Opal.defn(self, '$each_with_object', TMP_Enumerable_each_with_object_35 = function $$each_with_object(object) { - var TMP_36, self = this, $iter = TMP_Enumerable_each_with_object_35.$$p, block = $iter || nil; + Opal.def(self, '$each_with_object', $Enumerable_each_with_object$37 = function $$each_with_object(object) { + var $iter = $Enumerable_each_with_object$37.$$p, block = $iter || nil, $$38, self = this; - if ($iter) TMP_Enumerable_each_with_object_35.$$p = null; + if ($iter) $Enumerable_each_with_object$37.$$p = null; + + if ($iter) $Enumerable_each_with_object$37.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_with_object", object], (TMP_36 = function(){var self = TMP_36.$$s || this; + } else { + return $send(self, 'enum_for', ["each_with_object", object], ($$38 = function(){var self = $$38.$$s || this; - return self.$enumerator_size()}, TMP_36.$$s = self, TMP_36.$$arity = 0, TMP_36)) + return self.$enumerator_size()}, $$38.$$s = self, $$38.$$arity = 0, $$38)) }; var result; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); block(param, object); }; @@ -9205,47 +9192,48 @@ if (item == null) item = nil; } ; return object; - }, TMP_Enumerable_each_with_object_35.$$arity = 1); + }, $Enumerable_each_with_object$37.$$arity = 1); - Opal.defn(self, '$entries', TMP_Enumerable_entries_37 = function $$entries($a_rest) { - var self = this, args; + Opal.def(self, '$entries', $Enumerable_entries$39 = function $$entries($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var result = []; self.$each.$$p = function() { - result.push(Opal.const_get_relative($nesting, 'Opal').$destructure(arguments)); + result.push($$($nesting, 'Opal').$destructure(arguments)); }; self.$each.apply(self, args); return result; - - }, TMP_Enumerable_entries_37.$$arity = -1); + ; + }, $Enumerable_entries$39.$$arity = -1); Opal.alias(self, "find", "detect"); - Opal.defn(self, '$find_all', TMP_Enumerable_find_all_38 = function $$find_all() { - var TMP_39, self = this, $iter = TMP_Enumerable_find_all_38.$$p, block = $iter || nil; + Opal.def(self, '$find_all', $Enumerable_find_all$40 = function $$find_all() { + var $iter = $Enumerable_find_all$40.$$p, block = $iter || nil, $$41, self = this; - if ($iter) TMP_Enumerable_find_all_38.$$p = null; + if ($iter) $Enumerable_find_all$40.$$p = null; + + if ($iter) $Enumerable_find_all$40.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["find_all"], (TMP_39 = function(){var self = TMP_39.$$s || this; + } else { + return $send(self, 'enum_for', ["find_all"], ($$41 = function(){var self = $$41.$$s || this; - return self.$enumerator_size()}, TMP_39.$$s = self, TMP_39.$$arity = 0, TMP_39)) + return self.$enumerator_size()}, $$41.$$s = self, $$41.$$arity = 0, $$41)) }; var result = []; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if ($truthy(value)) { @@ -9257,14 +9245,17 @@ if (item == null) item = nil; return result; ; - }, TMP_Enumerable_find_all_38.$$arity = 0); + }, $Enumerable_find_all$40.$$arity = 0); - Opal.defn(self, '$find_index', TMP_Enumerable_find_index_40 = function $$find_index(object) {try { + Opal.def(self, '$find_index', $Enumerable_find_index$42 = function $$find_index(object) {try { - var TMP_41, TMP_42, self = this, $iter = TMP_Enumerable_find_index_40.$$p, block = $iter || nil, index = nil; + var $iter = $Enumerable_find_index$42.$$p, block = $iter || nil, $$43, $$44, self = this, index = nil; - if ($iter) TMP_Enumerable_find_index_40.$$p = null; + if ($iter) $Enumerable_find_index$42.$$p = null; + + if ($iter) $Enumerable_find_index$42.$$p = null;; + ; if ($truthy(object === undefined && block === nil)) { return self.$enum_for("find_index")}; @@ -9274,163 +9265,154 @@ if (item == null) item = nil; ; index = 0; if ($truthy(object != null)) { - $send(self, 'each', [], (TMP_41 = function($a_rest){var self = TMP_41.$$s || this, value; + $send(self, 'each', [], ($$43 = function($a){var self = $$43.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if (Opal.const_get_relative($nesting, 'Opal').$destructure(value)['$=='](object)) { + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($$($nesting, 'Opal').$destructure(value)['$=='](object)) { Opal.ret(index)}; - return index += 1;}, TMP_41.$$s = self, TMP_41.$$arity = -1, TMP_41)) - } else { - $send(self, 'each', [], (TMP_42 = function($a_rest){var self = TMP_42.$$s || this, value; + return index += 1;;}, $$43.$$s = self, $$43.$$arity = -1, $$43)) + } else { + $send(self, 'each', [], ($$44 = function($a){var self = $$44.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { Opal.ret(index)}; - return index += 1;}, TMP_42.$$s = self, TMP_42.$$arity = -1, TMP_42)) + return index += 1;;}, $$44.$$s = self, $$44.$$arity = -1, $$44)) }; return nil; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_find_index_40.$$arity = -1); + }, $Enumerable_find_index$42.$$arity = -1); - Opal.defn(self, '$first', TMP_Enumerable_first_45 = function $$first(number) {try { + Opal.def(self, '$first', $Enumerable_first$45 = function $$first(number) {try { - var TMP_43, TMP_44, self = this, result = nil, current = nil; + var $$46, $$47, self = this, result = nil, current = nil; + + ; if ($truthy(number === undefined)) { - return $send(self, 'each', [], (TMP_43 = function(value){var self = TMP_43.$$s || this; -if (value == null) value = nil; - Opal.ret(value)}, TMP_43.$$s = self, TMP_43.$$arity = 1, TMP_43)) - } else { + return $send(self, 'each', [], ($$46 = function(value){var self = $$46.$$s || this; + + + + if (value == null) { + value = nil; + }; + Opal.ret(value);}, $$46.$$s = self, $$46.$$arity = 1, $$46)) + } else { result = []; - number = Opal.const_get_relative($nesting, 'Opal').$coerce_to(number, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), "to_int"); if ($truthy(number < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "attempt to take negative size")}; + self.$raise($$($nesting, 'ArgumentError'), "attempt to take negative size")}; if ($truthy(number == 0)) { return []}; current = 0; - $send(self, 'each', [], (TMP_44 = function($a_rest){var self = TMP_44.$$s || this, args; + $send(self, 'each', [], ($$47 = function($a){var self = $$47.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - result.push(Opal.const_get_relative($nesting, 'Opal').$destructure(args)); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + result.push($$($nesting, 'Opal').$destructure(args)); if ($truthy(number <= ++current)) { Opal.ret(result) - } else { + } else { return nil - };}, TMP_44.$$s = self, TMP_44.$$arity = -1, TMP_44)); + };}, $$47.$$s = self, $$47.$$arity = -1, $$47)); return result; - } + }; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_first_45.$$arity = -1); + }, $Enumerable_first$45.$$arity = -1); Opal.alias(self, "flat_map", "collect_concat"); - Opal.defn(self, '$grep', TMP_Enumerable_grep_46 = function $$grep(pattern) { - var self = this, $iter = TMP_Enumerable_grep_46.$$p, block = $iter || nil; + Opal.def(self, '$grep', $Enumerable_grep$48 = function $$grep(pattern) { + var $iter = $Enumerable_grep$48.$$p, block = $iter || nil, $$49, self = this, result = nil; - if ($iter) TMP_Enumerable_grep_46.$$p = null; + if ($iter) $Enumerable_grep$48.$$p = null; - var result = []; - - if (block !== nil) { - self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), - value = pattern['$==='](param); - - if ($truthy(value)) { - value = Opal.yield1(block, param); - - result.push(value); - } - }; - } - else { - self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), - value = pattern['$==='](param); + + if ($iter) $Enumerable_grep$48.$$p = null;; + result = []; + $send(self, 'each', [], ($$49 = function($a){var self = $$49.$$s || this, $post_args, value, cmp = nil; - if ($truthy(value)) { - result.push(param); - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + cmp = comparableForPattern(value); + if ($truthy($send(pattern, '__send__', ["==="].concat(Opal.to_a(cmp))))) { + } else { + return nil; }; - } - - self.$each(); - + if ((block !== nil)) { + + if ($truthy($rb_gt(value.$length(), 1))) { + value = [value]}; + value = Opal.yieldX(block, Opal.to_a(value)); + } else if ($truthy($rb_le(value.$length(), 1))) { + value = value['$[]'](0)}; + return result.$push(value);}, $$49.$$s = self, $$49.$$arity = -1, $$49)); return result; + }, $Enumerable_grep$48.$$arity = 1); - }, TMP_Enumerable_grep_46.$$arity = 1); - - Opal.defn(self, '$grep_v', TMP_Enumerable_grep_v_47 = function $$grep_v(pattern) { - var self = this, $iter = TMP_Enumerable_grep_v_47.$$p, block = $iter || nil; + Opal.def(self, '$grep_v', $Enumerable_grep_v$50 = function $$grep_v(pattern) { + var $iter = $Enumerable_grep_v$50.$$p, block = $iter || nil, $$51, self = this, result = nil; - if ($iter) TMP_Enumerable_grep_v_47.$$p = null; + if ($iter) $Enumerable_grep_v$50.$$p = null; - var result = []; - - if (block !== nil) { - self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), - value = pattern['$==='](param); - - if ($falsy(value)) { - value = Opal.yield1(block, param); - - result.push(value); - } - }; - } - else { - self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), - value = pattern['$==='](param); - - if ($falsy(value)) { - result.push(param); - } - }; - } - - self.$each(); + + if ($iter) $Enumerable_grep_v$50.$$p = null;; + result = []; + $send(self, 'each', [], ($$51 = function($a){var self = $$51.$$s || this, $post_args, value, cmp = nil; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + cmp = comparableForPattern(value); + if ($truthy($send(pattern, '__send__', ["==="].concat(Opal.to_a(cmp))))) { + return nil;}; + if ((block !== nil)) { + + if ($truthy($rb_gt(value.$length(), 1))) { + value = [value]}; + value = Opal.yieldX(block, Opal.to_a(value)); + } else if ($truthy($rb_le(value.$length(), 1))) { + value = value['$[]'](0)}; + return result.$push(value);}, $$51.$$s = self, $$51.$$arity = -1, $$51)); return result; + }, $Enumerable_grep_v$50.$$arity = 1); - }, TMP_Enumerable_grep_v_47.$$arity = 1); - - Opal.defn(self, '$group_by', TMP_Enumerable_group_by_48 = function $$group_by() { - var TMP_49, $a, self = this, $iter = TMP_Enumerable_group_by_48.$$p, block = $iter || nil, hash = nil, $writer = nil; + Opal.def(self, '$group_by', $Enumerable_group_by$52 = function $$group_by() { + var $iter = $Enumerable_group_by$52.$$p, block = $iter || nil, $$53, $a, self = this, hash = nil, $writer = nil; - if ($iter) TMP_Enumerable_group_by_48.$$p = null; + if ($iter) $Enumerable_group_by$52.$$p = null; + + if ($iter) $Enumerable_group_by$52.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["group_by"], (TMP_49 = function(){var self = TMP_49.$$s || this; + } else { + return $send(self, 'enum_for', ["group_by"], ($$53 = function(){var self = $$53.$$s || this; - return self.$enumerator_size()}, TMP_49.$$s = self, TMP_49.$$arity = 0, TMP_49)) + return self.$enumerator_size()}, $$53.$$s = self, $$53.$$arity = 0, $$53)) }; - hash = Opal.const_get_relative($nesting, 'Hash').$new(); + hash = $hash2([], {}); var result; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); ($truthy($a = hash['$[]'](value)) ? $a : (($writer = [value, []]), $send(hash, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))['$<<'](param); @@ -9443,40 +9425,44 @@ if (value == null) value = nil; } ; return hash; - }, TMP_Enumerable_group_by_48.$$arity = 0); + }, $Enumerable_group_by$52.$$arity = 0); - Opal.defn(self, '$include?', TMP_Enumerable_include$q_51 = function(obj) {try { + Opal.def(self, '$include?', $Enumerable_include$ques$54 = function(obj) {try { - var TMP_50, self = this; + var $$55, self = this; - $send(self, 'each', [], (TMP_50 = function($a_rest){var self = TMP_50.$$s || this, args; + $send(self, 'each', [], ($$55 = function($a){var self = $$55.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if (Opal.const_get_relative($nesting, 'Opal').$destructure(args)['$=='](obj)) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + if ($$($nesting, 'Opal').$destructure(args)['$=='](obj)) { Opal.ret(true) - } else { + } else { return nil - }}, TMP_50.$$s = self, TMP_50.$$arity = -1, TMP_50)); + };}, $$55.$$s = self, $$55.$$arity = -1, $$55)); return false; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_include$q_51.$$arity = 1); + }, $Enumerable_include$ques$54.$$arity = 1); - Opal.defn(self, '$inject', TMP_Enumerable_inject_52 = function $$inject(object, sym) { - var self = this, $iter = TMP_Enumerable_inject_52.$$p, block = $iter || nil; + Opal.def(self, '$inject', $Enumerable_inject$56 = function $$inject(object, sym) { + var $iter = $Enumerable_inject$56.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Enumerable_inject_52.$$p = null; + if ($iter) $Enumerable_inject$56.$$p = null; + + + if ($iter) $Enumerable_inject$56.$$p = null;; + ; + ; var result = object; if (block !== nil && sym === undefined) { self.$each.$$p = function() { - var value = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var value = $$($nesting, 'Opal').$destructure(arguments); if (result === undefined) { result = value; @@ -9490,8 +9476,8 @@ if (value == null) value = nil; } else { if (sym === undefined) { - if (!Opal.const_get_relative($nesting, 'Symbol')['$==='](object)) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (object.$inspect()) + " is not a Symbol"); + if (!$$($nesting, 'Symbol')['$==='](object)) { + self.$raise($$($nesting, 'TypeError'), "" + (object.$inspect()) + " is not a Symbol"); } sym = object; @@ -9499,7 +9485,7 @@ if (value == null) value = nil; } self.$each.$$p = function() { - var value = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var value = $$($nesting, 'Opal').$destructure(arguments); if (result === undefined) { result = value; @@ -9513,45 +9499,51 @@ if (value == null) value = nil; self.$each(); return result == undefined ? nil : result; + ; + }, $Enumerable_inject$56.$$arity = -1); - }, TMP_Enumerable_inject_52.$$arity = -1); - - Opal.defn(self, '$lazy', TMP_Enumerable_lazy_54 = function $$lazy() { - var TMP_53, self = this; + Opal.def(self, '$lazy', $Enumerable_lazy$57 = function $$lazy() { + var $$58, self = this; - return $send(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Enumerator'), 'Lazy'), 'new', [self, self.$enumerator_size()], (TMP_53 = function(enum$, $a_rest){var self = TMP_53.$$s || this, args; + return $send($$$($$($nesting, 'Enumerator'), 'Lazy'), 'new', [self, self.$enumerator_size()], ($$58 = function(enum$, $a){var self = $$58.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - return $send(enum$, 'yield', Opal.to_a(args))}, TMP_53.$$s = self, TMP_53.$$arity = -2, TMP_53)) - }, TMP_Enumerable_lazy_54.$$arity = 0); + + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + return $send(enum$, 'yield', Opal.to_a(args));}, $$58.$$s = self, $$58.$$arity = -2, $$58)) + }, $Enumerable_lazy$57.$$arity = 0); - Opal.defn(self, '$enumerator_size', TMP_Enumerable_enumerator_size_55 = function $$enumerator_size() { + Opal.def(self, '$enumerator_size', $Enumerable_enumerator_size$59 = function $$enumerator_size() { var self = this; if ($truthy(self['$respond_to?']("size"))) { return self.$size() - } else { + } else { return nil } - }, TMP_Enumerable_enumerator_size_55.$$arity = 0); + }, $Enumerable_enumerator_size$59.$$arity = 0); Opal.alias(self, "map", "collect"); - Opal.defn(self, '$max', TMP_Enumerable_max_56 = function $$max(n) { - var self = this, $iter = TMP_Enumerable_max_56.$$p, block = $iter || nil; + Opal.def(self, '$max', $Enumerable_max$60 = function $$max(n) { + var $iter = $Enumerable_max$60.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Enumerable_max_56.$$p = null; + if ($iter) $Enumerable_max$60.$$p = null; + if ($iter) $Enumerable_max$60.$$p = null;; + ; + if (n === undefined || n === nil) { var result, value; self.$each.$$p = function() { - var item = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var item = $$($nesting, 'Opal').$destructure(arguments); if (result === undefined) { result = item; @@ -9565,7 +9557,7 @@ if (value == null) value = nil; } if (value === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "comparison failed"); + self.$raise($$($nesting, 'ArgumentError'), "comparison failed"); } if (value > 0) { @@ -9582,27 +9574,29 @@ if (value == null) value = nil; } } ; - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); return $send(self, 'sort', [], block.$to_proc()).$reverse().$first(n); - }, TMP_Enumerable_max_56.$$arity = -1); + }, $Enumerable_max$60.$$arity = -1); - Opal.defn(self, '$max_by', TMP_Enumerable_max_by_57 = function $$max_by() { - var TMP_58, self = this, $iter = TMP_Enumerable_max_by_57.$$p, block = $iter || nil; + Opal.def(self, '$max_by', $Enumerable_max_by$61 = function $$max_by() { + var $iter = $Enumerable_max_by$61.$$p, block = $iter || nil, $$62, self = this; - if ($iter) TMP_Enumerable_max_by_57.$$p = null; + if ($iter) $Enumerable_max_by$61.$$p = null; + + if ($iter) $Enumerable_max_by$61.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["max_by"], (TMP_58 = function(){var self = TMP_58.$$s || this; + } else { + return $send(self, 'enum_for', ["max_by"], ($$62 = function(){var self = $$62.$$s || this; - return self.$enumerator_size()}, TMP_58.$$s = self, TMP_58.$$arity = 0, TMP_58)) + return self.$enumerator_size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) }; var result, by; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if (result === undefined) { @@ -9621,19 +9615,22 @@ if (value == null) value = nil; return result === undefined ? nil : result; ; - }, TMP_Enumerable_max_by_57.$$arity = 0); + }, $Enumerable_max_by$61.$$arity = 0); Opal.alias(self, "member?", "include?"); - Opal.defn(self, '$min', TMP_Enumerable_min_59 = function $$min() { - var self = this, $iter = TMP_Enumerable_min_59.$$p, block = $iter || nil; + Opal.def(self, '$min', $Enumerable_min$63 = function $$min() { + var $iter = $Enumerable_min$63.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Enumerable_min_59.$$p = null; + if ($iter) $Enumerable_min$63.$$p = null; + + + if ($iter) $Enumerable_min$63.$$p = null;; var result; if (block !== nil) { self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); if (result === undefined) { result = param; @@ -9643,7 +9640,7 @@ if (value == null) value = nil; var value = block(param, result); if (value === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "comparison failed"); + self.$raise($$($nesting, 'ArgumentError'), "comparison failed"); } if (value < 0) { @@ -9653,14 +9650,14 @@ if (value == null) value = nil; } else { self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var param = $$($nesting, 'Opal').$destructure(arguments); if (result === undefined) { result = param; return; } - if (Opal.const_get_relative($nesting, 'Opal').$compare(param, result) < 0) { + if ($$($nesting, 'Opal').$compare(param, result) < 0) { result = param; } }; @@ -9669,26 +9666,28 @@ if (value == null) value = nil; self.$each(); return result === undefined ? nil : result; + ; + }, $Enumerable_min$63.$$arity = 0); - }, TMP_Enumerable_min_59.$$arity = 0); - - Opal.defn(self, '$min_by', TMP_Enumerable_min_by_60 = function $$min_by() { - var TMP_61, self = this, $iter = TMP_Enumerable_min_by_60.$$p, block = $iter || nil; + Opal.def(self, '$min_by', $Enumerable_min_by$64 = function $$min_by() { + var $iter = $Enumerable_min_by$64.$$p, block = $iter || nil, $$65, self = this; - if ($iter) TMP_Enumerable_min_by_60.$$p = null; + if ($iter) $Enumerable_min_by$64.$$p = null; + + if ($iter) $Enumerable_min_by$64.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["min_by"], (TMP_61 = function(){var self = TMP_61.$$s || this; + } else { + return $send(self, 'enum_for', ["min_by"], ($$65 = function(){var self = $$65.$$s || this; - return self.$enumerator_size()}, TMP_61.$$s = self, TMP_61.$$arity = 0, TMP_61)) + return self.$enumerator_size()}, $$65.$$s = self, $$65.$$arity = 0, $$65)) }; var result, by; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if (result === undefined) { @@ -9707,21 +9706,32 @@ if (value == null) value = nil; return result === undefined ? nil : result; ; - }, TMP_Enumerable_min_by_60.$$arity = 0); + }, $Enumerable_min_by$64.$$arity = 0); - Opal.defn(self, '$minmax', TMP_Enumerable_minmax_62 = function $$minmax() { - var $a, TMP_63, self = this, $iter = TMP_Enumerable_minmax_62.$$p, block = $iter || nil; + Opal.def(self, '$minmax', $Enumerable_minmax$66 = function $$minmax() { + var $iter = $Enumerable_minmax$66.$$p, block = $iter || nil, $a, $$67, self = this; - if ($iter) TMP_Enumerable_minmax_62.$$p = null; + if ($iter) $Enumerable_minmax$66.$$p = null; + - block = ($truthy($a = block) ? $a : $send(self, 'proc', [], (TMP_63 = function(a, b){var self = TMP_63.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - return a['$<=>'](b)}, TMP_63.$$s = self, TMP_63.$$arity = 2, TMP_63))); + if ($iter) $Enumerable_minmax$66.$$p = null;; + block = ($truthy($a = block) ? $a : $send(self, 'proc', [], ($$67 = function(a, b){var self = $$67.$$s || this; + + + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + return a['$<=>'](b);}, $$67.$$s = self, $$67.$$arity = 2, $$67))); var min = nil, max = nil, first_time = true; self.$each.$$p = function() { - var element = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); + var element = $$($nesting, 'Opal').$destructure(arguments); if (first_time) { min = max = element; first_time = false; @@ -9729,7 +9739,7 @@ if (a == null) a = nil;if (b == null) b = nil; var min_cmp = block.$call(min, element); if (min_cmp === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "comparison failed") + self.$raise($$($nesting, 'ArgumentError'), "comparison failed") } else if (min_cmp > 0) { min = element; } @@ -9737,7 +9747,7 @@ if (a == null) a = nil;if (b == null) b = nil; var max_cmp = block.$call(max, element); if (max_cmp === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "comparison failed") + self.$raise($$($nesting, 'ArgumentError'), "comparison failed") } else if (max_cmp < 0) { max = element; } @@ -9748,122 +9758,162 @@ if (a == null) a = nil;if (b == null) b = nil; return [min, max]; ; - }, TMP_Enumerable_minmax_62.$$arity = 0); + }, $Enumerable_minmax$66.$$arity = 0); - Opal.defn(self, '$minmax_by', TMP_Enumerable_minmax_by_64 = function $$minmax_by() { - var self = this, $iter = TMP_Enumerable_minmax_by_64.$$p, block = $iter || nil; + Opal.def(self, '$minmax_by', $Enumerable_minmax_by$68 = function $$minmax_by() { + var $iter = $Enumerable_minmax_by$68.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Enumerable_minmax_by_64.$$p = null; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Enumerable_minmax_by_64.$$arity = 0); + if ($iter) $Enumerable_minmax_by$68.$$p = null; + + + if ($iter) $Enumerable_minmax_by$68.$$p = null;; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Enumerable_minmax_by$68.$$arity = 0); - Opal.defn(self, '$none?', TMP_Enumerable_none$q_65 = function() {try { + Opal.def(self, '$none?', $Enumerable_none$ques$69 = function(pattern) {try { - var TMP_66, TMP_67, self = this, $iter = TMP_Enumerable_none$q_65.$$p, block = $iter || nil; + var $iter = $Enumerable_none$ques$69.$$p, block = $iter || nil, $$70, $$71, $$72, self = this; - if ($iter) TMP_Enumerable_none$q_65.$$p = null; + if ($iter) $Enumerable_none$ques$69.$$p = null; - if ((block !== nil)) { - $send(self, 'each', [], (TMP_66 = function($a_rest){var self = TMP_66.$$s || this, value; + + if ($iter) $Enumerable_none$ques$69.$$p = null;; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], ($$70 = function($a){var self = $$70.$$s || this, $post_args, value, comparable = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { Opal.ret(false) - } else { + } else { return nil - }}, TMP_66.$$s = self, TMP_66.$$arity = -1, TMP_66)) - } else { - $send(self, 'each', [], (TMP_67 = function($a_rest){var self = TMP_67.$$s || this, value; + };}, $$70.$$s = self, $$70.$$arity = -1, $$70)) + } else if ((block !== nil)) { + $send(self, 'each', [], ($$71 = function($a){var self = $$71.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.const_get_relative($nesting, 'Opal').$destructure(value))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { Opal.ret(false) - } else { + } else { + return nil + };}, $$71.$$s = self, $$71.$$arity = -1, $$71)) + } else { + $send(self, 'each', [], ($$72 = function($a){var self = $$72.$$s || this, $post_args, value, item = nil; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + item = $$($nesting, 'Opal').$destructure(value); + if ($truthy(item)) { + Opal.ret(false) + } else { return nil - }}, TMP_67.$$s = self, TMP_67.$$arity = -1, TMP_67)) + };}, $$72.$$s = self, $$72.$$arity = -1, $$72)) }; return true; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_none$q_65.$$arity = 0); + }, $Enumerable_none$ques$69.$$arity = -1); - Opal.defn(self, '$one?', TMP_Enumerable_one$q_68 = function() {try { + Opal.def(self, '$one?', $Enumerable_one$ques$73 = function(pattern) {try { - var TMP_69, TMP_70, self = this, $iter = TMP_Enumerable_one$q_68.$$p, block = $iter || nil, count = nil; + var $iter = $Enumerable_one$ques$73.$$p, block = $iter || nil, $$74, $$75, $$76, self = this, count = nil; - if ($iter) TMP_Enumerable_one$q_68.$$p = null; + if ($iter) $Enumerable_one$ques$73.$$p = null; + + if ($iter) $Enumerable_one$ques$73.$$p = null;; + ; count = 0; - if ((block !== nil)) { - $send(self, 'each', [], (TMP_69 = function($a_rest){var self = TMP_69.$$s || this, value; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], ($$74 = function($a){var self = $$74.$$s || this, $post_args, value, comparable = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { count = $rb_plus(count, 1); if ($truthy($rb_gt(count, 1))) { Opal.ret(false) - } else { + } else { return nil }; - } else { + } else { return nil - }}, TMP_69.$$s = self, TMP_69.$$arity = -1, TMP_69)) - } else { - $send(self, 'each', [], (TMP_70 = function($a_rest){var self = TMP_70.$$s || this, value; + };}, $$74.$$s = self, $$74.$$arity = -1, $$74)) + } else if ((block !== nil)) { + $send(self, 'each', [], ($$75 = function($a){var self = $$75.$$s || this, $post_args, value; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - value = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - value[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy(Opal.const_get_relative($nesting, 'Opal').$destructure(value))) { - - count = $rb_plus(count, 1); - if ($truthy($rb_gt(count, 1))) { - Opal.ret(false) - } else { - return nil - }; - } else { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { + } else { + return nil; + }; + count = $rb_plus(count, 1); + if ($truthy($rb_gt(count, 1))) { + Opal.ret(false) + } else { + return nil + };}, $$75.$$s = self, $$75.$$arity = -1, $$75)) + } else { + $send(self, 'each', [], ($$76 = function($a){var self = $$76.$$s || this, $post_args, value; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + value = $post_args;; + if ($truthy($$($nesting, 'Opal').$destructure(value))) { + } else { + return nil; + }; + count = $rb_plus(count, 1); + if ($truthy($rb_gt(count, 1))) { + Opal.ret(false) + } else { return nil - }}, TMP_70.$$s = self, TMP_70.$$arity = -1, TMP_70)) + };}, $$76.$$s = self, $$76.$$arity = -1, $$76)) }; return count['$=='](1); } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_one$q_68.$$arity = 0); + }, $Enumerable_one$ques$73.$$arity = -1); - Opal.defn(self, '$partition', TMP_Enumerable_partition_71 = function $$partition() { - var TMP_72, self = this, $iter = TMP_Enumerable_partition_71.$$p, block = $iter || nil; + Opal.def(self, '$partition', $Enumerable_partition$77 = function $$partition() { + var $iter = $Enumerable_partition$77.$$p, block = $iter || nil, $$78, self = this; - if ($iter) TMP_Enumerable_partition_71.$$p = null; + if ($iter) $Enumerable_partition$77.$$p = null; + + if ($iter) $Enumerable_partition$77.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["partition"], (TMP_72 = function(){var self = TMP_72.$$s || this; + } else { + return $send(self, 'enum_for', ["partition"], ($$78 = function(){var self = $$78.$$s || this; - return self.$enumerator_size()}, TMP_72.$$s = self, TMP_72.$$arity = 0, TMP_72)) + return self.$enumerator_size()}, $$78.$$s = self, $$78.$$arity = 0, $$78)) }; var truthy = [], falsy = [], result; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if ($truthy(value)) { @@ -9878,25 +9928,27 @@ if (a == null) a = nil;if (b == null) b = nil; return [truthy, falsy]; ; - }, TMP_Enumerable_partition_71.$$arity = 0); + }, $Enumerable_partition$77.$$arity = 0); Opal.alias(self, "reduce", "inject"); - Opal.defn(self, '$reject', TMP_Enumerable_reject_73 = function $$reject() { - var TMP_74, self = this, $iter = TMP_Enumerable_reject_73.$$p, block = $iter || nil; + Opal.def(self, '$reject', $Enumerable_reject$79 = function $$reject() { + var $iter = $Enumerable_reject$79.$$p, block = $iter || nil, $$80, self = this; - if ($iter) TMP_Enumerable_reject_73.$$p = null; + if ($iter) $Enumerable_reject$79.$$p = null; + + if ($iter) $Enumerable_reject$79.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject"], (TMP_74 = function(){var self = TMP_74.$$s || this; + } else { + return $send(self, 'enum_for', ["reject"], ($$80 = function(){var self = $$80.$$s || this; - return self.$enumerator_size()}, TMP_74.$$s = self, TMP_74.$$arity = 0, TMP_74)) + return self.$enumerator_size()}, $$80.$$s = self, $$80.$$arity = 0, $$80)) }; var result = []; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if ($falsy(value)) { @@ -9908,18 +9960,20 @@ if (a == null) a = nil;if (b == null) b = nil; return result; ; - }, TMP_Enumerable_reject_73.$$arity = 0); + }, $Enumerable_reject$79.$$arity = 0); - Opal.defn(self, '$reverse_each', TMP_Enumerable_reverse_each_75 = function $$reverse_each() { - var TMP_76, self = this, $iter = TMP_Enumerable_reverse_each_75.$$p, block = $iter || nil; + Opal.def(self, '$reverse_each', $Enumerable_reverse_each$81 = function $$reverse_each() { + var $iter = $Enumerable_reverse_each$81.$$p, block = $iter || nil, $$82, self = this; - if ($iter) TMP_Enumerable_reverse_each_75.$$p = null; + if ($iter) $Enumerable_reverse_each$81.$$p = null; + + if ($iter) $Enumerable_reverse_each$81.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reverse_each"], (TMP_76 = function(){var self = TMP_76.$$s || this; + } else { + return $send(self, 'enum_for', ["reverse_each"], ($$82 = function(){var self = $$82.$$s || this; - return self.$enumerator_size()}, TMP_76.$$s = self, TMP_76.$$arity = 0, TMP_76)) + return self.$enumerator_size()}, $$82.$$s = self, $$82.$$arity = 0, $$82)) }; var result = []; @@ -9936,27 +9990,35 @@ if (a == null) a = nil;if (b == null) b = nil; return result; ; - }, TMP_Enumerable_reverse_each_75.$$arity = 0); + }, $Enumerable_reverse_each$81.$$arity = 0); Opal.alias(self, "select", "find_all"); - Opal.defn(self, '$slice_before', TMP_Enumerable_slice_before_77 = function $$slice_before(pattern) { - var TMP_78, self = this, $iter = TMP_Enumerable_slice_before_77.$$p, block = $iter || nil; + Opal.def(self, '$slice_before', $Enumerable_slice_before$83 = function $$slice_before(pattern) { + var $iter = $Enumerable_slice_before$83.$$p, block = $iter || nil, $$84, self = this; - if ($iter) TMP_Enumerable_slice_before_77.$$p = null; + if ($iter) $Enumerable_slice_before$83.$$p = null; + + if ($iter) $Enumerable_slice_before$83.$$p = null;; + ; if ($truthy(pattern === undefined && block === nil)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "both pattern and block are given")}; + self.$raise($$($nesting, 'ArgumentError'), "both pattern and block are given")}; if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; - return $send(Opal.const_get_relative($nesting, 'Enumerator'), 'new', [], (TMP_78 = function(e){var self = TMP_78.$$s || this; -if (e == null) e = nil; + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; + return $send($$($nesting, 'Enumerator'), 'new', [], ($$84 = function(e){var self = $$84.$$s || this; + + + if (e == null) { + e = nil; + }; + var slice = []; if (block !== nil) { if (pattern === undefined) { self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = Opal.yield1(block, param); if ($truthy(value) && slice.length > 0) { @@ -9969,7 +10031,7 @@ if (e == null) e = nil; } else { self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = block(param, pattern.$dup()); if ($truthy(value) && slice.length > 0) { @@ -9983,7 +10045,7 @@ if (e == null) e = nil; } else { self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = pattern['$==='](param); if ($truthy(value) && slice.length > 0) { @@ -10000,29 +10062,42 @@ if (e == null) e = nil; if (slice.length > 0) { e['$<<'](slice); } - }, TMP_78.$$s = self, TMP_78.$$arity = 1, TMP_78)); - }, TMP_Enumerable_slice_before_77.$$arity = -1); + ;}, $$84.$$s = self, $$84.$$arity = 1, $$84)); + }, $Enumerable_slice_before$83.$$arity = -1); - Opal.defn(self, '$slice_after', TMP_Enumerable_slice_after_79 = function $$slice_after(pattern) { - var TMP_80, TMP_81, self = this, $iter = TMP_Enumerable_slice_after_79.$$p, block = $iter || nil; + Opal.def(self, '$slice_after', $Enumerable_slice_after$85 = function $$slice_after(pattern) { + var $iter = $Enumerable_slice_after$85.$$p, block = $iter || nil, $$86, $$87, self = this; - if ($iter) TMP_Enumerable_slice_after_79.$$p = null; + if ($iter) $Enumerable_slice_after$85.$$p = null; + + if ($iter) $Enumerable_slice_after$85.$$p = null;; + ; if ($truthy(pattern === undefined && block === nil)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "both pattern and block are given")}; + self.$raise($$($nesting, 'ArgumentError'), "both pattern and block are given")}; if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; if ($truthy(pattern !== undefined)) { - block = $send(self, 'proc', [], (TMP_80 = function(e){var self = TMP_80.$$s || this; -if (e == null) e = nil; - return pattern['$==='](e)}, TMP_80.$$s = self, TMP_80.$$arity = 1, TMP_80))}; - return $send(Opal.const_get_relative($nesting, 'Enumerator'), 'new', [], (TMP_81 = function(yielder){var self = TMP_81.$$s || this; -if (yielder == null) yielder = nil; + block = $send(self, 'proc', [], ($$86 = function(e){var self = $$86.$$s || this; + + + + if (e == null) { + e = nil; + }; + return pattern['$==='](e);}, $$86.$$s = self, $$86.$$arity = 1, $$86))}; + return $send($$($nesting, 'Enumerator'), 'new', [], ($$87 = function(yielder){var self = $$87.$$s || this; + + + if (yielder == null) { + yielder = nil; + }; + var accumulate; self.$each.$$p = function() { - var element = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var element = $$($nesting, 'Opal').$destructure(arguments), end_chunk = Opal.yield1(block, element); if (accumulate == null) { @@ -10043,25 +10118,32 @@ if (yielder == null) yielder = nil; if (accumulate != null) { yielder.$yield(accumulate); } - }, TMP_81.$$s = self, TMP_81.$$arity = 1, TMP_81)); - }, TMP_Enumerable_slice_after_79.$$arity = -1); + ;}, $$87.$$s = self, $$87.$$arity = 1, $$87)); + }, $Enumerable_slice_after$85.$$arity = -1); - Opal.defn(self, '$slice_when', TMP_Enumerable_slice_when_82 = function $$slice_when() { - var TMP_83, self = this, $iter = TMP_Enumerable_slice_when_82.$$p, block = $iter || nil; + Opal.def(self, '$slice_when', $Enumerable_slice_when$88 = function $$slice_when() { + var $iter = $Enumerable_slice_when$88.$$p, block = $iter || nil, $$89, self = this; - if ($iter) TMP_Enumerable_slice_when_82.$$p = null; + if ($iter) $Enumerable_slice_when$88.$$p = null; + + if ($iter) $Enumerable_slice_when$88.$$p = null;; if ((block !== nil)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1)") + } else { + self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1)") }; - return $send(Opal.const_get_relative($nesting, 'Enumerator'), 'new', [], (TMP_83 = function(yielder){var self = TMP_83.$$s || this; -if (yielder == null) yielder = nil; + return $send($$($nesting, 'Enumerator'), 'new', [], ($$89 = function(yielder){var self = $$89.$$s || this; + + + if (yielder == null) { + yielder = nil; + }; + var slice = nil, last_after = nil; self.$each_cons.$$p = function() { - var params = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var params = $$($nesting, 'Opal').$destructure(arguments), before = params[0], after = params[1], match = Opal.yieldX(block, [before, after]); @@ -10087,159 +10169,186 @@ if (yielder == null) yielder = nil; slice.push(last_after); yielder.$yield(slice); } - }, TMP_83.$$s = self, TMP_83.$$arity = 1, TMP_83)); - }, TMP_Enumerable_slice_when_82.$$arity = 0); + ;}, $$89.$$s = self, $$89.$$arity = 1, $$89)); + }, $Enumerable_slice_when$88.$$arity = 0); - Opal.defn(self, '$sort', TMP_Enumerable_sort_84 = function $$sort() { - var TMP_85, self = this, $iter = TMP_Enumerable_sort_84.$$p, block = $iter || nil, ary = nil; + Opal.def(self, '$sort', $Enumerable_sort$90 = function $$sort() { + var $iter = $Enumerable_sort$90.$$p, block = $iter || nil, $$91, self = this, ary = nil; - if ($iter) TMP_Enumerable_sort_84.$$p = null; + if ($iter) $Enumerable_sort$90.$$p = null; + + if ($iter) $Enumerable_sort$90.$$p = null;; ary = self.$to_a(); if ((block !== nil)) { - } else { - block = $send(self, 'lambda', [], (TMP_85 = function(a, b){var self = TMP_85.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - return a['$<=>'](b)}, TMP_85.$$s = self, TMP_85.$$arity = 2, TMP_85)) + } else { + block = $lambda(($$91 = function(a, b){var self = $$91.$$s || this; + + + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + return a['$<=>'](b);}, $$91.$$s = self, $$91.$$arity = 2, $$91)) }; return $send(ary, 'sort', [], block.$to_proc()); - }, TMP_Enumerable_sort_84.$$arity = 0); + }, $Enumerable_sort$90.$$arity = 0); - Opal.defn(self, '$sort_by', TMP_Enumerable_sort_by_86 = function $$sort_by() { - var TMP_87, TMP_88, TMP_89, TMP_90, self = this, $iter = TMP_Enumerable_sort_by_86.$$p, block = $iter || nil, dup = nil; + Opal.def(self, '$sort_by', $Enumerable_sort_by$92 = function $$sort_by() { + var $iter = $Enumerable_sort_by$92.$$p, block = $iter || nil, $$93, $$94, $$95, $$96, self = this, dup = nil; - if ($iter) TMP_Enumerable_sort_by_86.$$p = null; + if ($iter) $Enumerable_sort_by$92.$$p = null; + + if ($iter) $Enumerable_sort_by$92.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["sort_by"], (TMP_87 = function(){var self = TMP_87.$$s || this; + } else { + return $send(self, 'enum_for', ["sort_by"], ($$93 = function(){var self = $$93.$$s || this; - return self.$enumerator_size()}, TMP_87.$$s = self, TMP_87.$$arity = 0, TMP_87)) + return self.$enumerator_size()}, $$93.$$s = self, $$93.$$arity = 0, $$93)) }; - dup = $send(self, 'map', [], (TMP_88 = function(){var self = TMP_88.$$s || this, arg = nil; + dup = $send(self, 'map', [], ($$94 = function(){var self = $$94.$$s || this, arg = nil; + + + arg = $$($nesting, 'Opal').$destructure(arguments); + return [Opal.yield1(block, arg), arg];}, $$94.$$s = self, $$94.$$arity = 0, $$94)); + $send(dup, 'sort!', [], ($$95 = function(a, b){var self = $$95.$$s || this; - arg = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); - return [Opal.yield1(block, arg), arg];}, TMP_88.$$s = self, TMP_88.$$arity = 0, TMP_88)); - $send(dup, 'sort!', [], (TMP_89 = function(a, b){var self = TMP_89.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - return (a[0])['$<=>'](b[0])}, TMP_89.$$s = self, TMP_89.$$arity = 2, TMP_89)); - return $send(dup, 'map!', [], (TMP_90 = function(i){var self = TMP_90.$$s || this; -if (i == null) i = nil; - return i[1]}, TMP_90.$$s = self, TMP_90.$$arity = 1, TMP_90)); - }, TMP_Enumerable_sort_by_86.$$arity = 0); + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + return (a[0])['$<=>'](b[0]);}, $$95.$$s = self, $$95.$$arity = 2, $$95)); + return $send(dup, 'map!', [], ($$96 = function(i){var self = $$96.$$s || this; + + + + if (i == null) { + i = nil; + }; + return i[1];;}, $$96.$$s = self, $$96.$$arity = 1, $$96)); + }, $Enumerable_sort_by$92.$$arity = 0); - Opal.defn(self, '$sum', TMP_Enumerable_sum_91 = function $$sum(initial) { - var TMP_92, self = this, $iter = TMP_Enumerable_sum_91.$$p, block = $iter || nil, result = nil; + Opal.def(self, '$sum', $Enumerable_sum$97 = function $$sum(initial) { + var $$98, $iter = $Enumerable_sum$97.$$p, $yield = $iter || nil, self = this, result = nil; + if ($iter) $Enumerable_sum$97.$$p = null; + + if (initial == null) { initial = 0; - } - if ($iter) TMP_Enumerable_sum_91.$$p = null; - + }; result = initial; - $send(self, 'each', [], (TMP_92 = function($a_rest){var self = TMP_92.$$s || this, args, item = nil; + $send(self, 'each', [], ($$98 = function($a){var self = $$98.$$s || this, $post_args, args, item = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ((block !== nil)) { - item = $send(block, 'call', Opal.to_a(args)) - } else { - item = Opal.const_get_relative($nesting, 'Opal').$destructure(args) - }; - return (result = $rb_plus(result, item));}, TMP_92.$$s = self, TMP_92.$$arity = -1, TMP_92)); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + item = (function() {if (($yield !== nil)) { + return Opal.yieldX($yield, Opal.to_a(args)); + } else { + return $$($nesting, 'Opal').$destructure(args) + }; return nil; })(); + return (result = $rb_plus(result, item));}, $$98.$$s = self, $$98.$$arity = -1, $$98)); return result; - }, TMP_Enumerable_sum_91.$$arity = -1); + }, $Enumerable_sum$97.$$arity = -1); - Opal.defn(self, '$take', TMP_Enumerable_take_93 = function $$take(num) { + Opal.def(self, '$take', $Enumerable_take$99 = function $$take(num) { var self = this; return self.$first(num) - }, TMP_Enumerable_take_93.$$arity = 1); + }, $Enumerable_take$99.$$arity = 1); - Opal.defn(self, '$take_while', TMP_Enumerable_take_while_94 = function $$take_while() {try { + Opal.def(self, '$take_while', $Enumerable_take_while$100 = function $$take_while() {try { - var TMP_95, self = this, $iter = TMP_Enumerable_take_while_94.$$p, block = $iter || nil, result = nil; + var $iter = $Enumerable_take_while$100.$$p, block = $iter || nil, $$101, self = this, result = nil; - if ($iter) TMP_Enumerable_take_while_94.$$p = null; + if ($iter) $Enumerable_take_while$100.$$p = null; + + if ($iter) $Enumerable_take_while$100.$$p = null;; if ($truthy(block)) { - } else { + } else { return self.$enum_for("take_while") }; result = []; - return $send(self, 'each', [], (TMP_95 = function($a_rest){var self = TMP_95.$$s || this, args, value = nil; + return $send(self, 'each', [], ($$101 = function($a){var self = $$101.$$s || this, $post_args, args, value = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - value = Opal.const_get_relative($nesting, 'Opal').$destructure(args); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + value = $$($nesting, 'Opal').$destructure(args); if ($truthy(Opal.yield1(block, value))) { - } else { + } else { Opal.ret(result) }; - return result.push(value);}, TMP_95.$$s = self, TMP_95.$$arity = -1, TMP_95)); + return result.push(value);;}, $$101.$$s = self, $$101.$$arity = -1, $$101)); } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Enumerable_take_while_94.$$arity = 0); + }, $Enumerable_take_while$100.$$arity = 0); - Opal.defn(self, '$uniq', TMP_Enumerable_uniq_96 = function $$uniq() { - var TMP_97, self = this, $iter = TMP_Enumerable_uniq_96.$$p, block = $iter || nil, hash = nil; + Opal.def(self, '$uniq', $Enumerable_uniq$102 = function $$uniq() { + var $iter = $Enumerable_uniq$102.$$p, block = $iter || nil, $$103, self = this, hash = nil; - if ($iter) TMP_Enumerable_uniq_96.$$p = null; + if ($iter) $Enumerable_uniq$102.$$p = null; + + if ($iter) $Enumerable_uniq$102.$$p = null;; hash = $hash2([], {}); - $send(self, 'each', [], (TMP_97 = function($a_rest){var self = TMP_97.$$s || this, args, value = nil, produced = nil, $writer = nil; + $send(self, 'each', [], ($$103 = function($a){var self = $$103.$$s || this, $post_args, args, value = nil, produced = nil, $writer = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - value = Opal.const_get_relative($nesting, 'Opal').$destructure(args); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + value = $$($nesting, 'Opal').$destructure(args); produced = (function() {if ((block !== nil)) { - return block.$call(value) - } else { + return Opal.yield1(block, value); + } else { return value }; return nil; })(); - if ($truthy(hash['$has_key?'](produced))) { + if ($truthy(hash['$key?'](produced))) { return nil - } else { + } else { $writer = [produced, value]; $send(hash, '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - };}, TMP_97.$$s = self, TMP_97.$$arity = -1, TMP_97)); + };}, $$103.$$s = self, $$103.$$arity = -1, $$103)); return hash.$values(); - }, TMP_Enumerable_uniq_96.$$arity = 0); + }, $Enumerable_uniq$102.$$arity = 0); Opal.alias(self, "to_a", "entries"); - Opal.defn(self, '$zip', TMP_Enumerable_zip_98 = function $$zip($a_rest) { - var self = this, others, $iter = TMP_Enumerable_zip_98.$$p, block = $iter || nil; + Opal.def(self, '$zip', $Enumerable_zip$104 = function $$zip($a) { + var $iter = $Enumerable_zip$104.$$p, block = $iter || nil, $post_args, others, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - others = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - others[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Enumerable_zip_98.$$p = null; - return $send(self.$to_a(), 'zip', Opal.to_a(others)) - }, TMP_Enumerable_zip_98.$$arity = -1); + if ($iter) $Enumerable_zip$104.$$p = null; + + + if ($iter) $Enumerable_zip$104.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + others = $post_args;; + return $send(self.$to_a(), 'zip', Opal.to_a(others)); + }, $Enumerable_zip$104.$$arity = -1); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/enumerator"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -10247,34 +10356,39 @@ Opal.modules["corelib/enumerator"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy; - Opal.add_stubs(['$require', '$include', '$allocate', '$new', '$to_proc', '$coerce_to', '$nil?', '$empty?', '$+', '$class', '$__send__', '$===', '$call', '$enum_for', '$size', '$destructure', '$inspect', '$[]', '$raise', '$yield', '$each', '$enumerator_size', '$respond_to?', '$try_convert', '$<', '$for']); + Opal.add_stubs(['$require', '$include', '$allocate', '$new', '$to_proc', '$coerce_to', '$nil?', '$empty?', '$+', '$class', '$__send__', '$===', '$call', '$enum_for', '$size', '$destructure', '$inspect', '$any?', '$[]', '$raise', '$yield', '$each', '$enumerator_size', '$respond_to?', '$try_convert', '$<', '$for']); self.$require("corelib/enumerable"); return (function($base, $super, $parent_nesting) { - function $Enumerator(){}; - var self = $Enumerator = $klass($base, $super, 'Enumerator', $Enumerator); + var self = $klass($base, $super, 'Enumerator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerator_for_1, TMP_Enumerator_initialize_2, TMP_Enumerator_each_3, TMP_Enumerator_size_4, TMP_Enumerator_with_index_5, TMP_Enumerator_inspect_7; + var $nesting = [self].concat($parent_nesting), $Enumerator_for$1, $Enumerator_initialize$2, $Enumerator_each$3, $Enumerator_size$4, $Enumerator_with_index$5, $Enumerator_inspect$7; - def.size = def.args = def.object = def.method = nil; + self.$$prototype.size = self.$$prototype.args = self.$$prototype.object = self.$$prototype.method = nil; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - def.$$is_enumerator = true; - Opal.defs(self, '$for', TMP_Enumerator_for_1 = function(object, method, $a_rest) { - var self = this, args, $iter = TMP_Enumerator_for_1.$$p, block = $iter || nil; + self.$include($$($nesting, 'Enumerable')); + self.$$prototype.$$is_enumerator = true; + Opal.defs(self, '$for', $Enumerator_for$1 = function(object, $a, $b) { + var $iter = $Enumerator_for$1.$$p, block = $iter || nil, $post_args, method, args, self = this; + if ($iter) $Enumerator_for$1.$$p = null; + + + if ($iter) $Enumerator_for$1.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + if ($post_args.length > 0) { + method = $post_args[0]; + $post_args.splice(0, 1); + } if (method == null) { method = "each"; - } - var $args_len = arguments.length, $rest_len = $args_len - 2; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 2; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 2] = arguments[$arg_idx]; - } - if ($iter) TMP_Enumerator_for_1.$$p = null; + }; + + args = $post_args;; var obj = self.$allocate(); @@ -10284,86 +10398,95 @@ Opal.modules["corelib/enumerator"] = function(Opal) { obj.args = args; return obj; + ; + }, $Enumerator_for$1.$$arity = -2); - }, TMP_Enumerator_for_1.$$arity = -2); - - Opal.defn(self, '$initialize', TMP_Enumerator_initialize_2 = function $$initialize($a_rest) { - var self = this, $iter = TMP_Enumerator_initialize_2.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Enumerator_initialize$2 = function $$initialize($a) { + var $iter = $Enumerator_initialize$2.$$p, block = $iter || nil, $post_args, self = this; - if ($iter) TMP_Enumerator_initialize_2.$$p = null; + if ($iter) $Enumerator_initialize$2.$$p = null; + + + if ($iter) $Enumerator_initialize$2.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; if ($truthy(block)) { - self.object = $send(Opal.const_get_relative($nesting, 'Generator'), 'new', [], block.$to_proc()); + self.object = $send($$($nesting, 'Generator'), 'new', [], block.$to_proc()); self.method = "each"; self.args = []; self.size = arguments[0] || nil; if ($truthy(self.size)) { - return (self.size = Opal.const_get_relative($nesting, 'Opal').$coerce_to(self.size, Opal.const_get_relative($nesting, 'Integer'), "to_int")) - } else { + return (self.size = $$($nesting, 'Opal').$coerce_to(self.size, $$($nesting, 'Integer'), "to_int")) + } else { return nil }; - } else { + } else { self.object = arguments[0]; self.method = arguments[1] || "each"; self.args = $slice.call(arguments, 2); return (self.size = nil); - } - }, TMP_Enumerator_initialize_2.$$arity = -1); + }; + }, $Enumerator_initialize$2.$$arity = -1); - Opal.defn(self, '$each', TMP_Enumerator_each_3 = function $$each($a_rest) { - var $b, self = this, args, $iter = TMP_Enumerator_each_3.$$p, block = $iter || nil; + Opal.def(self, '$each', $Enumerator_each$3 = function $$each($a) { + var $iter = $Enumerator_each$3.$$p, block = $iter || nil, $post_args, args, $b, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Enumerator_each_3.$$p = null; + if ($iter) $Enumerator_each$3.$$p = null; + + if ($iter) $Enumerator_each$3.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(($truthy($b = block['$nil?']()) ? args['$empty?']() : $b))) { return self}; args = $rb_plus(self.args, args); if ($truthy(block['$nil?']())) { return $send(self.$class(), 'new', [self.object, self.method].concat(Opal.to_a(args)))}; return $send(self.object, '__send__', [self.method].concat(Opal.to_a(args)), block.$to_proc()); - }, TMP_Enumerator_each_3.$$arity = -1); + }, $Enumerator_each$3.$$arity = -1); - Opal.defn(self, '$size', TMP_Enumerator_size_4 = function $$size() { + Opal.def(self, '$size', $Enumerator_size$4 = function $$size() { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Proc')['$==='](self.size))) { + if ($truthy($$($nesting, 'Proc')['$==='](self.size))) { return $send(self.size, 'call', Opal.to_a(self.args)) - } else { + } else { return self.size } - }, TMP_Enumerator_size_4.$$arity = 0); + }, $Enumerator_size$4.$$arity = 0); - Opal.defn(self, '$with_index', TMP_Enumerator_with_index_5 = function $$with_index(offset) { - var TMP_6, self = this, $iter = TMP_Enumerator_with_index_5.$$p, block = $iter || nil; + Opal.def(self, '$with_index', $Enumerator_with_index$5 = function $$with_index(offset) { + var $iter = $Enumerator_with_index$5.$$p, block = $iter || nil, $$6, self = this; + if ($iter) $Enumerator_with_index$5.$$p = null; + + + if ($iter) $Enumerator_with_index$5.$$p = null;; + if (offset == null) { offset = 0; - } - if ($iter) TMP_Enumerator_with_index_5.$$p = null; - - if ($truthy(offset)) { - offset = Opal.const_get_relative($nesting, 'Opal').$coerce_to(offset, Opal.const_get_relative($nesting, 'Integer'), "to_int") - } else { - offset = 0 }; + offset = (function() {if ($truthy(offset)) { + return $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int") + } else { + return 0 + }; return nil; })(); if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["with_index", offset], (TMP_6 = function(){var self = TMP_6.$$s || this; + } else { + return $send(self, 'enum_for', ["with_index", offset], ($$6 = function(){var self = $$6.$$s || this; - return self.$size()}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6)) + return self.$size()}, $$6.$$s = self, $$6.$$arity = 0, $$6)) }; var result, index = offset; self.$each.$$p = function() { - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), + var param = $$($nesting, 'Opal').$destructure(arguments), value = block(param, index); index++; @@ -10373,53 +10496,52 @@ Opal.modules["corelib/enumerator"] = function(Opal) { return self.$each(); ; - }, TMP_Enumerator_with_index_5.$$arity = -1); + }, $Enumerator_with_index$5.$$arity = -1); Opal.alias(self, "with_object", "each_with_object"); - Opal.defn(self, '$inspect', TMP_Enumerator_inspect_7 = function $$inspect() { + Opal.def(self, '$inspect', $Enumerator_inspect$7 = function $$inspect() { var self = this, result = nil; result = "" + "#<" + (self.$class()) + ": " + (self.object.$inspect()) + ":" + (self.method); - if ($truthy(self.args['$empty?']())) { - } else { - result = $rb_plus(result, "" + "(" + (self.args.$inspect()['$[]'](Opal.const_get_relative($nesting, 'Range').$new(1, -2))) + ")") - }; + if ($truthy(self.args['$any?']())) { + result = $rb_plus(result, "" + "(" + (self.args.$inspect()['$[]']($$($nesting, 'Range').$new(1, -2))) + ")")}; return $rb_plus(result, ">"); - }, TMP_Enumerator_inspect_7.$$arity = 0); + }, $Enumerator_inspect$7.$$arity = 0); (function($base, $super, $parent_nesting) { - function $Generator(){}; - var self = $Generator = $klass($base, $super, 'Generator', $Generator); + var self = $klass($base, $super, 'Generator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Generator_initialize_8, TMP_Generator_each_9; + var $nesting = [self].concat($parent_nesting), $Generator_initialize$8, $Generator_each$9; - def.block = nil; + self.$$prototype.block = nil; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); + self.$include($$($nesting, 'Enumerable')); - Opal.defn(self, '$initialize', TMP_Generator_initialize_8 = function $$initialize() { - var self = this, $iter = TMP_Generator_initialize_8.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Generator_initialize$8 = function $$initialize() { + var $iter = $Generator_initialize$8.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Generator_initialize_8.$$p = null; + if ($iter) $Generator_initialize$8.$$p = null; + + if ($iter) $Generator_initialize$8.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'LocalJumpError'), "no block given") + } else { + self.$raise($$($nesting, 'LocalJumpError'), "no block given") }; return (self.block = block); - }, TMP_Generator_initialize_8.$$arity = 0); - return (Opal.defn(self, '$each', TMP_Generator_each_9 = function $$each($a_rest) { - var self = this, args, $iter = TMP_Generator_each_9.$$p, block = $iter || nil, yielder = nil; + }, $Generator_initialize$8.$$arity = 0); + return (Opal.def(self, '$each', $Generator_each$9 = function $$each($a) { + var $iter = $Generator_each$9.$$p, block = $iter || nil, $post_args, args, self = this, yielder = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Generator_each_9.$$p = null; + if ($iter) $Generator_each$9.$$p = null; + + + if ($iter) $Generator_each$9.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); - yielder = $send(Opal.const_get_relative($nesting, 'Yielder'), 'new', [], block.$to_proc()); + args = $post_args;; + yielder = $send($$($nesting, 'Yielder'), 'new', [], block.$to_proc()); try { args.unshift(yielder); @@ -10436,33 +10558,34 @@ Opal.modules["corelib/enumerator"] = function(Opal) { } ; return self; - }, TMP_Generator_each_9.$$arity = -1), nil) && 'each'; + }, $Generator_each$9.$$arity = -1), nil) && 'each'; })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Yielder(){}; - var self = $Yielder = $klass($base, $super, 'Yielder', $Yielder); + var self = $klass($base, $super, 'Yielder'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Yielder_initialize_10, TMP_Yielder_yield_11, TMP_Yielder_$lt$lt_12; + var $nesting = [self].concat($parent_nesting), $Yielder_initialize$10, $Yielder_yield$11, $Yielder_$lt$lt$12; - def.block = nil; + self.$$prototype.block = nil; - Opal.defn(self, '$initialize', TMP_Yielder_initialize_10 = function $$initialize() { - var self = this, $iter = TMP_Yielder_initialize_10.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Yielder_initialize$10 = function $$initialize() { + var $iter = $Yielder_initialize$10.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Yielder_initialize_10.$$p = null; - return (self.block = block) - }, TMP_Yielder_initialize_10.$$arity = 0); + if ($iter) $Yielder_initialize$10.$$p = null; + + + if ($iter) $Yielder_initialize$10.$$p = null;; + return (self.block = block); + }, $Yielder_initialize$10.$$arity = 0); - Opal.defn(self, '$yield', TMP_Yielder_yield_11 = function($a_rest) { - var self = this, values; + Opal.def(self, '$yield', $Yielder_yield$11 = function($a) { + var $post_args, values, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - values = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - values[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + values = $post_args;; var value = Opal.yieldX(self.block, values); @@ -10471,207 +10594,235 @@ Opal.modules["corelib/enumerator"] = function(Opal) { } return value; - - }, TMP_Yielder_yield_11.$$arity = -1); - return (Opal.defn(self, '$<<', TMP_Yielder_$lt$lt_12 = function($a_rest) { - var self = this, values; + ; + }, $Yielder_yield$11.$$arity = -1); + return (Opal.def(self, '$<<', $Yielder_$lt$lt$12 = function($a) { + var $post_args, values, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - values = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - values[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + values = $post_args;; $send(self, 'yield', Opal.to_a(values)); return self; - }, TMP_Yielder_$lt$lt_12.$$arity = -1), nil) && '<<'; + }, $Yielder_$lt$lt$12.$$arity = -1), nil) && '<<'; })($nesting[0], null, $nesting); return (function($base, $super, $parent_nesting) { - function $Lazy(){}; - var self = $Lazy = $klass($base, $super, 'Lazy', $Lazy); + var self = $klass($base, $super, 'Lazy'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Lazy_initialize_13, TMP_Lazy_lazy_16, TMP_Lazy_collect_17, TMP_Lazy_collect_concat_19, TMP_Lazy_drop_24, TMP_Lazy_drop_while_25, TMP_Lazy_enum_for_27, TMP_Lazy_find_all_28, TMP_Lazy_grep_30, TMP_Lazy_reject_33, TMP_Lazy_take_36, TMP_Lazy_take_while_37, TMP_Lazy_inspect_39; + var $nesting = [self].concat($parent_nesting), $Lazy_initialize$13, $Lazy_lazy$16, $Lazy_collect$17, $Lazy_collect_concat$19, $Lazy_drop$23, $Lazy_drop_while$25, $Lazy_enum_for$27, $Lazy_find_all$28, $Lazy_grep$30, $Lazy_reject$33, $Lazy_take$35, $Lazy_take_while$37, $Lazy_inspect$39; - def.enumerator = nil; + self.$$prototype.enumerator = nil; (function($base, $super, $parent_nesting) { - function $StopLazyError(){}; - var self = $StopLazyError = $klass($base, $super, 'StopLazyError', $StopLazyError); + var self = $klass($base, $super, 'StopLazyError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'Exception'), $nesting); + })($nesting[0], $$($nesting, 'Exception'), $nesting); - Opal.defn(self, '$initialize', TMP_Lazy_initialize_13 = function $$initialize(object, size) { - var TMP_14, self = this, $iter = TMP_Lazy_initialize_13.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Lazy_initialize$13 = function $$initialize(object, size) { + var $iter = $Lazy_initialize$13.$$p, block = $iter || nil, $$14, self = this; + if ($iter) $Lazy_initialize$13.$$p = null; + + + if ($iter) $Lazy_initialize$13.$$p = null;; + if (size == null) { size = nil; - } - if ($iter) TMP_Lazy_initialize_13.$$p = null; - + }; if ((block !== nil)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy new without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy new without a block") }; self.enumerator = object; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Lazy_initialize_13, false), [size], (TMP_14 = function(yielder, $a_rest){var self = TMP_14.$$s || this, each_args, TMP_15; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Lazy_initialize$13, false), [size], ($$14 = function(yielder, $a){var self = $$14.$$s || this, $post_args, each_args, $$15; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - each_args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - each_args[$arg_idx - 1] = arguments[$arg_idx]; - }if (yielder == null) yielder = nil; + + if (yielder == null) { + yielder = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + each_args = $post_args;; try { - return $send(object, 'each', Opal.to_a(each_args), (TMP_15 = function($a_rest){var self = TMP_15.$$s || this, args; + return $send(object, 'each', Opal.to_a(each_args), ($$15 = function($b){var self = $$15.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - args.unshift(yielder); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + + args.unshift(yielder); - Opal.yieldX(block, args); - }, TMP_15.$$s = self, TMP_15.$$arity = -1, TMP_15)) + Opal.yieldX(block, args); + ;}, $$15.$$s = self, $$15.$$arity = -1, $$15)) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'Exception')])) { + if (Opal.rescue($err, [$$($nesting, 'Exception')])) { try { return nil } finally { Opal.pop_exception() } } else { throw $err; } - };}, TMP_14.$$s = self, TMP_14.$$arity = -2, TMP_14)); - }, TMP_Lazy_initialize_13.$$arity = -2); + };}, $$14.$$s = self, $$14.$$arity = -2, $$14)); + }, $Lazy_initialize$13.$$arity = -2); Opal.alias(self, "force", "to_a"); - Opal.defn(self, '$lazy', TMP_Lazy_lazy_16 = function $$lazy() { + Opal.def(self, '$lazy', $Lazy_lazy$16 = function $$lazy() { var self = this; return self - }, TMP_Lazy_lazy_16.$$arity = 0); + }, $Lazy_lazy$16.$$arity = 0); - Opal.defn(self, '$collect', TMP_Lazy_collect_17 = function $$collect() { - var TMP_18, self = this, $iter = TMP_Lazy_collect_17.$$p, block = $iter || nil; + Opal.def(self, '$collect', $Lazy_collect$17 = function $$collect() { + var $iter = $Lazy_collect$17.$$p, block = $iter || nil, $$18, self = this; - if ($iter) TMP_Lazy_collect_17.$$p = null; + if ($iter) $Lazy_collect$17.$$p = null; + + if ($iter) $Lazy_collect$17.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy map without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy map without a block") }; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, self.$enumerator_size()], (TMP_18 = function(enum$, $a_rest){var self = TMP_18.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, self.$enumerator_size()], ($$18 = function(enum$, $a){var self = $$18.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + var value = Opal.yieldX(block, args); enum$.$yield(value); - }, TMP_18.$$s = self, TMP_18.$$arity = -2, TMP_18)); - }, TMP_Lazy_collect_17.$$arity = 0); + ;}, $$18.$$s = self, $$18.$$arity = -2, $$18)); + }, $Lazy_collect$17.$$arity = 0); - Opal.defn(self, '$collect_concat', TMP_Lazy_collect_concat_19 = function $$collect_concat() { - var TMP_20, self = this, $iter = TMP_Lazy_collect_concat_19.$$p, block = $iter || nil; + Opal.def(self, '$collect_concat', $Lazy_collect_concat$19 = function $$collect_concat() { + var $iter = $Lazy_collect_concat$19.$$p, block = $iter || nil, $$20, self = this; - if ($iter) TMP_Lazy_collect_concat_19.$$p = null; + if ($iter) $Lazy_collect_concat$19.$$p = null; + + if ($iter) $Lazy_collect_concat$19.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy map without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy map without a block") }; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_20 = function(enum$, $a_rest){var self = TMP_20.$$s || this, args, TMP_21, TMP_22; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$20 = function(enum$, $a){var self = $$20.$$s || this, $post_args, args, $$21, $$22; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + var value = Opal.yieldX(block, args); if ((value)['$respond_to?']("force") && (value)['$respond_to?']("each")) { - $send((value), 'each', [], (TMP_21 = function(v){var self = TMP_21.$$s || this; -if (v == null) v = nil; - return enum$.$yield(v)}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21)) + $send((value), 'each', [], ($$21 = function(v){var self = $$21.$$s || this; + + + + if (v == null) { + v = nil; + }; + return enum$.$yield(v);}, $$21.$$s = self, $$21.$$arity = 1, $$21)) } else { - var array = Opal.const_get_relative($nesting, 'Opal').$try_convert(value, Opal.const_get_relative($nesting, 'Array'), "to_ary"); + var array = $$($nesting, 'Opal').$try_convert(value, $$($nesting, 'Array'), "to_ary"); if (array === nil) { enum$.$yield(value); } else { - $send((value), 'each', [], (TMP_22 = function(v){var self = TMP_22.$$s || this; -if (v == null) v = nil; - return enum$.$yield(v)}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)); + $send((value), 'each', [], ($$22 = function(v){var self = $$22.$$s || this; + + + + if (v == null) { + v = nil; + }; + return enum$.$yield(v);}, $$22.$$s = self, $$22.$$arity = 1, $$22)); } } - }, TMP_20.$$s = self, TMP_20.$$arity = -2, TMP_20)); - }, TMP_Lazy_collect_concat_19.$$arity = 0); + ;}, $$20.$$s = self, $$20.$$arity = -2, $$20)); + }, $Lazy_collect_concat$19.$$arity = 0); - Opal.defn(self, '$drop', TMP_Lazy_drop_24 = function $$drop(n) { - var TMP_23, self = this, current_size = nil, set_size = nil, dropped = nil; + Opal.def(self, '$drop', $Lazy_drop$23 = function $$drop(n) { + var $$24, self = this, current_size = nil, set_size = nil, dropped = nil; - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); if ($truthy($rb_lt(n, 0))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "attempt to drop negative size")}; + self.$raise($$($nesting, 'ArgumentError'), "attempt to drop negative size")}; current_size = self.$enumerator_size(); - set_size = (function() {if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](current_size))) { + set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) { if ($truthy($rb_lt(n, current_size))) { return n - } else { + } else { return current_size } - } else { + } else { return current_size }; return nil; })(); dropped = 0; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, set_size], (TMP_23 = function(enum$, $a_rest){var self = TMP_23.$$s || this, args; - - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - if ($truthy($rb_lt(dropped, n))) { + return $send($$($nesting, 'Lazy'), 'new', [self, set_size], ($$24 = function(enum$, $a){var self = $$24.$$s || this, $post_args, args; + + + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + if ($truthy($rb_lt(dropped, n))) { return (dropped = $rb_plus(dropped, 1)) - } else { + } else { return $send(enum$, 'yield', Opal.to_a(args)) - }}, TMP_23.$$s = self, TMP_23.$$arity = -2, TMP_23)); - }, TMP_Lazy_drop_24.$$arity = 1); + };}, $$24.$$s = self, $$24.$$arity = -2, $$24)); + }, $Lazy_drop$23.$$arity = 1); - Opal.defn(self, '$drop_while', TMP_Lazy_drop_while_25 = function $$drop_while() { - var TMP_26, self = this, $iter = TMP_Lazy_drop_while_25.$$p, block = $iter || nil, succeeding = nil; + Opal.def(self, '$drop_while', $Lazy_drop_while$25 = function $$drop_while() { + var $iter = $Lazy_drop_while$25.$$p, block = $iter || nil, $$26, self = this, succeeding = nil; - if ($iter) TMP_Lazy_drop_while_25.$$p = null; + if ($iter) $Lazy_drop_while$25.$$p = null; + + if ($iter) $Lazy_drop_while$25.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy drop_while without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy drop_while without a block") }; succeeding = true; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_26 = function(enum$, $a_rest){var self = TMP_26.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$26 = function(enum$, $a){var self = $$26.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - if ($truthy(succeeding)) { + + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + if ($truthy(succeeding)) { var value = Opal.yieldX(block, args); @@ -10681,69 +10832,86 @@ if (v == null) v = nil; $send(enum$, 'yield', Opal.to_a(args)); } - } else { + } else { return $send(enum$, 'yield', Opal.to_a(args)) - }}, TMP_26.$$s = self, TMP_26.$$arity = -2, TMP_26)); - }, TMP_Lazy_drop_while_25.$$arity = 0); + };}, $$26.$$s = self, $$26.$$arity = -2, $$26)); + }, $Lazy_drop_while$25.$$arity = 0); - Opal.defn(self, '$enum_for', TMP_Lazy_enum_for_27 = function $$enum_for(method, $a_rest) { - var self = this, args, $iter = TMP_Lazy_enum_for_27.$$p, block = $iter || nil; + Opal.def(self, '$enum_for', $Lazy_enum_for$27 = function $$enum_for($a, $b) { + var $iter = $Lazy_enum_for$27.$$p, block = $iter || nil, $post_args, method, args, self = this; + if ($iter) $Lazy_enum_for$27.$$p = null; + + + if ($iter) $Lazy_enum_for$27.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + if ($post_args.length > 0) { + method = $post_args[0]; + $post_args.splice(0, 1); + } if (method == null) { method = "each"; - } - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Lazy_enum_for_27.$$p = null; - return $send(self.$class(), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()) - }, TMP_Lazy_enum_for_27.$$arity = -1); + }; + + args = $post_args;; + return $send(self.$class(), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()); + }, $Lazy_enum_for$27.$$arity = -1); - Opal.defn(self, '$find_all', TMP_Lazy_find_all_28 = function $$find_all() { - var TMP_29, self = this, $iter = TMP_Lazy_find_all_28.$$p, block = $iter || nil; + Opal.def(self, '$find_all', $Lazy_find_all$28 = function $$find_all() { + var $iter = $Lazy_find_all$28.$$p, block = $iter || nil, $$29, self = this; - if ($iter) TMP_Lazy_find_all_28.$$p = null; + if ($iter) $Lazy_find_all$28.$$p = null; + + if ($iter) $Lazy_find_all$28.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy select without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy select without a block") }; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_29 = function(enum$, $a_rest){var self = TMP_29.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$29 = function(enum$, $a){var self = $$29.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + var value = Opal.yieldX(block, args); if ($truthy(value)) { $send(enum$, 'yield', Opal.to_a(args)); } - }, TMP_29.$$s = self, TMP_29.$$arity = -2, TMP_29)); - }, TMP_Lazy_find_all_28.$$arity = 0); + ;}, $$29.$$s = self, $$29.$$arity = -2, $$29)); + }, $Lazy_find_all$28.$$arity = 0); Opal.alias(self, "flat_map", "collect_concat"); - Opal.defn(self, '$grep', TMP_Lazy_grep_30 = function $$grep(pattern) { - var TMP_31, TMP_32, self = this, $iter = TMP_Lazy_grep_30.$$p, block = $iter || nil; + Opal.def(self, '$grep', $Lazy_grep$30 = function $$grep(pattern) { + var $iter = $Lazy_grep$30.$$p, block = $iter || nil, $$31, $$32, self = this; - if ($iter) TMP_Lazy_grep_30.$$p = null; + if ($iter) $Lazy_grep$30.$$p = null; + + + if ($iter) $Lazy_grep$30.$$p = null;; if ($truthy(block)) { - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_31 = function(enum$, $a_rest){var self = TMP_31.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$31 = function(enum$, $a){var self = $$31.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(args), + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + + var param = $$($nesting, 'Opal').$destructure(args), value = pattern['$==='](param); if ($truthy(value)) { @@ -10751,129 +10919,145 @@ if (v == null) v = nil; enum$.$yield(Opal.yield1(block, param)); } - }, TMP_31.$$s = self, TMP_31.$$arity = -2, TMP_31)) - } else { - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_32 = function(enum$, $a_rest){var self = TMP_32.$$s || this, args; + ;}, $$31.$$s = self, $$31.$$arity = -2, $$31)) + } else { + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$32 = function(enum$, $a){var self = $$32.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - var param = Opal.const_get_relative($nesting, 'Opal').$destructure(args), + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + + var param = $$($nesting, 'Opal').$destructure(args), value = pattern['$==='](param); if ($truthy(value)) { enum$.$yield(param); } - }, TMP_32.$$s = self, TMP_32.$$arity = -2, TMP_32)) - } - }, TMP_Lazy_grep_30.$$arity = 1); + ;}, $$32.$$s = self, $$32.$$arity = -2, $$32)) + }; + }, $Lazy_grep$30.$$arity = 1); Opal.alias(self, "map", "collect"); Opal.alias(self, "select", "find_all"); - Opal.defn(self, '$reject', TMP_Lazy_reject_33 = function $$reject() { - var TMP_34, self = this, $iter = TMP_Lazy_reject_33.$$p, block = $iter || nil; + Opal.def(self, '$reject', $Lazy_reject$33 = function $$reject() { + var $iter = $Lazy_reject$33.$$p, block = $iter || nil, $$34, self = this; - if ($iter) TMP_Lazy_reject_33.$$p = null; + if ($iter) $Lazy_reject$33.$$p = null; + + if ($iter) $Lazy_reject$33.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy reject without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy reject without a block") }; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_34 = function(enum$, $a_rest){var self = TMP_34.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$34 = function(enum$, $a){var self = $$34.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + var value = Opal.yieldX(block, args); if ($falsy(value)) { $send(enum$, 'yield', Opal.to_a(args)); } - }, TMP_34.$$s = self, TMP_34.$$arity = -2, TMP_34)); - }, TMP_Lazy_reject_33.$$arity = 0); + ;}, $$34.$$s = self, $$34.$$arity = -2, $$34)); + }, $Lazy_reject$33.$$arity = 0); - Opal.defn(self, '$take', TMP_Lazy_take_36 = function $$take(n) { - var TMP_35, self = this, current_size = nil, set_size = nil, taken = nil; + Opal.def(self, '$take', $Lazy_take$35 = function $$take(n) { + var $$36, self = this, current_size = nil, set_size = nil, taken = nil; - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); if ($truthy($rb_lt(n, 0))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "attempt to take negative size")}; + self.$raise($$($nesting, 'ArgumentError'), "attempt to take negative size")}; current_size = self.$enumerator_size(); - set_size = (function() {if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](current_size))) { + set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) { if ($truthy($rb_lt(n, current_size))) { return n - } else { + } else { return current_size } - } else { + } else { return current_size }; return nil; })(); taken = 0; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, set_size], (TMP_35 = function(enum$, $a_rest){var self = TMP_35.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, set_size], ($$36 = function(enum$, $a){var self = $$36.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; - if ($truthy($rb_lt(taken, n))) { + + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + if ($truthy($rb_lt(taken, n))) { $send(enum$, 'yield', Opal.to_a(args)); return (taken = $rb_plus(taken, 1)); - } else { - return self.$raise(Opal.const_get_relative($nesting, 'StopLazyError')) - }}, TMP_35.$$s = self, TMP_35.$$arity = -2, TMP_35)); - }, TMP_Lazy_take_36.$$arity = 1); + } else { + return self.$raise($$($nesting, 'StopLazyError')) + };}, $$36.$$s = self, $$36.$$arity = -2, $$36)); + }, $Lazy_take$35.$$arity = 1); - Opal.defn(self, '$take_while', TMP_Lazy_take_while_37 = function $$take_while() { - var TMP_38, self = this, $iter = TMP_Lazy_take_while_37.$$p, block = $iter || nil; + Opal.def(self, '$take_while', $Lazy_take_while$37 = function $$take_while() { + var $iter = $Lazy_take_while$37.$$p, block = $iter || nil, $$38, self = this; - if ($iter) TMP_Lazy_take_while_37.$$p = null; + if ($iter) $Lazy_take_while$37.$$p = null; + + if ($iter) $Lazy_take_while$37.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to call lazy take_while without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy take_while without a block") }; - return $send(Opal.const_get_relative($nesting, 'Lazy'), 'new', [self, nil], (TMP_38 = function(enum$, $a_rest){var self = TMP_38.$$s || this, args; + return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$38 = function(enum$, $a){var self = $$38.$$s || this, $post_args, args; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - }if (enum$ == null) enum$ = nil; + + if (enum$ == null) { + enum$ = nil; + }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + var value = Opal.yieldX(block, args); if ($truthy(value)) { $send(enum$, 'yield', Opal.to_a(args)); } else { - self.$raise(Opal.const_get_relative($nesting, 'StopLazyError')); + self.$raise($$($nesting, 'StopLazyError')); } - }, TMP_38.$$s = self, TMP_38.$$arity = -2, TMP_38)); - }, TMP_Lazy_take_while_37.$$arity = 0); + ;}, $$38.$$s = self, $$38.$$arity = -2, $$38)); + }, $Lazy_take_while$37.$$arity = 0); Opal.alias(self, "to_enum", "enum_for"); - return (Opal.defn(self, '$inspect', TMP_Lazy_inspect_39 = function $$inspect() { + return (Opal.def(self, '$inspect', $Lazy_inspect$39 = function $$inspect() { var self = this; return "" + "#<" + (self.$class()) + ": " + (self.enumerator.$inspect()) + ">" - }, TMP_Lazy_inspect_39.$$arity = 0), nil) && 'inspect'; + }, $Lazy_inspect$39.$$arity = 0), nil) && 'inspect'; })($nesting[0], self, $nesting); })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/numeric"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -10890,284 +11074,309 @@ Opal.modules["corelib/numeric"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - Opal.add_stubs(['$require', '$include', '$instance_of?', '$class', '$Float', '$coerce', '$===', '$raise', '$__send__', '$equal?', '$-', '$*', '$div', '$<', '$-@', '$ceil', '$to_f', '$denominator', '$to_r', '$==', '$floor', '$/', '$%', '$Complex', '$zero?', '$numerator', '$abs', '$arg', '$coerce_to!', '$round', '$to_i', '$truncate', '$>']); + Opal.add_stubs(['$require', '$include', '$instance_of?', '$class', '$Float', '$respond_to?', '$coerce', '$__send__', '$===', '$raise', '$equal?', '$-', '$*', '$div', '$<', '$-@', '$ceil', '$to_f', '$denominator', '$to_r', '$==', '$floor', '$/', '$%', '$Complex', '$zero?', '$numerator', '$abs', '$arg', '$coerce_to!', '$round', '$to_i', '$truncate', '$>']); self.$require("corelib/comparable"); return (function($base, $super, $parent_nesting) { - function $Numeric(){}; - var self = $Numeric = $klass($base, $super, 'Numeric', $Numeric); + var self = $klass($base, $super, 'Numeric'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Numeric_coerce_1, TMP_Numeric___coerced___2, TMP_Numeric_$lt$eq$gt_3, TMP_Numeric_$$_4, TMP_Numeric_$$_5, TMP_Numeric_$_6, TMP_Numeric_abs_7, TMP_Numeric_abs2_8, TMP_Numeric_angle_9, TMP_Numeric_ceil_10, TMP_Numeric_conj_11, TMP_Numeric_denominator_12, TMP_Numeric_div_13, TMP_Numeric_divmod_14, TMP_Numeric_fdiv_15, TMP_Numeric_floor_16, TMP_Numeric_i_17, TMP_Numeric_imag_18, TMP_Numeric_integer$q_19, TMP_Numeric_nonzero$q_20, TMP_Numeric_numerator_21, TMP_Numeric_polar_22, TMP_Numeric_quo_23, TMP_Numeric_real_24, TMP_Numeric_real$q_25, TMP_Numeric_rect_26, TMP_Numeric_round_27, TMP_Numeric_to_c_28, TMP_Numeric_to_int_29, TMP_Numeric_truncate_30, TMP_Numeric_zero$q_31, TMP_Numeric_positive$q_32, TMP_Numeric_negative$q_33, TMP_Numeric_dup_34, TMP_Numeric_clone_35; + var $nesting = [self].concat($parent_nesting), $Numeric_coerce$1, $Numeric___coerced__$2, $Numeric_$lt_eq_gt$3, $Numeric_$plus$$4, $Numeric_$minus$$5, $Numeric_$percent$6, $Numeric_abs$7, $Numeric_abs2$8, $Numeric_angle$9, $Numeric_ceil$10, $Numeric_conj$11, $Numeric_denominator$12, $Numeric_div$13, $Numeric_divmod$14, $Numeric_fdiv$15, $Numeric_floor$16, $Numeric_i$17, $Numeric_imag$18, $Numeric_integer$ques$19, $Numeric_nonzero$ques$20, $Numeric_numerator$21, $Numeric_polar$22, $Numeric_quo$23, $Numeric_real$24, $Numeric_real$ques$25, $Numeric_rect$26, $Numeric_round$27, $Numeric_to_c$28, $Numeric_to_int$29, $Numeric_truncate$30, $Numeric_zero$ques$31, $Numeric_positive$ques$32, $Numeric_negative$ques$33, $Numeric_dup$34, $Numeric_clone$35, $Numeric_finite$ques$36, $Numeric_infinite$ques$37; - self.$include(Opal.const_get_relative($nesting, 'Comparable')); + self.$include($$($nesting, 'Comparable')); - Opal.defn(self, '$coerce', TMP_Numeric_coerce_1 = function $$coerce(other) { + Opal.def(self, '$coerce', $Numeric_coerce$1 = function $$coerce(other) { var self = this; if ($truthy(other['$instance_of?'](self.$class()))) { return [other, self]}; return [self.$Float(other), self.$Float(self)]; - }, TMP_Numeric_coerce_1.$$arity = 1); + }, $Numeric_coerce$1.$$arity = 1); - Opal.defn(self, '$__coerced__', TMP_Numeric___coerced___2 = function $$__coerced__(method, other) { + Opal.def(self, '$__coerced__', $Numeric___coerced__$2 = function $$__coerced__(method, other) { var $a, $b, self = this, a = nil, b = nil, $case = nil; - - - try { - $b = other.$coerce(self), $a = Opal.to_ary($b), (a = ($a[0] == null ? nil : $a[0])), (b = ($a[1] == null ? nil : $a[1])), $b - } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'StandardError')])) { - try { - $case = method; - if ("+"['$===']($case) || "-"['$===']($case) || "*"['$===']($case) || "/"['$===']($case) || "%"['$===']($case) || "&"['$===']($case) || "|"['$===']($case) || "^"['$===']($case) || "**"['$===']($case)) {self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerce into Numeric")} - else if (">"['$===']($case) || ">="['$===']($case) || "<"['$===']($case) || "<="['$===']($case) || "<=>"['$===']($case)) {self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")} - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - return a.$__send__(method, b); - }, TMP_Numeric___coerced___2.$$arity = 2); + if ($truthy(other['$respond_to?']("coerce"))) { + + $b = other.$coerce(self), $a = Opal.to_ary($b), (a = ($a[0] == null ? nil : $a[0])), (b = ($a[1] == null ? nil : $a[1])), $b; + return a.$__send__(method, b); + } else { + return (function() {$case = method; + if ("+"['$===']($case) || "-"['$===']($case) || "*"['$===']($case) || "/"['$===']($case) || "%"['$===']($case) || "&"['$===']($case) || "|"['$===']($case) || "^"['$===']($case) || "**"['$===']($case)) {return self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Numeric")} + else if (">"['$===']($case) || ">="['$===']($case) || "<"['$===']($case) || "<="['$===']($case) || "<=>"['$===']($case)) {return self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")} + else { return nil }})() + } + }, $Numeric___coerced__$2.$$arity = 2); - Opal.defn(self, '$<=>', TMP_Numeric_$lt$eq$gt_3 = function(other) { + Opal.def(self, '$<=>', $Numeric_$lt_eq_gt$3 = function(other) { var self = this; if ($truthy(self['$equal?'](other))) { return 0}; return nil; - }, TMP_Numeric_$lt$eq$gt_3.$$arity = 1); + }, $Numeric_$lt_eq_gt$3.$$arity = 1); - Opal.defn(self, '$+@', TMP_Numeric_$$_4 = function() { + Opal.def(self, '$+@', $Numeric_$plus$$4 = function() { var self = this; return self - }, TMP_Numeric_$$_4.$$arity = 0); + }, $Numeric_$plus$$4.$$arity = 0); - Opal.defn(self, '$-@', TMP_Numeric_$$_5 = function() { + Opal.def(self, '$-@', $Numeric_$minus$$5 = function() { var self = this; return $rb_minus(0, self) - }, TMP_Numeric_$$_5.$$arity = 0); + }, $Numeric_$minus$$5.$$arity = 0); - Opal.defn(self, '$%', TMP_Numeric_$_6 = function(other) { + Opal.def(self, '$%', $Numeric_$percent$6 = function(other) { var self = this; return $rb_minus(self, $rb_times(other, self.$div(other))) - }, TMP_Numeric_$_6.$$arity = 1); + }, $Numeric_$percent$6.$$arity = 1); - Opal.defn(self, '$abs', TMP_Numeric_abs_7 = function $$abs() { + Opal.def(self, '$abs', $Numeric_abs$7 = function $$abs() { var self = this; if ($rb_lt(self, 0)) { return self['$-@']() - } else { + } else { return self } - }, TMP_Numeric_abs_7.$$arity = 0); + }, $Numeric_abs$7.$$arity = 0); - Opal.defn(self, '$abs2', TMP_Numeric_abs2_8 = function $$abs2() { + Opal.def(self, '$abs2', $Numeric_abs2$8 = function $$abs2() { var self = this; return $rb_times(self, self) - }, TMP_Numeric_abs2_8.$$arity = 0); + }, $Numeric_abs2$8.$$arity = 0); - Opal.defn(self, '$angle', TMP_Numeric_angle_9 = function $$angle() { + Opal.def(self, '$angle', $Numeric_angle$9 = function $$angle() { var self = this; if ($rb_lt(self, 0)) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Math'), 'PI') - } else { + return $$$($$($nesting, 'Math'), 'PI') + } else { return 0 } - }, TMP_Numeric_angle_9.$$arity = 0); + }, $Numeric_angle$9.$$arity = 0); Opal.alias(self, "arg", "angle"); - Opal.defn(self, '$ceil', TMP_Numeric_ceil_10 = function $$ceil() { + Opal.def(self, '$ceil', $Numeric_ceil$10 = function $$ceil(ndigits) { var self = this; - return self.$to_f().$ceil() - }, TMP_Numeric_ceil_10.$$arity = 0); + + + if (ndigits == null) { + ndigits = 0; + }; + return self.$to_f().$ceil(ndigits); + }, $Numeric_ceil$10.$$arity = -1); - Opal.defn(self, '$conj', TMP_Numeric_conj_11 = function $$conj() { + Opal.def(self, '$conj', $Numeric_conj$11 = function $$conj() { var self = this; return self - }, TMP_Numeric_conj_11.$$arity = 0); + }, $Numeric_conj$11.$$arity = 0); Opal.alias(self, "conjugate", "conj"); - Opal.defn(self, '$denominator', TMP_Numeric_denominator_12 = function $$denominator() { + Opal.def(self, '$denominator', $Numeric_denominator$12 = function $$denominator() { var self = this; return self.$to_r().$denominator() - }, TMP_Numeric_denominator_12.$$arity = 0); + }, $Numeric_denominator$12.$$arity = 0); - Opal.defn(self, '$div', TMP_Numeric_div_13 = function $$div(other) { + Opal.def(self, '$div', $Numeric_div$13 = function $$div(other) { var self = this; if (other['$=='](0)) { - self.$raise(Opal.const_get_relative($nesting, 'ZeroDivisionError'), "divided by o")}; + self.$raise($$($nesting, 'ZeroDivisionError'), "divided by o")}; return $rb_divide(self, other).$floor(); - }, TMP_Numeric_div_13.$$arity = 1); + }, $Numeric_div$13.$$arity = 1); - Opal.defn(self, '$divmod', TMP_Numeric_divmod_14 = function $$divmod(other) { + Opal.def(self, '$divmod', $Numeric_divmod$14 = function $$divmod(other) { var self = this; return [self.$div(other), self['$%'](other)] - }, TMP_Numeric_divmod_14.$$arity = 1); + }, $Numeric_divmod$14.$$arity = 1); - Opal.defn(self, '$fdiv', TMP_Numeric_fdiv_15 = function $$fdiv(other) { + Opal.def(self, '$fdiv', $Numeric_fdiv$15 = function $$fdiv(other) { var self = this; return $rb_divide(self.$to_f(), other) - }, TMP_Numeric_fdiv_15.$$arity = 1); + }, $Numeric_fdiv$15.$$arity = 1); - Opal.defn(self, '$floor', TMP_Numeric_floor_16 = function $$floor() { + Opal.def(self, '$floor', $Numeric_floor$16 = function $$floor(ndigits) { var self = this; - return self.$to_f().$floor() - }, TMP_Numeric_floor_16.$$arity = 0); + + + if (ndigits == null) { + ndigits = 0; + }; + return self.$to_f().$floor(ndigits); + }, $Numeric_floor$16.$$arity = -1); - Opal.defn(self, '$i', TMP_Numeric_i_17 = function $$i() { + Opal.def(self, '$i', $Numeric_i$17 = function $$i() { var self = this; return self.$Complex(0, self) - }, TMP_Numeric_i_17.$$arity = 0); + }, $Numeric_i$17.$$arity = 0); - Opal.defn(self, '$imag', TMP_Numeric_imag_18 = function $$imag() { + Opal.def(self, '$imag', $Numeric_imag$18 = function $$imag() { var self = this; return 0 - }, TMP_Numeric_imag_18.$$arity = 0); + }, $Numeric_imag$18.$$arity = 0); Opal.alias(self, "imaginary", "imag"); - Opal.defn(self, '$integer?', TMP_Numeric_integer$q_19 = function() { + Opal.def(self, '$integer?', $Numeric_integer$ques$19 = function() { var self = this; return false - }, TMP_Numeric_integer$q_19.$$arity = 0); + }, $Numeric_integer$ques$19.$$arity = 0); Opal.alias(self, "magnitude", "abs"); Opal.alias(self, "modulo", "%"); - Opal.defn(self, '$nonzero?', TMP_Numeric_nonzero$q_20 = function() { + Opal.def(self, '$nonzero?', $Numeric_nonzero$ques$20 = function() { var self = this; if ($truthy(self['$zero?']())) { return nil - } else { + } else { return self } - }, TMP_Numeric_nonzero$q_20.$$arity = 0); + }, $Numeric_nonzero$ques$20.$$arity = 0); - Opal.defn(self, '$numerator', TMP_Numeric_numerator_21 = function $$numerator() { + Opal.def(self, '$numerator', $Numeric_numerator$21 = function $$numerator() { var self = this; return self.$to_r().$numerator() - }, TMP_Numeric_numerator_21.$$arity = 0); + }, $Numeric_numerator$21.$$arity = 0); Opal.alias(self, "phase", "arg"); - Opal.defn(self, '$polar', TMP_Numeric_polar_22 = function $$polar() { + Opal.def(self, '$polar', $Numeric_polar$22 = function $$polar() { var self = this; return [self.$abs(), self.$arg()] - }, TMP_Numeric_polar_22.$$arity = 0); + }, $Numeric_polar$22.$$arity = 0); - Opal.defn(self, '$quo', TMP_Numeric_quo_23 = function $$quo(other) { + Opal.def(self, '$quo', $Numeric_quo$23 = function $$quo(other) { var self = this; - return $rb_divide(Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](self, Opal.const_get_relative($nesting, 'Rational'), "to_r"), other) - }, TMP_Numeric_quo_23.$$arity = 1); + return $rb_divide($$($nesting, 'Opal')['$coerce_to!'](self, $$($nesting, 'Rational'), "to_r"), other) + }, $Numeric_quo$23.$$arity = 1); - Opal.defn(self, '$real', TMP_Numeric_real_24 = function $$real() { + Opal.def(self, '$real', $Numeric_real$24 = function $$real() { var self = this; return self - }, TMP_Numeric_real_24.$$arity = 0); + }, $Numeric_real$24.$$arity = 0); - Opal.defn(self, '$real?', TMP_Numeric_real$q_25 = function() { + Opal.def(self, '$real?', $Numeric_real$ques$25 = function() { var self = this; return true - }, TMP_Numeric_real$q_25.$$arity = 0); + }, $Numeric_real$ques$25.$$arity = 0); - Opal.defn(self, '$rect', TMP_Numeric_rect_26 = function $$rect() { + Opal.def(self, '$rect', $Numeric_rect$26 = function $$rect() { var self = this; return [self, 0] - }, TMP_Numeric_rect_26.$$arity = 0); + }, $Numeric_rect$26.$$arity = 0); Opal.alias(self, "rectangular", "rect"); - Opal.defn(self, '$round', TMP_Numeric_round_27 = function $$round(digits) { + Opal.def(self, '$round', $Numeric_round$27 = function $$round(digits) { var self = this; - return self.$to_f().$round(digits) - }, TMP_Numeric_round_27.$$arity = -1); + + ; + return self.$to_f().$round(digits); + }, $Numeric_round$27.$$arity = -1); - Opal.defn(self, '$to_c', TMP_Numeric_to_c_28 = function $$to_c() { + Opal.def(self, '$to_c', $Numeric_to_c$28 = function $$to_c() { var self = this; return self.$Complex(self, 0) - }, TMP_Numeric_to_c_28.$$arity = 0); + }, $Numeric_to_c$28.$$arity = 0); - Opal.defn(self, '$to_int', TMP_Numeric_to_int_29 = function $$to_int() { + Opal.def(self, '$to_int', $Numeric_to_int$29 = function $$to_int() { var self = this; return self.$to_i() - }, TMP_Numeric_to_int_29.$$arity = 0); + }, $Numeric_to_int$29.$$arity = 0); - Opal.defn(self, '$truncate', TMP_Numeric_truncate_30 = function $$truncate() { + Opal.def(self, '$truncate', $Numeric_truncate$30 = function $$truncate(ndigits) { var self = this; - return self.$to_f().$truncate() - }, TMP_Numeric_truncate_30.$$arity = 0); + + + if (ndigits == null) { + ndigits = 0; + }; + return self.$to_f().$truncate(ndigits); + }, $Numeric_truncate$30.$$arity = -1); - Opal.defn(self, '$zero?', TMP_Numeric_zero$q_31 = function() { + Opal.def(self, '$zero?', $Numeric_zero$ques$31 = function() { var self = this; return self['$=='](0) - }, TMP_Numeric_zero$q_31.$$arity = 0); + }, $Numeric_zero$ques$31.$$arity = 0); - Opal.defn(self, '$positive?', TMP_Numeric_positive$q_32 = function() { + Opal.def(self, '$positive?', $Numeric_positive$ques$32 = function() { var self = this; return $rb_gt(self, 0) - }, TMP_Numeric_positive$q_32.$$arity = 0); + }, $Numeric_positive$ques$32.$$arity = 0); - Opal.defn(self, '$negative?', TMP_Numeric_negative$q_33 = function() { + Opal.def(self, '$negative?', $Numeric_negative$ques$33 = function() { var self = this; return $rb_lt(self, 0) - }, TMP_Numeric_negative$q_33.$$arity = 0); + }, $Numeric_negative$ques$33.$$arity = 0); - Opal.defn(self, '$dup', TMP_Numeric_dup_34 = function $$dup() { + Opal.def(self, '$dup', $Numeric_dup$34 = function $$dup() { var self = this; return self - }, TMP_Numeric_dup_34.$$arity = 0); - return (Opal.defn(self, '$clone', TMP_Numeric_clone_35 = function $$clone($kwargs) { - var self = this, freeze; + }, $Numeric_dup$34.$$arity = 0); + + Opal.def(self, '$clone', $Numeric_clone$35 = function $$clone($kwargs) { + var freeze, self = this; - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } - } + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + freeze = $kwargs.$$smap["freeze"]; if (freeze == null) { freeze = true - } - return self - }, TMP_Numeric_clone_35.$$arity = -1), nil) && 'clone'; + }; + return self; + }, $Numeric_clone$35.$$arity = -1); + + Opal.def(self, '$finite?', $Numeric_finite$ques$36 = function() { + var self = this; + + return true + }, $Numeric_finite$ques$36.$$arity = 0); + return (Opal.def(self, '$infinite?', $Numeric_infinite$ques$37 = function() { + var self = this; + + return nil + }, $Numeric_infinite$ques$37.$$arity = 0), nil) && 'infinite?'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/array"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -11184,21 +11393,20 @@ Opal.modules["corelib/array"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $gvars = Opal.gvars; - Opal.add_stubs(['$require', '$include', '$to_a', '$warn', '$raise', '$replace', '$respond_to?', '$to_ary', '$coerce_to', '$coerce_to?', '$===', '$join', '$to_str', '$class', '$hash', '$<=>', '$==', '$object_id', '$inspect', '$enum_for', '$bsearch_index', '$to_proc', '$coerce_to!', '$>', '$*', '$enumerator_size', '$empty?', '$size', '$map', '$equal?', '$dup', '$each', '$[]', '$dig', '$eql?', '$length', '$begin', '$end', '$exclude_end?', '$flatten', '$__id__', '$to_s', '$new', '$!', '$>=', '$**', '$delete_if', '$reverse', '$rotate', '$rand', '$at', '$keep_if', '$shuffle!', '$<', '$sort', '$sort_by', '$!=', '$times', '$[]=', '$-', '$<<', '$values', '$kind_of?', '$last', '$first', '$upto', '$reject', '$pristine']); + Opal.add_stubs(['$require', '$include', '$to_a', '$warn', '$raise', '$replace', '$respond_to?', '$to_ary', '$coerce_to', '$coerce_to?', '$===', '$join', '$to_str', '$class', '$hash', '$<=>', '$==', '$object_id', '$inspect', '$enum_for', '$bsearch_index', '$to_proc', '$nil?', '$coerce_to!', '$>', '$*', '$enumerator_size', '$empty?', '$size', '$map', '$equal?', '$dup', '$each', '$[]', '$dig', '$eql?', '$length', '$begin', '$end', '$exclude_end?', '$flatten', '$__id__', '$to_s', '$new', '$max', '$min', '$!', '$>=', '$**', '$delete_if', '$reverse', '$rotate', '$rand', '$at', '$keep_if', '$shuffle!', '$<', '$sort', '$sort_by', '$!=', '$times', '$[]=', '$-', '$<<', '$values', '$is_a?', '$last', '$first', '$upto', '$reject', '$pristine', '$singleton_class']); self.$require("corelib/enumerable"); self.$require("corelib/numeric"); return (function($base, $super, $parent_nesting) { - function $Array(){}; - var self = $Array = $klass($base, $super, 'Array', $Array); + var self = $klass($base, $super, 'Array'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_$$_1, TMP_Array_initialize_2, TMP_Array_try_convert_3, TMP_Array_$_4, TMP_Array_$_5, TMP_Array_$_6, TMP_Array_$_7, TMP_Array_$_8, TMP_Array_$lt$lt_9, TMP_Array_$lt$eq$gt_10, TMP_Array_$eq$eq_11, TMP_Array_$$_12, TMP_Array_$$$eq_13, TMP_Array_any$q_14, TMP_Array_assoc_15, TMP_Array_at_16, TMP_Array_bsearch_index_17, TMP_Array_bsearch_18, TMP_Array_cycle_19, TMP_Array_clear_21, TMP_Array_count_22, TMP_Array_initialize_copy_23, TMP_Array_collect_24, TMP_Array_collect$B_26, TMP_Array_combination_28, TMP_Array_repeated_combination_30, TMP_Array_compact_32, TMP_Array_compact$B_33, TMP_Array_concat_36, TMP_Array_delete_37, TMP_Array_delete_at_38, TMP_Array_delete_if_39, TMP_Array_dig_41, TMP_Array_drop_42, TMP_Array_dup_43, TMP_Array_each_44, TMP_Array_each_index_46, TMP_Array_empty$q_48, TMP_Array_eql$q_49, TMP_Array_fetch_50, TMP_Array_fill_51, TMP_Array_first_52, TMP_Array_flatten_53, TMP_Array_flatten$B_54, TMP_Array_hash_55, TMP_Array_include$q_56, TMP_Array_index_57, TMP_Array_insert_58, TMP_Array_inspect_59, TMP_Array_join_60, TMP_Array_keep_if_61, TMP_Array_last_63, TMP_Array_length_64, TMP_Array_permutation_65, TMP_Array_repeated_permutation_67, TMP_Array_pop_69, TMP_Array_product_70, TMP_Array_push_71, TMP_Array_rassoc_72, TMP_Array_reject_73, TMP_Array_reject$B_75, TMP_Array_replace_77, TMP_Array_reverse_78, TMP_Array_reverse$B_79, TMP_Array_reverse_each_80, TMP_Array_rindex_82, TMP_Array_rotate_83, TMP_Array_rotate$B_84, TMP_Array_sample_87, TMP_Array_select_88, TMP_Array_select$B_90, TMP_Array_shift_92, TMP_Array_shuffle_93, TMP_Array_shuffle$B_94, TMP_Array_slice$B_95, TMP_Array_sort_96, TMP_Array_sort$B_97, TMP_Array_sort_by$B_98, TMP_Array_take_100, TMP_Array_take_while_101, TMP_Array_to_a_102, TMP_Array_to_h_103, TMP_Array_transpose_106, TMP_Array_uniq_107, TMP_Array_uniq$B_108, TMP_Array_unshift_109, TMP_Array_values_at_112, TMP_Array_zip_113, TMP_Array_inherited_114, TMP_Array_instance_variables_115; + var $nesting = [self].concat($parent_nesting), $Array_$$$1, $Array_initialize$2, $Array_try_convert$3, $Array_$$4, $Array_$$5, $Array_$$6, $Array_$plus$7, $Array_$minus$8, $Array_$lt$lt$9, $Array_$lt_eq_gt$10, $Array_$eq_eq$11, $Array_$$$12, $Array_$$$eq$13, $Array_any$ques$14, $Array_assoc$15, $Array_at$16, $Array_bsearch_index$17, $Array_bsearch$18, $Array_cycle$19, $Array_clear$21, $Array_count$22, $Array_initialize_copy$23, $Array_collect$24, $Array_collect$excl$26, $Array_combination$28, $Array_repeated_combination$30, $Array_compact$32, $Array_compact$excl$33, $Array_concat$34, $Array_delete$37, $Array_delete_at$38, $Array_delete_if$39, $Array_dig$41, $Array_drop$42, $Array_dup$43, $Array_each$44, $Array_each_index$46, $Array_empty$ques$48, $Array_eql$ques$49, $Array_fetch$50, $Array_fill$51, $Array_first$52, $Array_flatten$53, $Array_flatten$excl$54, $Array_hash$55, $Array_include$ques$56, $Array_index$57, $Array_insert$58, $Array_inspect$59, $Array_join$60, $Array_keep_if$61, $Array_last$63, $Array_length$64, $Array_max$65, $Array_min$66, $Array_permutation$67, $Array_repeated_permutation$69, $Array_pop$71, $Array_product$72, $Array_push$73, $Array_rassoc$74, $Array_reject$75, $Array_reject$excl$77, $Array_replace$79, $Array_reverse$80, $Array_reverse$excl$81, $Array_reverse_each$82, $Array_rindex$84, $Array_rotate$85, $Array_rotate$excl$86, $Array_sample$89, $Array_select$90, $Array_select$excl$92, $Array_shift$94, $Array_shuffle$95, $Array_shuffle$excl$96, $Array_slice$excl$97, $Array_sort$98, $Array_sort$excl$99, $Array_sort_by$excl$100, $Array_take$102, $Array_take_while$103, $Array_to_a$104, $Array_to_h$105, $Array_transpose$106, $Array_uniq$109, $Array_uniq$excl$110, $Array_unshift$111, $Array_values_at$112, $Array_zip$115, $Array_inherited$116, $Array_instance_variables$117, $Array_pack$119; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - def.$$is_array = true; + self.$include($$($nesting, 'Enumerable')); + Opal.defineProperty(self.$$prototype, '$$is_array', true); function toArraySubclass(obj, klass) { if (klass.$$name === Opal.Array) { @@ -11208,39 +11416,43 @@ Opal.modules["corelib/array"] = function(Opal) { } } ; - Opal.defs(self, '$[]', TMP_Array_$$_1 = function($a_rest) { - var self = this, objects; + Opal.defs(self, '$[]', $Array_$$$1 = function($a) { + var $post_args, objects, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - objects = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - objects[$arg_idx - 0] = arguments[$arg_idx]; - } - return toArraySubclass(objects, self) - }, TMP_Array_$$_1.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + objects = $post_args;; + return toArraySubclass(objects, self);; + }, $Array_$$$1.$$arity = -1); - Opal.defn(self, '$initialize', TMP_Array_initialize_2 = function $$initialize(size, obj) { - var self = this, $iter = TMP_Array_initialize_2.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Array_initialize$2 = function $$initialize(size, obj) { + var $iter = $Array_initialize$2.$$p, block = $iter || nil, self = this; + if ($iter) $Array_initialize$2.$$p = null; + + + if ($iter) $Array_initialize$2.$$p = null;; + if (size == null) { size = nil; - } + }; + if (obj == null) { obj = nil; - } - if ($iter) TMP_Array_initialize_2.$$p = null; + }; if (obj !== nil && block !== nil) { self.$warn("warning: block supersedes default value argument") } - if (size > Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Integer'), 'MAX')) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "array size too big") + if (size > $$$($$($nesting, 'Integer'), 'MAX')) { + self.$raise($$($nesting, 'ArgumentError'), "array size too big") } if (arguments.length > 2) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..2)") + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..2)") } if (arguments.length === 0) { @@ -11258,10 +11470,10 @@ Opal.modules["corelib/array"] = function(Opal) { } } - size = Opal.const_get_relative($nesting, 'Opal').$coerce_to(size, Opal.const_get_relative($nesting, 'Integer'), "to_int") + size = $$($nesting, 'Opal').$coerce_to(size, $$($nesting, 'Integer'), "to_int") if (size < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size") + self.$raise($$($nesting, 'ArgumentError'), "negative array size") } self.splice(0, self.length); @@ -11280,23 +11492,23 @@ Opal.modules["corelib/array"] = function(Opal) { } return self; - - }, TMP_Array_initialize_2.$$arity = -1); - Opal.defs(self, '$try_convert', TMP_Array_try_convert_3 = function $$try_convert(obj) { + ; + }, $Array_initialize$2.$$arity = -1); + Opal.defs(self, '$try_convert', $Array_try_convert$3 = function $$try_convert(obj) { var self = this; - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](obj, Opal.const_get_relative($nesting, 'Array'), "to_ary") - }, TMP_Array_try_convert_3.$$arity = 1); + return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Array'), "to_ary") + }, $Array_try_convert$3.$$arity = 1); - Opal.defn(self, '$&', TMP_Array_$_4 = function(other) { + Opal.def(self, '$&', $Array_$$4 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() - }; + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); var result = [], hash = $hash2([], {}), i, length, item; @@ -11313,17 +11525,17 @@ Opal.modules["corelib/array"] = function(Opal) { return result; ; - }, TMP_Array_$_4.$$arity = 1); + }, $Array_$$4.$$arity = 1); - Opal.defn(self, '$|', TMP_Array_$_5 = function(other) { + Opal.def(self, '$|', $Array_$$5 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() - }; + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); var hash = $hash2([], {}), i, length, item; @@ -11337,17 +11549,17 @@ Opal.modules["corelib/array"] = function(Opal) { return hash.$keys(); ; - }, TMP_Array_$_5.$$arity = 1); + }, $Array_$$5.$$arity = 1); - Opal.defn(self, '$*', TMP_Array_$_6 = function(other) { + Opal.def(self, '$*', $Array_$$6 = function(other) { var self = this; if ($truthy(other['$respond_to?']("to_str"))) { return self.$join(other.$to_str())}; - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Integer'), "to_int"); if ($truthy(other < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative argument")}; + self.$raise($$($nesting, 'ArgumentError'), "negative argument")}; var result = [], converted = self.$to_a(); @@ -11358,29 +11570,29 @@ Opal.modules["corelib/array"] = function(Opal) { return toArraySubclass(result, self.$class()); ; - }, TMP_Array_$_6.$$arity = 1); + }, $Array_$$6.$$arity = 1); - Opal.defn(self, '$+', TMP_Array_$_7 = function(other) { + Opal.def(self, '$+', $Array_$plus$7 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() - }; - return self.concat(other); - }, TMP_Array_$_7.$$arity = 1); + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); + return self.concat(other);; + }, $Array_$plus$7.$$arity = 1); - Opal.defn(self, '$-', TMP_Array_$_8 = function(other) { + Opal.def(self, '$-', $Array_$minus$8 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() - }; + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); if ($truthy(self.length === 0)) { return []}; if ($truthy(other.length === 0)) { @@ -11401,25 +11613,25 @@ Opal.modules["corelib/array"] = function(Opal) { return result; ; - }, TMP_Array_$_8.$$arity = 1); + }, $Array_$minus$8.$$arity = 1); - Opal.defn(self, '$<<', TMP_Array_$lt$lt_9 = function(object) { + Opal.def(self, '$<<', $Array_$lt$lt$9 = function(object) { var self = this; - self.push(object);; + self.push(object); return self; - }, TMP_Array_$lt$lt_9.$$arity = 1); + }, $Array_$lt$lt$9.$$arity = 1); - Opal.defn(self, '$<=>', TMP_Array_$lt$eq$gt_10 = function(other) { + Opal.def(self, '$<=>', $Array_$lt_eq_gt$10 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { + if ($truthy($$($nesting, 'Array')['$==='](other))) { other = other.$to_a() } else if ($truthy(other['$respond_to?']("to_ary"))) { other = other.$to_ary().$to_a() - } else { + } else { return nil }; @@ -11439,9 +11651,9 @@ Opal.modules["corelib/array"] = function(Opal) { return (self.length)['$<=>'](other.length); ; - }, TMP_Array_$lt$eq$gt_10.$$arity = 1); + }, $Array_$lt_eq_gt$10.$$arity = 1); - Opal.defn(self, '$==', TMP_Array_$eq$eq_11 = function(other) { + Opal.def(self, '$==', $Array_$eq_eq$11 = function(other) { var self = this; @@ -11454,16 +11666,16 @@ Opal.modules["corelib/array"] = function(Opal) { return true; if (!other.$$is_array) { - if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](other, "to_ary")) { + if ($$($nesting, 'Opal')['$respond_to?'](other, "to_ary")) { return (other)['$=='](array); } else { return false; } } - if (array.constructor !== Array) + if (array.$$constructor !== Array) array = (array).$to_a(); - if (other.constructor !== Array) + if (other.$$constructor !== Array) other = (other).$to_a(); if (array.length !== other.length) { @@ -11496,7 +11708,7 @@ Opal.modules["corelib/array"] = function(Opal) { return _eqeq(self, other); - }, TMP_Array_$eq$eq_11.$$arity = 1); + }, $Array_$eq_eq$11.$$arity = 1); function $array_slice_range(self, index) { var size = self.length, @@ -11568,45 +11780,46 @@ Opal.modules["corelib/array"] = function(Opal) { } ; - Opal.defn(self, '$[]', TMP_Array_$$_12 = function(index, length) { + Opal.def(self, '$[]', $Array_$$$12 = function(index, length) { var self = this; + ; + if (index.$$is_range) { return $array_slice_range(self, index); } else { return $array_slice_index_length(self, index, length); } + ; + }, $Array_$$$12.$$arity = -2); - }, TMP_Array_$$_12.$$arity = -2); - - Opal.defn(self, '$[]=', TMP_Array_$$$eq_13 = function(index, value, extra) { + Opal.def(self, '$[]=', $Array_$$$eq$13 = function(index, value, extra) { var self = this, data = nil, length = nil; - - var i, size = self.length; - ; - if ($truthy(Opal.const_get_relative($nesting, 'Range')['$==='](index))) { + ; + var i, size = self.length;; + if ($truthy($$($nesting, 'Range')['$==='](index))) { - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](value))) { - data = value.$to_a() + data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) { + return value.$to_a() } else if ($truthy(value['$respond_to?']("to_ary"))) { - data = value.$to_ary().$to_a() - } else { - data = [value] - }; + return value.$to_ary().$to_a() + } else { + return [value] + }; return nil; })(); var exclude = index.excl, - from = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index.begin, Opal.const_get_relative($nesting, 'Integer'), "to_int"), - to = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index.end, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + from = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), "to_int"), + to = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), "to_int"); if (from < 0) { from += size; if (from < 0) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + (index.$inspect()) + " out of range"); + self.$raise($$($nesting, 'RangeError'), "" + (index.$inspect()) + " out of range"); } } @@ -11633,39 +11846,39 @@ Opal.modules["corelib/array"] = function(Opal) { return value; ; - } else { + } else { if ($truthy(extra === undefined)) { length = 1 - } else { + } else { length = value; value = extra; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](value))) { - data = value.$to_a() + data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) { + return value.$to_a() } else if ($truthy(value['$respond_to?']("to_ary"))) { - data = value.$to_ary().$to_a() - } else { - data = [value] - }; + return value.$to_ary().$to_a() + } else { + return [value] + }; return nil; })(); }; var old; - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - length = Opal.const_get_relative($nesting, 'Opal').$coerce_to(length, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); + length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); if (index < 0) { old = index; index += size; if (index < 0) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "index " + (old) + " too small for array; minimum " + (-self.length)); + self.$raise($$($nesting, 'IndexError'), "" + "index " + (old) + " too small for array; minimum " + (-self.length)); } } if (length < 0) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "negative length (" + (length) + ")") + self.$raise($$($nesting, 'IndexError'), "" + "negative length (" + (length) + ")") } if (index > size) { @@ -11684,22 +11897,25 @@ Opal.modules["corelib/array"] = function(Opal) { return value; ; }; - }, TMP_Array_$$$eq_13.$$arity = -3); + }, $Array_$$$eq$13.$$arity = -3); - Opal.defn(self, '$any?', TMP_Array_any$q_14 = function() { - var self = this, $iter = TMP_Array_any$q_14.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$any?', $Array_any$ques$14 = function(pattern) { + var $iter = $Array_any$ques$14.$$p, block = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Array_any$q_14.$$p = null; + if ($iter) $Array_any$ques$14.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - if (self.length === 0) return false;; - return $send(self, Opal.find_super_dispatcher(self, 'any?', TMP_Array_any$q_14, false), $zuper, $iter); - }, TMP_Array_any$q_14.$$arity = 0); + + if ($iter) $Array_any$ques$14.$$p = null;; + ; + if (self.length === 0) return false; + return $send(self, Opal.find_super_dispatcher(self, 'any?', $Array_any$ques$14, false), $zuper, $iter); + }, $Array_any$ques$14.$$arity = -1); - Opal.defn(self, '$assoc', TMP_Array_assoc_15 = function $$assoc(object) { + Opal.def(self, '$assoc', $Array_assoc$15 = function $$assoc(object) { var self = this; @@ -11711,13 +11927,13 @@ Opal.modules["corelib/array"] = function(Opal) { return nil; - }, TMP_Array_assoc_15.$$arity = 1); + }, $Array_assoc$15.$$arity = 1); - Opal.defn(self, '$at', TMP_Array_at_16 = function $$at(index) { + Opal.def(self, '$at', $Array_at$16 = function $$at(index) { var self = this; - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (index < 0) { index += self.length; @@ -11729,15 +11945,17 @@ Opal.modules["corelib/array"] = function(Opal) { return self[index]; ; - }, TMP_Array_at_16.$$arity = 1); + }, $Array_at$16.$$arity = 1); - Opal.defn(self, '$bsearch_index', TMP_Array_bsearch_index_17 = function $$bsearch_index() { - var self = this, $iter = TMP_Array_bsearch_index_17.$$p, block = $iter || nil; + Opal.def(self, '$bsearch_index', $Array_bsearch_index$17 = function $$bsearch_index() { + var $iter = $Array_bsearch_index$17.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_bsearch_index_17.$$p = null; + if ($iter) $Array_bsearch_index$17.$$p = null; + + if ($iter) $Array_bsearch_index$17.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("bsearch_index") }; @@ -11766,7 +11984,7 @@ Opal.modules["corelib/array"] = function(Opal) { smaller = (ret < 0); } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + ((ret).$class()) + " (must be numeric, true, false or nil)") + self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((ret).$class()) + " (must be numeric, true, false or nil)") } if (smaller) { max = mid; } else { min = mid + 1; } @@ -11774,15 +11992,17 @@ Opal.modules["corelib/array"] = function(Opal) { return satisfied; ; - }, TMP_Array_bsearch_index_17.$$arity = 0); + }, $Array_bsearch_index$17.$$arity = 0); - Opal.defn(self, '$bsearch', TMP_Array_bsearch_18 = function $$bsearch() { - var self = this, $iter = TMP_Array_bsearch_18.$$p, block = $iter || nil, index = nil; + Opal.def(self, '$bsearch', $Array_bsearch$18 = function $$bsearch() { + var $iter = $Array_bsearch$18.$$p, block = $iter || nil, self = this, index = nil; - if ($iter) TMP_Array_bsearch_18.$$p = null; + if ($iter) $Array_bsearch$18.$$p = null; + + if ($iter) $Array_bsearch$18.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("bsearch") }; index = $send(self, 'bsearch_index', [], block.$to_proc()); @@ -11793,31 +12013,34 @@ Opal.modules["corelib/array"] = function(Opal) { return index; } ; - }, TMP_Array_bsearch_18.$$arity = 0); + }, $Array_bsearch$18.$$arity = 0); - Opal.defn(self, '$cycle', TMP_Array_cycle_19 = function $$cycle(n) { - var TMP_20, $a, self = this, $iter = TMP_Array_cycle_19.$$p, block = $iter || nil; + Opal.def(self, '$cycle', $Array_cycle$19 = function $$cycle(n) { + var $iter = $Array_cycle$19.$$p, block = $iter || nil, $$20, $a, self = this; + if ($iter) $Array_cycle$19.$$p = null; + + + if ($iter) $Array_cycle$19.$$p = null;; + if (n == null) { n = nil; - } - if ($iter) TMP_Array_cycle_19.$$p = null; - + }; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["cycle", n], (TMP_20 = function(){var self = TMP_20.$$s || this; + } else { + return $send(self, 'enum_for', ["cycle", n], ($$20 = function(){var self = $$20.$$s || this; - if (n['$=='](nil)) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') - } else { + if ($truthy(n['$nil?']())) { + return $$$($$($nesting, 'Float'), 'INFINITY') + } else { - n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if ($truthy($rb_gt(n, 0))) { return $rb_times(self.$enumerator_size(), n) - } else { + } else { return 0 }; - }}, TMP_20.$$s = self, TMP_20.$$arity = 0, TMP_20)) + }}, $$20.$$s = self, $$20.$$arity = 0, $$20)) }; if ($truthy(($truthy($a = self['$empty?']()) ? $a : n['$=='](0)))) { return nil}; @@ -11832,7 +12055,7 @@ Opal.modules["corelib/array"] = function(Opal) { } } else { - n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if (n <= 0) { return self; } @@ -11847,50 +12070,56 @@ Opal.modules["corelib/array"] = function(Opal) { } ; return self; - }, TMP_Array_cycle_19.$$arity = -1); + }, $Array_cycle$19.$$arity = -1); - Opal.defn(self, '$clear', TMP_Array_clear_21 = function $$clear() { + Opal.def(self, '$clear', $Array_clear$21 = function $$clear() { var self = this; self.splice(0, self.length); return self; - }, TMP_Array_clear_21.$$arity = 0); + }, $Array_clear$21.$$arity = 0); - Opal.defn(self, '$count', TMP_Array_count_22 = function $$count(object) { - var $a, self = this, $iter = TMP_Array_count_22.$$p, block = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$count', $Array_count$22 = function $$count(object) { + var $iter = $Array_count$22.$$p, block = $iter || nil, $a, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if (object == null) { - object = nil; - } - if ($iter) TMP_Array_count_22.$$p = null; + if ($iter) $Array_count$22.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } + + + if ($iter) $Array_count$22.$$p = null;; + + if (object == null) { + object = nil; + }; if ($truthy(($truthy($a = object) ? $a : block))) { - return $send(self, Opal.find_super_dispatcher(self, 'count', TMP_Array_count_22, false), $zuper, $iter) - } else { + return $send(self, Opal.find_super_dispatcher(self, 'count', $Array_count$22, false), $zuper, $iter) + } else { return self.$size() - } - }, TMP_Array_count_22.$$arity = -1); + }; + }, $Array_count$22.$$arity = -1); - Opal.defn(self, '$initialize_copy', TMP_Array_initialize_copy_23 = function $$initialize_copy(other) { + Opal.def(self, '$initialize_copy', $Array_initialize_copy$23 = function $$initialize_copy(other) { var self = this; return self.$replace(other) - }, TMP_Array_initialize_copy_23.$$arity = 1); + }, $Array_initialize_copy$23.$$arity = 1); - Opal.defn(self, '$collect', TMP_Array_collect_24 = function $$collect() { - var TMP_25, self = this, $iter = TMP_Array_collect_24.$$p, block = $iter || nil; + Opal.def(self, '$collect', $Array_collect$24 = function $$collect() { + var $iter = $Array_collect$24.$$p, block = $iter || nil, $$25, self = this; - if ($iter) TMP_Array_collect_24.$$p = null; + if ($iter) $Array_collect$24.$$p = null; + + if ($iter) $Array_collect$24.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect"], (TMP_25 = function(){var self = TMP_25.$$s || this; + } else { + return $send(self, 'enum_for', ["collect"], ($$25 = function(){var self = $$25.$$s || this; - return self.$size()}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25)) + return self.$size()}, $$25.$$s = self, $$25.$$arity = 0, $$25)) }; var result = []; @@ -11902,18 +12131,20 @@ Opal.modules["corelib/array"] = function(Opal) { return result; ; - }, TMP_Array_collect_24.$$arity = 0); + }, $Array_collect$24.$$arity = 0); - Opal.defn(self, '$collect!', TMP_Array_collect$B_26 = function() { - var TMP_27, self = this, $iter = TMP_Array_collect$B_26.$$p, block = $iter || nil; + Opal.def(self, '$collect!', $Array_collect$excl$26 = function() { + var $iter = $Array_collect$excl$26.$$p, block = $iter || nil, $$27, self = this; - if ($iter) TMP_Array_collect$B_26.$$p = null; + if ($iter) $Array_collect$excl$26.$$p = null; + + if ($iter) $Array_collect$excl$26.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect!"], (TMP_27 = function(){var self = TMP_27.$$s || this; + } else { + return $send(self, 'enum_for', ["collect!"], ($$27 = function(){var self = $$27.$$s || this; - return self.$size()}, TMP_27.$$s = self, TMP_27.$$arity = 0, TMP_27)) + return self.$size()}, $$27.$$s = self, $$27.$$arity = 0, $$27)) }; for (var i = 0, length = self.length; i < length; i++) { @@ -11922,7 +12153,7 @@ Opal.modules["corelib/array"] = function(Opal) { } ; return self; - }, TMP_Array_collect$B_26.$$arity = 0); + }, $Array_collect$excl$26.$$arity = 0); function binomial_coefficient(n, k) { if (n === k || k === 0) { @@ -11937,17 +12168,17 @@ Opal.modules["corelib/array"] = function(Opal) { } ; - Opal.defn(self, '$combination', TMP_Array_combination_28 = function $$combination(n) { - var TMP_29, self = this, $iter = TMP_Array_combination_28.$$p, $yield = $iter || nil, num = nil; + Opal.def(self, '$combination', $Array_combination$28 = function $$combination(n) { + var $$29, $iter = $Array_combination$28.$$p, $yield = $iter || nil, self = this, num = nil; - if ($iter) TMP_Array_combination_28.$$p = null; + if ($iter) $Array_combination$28.$$p = null; - num = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["combination", num], (TMP_29 = function(){var self = TMP_29.$$s || this; + } else { + return $send(self, 'enum_for', ["combination", num], ($$29 = function(){var self = $$29.$$s || this; - return binomial_coefficient(self.length, num)}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29)) + return binomial_coefficient(self.length, num)}, $$29.$$s = self, $$29.$$arity = 0, $$29)) }; var i, length, stack, chosen, lev, done, next; @@ -11991,19 +12222,19 @@ Opal.modules["corelib/array"] = function(Opal) { } ; return self; - }, TMP_Array_combination_28.$$arity = 1); + }, $Array_combination$28.$$arity = 1); - Opal.defn(self, '$repeated_combination', TMP_Array_repeated_combination_30 = function $$repeated_combination(n) { - var TMP_31, self = this, $iter = TMP_Array_repeated_combination_30.$$p, $yield = $iter || nil, num = nil; + Opal.def(self, '$repeated_combination', $Array_repeated_combination$30 = function $$repeated_combination(n) { + var $$31, $iter = $Array_repeated_combination$30.$$p, $yield = $iter || nil, self = this, num = nil; - if ($iter) TMP_Array_repeated_combination_30.$$p = null; + if ($iter) $Array_repeated_combination$30.$$p = null; - num = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["repeated_combination", num], (TMP_31 = function(){var self = TMP_31.$$s || this; + } else { + return $send(self, 'enum_for', ["repeated_combination", num], ($$31 = function(){var self = $$31.$$s || this; - return binomial_coefficient(self.length + num - 1, num)}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31)) + return binomial_coefficient(self.length + num - 1, num);}, $$31.$$s = self, $$31.$$arity = 0, $$31)) }; function iterate(max, from, buffer, self) { @@ -12024,9 +12255,9 @@ Opal.modules["corelib/array"] = function(Opal) { } ; return self; - }, TMP_Array_repeated_combination_30.$$arity = 1); + }, $Array_repeated_combination$30.$$arity = 1); - Opal.defn(self, '$compact', TMP_Array_compact_32 = function $$compact() { + Opal.def(self, '$compact', $Array_compact$32 = function $$compact() { var self = this; @@ -12040,9 +12271,9 @@ Opal.modules["corelib/array"] = function(Opal) { return result; - }, TMP_Array_compact_32.$$arity = 0); + }, $Array_compact$32.$$arity = 0); - Opal.defn(self, '$compact!', TMP_Array_compact$B_33 = function() { + Opal.def(self, '$compact!', $Array_compact$excl$33 = function() { var self = this; @@ -12059,43 +12290,50 @@ Opal.modules["corelib/array"] = function(Opal) { return self.length === original ? nil : self; - }, TMP_Array_compact$B_33.$$arity = 0); + }, $Array_compact$excl$33.$$arity = 0); - Opal.defn(self, '$concat', TMP_Array_concat_36 = function $$concat($a_rest) { - var TMP_34, TMP_35, self = this, others; + Opal.def(self, '$concat', $Array_concat$34 = function $$concat($a) { + var $post_args, others, $$35, $$36, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - others = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - others[$arg_idx - 0] = arguments[$arg_idx]; - } - others = $send(others, 'map', [], (TMP_34 = function(other){var self = TMP_34.$$s || this; -if (other == null) other = nil; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + others = $post_args;; + others = $send(others, 'map', [], ($$35 = function(other){var self = $$35.$$s || this; + + + + if (other == null) { + other = nil; }; + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); if ($truthy(other['$equal?'](self))) { other = other.$dup()}; - return other;}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34)); - $send(others, 'each', [], (TMP_35 = function(other){var self = TMP_35.$$s || this; -if (other == null) other = nil; + return other;}, $$35.$$s = self, $$35.$$arity = 1, $$35)); + $send(others, 'each', [], ($$36 = function(other){var self = $$36.$$s || this; + + + if (other == null) { + other = nil; + }; + for (var i = 0, length = other.length; i < length; i++) { self.push(other[i]); } - }, TMP_35.$$s = self, TMP_35.$$arity = 1, TMP_35)); + ;}, $$36.$$s = self, $$36.$$arity = 1, $$36)); return self; - }, TMP_Array_concat_36.$$arity = -1); + }, $Array_concat$34.$$arity = -1); - Opal.defn(self, '$delete', TMP_Array_delete_37 = function(object) { - var self = this, $iter = TMP_Array_delete_37.$$p, $yield = $iter || nil; + Opal.def(self, '$delete', $Array_delete$37 = function(object) { + var $iter = $Array_delete$37.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Array_delete_37.$$p = null; + if ($iter) $Array_delete$37.$$p = null; var original = self.length; @@ -12116,13 +12354,13 @@ if (other == null) other = nil; } return object; - }, TMP_Array_delete_37.$$arity = 1); + }, $Array_delete$37.$$arity = 1); - Opal.defn(self, '$delete_at', TMP_Array_delete_at_38 = function $$delete_at(index) { + Opal.def(self, '$delete_at', $Array_delete_at$38 = function $$delete_at(index) { var self = this; - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (index < 0) { index += self.length; @@ -12138,18 +12376,20 @@ if (other == null) other = nil; return result; - }, TMP_Array_delete_at_38.$$arity = 1); + }, $Array_delete_at$38.$$arity = 1); - Opal.defn(self, '$delete_if', TMP_Array_delete_if_39 = function $$delete_if() { - var TMP_40, self = this, $iter = TMP_Array_delete_if_39.$$p, block = $iter || nil; + Opal.def(self, '$delete_if', $Array_delete_if$39 = function $$delete_if() { + var $iter = $Array_delete_if$39.$$p, block = $iter || nil, $$40, self = this; - if ($iter) TMP_Array_delete_if_39.$$p = null; + if ($iter) $Array_delete_if$39.$$p = null; + + if ($iter) $Array_delete_if$39.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["delete_if"], (TMP_40 = function(){var self = TMP_40.$$s || this; + } else { + return $send(self, 'enum_for', ["delete_if"], ($$40 = function(){var self = $$40.$$s || this; - return self.$size()}, TMP_40.$$s = self, TMP_40.$$arity = 0, TMP_40)) + return self.$size()}, $$40.$$s = self, $$40.$$arity = 0, $$40)) }; for (var i = 0, length = self.length, value; i < length; i++) { @@ -12164,18 +12404,16 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_delete_if_39.$$arity = 0); + }, $Array_delete_if$39.$$arity = 0); - Opal.defn(self, '$dig', TMP_Array_dig_41 = function $$dig(idx, $a_rest) { - var self = this, idxs, item = nil; + Opal.def(self, '$dig', $Array_dig$41 = function $$dig(idx, $a) { + var $post_args, idxs, self = this, item = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - idxs = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - idxs[$arg_idx - 1] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + idxs = $post_args;; item = self['$[]'](idx); if (item === nil || idxs.length === 0) { @@ -12183,54 +12421,56 @@ if (other == null) other = nil; } ; if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") + } else { + self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") }; return $send(item, 'dig', Opal.to_a(idxs)); - }, TMP_Array_dig_41.$$arity = -2); + }, $Array_dig$41.$$arity = -2); - Opal.defn(self, '$drop', TMP_Array_drop_42 = function $$drop(number) { + Opal.def(self, '$drop', $Array_drop$42 = function $$drop(number) { var self = this; if (number < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')) + self.$raise($$($nesting, 'ArgumentError')) } return self.slice(number); - }, TMP_Array_drop_42.$$arity = 1); + }, $Array_drop$42.$$arity = 1); - Opal.defn(self, '$dup', TMP_Array_dup_43 = function $$dup() { - var self = this, $iter = TMP_Array_dup_43.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$dup', $Array_dup$43 = function $$dup() { + var $iter = $Array_dup$43.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Array_dup_43.$$p = null; + if ($iter) $Array_dup$43.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - if ( - self.$$class === Opal.Array && - self.$$class.$allocate.$$pristine && - self.$copy_instance_variables.$$pristine && - self.$initialize_dup.$$pristine - ) return self.slice(0); + if (self.$$class === Opal.Array && + self.$$class.$allocate.$$pristine && + self.$copy_instance_variables.$$pristine && + self.$initialize_dup.$$pristine) { + return self.slice(0); + } ; - return $send(self, Opal.find_super_dispatcher(self, 'dup', TMP_Array_dup_43, false), $zuper, $iter); - }, TMP_Array_dup_43.$$arity = 0); + return $send(self, Opal.find_super_dispatcher(self, 'dup', $Array_dup$43, false), $zuper, $iter); + }, $Array_dup$43.$$arity = 0); - Opal.defn(self, '$each', TMP_Array_each_44 = function $$each() { - var TMP_45, self = this, $iter = TMP_Array_each_44.$$p, block = $iter || nil; + Opal.def(self, '$each', $Array_each$44 = function $$each() { + var $iter = $Array_each$44.$$p, block = $iter || nil, $$45, self = this; - if ($iter) TMP_Array_each_44.$$p = null; + if ($iter) $Array_each$44.$$p = null; + + if ($iter) $Array_each$44.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each"], (TMP_45 = function(){var self = TMP_45.$$s || this; + } else { + return $send(self, 'enum_for', ["each"], ($$45 = function(){var self = $$45.$$s || this; - return self.$size()}, TMP_45.$$s = self, TMP_45.$$arity = 0, TMP_45)) + return self.$size()}, $$45.$$s = self, $$45.$$arity = 0, $$45)) }; for (var i = 0, length = self.length; i < length; i++) { @@ -12238,18 +12478,20 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_each_44.$$arity = 0); + }, $Array_each$44.$$arity = 0); - Opal.defn(self, '$each_index', TMP_Array_each_index_46 = function $$each_index() { - var TMP_47, self = this, $iter = TMP_Array_each_index_46.$$p, block = $iter || nil; + Opal.def(self, '$each_index', $Array_each_index$46 = function $$each_index() { + var $iter = $Array_each_index$46.$$p, block = $iter || nil, $$47, self = this; - if ($iter) TMP_Array_each_index_46.$$p = null; + if ($iter) $Array_each_index$46.$$p = null; + + if ($iter) $Array_each_index$46.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_index"], (TMP_47 = function(){var self = TMP_47.$$s || this; + } else { + return $send(self, 'enum_for', ["each_index"], ($$47 = function(){var self = $$47.$$s || this; - return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47)) + return self.$size()}, $$47.$$s = self, $$47.$$arity = 0, $$47)) }; for (var i = 0, length = self.length; i < length; i++) { @@ -12257,15 +12499,15 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_each_index_46.$$arity = 0); + }, $Array_each_index$46.$$arity = 0); - Opal.defn(self, '$empty?', TMP_Array_empty$q_48 = function() { + Opal.def(self, '$empty?', $Array_empty$ques$48 = function() { var self = this; - return self.length === 0 - }, TMP_Array_empty$q_48.$$arity = 0); + return self.length === 0; + }, $Array_empty$ques$48.$$arity = 0); - Opal.defn(self, '$eql?', TMP_Array_eql$q_49 = function(other) { + Opal.def(self, '$eql?', $Array_eql$ques$49 = function(other) { var self = this; @@ -12310,16 +12552,20 @@ if (other == null) other = nil; return _eql(self, other); - }, TMP_Array_eql$q_49.$$arity = 1); + }, $Array_eql$ques$49.$$arity = 1); - Opal.defn(self, '$fetch', TMP_Array_fetch_50 = function $$fetch(index, defaults) { - var self = this, $iter = TMP_Array_fetch_50.$$p, block = $iter || nil; + Opal.def(self, '$fetch', $Array_fetch$50 = function $$fetch(index, defaults) { + var $iter = $Array_fetch$50.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_fetch_50.$$p = null; + if ($iter) $Array_fetch$50.$$p = null; + + + if ($iter) $Array_fetch$50.$$p = null;; + ; var original = index; - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (index < 0) { index += self.length; @@ -12342,76 +12588,74 @@ if (other == null) other = nil; } if (self.length === 0) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: 0...0") + self.$raise($$($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: 0...0") } else { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: -" + (self.length) + "..." + (self.length)); + self.$raise($$($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: -" + (self.length) + "..." + (self.length)); } + ; + }, $Array_fetch$50.$$arity = -2); - }, TMP_Array_fetch_50.$$arity = -2); - - Opal.defn(self, '$fill', TMP_Array_fill_51 = function $$fill($a_rest) { - var $b, $c, self = this, args, $iter = TMP_Array_fill_51.$$p, block = $iter || nil, one = nil, two = nil, obj = nil, left = nil, right = nil; + Opal.def(self, '$fill', $Array_fill$51 = function $$fill($a) { + var $iter = $Array_fill$51.$$p, block = $iter || nil, $post_args, args, $b, $c, self = this, one = nil, two = nil, obj = nil, left = nil, right = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Array_fill_51.$$p = null; + if ($iter) $Array_fill$51.$$p = null; - var i, length, value; - ; + if ($iter) $Array_fill$51.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + var i, length, value;; if ($truthy(block)) { if ($truthy(args.length > 2)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 0..2)")}; + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 0..2)")}; $c = args, $b = Opal.to_ary($c), (one = ($b[0] == null ? nil : $b[0])), (two = ($b[1] == null ? nil : $b[1])), $c; - } else { + } else { if ($truthy(args.length == 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") + self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") } else if ($truthy(args.length > 3)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 1..3)")}; + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 1..3)")}; $c = args, $b = Opal.to_ary($c), (obj = ($b[0] == null ? nil : $b[0])), (one = ($b[1] == null ? nil : $b[1])), (two = ($b[2] == null ? nil : $b[2])), $c; }; - if ($truthy(Opal.const_get_relative($nesting, 'Range')['$==='](one))) { + if ($truthy($$($nesting, 'Range')['$==='](one))) { if ($truthy(two)) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "length invalid with range")}; - left = Opal.const_get_relative($nesting, 'Opal').$coerce_to(one.$begin(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); + self.$raise($$($nesting, 'TypeError'), "length invalid with range")}; + left = $$($nesting, 'Opal').$coerce_to(one.$begin(), $$($nesting, 'Integer'), "to_int"); if ($truthy(left < 0)) { left += this.length}; if ($truthy(left < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + (one.$inspect()) + " out of range")}; - right = Opal.const_get_relative($nesting, 'Opal').$coerce_to(one.$end(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); + self.$raise($$($nesting, 'RangeError'), "" + (one.$inspect()) + " out of range")}; + right = $$($nesting, 'Opal').$coerce_to(one.$end(), $$($nesting, 'Integer'), "to_int"); if ($truthy(right < 0)) { right += this.length}; if ($truthy(one['$exclude_end?']())) { - } else { + } else { right += 1 }; if ($truthy(right <= left)) { return self}; } else if ($truthy(one)) { - left = Opal.const_get_relative($nesting, 'Opal').$coerce_to(one, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + left = $$($nesting, 'Opal').$coerce_to(one, $$($nesting, 'Integer'), "to_int"); if ($truthy(left < 0)) { left += this.length}; if ($truthy(left < 0)) { left = 0}; if ($truthy(two)) { - right = Opal.const_get_relative($nesting, 'Opal').$coerce_to(two, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + right = $$($nesting, 'Opal').$coerce_to(two, $$($nesting, 'Integer'), "to_int"); if ($truthy(right == 0)) { return self}; right += left; - } else { + } else { right = this.length }; - } else { + } else { left = 0; right = this.length; @@ -12431,7 +12675,7 @@ if (other == null) other = nil; self[left] = value; } - } else { + } else { for (length = this.length; left < right; left++) { self[left] = obj; @@ -12439,30 +12683,34 @@ if (other == null) other = nil; }; return self; - }, TMP_Array_fill_51.$$arity = -1); + }, $Array_fill$51.$$arity = -1); - Opal.defn(self, '$first', TMP_Array_first_52 = function $$first(count) { + Opal.def(self, '$first', $Array_first$52 = function $$first(count) { var self = this; + ; + if (count == null) { return self.length === 0 ? nil : self[0]; } - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); if (count < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size"); + self.$raise($$($nesting, 'ArgumentError'), "negative array size"); } return self.slice(0, count); + ; + }, $Array_first$52.$$arity = -1); - }, TMP_Array_first_52.$$arity = -1); - - Opal.defn(self, '$flatten', TMP_Array_flatten_53 = function $$flatten(level) { + Opal.def(self, '$flatten', $Array_flatten$53 = function $$flatten(level) { var self = this; + ; + function _flatten(array, level) { var result = [], i, length, @@ -12473,7 +12721,7 @@ if (other == null) other = nil; for (i = 0, length = array.length; i < length; i++) { item = array[i]; - if (!Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { + if (!$$($nesting, 'Opal')['$respond_to?'](item, "to_ary", true)) { result.push(item); continue; } @@ -12486,11 +12734,11 @@ if (other == null) other = nil; } if (!ary.$$is_array) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError')); + self.$raise($$($nesting, 'TypeError')); } if (ary === self) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); + self.$raise($$($nesting, 'ArgumentError')); } switch (level) { @@ -12508,17 +12756,18 @@ if (other == null) other = nil; } if (level !== undefined) { - level = Opal.const_get_relative($nesting, 'Opal').$coerce_to(level, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + level = $$($nesting, 'Opal').$coerce_to(level, $$($nesting, 'Integer'), "to_int"); } return toArraySubclass(_flatten(self, level), self.$class()); + ; + }, $Array_flatten$53.$$arity = -1); - }, TMP_Array_flatten_53.$$arity = -1); - - Opal.defn(self, '$flatten!', TMP_Array_flatten$B_54 = function(level) { + Opal.def(self, '$flatten!', $Array_flatten$excl$54 = function(level) { var self = this; + ; var flattened = self.$flatten(level); @@ -12537,9 +12786,9 @@ if (other == null) other = nil; self.$replace(flattened); ; return self; - }, TMP_Array_flatten$B_54.$$arity = -1); + }, $Array_flatten$excl$54.$$arity = -1); - Opal.defn(self, '$hash', TMP_Array_hash_55 = function $$hash() { + Opal.def(self, '$hash', $Array_hash$55 = function $$hash() { var self = this; @@ -12579,9 +12828,9 @@ if (other == null) other = nil; } } - }, TMP_Array_hash_55.$$arity = 0); + }, $Array_hash$55.$$arity = 0); - Opal.defn(self, '$include?', TMP_Array_include$q_56 = function(member) { + Opal.def(self, '$include?', $Array_include$ques$56 = function(member) { var self = this; @@ -12593,12 +12842,16 @@ if (other == null) other = nil; return false; - }, TMP_Array_include$q_56.$$arity = 1); + }, $Array_include$ques$56.$$arity = 1); - Opal.defn(self, '$index', TMP_Array_index_57 = function $$index(object) { - var self = this, $iter = TMP_Array_index_57.$$p, block = $iter || nil; + Opal.def(self, '$index', $Array_index$57 = function $$index(object) { + var $iter = $Array_index$57.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_index_57.$$p = null; + if ($iter) $Array_index$57.$$p = null; + + + if ($iter) $Array_index$57.$$p = null;; + ; var i, length, value; @@ -12627,28 +12880,26 @@ if (other == null) other = nil; } return nil; + ; + }, $Array_index$57.$$arity = -1); - }, TMP_Array_index_57.$$arity = -1); - - Opal.defn(self, '$insert', TMP_Array_insert_58 = function $$insert(index, $a_rest) { - var self = this, objects; + Opal.def(self, '$insert', $Array_insert$58 = function $$insert(index, $a) { + var $post_args, objects, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - objects = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - objects[$arg_idx - 1] = arguments[$arg_idx]; - } - index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + objects = $post_args;; + + index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (objects.length > 0) { if (index < 0) { index += self.length + 1; if (index < 0) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + (index) + " is out of bounds"); + self.$raise($$($nesting, 'IndexError'), "" + (index) + " is out of bounds"); } } if (index > self.length) { @@ -12661,9 +12912,9 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_insert_58.$$arity = -2); + }, $Array_insert$58.$$arity = -2); - Opal.defn(self, '$inspect', TMP_Array_inspect_59 = function $$inspect() { + Opal.def(self, '$inspect', $Array_inspect$59 = function $$inspect() { var self = this; @@ -12683,16 +12934,17 @@ if (other == null) other = nil; return '[' + result.join(', ') + ']'; - }, TMP_Array_inspect_59.$$arity = 0); + }, $Array_inspect$59.$$arity = 0); - Opal.defn(self, '$join', TMP_Array_join_60 = function $$join(sep) { + Opal.def(self, '$join', $Array_join$60 = function $$join(sep) { var self = this; if ($gvars[","] == null) $gvars[","] = nil; + + if (sep == null) { sep = nil; - } - + }; if ($truthy(self.length === 0)) { return ""}; if ($truthy(sep === nil)) { @@ -12704,7 +12956,7 @@ if (other == null) other = nil; for (i = 0, length = self.length; i < length; i++) { item = self[i]; - if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_str")) { + if ($$($nesting, 'Opal')['$respond_to?'](item, "to_str")) { tmp = (item).$to_str(); if (tmp !== nil) { @@ -12714,11 +12966,11 @@ if (other == null) other = nil; } } - if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { + if ($$($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { tmp = (item).$to_ary(); if (tmp === self) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); + self.$raise($$($nesting, 'ArgumentError')); } if (tmp !== nil) { @@ -12728,7 +12980,7 @@ if (other == null) other = nil; } } - if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_s")) { + if ($$($nesting, 'Opal')['$respond_to?'](item, "to_s")) { tmp = (item).$to_s(); if (tmp !== nil) { @@ -12738,28 +12990,30 @@ if (other == null) other = nil; } } - self.$raise(Opal.const_get_relative($nesting, 'NoMethodError').$new("" + (Opal.inspect(item)) + " doesn't respond to #to_str, #to_ary or #to_s", "to_str")); + self.$raise($$($nesting, 'NoMethodError').$new("" + (Opal.inspect(item)) + " doesn't respond to #to_str, #to_ary or #to_s", "to_str")); } if (sep === nil) { return result.join(''); } else { - return result.join(Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](sep, Opal.const_get_relative($nesting, 'String'), "to_str").$to_s()); + return result.join($$($nesting, 'Opal')['$coerce_to!'](sep, $$($nesting, 'String'), "to_str").$to_s()); } ; - }, TMP_Array_join_60.$$arity = -1); + }, $Array_join$60.$$arity = -1); - Opal.defn(self, '$keep_if', TMP_Array_keep_if_61 = function $$keep_if() { - var TMP_62, self = this, $iter = TMP_Array_keep_if_61.$$p, block = $iter || nil; + Opal.def(self, '$keep_if', $Array_keep_if$61 = function $$keep_if() { + var $iter = $Array_keep_if$61.$$p, block = $iter || nil, $$62, self = this; - if ($iter) TMP_Array_keep_if_61.$$p = null; + if ($iter) $Array_keep_if$61.$$p = null; + + if ($iter) $Array_keep_if$61.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["keep_if"], (TMP_62 = function(){var self = TMP_62.$$s || this; + } else { + return $send(self, 'enum_for', ["keep_if"], ($$62 = function(){var self = $$62.$$s || this; - return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62)) + return self.$size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) }; for (var i = 0, length = self.length, value; i < length; i++) { @@ -12774,20 +13028,22 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_keep_if_61.$$arity = 0); + }, $Array_keep_if$61.$$arity = 0); - Opal.defn(self, '$last', TMP_Array_last_63 = function $$last(count) { + Opal.def(self, '$last', $Array_last$63 = function $$last(count) { var self = this; + ; + if (count == null) { return self.length === 0 ? nil : self[self.length - 1]; } - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); if (count < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size"); + self.$raise($$($nesting, 'ArgumentError'), "negative array size"); } if (count > self.length) { @@ -12795,17 +13051,38 @@ if (other == null) other = nil; } return self.slice(self.length - count, self.length); + ; + }, $Array_last$63.$$arity = -1); - }, TMP_Array_last_63.$$arity = -1); - - Opal.defn(self, '$length', TMP_Array_length_64 = function $$length() { + Opal.def(self, '$length', $Array_length$64 = function $$length() { var self = this; - return self.length - }, TMP_Array_length_64.$$arity = 0); + return self.length; + }, $Array_length$64.$$arity = 0); Opal.alias(self, "map", "collect"); Opal.alias(self, "map!", "collect!"); + Opal.def(self, '$max', $Array_max$65 = function $$max(n) { + var $iter = $Array_max$65.$$p, block = $iter || nil, self = this; + + if ($iter) $Array_max$65.$$p = null; + + + if ($iter) $Array_max$65.$$p = null;; + ; + return $send(self.$each(), 'max', [n], block.$to_proc()); + }, $Array_max$65.$$arity = -1); + + Opal.def(self, '$min', $Array_min$66 = function $$min() { + var $iter = $Array_min$66.$$p, block = $iter || nil, self = this; + + if ($iter) $Array_min$66.$$p = null; + + + if ($iter) $Array_min$66.$$p = null;; + return $send(self.$each(), 'min', [], block.$to_proc()); + }, $Array_min$66.$$arity = 0); + // Returns the product of from, from-1, ..., from - how_many + 1. function descending_factorial(from, how_many) { var count = how_many >= 0 ? 1 : 0; @@ -12818,16 +13095,19 @@ if (other == null) other = nil; } ; - Opal.defn(self, '$permutation', TMP_Array_permutation_65 = function $$permutation(num) { - var TMP_66, self = this, $iter = TMP_Array_permutation_65.$$p, block = $iter || nil, perm = nil, used = nil; + Opal.def(self, '$permutation', $Array_permutation$67 = function $$permutation(num) { + var $iter = $Array_permutation$67.$$p, block = $iter || nil, $$68, self = this, perm = nil, used = nil; - if ($iter) TMP_Array_permutation_65.$$p = null; + if ($iter) $Array_permutation$67.$$p = null; + + if ($iter) $Array_permutation$67.$$p = null;; + ; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["permutation", num], (TMP_66 = function(){var self = TMP_66.$$s || this; + } else { + return $send(self, 'enum_for', ["permutation", num], ($$68 = function(){var self = $$68.$$s || this; - return descending_factorial(self.length, num === undefined ? self.length : num)}, TMP_66.$$s = self, TMP_66.$$arity = 0, TMP_66)) + return descending_factorial(self.length, num === undefined ? self.length : num);}, $$68.$$s = self, $$68.$$arity = 0, $$68)) }; var permute, offensive, output; @@ -12836,7 +13116,7 @@ if (other == null) other = nil; num = self.length; } else { - num = Opal.const_get_relative($nesting, 'Opal').$coerce_to(num, Opal.const_get_relative($nesting, 'Integer'), "to_int") + num = $$($nesting, 'Opal').$coerce_to(num, $$($nesting, 'Integer'), "to_int") } if (num < 0 || self.length < num) { @@ -12854,8 +13134,8 @@ if (other == null) other = nil; } else { // this is the general case - (perm = Opal.const_get_relative($nesting, 'Array').$new(num)); - (used = Opal.const_get_relative($nesting, 'Array').$new(self.length, false)); + (perm = $$($nesting, 'Array').$new(num)); + (used = $$($nesting, 'Array').$new(self.length, false)); permute = function(num, perm, index, used, blk) { self = this; @@ -12889,23 +13169,23 @@ if (other == null) other = nil; } ; return self; - }, TMP_Array_permutation_65.$$arity = -1); + }, $Array_permutation$67.$$arity = -1); - Opal.defn(self, '$repeated_permutation', TMP_Array_repeated_permutation_67 = function $$repeated_permutation(n) { - var TMP_68, self = this, $iter = TMP_Array_repeated_permutation_67.$$p, $yield = $iter || nil, num = nil; + Opal.def(self, '$repeated_permutation', $Array_repeated_permutation$69 = function $$repeated_permutation(n) { + var $$70, $iter = $Array_repeated_permutation$69.$$p, $yield = $iter || nil, self = this, num = nil; - if ($iter) TMP_Array_repeated_permutation_67.$$p = null; + if ($iter) $Array_repeated_permutation$69.$$p = null; - num = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["repeated_permutation", num], (TMP_68 = function(){var self = TMP_68.$$s || this; + } else { + return $send(self, 'enum_for', ["repeated_permutation", num], ($$70 = function(){var self = $$70.$$s || this; if ($truthy($rb_ge(num, 0))) { return self.$size()['$**'](num) - } else { + } else { return 0 - }}, TMP_68.$$s = self, TMP_68.$$arity = 0, TMP_68)) + }}, $$70.$$s = self, $$70.$$arity = 0, $$70)) }; function iterate(max, buffer, self) { @@ -12924,39 +13204,41 @@ if (other == null) other = nil; iterate(num, [], self.slice()); ; return self; - }, TMP_Array_repeated_permutation_67.$$arity = 1); + }, $Array_repeated_permutation$69.$$arity = 1); - Opal.defn(self, '$pop', TMP_Array_pop_69 = function $$pop(count) { + Opal.def(self, '$pop', $Array_pop$71 = function $$pop(count) { var self = this; + ; if ($truthy(count === undefined)) { if ($truthy(self.length === 0)) { return nil}; return self.pop();}; - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); if ($truthy(count < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size")}; + self.$raise($$($nesting, 'ArgumentError'), "negative array size")}; if ($truthy(self.length === 0)) { return []}; if ($truthy(count > self.length)) { - return self.splice(0, self.length) - } else { - return self.splice(self.length - count, self.length) + return self.splice(0, self.length); + } else { + return self.splice(self.length - count, self.length); }; - }, TMP_Array_pop_69.$$arity = -1); + }, $Array_pop$71.$$arity = -1); - Opal.defn(self, '$product', TMP_Array_product_70 = function $$product($a_rest) { - var self = this, args, $iter = TMP_Array_product_70.$$p, block = $iter || nil; + Opal.def(self, '$product', $Array_product$72 = function $$product($a) { + var $iter = $Array_product$72.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Array_product_70.$$p = null; + if ($iter) $Array_product$72.$$p = null; + + + if ($iter) $Array_product$72.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var result = (block !== nil) ? null : [], n = args.length + 1, @@ -12967,7 +13249,7 @@ if (other == null) other = nil; arrays[0] = self; for (i = 1; i < n; i++) { - arrays[i] = Opal.const_get_relative($nesting, 'Opal').$coerce_to(args[i - 1], Opal.const_get_relative($nesting, 'Array'), "to_ary"); + arrays[i] = $$($nesting, 'Opal').$coerce_to(args[i - 1], $$($nesting, 'Array'), "to_ary"); } for (i = 0; i < n; i++) { @@ -12977,7 +13259,7 @@ if (other == null) other = nil; } resultlen *= len; if (resultlen > 2147483647) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "too big to product") + self.$raise($$($nesting, 'RangeError'), "too big to product") } lengths[i] = len; counters[i] = 0; @@ -13003,28 +13285,27 @@ if (other == null) other = nil; } return result || self; + ; + }, $Array_product$72.$$arity = -1); - }, TMP_Array_product_70.$$arity = -1); - - Opal.defn(self, '$push', TMP_Array_push_71 = function $$push($a_rest) { - var self = this, objects; + Opal.def(self, '$push', $Array_push$73 = function $$push($a) { + var $post_args, objects, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - objects = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - objects[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + objects = $post_args;; + for (var i = 0, length = objects.length; i < length; i++) { self.push(objects[i]); } ; return self; - }, TMP_Array_push_71.$$arity = -1); + }, $Array_push$73.$$arity = -1); + Opal.alias(self, "append", "push"); - Opal.defn(self, '$rassoc', TMP_Array_rassoc_72 = function $$rassoc(object) { + Opal.def(self, '$rassoc', $Array_rassoc$74 = function $$rassoc(object) { var self = this; @@ -13040,18 +13321,20 @@ if (other == null) other = nil; return nil; - }, TMP_Array_rassoc_72.$$arity = 1); + }, $Array_rassoc$74.$$arity = 1); - Opal.defn(self, '$reject', TMP_Array_reject_73 = function $$reject() { - var TMP_74, self = this, $iter = TMP_Array_reject_73.$$p, block = $iter || nil; + Opal.def(self, '$reject', $Array_reject$75 = function $$reject() { + var $iter = $Array_reject$75.$$p, block = $iter || nil, $$76, self = this; - if ($iter) TMP_Array_reject_73.$$p = null; + if ($iter) $Array_reject$75.$$p = null; + + if ($iter) $Array_reject$75.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject"], (TMP_74 = function(){var self = TMP_74.$$s || this; + } else { + return $send(self, 'enum_for', ["reject"], ($$76 = function(){var self = $$76.$$s || this; - return self.$size()}, TMP_74.$$s = self, TMP_74.$$arity = 0, TMP_74)) + return self.$size()}, $$76.$$s = self, $$76.$$arity = 0, $$76)) }; var result = []; @@ -13065,75 +13348,83 @@ if (other == null) other = nil; } return result; ; - }, TMP_Array_reject_73.$$arity = 0); + }, $Array_reject$75.$$arity = 0); - Opal.defn(self, '$reject!', TMP_Array_reject$B_75 = function() { - var TMP_76, self = this, $iter = TMP_Array_reject$B_75.$$p, block = $iter || nil, original = nil; + Opal.def(self, '$reject!', $Array_reject$excl$77 = function() { + var $iter = $Array_reject$excl$77.$$p, block = $iter || nil, $$78, self = this, original = nil; - if ($iter) TMP_Array_reject$B_75.$$p = null; + if ($iter) $Array_reject$excl$77.$$p = null; + + if ($iter) $Array_reject$excl$77.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject!"], (TMP_76 = function(){var self = TMP_76.$$s || this; + } else { + return $send(self, 'enum_for', ["reject!"], ($$78 = function(){var self = $$78.$$s || this; - return self.$size()}, TMP_76.$$s = self, TMP_76.$$arity = 0, TMP_76)) + return self.$size()}, $$78.$$s = self, $$78.$$arity = 0, $$78)) }; original = self.$length(); $send(self, 'delete_if', [], block.$to_proc()); if (self.$length()['$=='](original)) { return nil - } else { + } else { return self }; - }, TMP_Array_reject$B_75.$$arity = 0); + }, $Array_reject$excl$77.$$arity = 0); - Opal.defn(self, '$replace', TMP_Array_replace_77 = function $$replace(other) { + Opal.def(self, '$replace', $Array_replace$79 = function $$replace(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else { - other = Opal.const_get_relative($nesting, 'Opal').$coerce_to(other, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() - }; + other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { + return other.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); self.splice(0, self.length); self.push.apply(self, other); ; return self; - }, TMP_Array_replace_77.$$arity = 1); + }, $Array_replace$79.$$arity = 1); - Opal.defn(self, '$reverse', TMP_Array_reverse_78 = function $$reverse() { + Opal.def(self, '$reverse', $Array_reverse$80 = function $$reverse() { var self = this; - return self.slice(0).reverse() - }, TMP_Array_reverse_78.$$arity = 0); + return self.slice(0).reverse(); + }, $Array_reverse$80.$$arity = 0); - Opal.defn(self, '$reverse!', TMP_Array_reverse$B_79 = function() { + Opal.def(self, '$reverse!', $Array_reverse$excl$81 = function() { var self = this; - return self.reverse() - }, TMP_Array_reverse$B_79.$$arity = 0); + return self.reverse(); + }, $Array_reverse$excl$81.$$arity = 0); - Opal.defn(self, '$reverse_each', TMP_Array_reverse_each_80 = function $$reverse_each() { - var TMP_81, self = this, $iter = TMP_Array_reverse_each_80.$$p, block = $iter || nil; + Opal.def(self, '$reverse_each', $Array_reverse_each$82 = function $$reverse_each() { + var $iter = $Array_reverse_each$82.$$p, block = $iter || nil, $$83, self = this; - if ($iter) TMP_Array_reverse_each_80.$$p = null; + if ($iter) $Array_reverse_each$82.$$p = null; + + if ($iter) $Array_reverse_each$82.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reverse_each"], (TMP_81 = function(){var self = TMP_81.$$s || this; + } else { + return $send(self, 'enum_for', ["reverse_each"], ($$83 = function(){var self = $$83.$$s || this; - return self.$size()}, TMP_81.$$s = self, TMP_81.$$arity = 0, TMP_81)) + return self.$size()}, $$83.$$s = self, $$83.$$arity = 0, $$83)) }; $send(self.$reverse(), 'each', [], block.$to_proc()); return self; - }, TMP_Array_reverse_each_80.$$arity = 0); + }, $Array_reverse_each$82.$$arity = 0); - Opal.defn(self, '$rindex', TMP_Array_rindex_82 = function $$rindex(object) { - var self = this, $iter = TMP_Array_rindex_82.$$p, block = $iter || nil; + Opal.def(self, '$rindex', $Array_rindex$84 = function $$rindex(object) { + var $iter = $Array_rindex$84.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_rindex_82.$$p = null; + if ($iter) $Array_rindex$84.$$p = null; + + + if ($iter) $Array_rindex$84.$$p = null;; + ; var i, value; @@ -13169,17 +13460,18 @@ if (other == null) other = nil; } return nil; + ; + }, $Array_rindex$84.$$arity = -1); - }, TMP_Array_rindex_82.$$arity = -1); - - Opal.defn(self, '$rotate', TMP_Array_rotate_83 = function $$rotate(n) { + Opal.def(self, '$rotate', $Array_rotate$85 = function $$rotate(n) { var self = this; + + if (n == null) { n = 1; - } - - n = Opal.const_get_relative($nesting, 'Opal').$coerce_to(n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + }; + n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); var ary, idx, firstPart, lastPart; @@ -13197,85 +13489,87 @@ if (other == null) other = nil; lastPart = ary.slice(0, idx); return firstPart.concat(lastPart); ; - }, TMP_Array_rotate_83.$$arity = -1); + }, $Array_rotate$85.$$arity = -1); - Opal.defn(self, '$rotate!', TMP_Array_rotate$B_84 = function(cnt) { + Opal.def(self, '$rotate!', $Array_rotate$excl$86 = function(cnt) { var self = this, ary = nil; + + if (cnt == null) { cnt = 1; - } - + }; if (self.length === 0 || self.length === 1) { return self; } ; - cnt = Opal.const_get_relative($nesting, 'Opal').$coerce_to(cnt, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + cnt = $$($nesting, 'Opal').$coerce_to(cnt, $$($nesting, 'Integer'), "to_int"); ary = self.$rotate(cnt); return self.$replace(ary); - }, TMP_Array_rotate$B_84.$$arity = -1); + }, $Array_rotate$excl$86.$$arity = -1); (function($base, $super, $parent_nesting) { - function $SampleRandom(){}; - var self = $SampleRandom = $klass($base, $super, 'SampleRandom', $SampleRandom); + var self = $klass($base, $super, 'SampleRandom'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SampleRandom_initialize_85, TMP_SampleRandom_rand_86; + var $nesting = [self].concat($parent_nesting), $SampleRandom_initialize$87, $SampleRandom_rand$88; - def.rng = nil; + self.$$prototype.rng = nil; - Opal.defn(self, '$initialize', TMP_SampleRandom_initialize_85 = function $$initialize(rng) { + Opal.def(self, '$initialize', $SampleRandom_initialize$87 = function $$initialize(rng) { var self = this; return (self.rng = rng) - }, TMP_SampleRandom_initialize_85.$$arity = 1); - return (Opal.defn(self, '$rand', TMP_SampleRandom_rand_86 = function $$rand(size) { + }, $SampleRandom_initialize$87.$$arity = 1); + return (Opal.def(self, '$rand', $SampleRandom_rand$88 = function $$rand(size) { var self = this, random = nil; - random = Opal.const_get_relative($nesting, 'Opal').$coerce_to(self.rng.$rand(size), Opal.const_get_relative($nesting, 'Integer'), "to_int"); + random = $$($nesting, 'Opal').$coerce_to(self.rng.$rand(size), $$($nesting, 'Integer'), "to_int"); if ($truthy(random < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "random value must be >= 0")}; + self.$raise($$($nesting, 'RangeError'), "random value must be >= 0")}; if ($truthy(random < size)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "random value must be less than Array size") + } else { + self.$raise($$($nesting, 'RangeError'), "random value must be less than Array size") }; return random; - }, TMP_SampleRandom_rand_86.$$arity = 1), nil) && 'rand'; + }, $SampleRandom_rand$88.$$arity = 1), nil) && 'rand'; })($nesting[0], null, $nesting); - Opal.defn(self, '$sample', TMP_Array_sample_87 = function $$sample(count, options) { + Opal.def(self, '$sample', $Array_sample$89 = function $$sample(count, options) { var $a, self = this, o = nil, rng = nil; + ; + ; if ($truthy(count === undefined)) { - return self.$at(Opal.const_get_relative($nesting, 'Kernel').$rand(self.length))}; + return self.$at($$($nesting, 'Kernel').$rand(self.length))}; if ($truthy(options === undefined)) { - if ($truthy((o = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](count, Opal.const_get_relative($nesting, 'Hash'), "to_hash")))) { + if ($truthy((o = $$($nesting, 'Opal')['$coerce_to?'](count, $$($nesting, 'Hash'), "to_hash")))) { options = o; count = nil; - } else { + } else { options = nil; - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); } - } else { + } else { - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - options = Opal.const_get_relative($nesting, 'Opal').$coerce_to(options, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); + options = $$($nesting, 'Opal').$coerce_to(options, $$($nesting, 'Hash'), "to_hash"); }; if ($truthy(($truthy($a = count) ? count < 0 : $a))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "count must be greater than 0")}; + self.$raise($$($nesting, 'ArgumentError'), "count must be greater than 0")}; if ($truthy(options)) { rng = options['$[]']("random")}; - if ($truthy(($truthy($a = rng) ? rng['$respond_to?']("rand") : $a))) { - rng = Opal.const_get_relative($nesting, 'SampleRandom').$new(rng) - } else { - rng = Opal.const_get_relative($nesting, 'Kernel') - }; + rng = (function() {if ($truthy(($truthy($a = rng) ? rng['$respond_to?']("rand") : $a))) { + return $$($nesting, 'SampleRandom').$new(rng) + } else { + return $$($nesting, 'Kernel') + }; return nil; })(); if ($truthy(count)) { - } else { + } else { return self[rng.$rand(self.length)] }; @@ -13306,7 +13600,7 @@ if (other == null) other = nil; abandon = false; spin = 0; - result = Opal.const_get_relative($nesting, 'Array').$new(count); + result = $$($nesting, 'Array').$new(count); i = 1; result[0] = rng.$rand(self.length); @@ -13358,18 +13652,20 @@ if (other == null) other = nil; return count === self.length ? result : (result)['$[]'](0, count); } ; - }, TMP_Array_sample_87.$$arity = -1); + }, $Array_sample$89.$$arity = -1); - Opal.defn(self, '$select', TMP_Array_select_88 = function $$select() { - var TMP_89, self = this, $iter = TMP_Array_select_88.$$p, block = $iter || nil; + Opal.def(self, '$select', $Array_select$90 = function $$select() { + var $iter = $Array_select$90.$$p, block = $iter || nil, $$91, self = this; - if ($iter) TMP_Array_select_88.$$p = null; + if ($iter) $Array_select$90.$$p = null; + + if ($iter) $Array_select$90.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["select"], (TMP_89 = function(){var self = TMP_89.$$s || this; + } else { + return $send(self, 'enum_for', ["select"], ($$91 = function(){var self = $$91.$$s || this; - return self.$size()}, TMP_89.$$s = self, TMP_89.$$arity = 0, TMP_89)) + return self.$size()}, $$91.$$s = self, $$91.$$arity = 0, $$91)) }; var result = []; @@ -13379,65 +13675,72 @@ if (other == null) other = nil; value = Opal.yield1(block, item); - if (value !== false && value !== nil) { + if (Opal.truthy(value)) { result.push(item); } } return result; ; - }, TMP_Array_select_88.$$arity = 0); + }, $Array_select$90.$$arity = 0); - Opal.defn(self, '$select!', TMP_Array_select$B_90 = function() { - var TMP_91, self = this, $iter = TMP_Array_select$B_90.$$p, block = $iter || nil; + Opal.def(self, '$select!', $Array_select$excl$92 = function() { + var $iter = $Array_select$excl$92.$$p, block = $iter || nil, $$93, self = this; - if ($iter) TMP_Array_select$B_90.$$p = null; + if ($iter) $Array_select$excl$92.$$p = null; + + if ($iter) $Array_select$excl$92.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["select!"], (TMP_91 = function(){var self = TMP_91.$$s || this; + } else { + return $send(self, 'enum_for', ["select!"], ($$93 = function(){var self = $$93.$$s || this; - return self.$size()}, TMP_91.$$s = self, TMP_91.$$arity = 0, TMP_91)) + return self.$size()}, $$93.$$s = self, $$93.$$arity = 0, $$93)) }; var original = self.length; $send(self, 'keep_if', [], block.$to_proc()); return self.length === original ? nil : self; ; - }, TMP_Array_select$B_90.$$arity = 0); + }, $Array_select$excl$92.$$arity = 0); - Opal.defn(self, '$shift', TMP_Array_shift_92 = function $$shift(count) { + Opal.def(self, '$shift', $Array_shift$94 = function $$shift(count) { var self = this; + ; if ($truthy(count === undefined)) { if ($truthy(self.length === 0)) { return nil}; return self.shift();}; - count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); if ($truthy(count < 0)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size")}; + self.$raise($$($nesting, 'ArgumentError'), "negative array size")}; if ($truthy(self.length === 0)) { return []}; - return self.splice(0, count); - }, TMP_Array_shift_92.$$arity = -1); + return self.splice(0, count);; + }, $Array_shift$94.$$arity = -1); Opal.alias(self, "size", "length"); - Opal.defn(self, '$shuffle', TMP_Array_shuffle_93 = function $$shuffle(rng) { + Opal.def(self, '$shuffle', $Array_shuffle$95 = function $$shuffle(rng) { var self = this; - return self.$dup().$to_a()['$shuffle!'](rng) - }, TMP_Array_shuffle_93.$$arity = -1); + + ; + return self.$dup().$to_a()['$shuffle!'](rng); + }, $Array_shuffle$95.$$arity = -1); - Opal.defn(self, '$shuffle!', TMP_Array_shuffle$B_94 = function(rng) { + Opal.def(self, '$shuffle!', $Array_shuffle$excl$96 = function(rng) { var self = this; + ; + var randgen, i = self.length, j, tmp; if (rng !== undefined) { - rng = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](rng, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + rng = $$($nesting, 'Opal')['$coerce_to?'](rng, $$($nesting, 'Hash'), "to_hash"); if (rng !== nil) { rng = rng['$[]']("random"); @@ -13453,11 +13756,11 @@ if (other == null) other = nil; j = randgen.$rand(i).$to_int(); if (j < 0) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "random number too small " + (j)) + self.$raise($$($nesting, 'RangeError'), "" + "random number too small " + (j)) } if (j >= i) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "random number too big " + (j)) + self.$raise($$($nesting, 'RangeError'), "" + "random number too big " + (j)) } } else { @@ -13470,22 +13773,23 @@ if (other == null) other = nil; } return self; - - }, TMP_Array_shuffle$B_94.$$arity = -1); + ; + }, $Array_shuffle$excl$96.$$arity = -1); Opal.alias(self, "slice", "[]"); - Opal.defn(self, '$slice!', TMP_Array_slice$B_95 = function(index, length) { + Opal.def(self, '$slice!', $Array_slice$excl$97 = function(index, length) { var self = this, result = nil, range = nil, range_start = nil, range_end = nil, start = nil; + ; result = nil; if ($truthy(length === undefined)) { - if ($truthy(Opal.const_get_relative($nesting, 'Range')['$==='](index))) { + if ($truthy($$($nesting, 'Range')['$==='](index))) { range = index; result = self['$[]'](range); - range_start = Opal.const_get_relative($nesting, 'Opal').$coerce_to(range.$begin(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); - range_end = Opal.const_get_relative($nesting, 'Opal').$coerce_to(range.$end(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); + range_start = $$($nesting, 'Opal').$coerce_to(range.$begin(), $$($nesting, 'Integer'), "to_int"); + range_end = $$($nesting, 'Opal').$coerce_to(range.$end(), $$($nesting, 'Integer'), "to_int"); if (range_start < 0) { range_start += self.length; @@ -13511,9 +13815,9 @@ if (other == null) other = nil; self.splice(range_start, range_length); } ; - } else { + } else { - start = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); if (start < 0) { start += self.length; @@ -13532,10 +13836,10 @@ if (other == null) other = nil; } ; } - } else { + } else { - start = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - length = Opal.const_get_relative($nesting, 'Opal').$coerce_to(length, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); + length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); if (length < 0) { return nil; @@ -13559,15 +13863,17 @@ if (other == null) other = nil; ; }; return result; - }, TMP_Array_slice$B_95.$$arity = -2); + }, $Array_slice$excl$97.$$arity = -2); - Opal.defn(self, '$sort', TMP_Array_sort_96 = function $$sort() { - var self = this, $iter = TMP_Array_sort_96.$$p, block = $iter || nil; + Opal.def(self, '$sort', $Array_sort$98 = function $$sort() { + var $iter = $Array_sort$98.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_sort_96.$$p = null; + if ($iter) $Array_sort$98.$$p = null; + + if ($iter) $Array_sort$98.$$p = null;; if ($truthy(self.length > 1)) { - } else { + } else { return self }; @@ -13581,18 +13887,21 @@ if (other == null) other = nil; var ret = block(x, y); if (ret === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + ((x).$inspect()) + " with " + ((y).$inspect()) + " failed"); + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + ((x).$inspect()) + " with " + ((y).$inspect()) + " failed"); } return $rb_gt(ret, 0) ? 1 : ($rb_lt(ret, 0) ? -1 : 0); }); ; - }, TMP_Array_sort_96.$$arity = 0); + }, $Array_sort$98.$$arity = 0); - Opal.defn(self, '$sort!', TMP_Array_sort$B_97 = function() { - var self = this, $iter = TMP_Array_sort$B_97.$$p, block = $iter || nil; + Opal.def(self, '$sort!', $Array_sort$excl$99 = function() { + var $iter = $Array_sort$excl$99.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_sort$B_97.$$p = null; + if ($iter) $Array_sort$excl$99.$$p = null; + + + if ($iter) $Array_sort$excl$99.$$p = null;; var result; @@ -13609,39 +13918,44 @@ if (other == null) other = nil; } return self; + ; + }, $Array_sort$excl$99.$$arity = 0); - }, TMP_Array_sort$B_97.$$arity = 0); - - Opal.defn(self, '$sort_by!', TMP_Array_sort_by$B_98 = function() { - var TMP_99, self = this, $iter = TMP_Array_sort_by$B_98.$$p, block = $iter || nil; + Opal.def(self, '$sort_by!', $Array_sort_by$excl$100 = function() { + var $iter = $Array_sort_by$excl$100.$$p, block = $iter || nil, $$101, self = this; - if ($iter) TMP_Array_sort_by$B_98.$$p = null; + if ($iter) $Array_sort_by$excl$100.$$p = null; + + if ($iter) $Array_sort_by$excl$100.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["sort_by!"], (TMP_99 = function(){var self = TMP_99.$$s || this; + } else { + return $send(self, 'enum_for', ["sort_by!"], ($$101 = function(){var self = $$101.$$s || this; - return self.$size()}, TMP_99.$$s = self, TMP_99.$$arity = 0, TMP_99)) + return self.$size()}, $$101.$$s = self, $$101.$$arity = 0, $$101)) }; return self.$replace($send(self, 'sort_by', [], block.$to_proc())); - }, TMP_Array_sort_by$B_98.$$arity = 0); + }, $Array_sort_by$excl$100.$$arity = 0); - Opal.defn(self, '$take', TMP_Array_take_100 = function $$take(count) { + Opal.def(self, '$take', $Array_take$102 = function $$take(count) { var self = this; if (count < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); + self.$raise($$($nesting, 'ArgumentError')); } return self.slice(0, count); - }, TMP_Array_take_100.$$arity = 1); + }, $Array_take$102.$$arity = 1); - Opal.defn(self, '$take_while', TMP_Array_take_while_101 = function $$take_while() { - var self = this, $iter = TMP_Array_take_while_101.$$p, block = $iter || nil; + Opal.def(self, '$take_while', $Array_take_while$103 = function $$take_while() { + var $iter = $Array_take_while$103.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_take_while_101.$$p = null; + if ($iter) $Array_take_while$103.$$p = null; + + + if ($iter) $Array_take_while$103.$$p = null;; var result = []; @@ -13658,29 +13972,29 @@ if (other == null) other = nil; } return result; + ; + }, $Array_take_while$103.$$arity = 0); - }, TMP_Array_take_while_101.$$arity = 0); - - Opal.defn(self, '$to_a', TMP_Array_to_a_102 = function $$to_a() { + Opal.def(self, '$to_a', $Array_to_a$104 = function $$to_a() { var self = this; return self - }, TMP_Array_to_a_102.$$arity = 0); + }, $Array_to_a$104.$$arity = 0); Opal.alias(self, "to_ary", "to_a"); - Opal.defn(self, '$to_h', TMP_Array_to_h_103 = function $$to_h() { + Opal.def(self, '$to_h', $Array_to_h$105 = function $$to_h() { var self = this; var i, len = self.length, ary, key, val, hash = $hash2([], {}); for (i = 0; i < len; i++) { - ary = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](self[i], Opal.const_get_relative($nesting, 'Array'), "to_ary"); + ary = $$($nesting, 'Opal')['$coerce_to?'](self[i], $$($nesting, 'Array'), "to_ary"); if (!ary.$$is_array) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong element type " + ((ary).$class()) + " at " + (i) + " (expected array)") + self.$raise($$($nesting, 'TypeError'), "" + "wrong element type " + ((ary).$class()) + " at " + (i) + " (expected array)") } if (ary.length !== 2) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong array length at " + (i) + " (expected 2, was " + ((ary).$length()) + ")") + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong array length at " + (i) + " (expected 2, was " + ((ary).$length()) + ")") } key = ary[0]; val = ary[1]; @@ -13689,40 +14003,51 @@ if (other == null) other = nil; return hash; - }, TMP_Array_to_h_103.$$arity = 0); + }, $Array_to_h$105.$$arity = 0); Opal.alias(self, "to_s", "inspect"); - Opal.defn(self, '$transpose', TMP_Array_transpose_106 = function $$transpose() { - var TMP_104, self = this, result = nil, max = nil; + Opal.def(self, '$transpose', $Array_transpose$106 = function $$transpose() { + var $$107, self = this, result = nil, max = nil; if ($truthy(self['$empty?']())) { return []}; result = []; max = nil; - $send(self, 'each', [], (TMP_104 = function(row){var self = TMP_104.$$s || this, $a, TMP_105; -if (row == null) row = nil; + $send(self, 'each', [], ($$107 = function(row){var self = $$107.$$s || this, $a, $$108; + - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$==='](row))) { - row = row.$to_a() - } else { - row = Opal.const_get_relative($nesting, 'Opal').$coerce_to(row, Opal.const_get_relative($nesting, 'Array'), "to_ary").$to_a() + + if (row == null) { + row = nil; }; + row = (function() {if ($truthy($$($nesting, 'Array')['$==='](row))) { + return row.$to_a() + } else { + return $$($nesting, 'Opal').$coerce_to(row, $$($nesting, 'Array'), "to_ary").$to_a() + }; return nil; })(); max = ($truthy($a = max) ? $a : row.length); if ($truthy((row.length)['$!='](max))) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "element size differs (" + (row.length) + " should be " + (max) + ")")}; - return $send((row.length), 'times', [], (TMP_105 = function(i){var self = TMP_105.$$s || this, $b, entry = nil, $writer = nil; -if (i == null) i = nil; + self.$raise($$($nesting, 'IndexError'), "" + "element size differs (" + (row.length) + " should be " + (max) + ")")}; + return $send((row.length), 'times', [], ($$108 = function(i){var self = $$108.$$s || this, $b, entry = nil, $writer = nil; + + + if (i == null) { + i = nil; + }; entry = ($truthy($b = result['$[]'](i)) ? $b : (($writer = [i, []]), $send(result, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - return entry['$<<'](row.$at(i));}, TMP_105.$$s = self, TMP_105.$$arity = 1, TMP_105));}, TMP_104.$$s = self, TMP_104.$$arity = 1, TMP_104)); + return entry['$<<'](row.$at(i));}, $$108.$$s = self, $$108.$$arity = 1, $$108));}, $$107.$$s = self, $$107.$$arity = 1, $$107)); return result; - }, TMP_Array_transpose_106.$$arity = 0); + }, $Array_transpose$106.$$arity = 0); - Opal.defn(self, '$uniq', TMP_Array_uniq_107 = function $$uniq() { - var self = this, $iter = TMP_Array_uniq_107.$$p, block = $iter || nil; + Opal.def(self, '$uniq', $Array_uniq$109 = function $$uniq() { + var $iter = $Array_uniq$109.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_uniq_107.$$p = null; + if ($iter) $Array_uniq$109.$$p = null; + + + if ($iter) $Array_uniq$109.$$p = null;; var hash = $hash2([], {}), i, length, item, key; @@ -13745,13 +14070,16 @@ if (i == null) i = nil; } return toArraySubclass((hash).$values(), self.$class()); + ; + }, $Array_uniq$109.$$arity = 0); - }, TMP_Array_uniq_107.$$arity = 0); - - Opal.defn(self, '$uniq!', TMP_Array_uniq$B_108 = function() { - var self = this, $iter = TMP_Array_uniq$B_108.$$p, block = $iter || nil; + Opal.def(self, '$uniq!', $Array_uniq$excl$110 = function() { + var $iter = $Array_uniq$excl$110.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_uniq$B_108.$$p = null; + if ($iter) $Array_uniq$excl$110.$$p = null; + + + if ($iter) $Array_uniq$excl$110.$$p = null;; var original_length = self.length, hash = $hash2([], {}), i, length, item, key; @@ -13770,44 +14098,46 @@ if (i == null) i = nil; } return self.length === original_length ? nil : self; + ; + }, $Array_uniq$excl$110.$$arity = 0); - }, TMP_Array_uniq$B_108.$$arity = 0); - - Opal.defn(self, '$unshift', TMP_Array_unshift_109 = function $$unshift($a_rest) { - var self = this, objects; + Opal.def(self, '$unshift', $Array_unshift$111 = function $$unshift($a) { + var $post_args, objects, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - objects = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - objects[$arg_idx - 0] = arguments[$arg_idx]; - } + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + objects = $post_args;; + for (var i = objects.length - 1; i >= 0; i--) { self.unshift(objects[i]); } ; return self; - }, TMP_Array_unshift_109.$$arity = -1); + }, $Array_unshift$111.$$arity = -1); + Opal.alias(self, "prepend", "unshift"); - Opal.defn(self, '$values_at', TMP_Array_values_at_112 = function $$values_at($a_rest) { - var TMP_110, self = this, args, out = nil; + Opal.def(self, '$values_at', $Array_values_at$112 = function $$values_at($a) { + var $post_args, args, $$113, self = this, out = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; out = []; - $send(args, 'each', [], (TMP_110 = function(elem){var self = TMP_110.$$s || this, TMP_111, finish = nil, start = nil, i = nil; -if (elem == null) elem = nil; - if ($truthy(elem['$kind_of?'](Opal.const_get_relative($nesting, 'Range')))) { + $send(args, 'each', [], ($$113 = function(elem){var self = $$113.$$s || this, $$114, finish = nil, start = nil, i = nil; + + + + if (elem == null) { + elem = nil; + }; + if ($truthy(elem['$is_a?']($$($nesting, 'Range')))) { - finish = Opal.const_get_relative($nesting, 'Opal').$coerce_to(elem.$last(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); - start = Opal.const_get_relative($nesting, 'Opal').$coerce_to(elem.$first(), Opal.const_get_relative($nesting, 'Integer'), "to_int"); + finish = $$($nesting, 'Opal').$coerce_to(elem.$last(), $$($nesting, 'Integer'), "to_int"); + start = $$($nesting, 'Opal').$coerce_to(elem.$first(), $$($nesting, 'Integer'), "to_int"); if (start < 0) { start = start + self.length; @@ -13825,27 +14155,33 @@ if (elem == null) elem = nil; return nil;; } ; - return $send(start, 'upto', [finish], (TMP_111 = function(i){var self = TMP_111.$$s || this; -if (i == null) i = nil; - return out['$<<'](self.$at(i))}, TMP_111.$$s = self, TMP_111.$$arity = 1, TMP_111)); - } else { + return $send(start, 'upto', [finish], ($$114 = function(i){var self = $$114.$$s || this; + + + + if (i == null) { + i = nil; + }; + return out['$<<'](self.$at(i));}, $$114.$$s = self, $$114.$$arity = 1, $$114)); + } else { - i = Opal.const_get_relative($nesting, 'Opal').$coerce_to(elem, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + i = $$($nesting, 'Opal').$coerce_to(elem, $$($nesting, 'Integer'), "to_int"); return out['$<<'](self.$at(i)); - }}, TMP_110.$$s = self, TMP_110.$$arity = 1, TMP_110)); + };}, $$113.$$s = self, $$113.$$arity = 1, $$113)); return out; - }, TMP_Array_values_at_112.$$arity = -1); + }, $Array_values_at$112.$$arity = -1); - Opal.defn(self, '$zip', TMP_Array_zip_113 = function $$zip($a_rest) { - var $b, self = this, others, $iter = TMP_Array_zip_113.$$p, block = $iter || nil; + Opal.def(self, '$zip', $Array_zip$115 = function $$zip($a) { + var $iter = $Array_zip$115.$$p, block = $iter || nil, $post_args, others, $b, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - others = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - others[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Array_zip_113.$$p = null; + if ($iter) $Array_zip$115.$$p = null; + + + if ($iter) $Array_zip$115.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + others = $post_args;; var result = [], size = self.length, part, o, i, j, jj; @@ -13862,7 +14198,7 @@ if (i == null) i = nil; } continue; } - others[j] = ($truthy($b = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](o, Opal.const_get_relative($nesting, 'Array'), "to_ary")) ? $b : Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](o, Opal.const_get_relative($nesting, 'Enumerator'), "each")).$to_a(); + others[j] = ($truthy($b = $$($nesting, 'Opal')['$coerce_to?'](o, $$($nesting, 'Array'), "to_ary")) ? $b : $$($nesting, 'Opal')['$coerce_to!'](o, $$($nesting, 'Enumerator'), "each")).$to_a(); } for (i = 0; i < size; i++) { @@ -13890,35 +14226,51 @@ if (i == null) i = nil; } return result; - - }, TMP_Array_zip_113.$$arity = -1); - Opal.defs(self, '$inherited', TMP_Array_inherited_114 = function $$inherited(klass) { + ; + }, $Array_zip$115.$$arity = -1); + Opal.defs(self, '$inherited', $Array_inherited$116 = function $$inherited(klass) { var self = this; - klass.$$proto.$to_a = function() { + klass.$$prototype.$to_a = function() { return this.slice(0, this.length); } - }, TMP_Array_inherited_114.$$arity = 1); + }, $Array_inherited$116.$$arity = 1); - Opal.defn(self, '$instance_variables', TMP_Array_instance_variables_115 = function $$instance_variables() { - var TMP_116, self = this, $iter = TMP_Array_instance_variables_115.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$instance_variables', $Array_instance_variables$117 = function $$instance_variables() { + var $$118, $iter = $Array_instance_variables$117.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Array_instance_variables_115.$$p = null; + if ($iter) $Array_instance_variables$117.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - return $send($send(self, Opal.find_super_dispatcher(self, 'instance_variables', TMP_Array_instance_variables_115, false), $zuper, $iter), 'reject', [], (TMP_116 = function(ivar){var self = TMP_116.$$s || this, $a; -if (ivar == null) ivar = nil; - return ($truthy($a = /^@\d+$/.test(ivar)) ? $a : ivar['$==']("@length"))}, TMP_116.$$s = self, TMP_116.$$arity = 1, TMP_116)) - }, TMP_Array_instance_variables_115.$$arity = 0); - return Opal.const_get_relative($nesting, 'Opal').$pristine(self, "allocate", "copy_instance_variables", "initialize_dup"); + return $send($send(self, Opal.find_super_dispatcher(self, 'instance_variables', $Array_instance_variables$117, false), $zuper, $iter), 'reject', [], ($$118 = function(ivar){var self = $$118.$$s || this, $a; + + + + if (ivar == null) { + ivar = nil; + }; + return ($truthy($a = /^@\d+$/.test(ivar)) ? $a : ivar['$==']("@length"));}, $$118.$$s = self, $$118.$$arity = 1, $$118)) + }, $Array_instance_variables$117.$$arity = 0); + $$($nesting, 'Opal').$pristine(self.$singleton_class(), "allocate"); + $$($nesting, 'Opal').$pristine(self, "copy_instance_variables", "initialize_dup"); + return (Opal.def(self, '$pack', $Array_pack$119 = function $$pack($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self.$raise("To use Array#pack, you must first require 'corelib/array/pack'."); + }, $Array_pack$119.$$arity = -1), nil) && 'pack'; })($nesting[0], Array, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/hash"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); @@ -13929,41 +14281,39 @@ Opal.modules["corelib/hash"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$include', '$coerce_to?', '$[]', '$merge!', '$allocate', '$raise', '$coerce_to!', '$each', '$fetch', '$>=', '$>', '$==', '$compare_by_identity', '$lambda?', '$abs', '$arity', '$call', '$enum_for', '$size', '$respond_to?', '$class', '$dig', '$inspect', '$map', '$to_proc', '$flatten', '$eql?', '$default', '$dup', '$default_proc', '$default_proc=', '$-', '$default=', '$alias_method', '$proc']); + Opal.add_stubs(['$require', '$include', '$coerce_to?', '$[]', '$merge!', '$allocate', '$raise', '$coerce_to!', '$each', '$fetch', '$>=', '$>', '$==', '$compare_by_identity', '$lambda?', '$abs', '$arity', '$enum_for', '$size', '$respond_to?', '$class', '$dig', '$new', '$inspect', '$map', '$to_proc', '$flatten', '$eql?', '$default', '$dup', '$default_proc', '$default_proc=', '$-', '$default=', '$proc']); self.$require("corelib/enumerable"); return (function($base, $super, $parent_nesting) { - function $Hash(){}; - var self = $Hash = $klass($base, $super, 'Hash', $Hash); + var self = $klass($base, $super, 'Hash'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Hash_$$_1, TMP_Hash_allocate_2, TMP_Hash_try_convert_3, TMP_Hash_initialize_4, TMP_Hash_$eq$eq_5, TMP_Hash_$gt$eq_7, TMP_Hash_$gt_8, TMP_Hash_$lt_9, TMP_Hash_$lt$eq_10, TMP_Hash_$$_11, TMP_Hash_$$$eq_12, TMP_Hash_assoc_13, TMP_Hash_clear_14, TMP_Hash_clone_15, TMP_Hash_compact_16, TMP_Hash_compact$B_17, TMP_Hash_compare_by_identity_18, TMP_Hash_compare_by_identity$q_19, TMP_Hash_default_20, TMP_Hash_default$eq_21, TMP_Hash_default_proc_22, TMP_Hash_default_proc$eq_23, TMP_Hash_delete_24, TMP_Hash_delete_if_25, TMP_Hash_dig_27, TMP_Hash_each_28, TMP_Hash_each_key_30, TMP_Hash_each_value_32, TMP_Hash_empty$q_34, TMP_Hash_fetch_35, TMP_Hash_fetch_values_36, TMP_Hash_flatten_38, TMP_Hash_has_key$q_39, TMP_Hash_has_value$q_40, TMP_Hash_hash_41, TMP_Hash_index_42, TMP_Hash_indexes_43, TMP_Hash_inspect_44, TMP_Hash_invert_45, TMP_Hash_keep_if_46, TMP_Hash_keys_48, TMP_Hash_length_49, TMP_Hash_merge_50, TMP_Hash_merge$B_51, TMP_Hash_rassoc_52, TMP_Hash_rehash_53, TMP_Hash_reject_54, TMP_Hash_reject$B_56, TMP_Hash_replace_58, TMP_Hash_select_59, TMP_Hash_select$B_61, TMP_Hash_shift_63, TMP_Hash_to_a_64, TMP_Hash_to_h_65, TMP_Hash_to_hash_66, TMP_Hash_to_proc_68, TMP_Hash_transform_values_69, TMP_Hash_transform_values$B_71, TMP_Hash_values_73; + var $nesting = [self].concat($parent_nesting), $Hash_$$$1, $Hash_allocate$2, $Hash_try_convert$3, $Hash_initialize$4, $Hash_$eq_eq$5, $Hash_$gt_eq$6, $Hash_$gt$8, $Hash_$lt$9, $Hash_$lt_eq$10, $Hash_$$$11, $Hash_$$$eq$12, $Hash_assoc$13, $Hash_clear$14, $Hash_clone$15, $Hash_compact$16, $Hash_compact$excl$17, $Hash_compare_by_identity$18, $Hash_compare_by_identity$ques$19, $Hash_default$20, $Hash_default$eq$21, $Hash_default_proc$22, $Hash_default_proc$eq$23, $Hash_delete$24, $Hash_delete_if$25, $Hash_dig$27, $Hash_each$28, $Hash_each_key$30, $Hash_each_value$32, $Hash_empty$ques$34, $Hash_fetch$35, $Hash_fetch_values$36, $Hash_flatten$38, $Hash_has_key$ques$39, $Hash_has_value$ques$40, $Hash_hash$41, $Hash_index$42, $Hash_indexes$43, $Hash_inspect$44, $Hash_invert$45, $Hash_keep_if$46, $Hash_keys$48, $Hash_length$49, $Hash_merge$50, $Hash_merge$excl$51, $Hash_rassoc$52, $Hash_rehash$53, $Hash_reject$54, $Hash_reject$excl$56, $Hash_replace$58, $Hash_select$59, $Hash_select$excl$61, $Hash_shift$63, $Hash_slice$64, $Hash_to_a$65, $Hash_to_h$66, $Hash_to_hash$67, $Hash_to_proc$68, $Hash_transform_keys$70, $Hash_transform_keys$excl$72, $Hash_transform_values$74, $Hash_transform_values$excl$76, $Hash_values$78; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - def.$$is_hash = true; - Opal.defs(self, '$[]', TMP_Hash_$$_1 = function($a_rest) { - var self = this, argv; + self.$include($$($nesting, 'Enumerable')); + self.$$prototype.$$is_hash = true; + Opal.defs(self, '$[]', $Hash_$$$1 = function($a) { + var $post_args, argv, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - argv = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - argv[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + argv = $post_args;; var hash, argc = argv.length, i; if (argc === 1) { - hash = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + hash = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Hash'), "to_hash"); if (hash !== nil) { return self.$allocate()['$merge!'](hash); } - argv = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), Opal.const_get_relative($nesting, 'Array'), "to_ary"); + argv = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Array'), "to_ary"); if (argv === nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "odd number of arguments for Hash") + self.$raise($$($nesting, 'ArgumentError'), "odd number of arguments for Hash") } argc = argv.length; @@ -13979,7 +14329,7 @@ Opal.modules["corelib/hash"] = function(Opal) { hash.$store(argv[i][0], argv[i][1]); break; default: - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "invalid number of elements (" + (argv[i].length) + " for 1..2)") + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid number of elements (" + (argv[i].length) + " for 1..2)") } } @@ -13987,7 +14337,7 @@ Opal.modules["corelib/hash"] = function(Opal) { } if (argc % 2 !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "odd number of arguments for Hash") + self.$raise($$($nesting, 'ArgumentError'), "odd number of arguments for Hash") } hash = self.$allocate(); @@ -13997,13 +14347,13 @@ Opal.modules["corelib/hash"] = function(Opal) { } return hash; - - }, TMP_Hash_$$_1.$$arity = -1); - Opal.defs(self, '$allocate', TMP_Hash_allocate_2 = function $$allocate() { + ; + }, $Hash_$$$1.$$arity = -1); + Opal.defs(self, '$allocate', $Hash_allocate$2 = function $$allocate() { var self = this; - var hash = new self.$$alloc(); + var hash = new self.$$constructor(); Opal.hash_init(hash); @@ -14012,29 +14362,33 @@ Opal.modules["corelib/hash"] = function(Opal) { return hash; - }, TMP_Hash_allocate_2.$$arity = 0); - Opal.defs(self, '$try_convert', TMP_Hash_try_convert_3 = function $$try_convert(obj) { + }, $Hash_allocate$2.$$arity = 0); + Opal.defs(self, '$try_convert', $Hash_try_convert$3 = function $$try_convert(obj) { var self = this; - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](obj, Opal.const_get_relative($nesting, 'Hash'), "to_hash") - }, TMP_Hash_try_convert_3.$$arity = 1); + return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Hash'), "to_hash") + }, $Hash_try_convert$3.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Hash_initialize_4 = function $$initialize(defaults) { - var self = this, $iter = TMP_Hash_initialize_4.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Hash_initialize$4 = function $$initialize(defaults) { + var $iter = $Hash_initialize$4.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_initialize_4.$$p = null; + if ($iter) $Hash_initialize$4.$$p = null; + + if ($iter) $Hash_initialize$4.$$p = null;; + ; if (defaults !== undefined && block !== nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "wrong number of arguments (1 for 0)") + self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (1 for 0)") } self.$$none = (defaults === undefined ? nil : defaults); self.$$proc = block; - ; + return self; - }, TMP_Hash_initialize_4.$$arity = -1); + ; + }, $Hash_initialize$4.$$arity = -1); - Opal.defn(self, '$==', TMP_Hash_$eq$eq_5 = function(other) { + Opal.def(self, '$==', $Hash_$eq_eq$5 = function(other) { var self = this; @@ -14068,62 +14422,70 @@ Opal.modules["corelib/hash"] = function(Opal) { return true; - }, TMP_Hash_$eq$eq_5.$$arity = 1); + }, $Hash_$eq_eq$5.$$arity = 1); - Opal.defn(self, '$>=', TMP_Hash_$gt$eq_7 = function(other) { - var TMP_6, self = this, result = nil; + Opal.def(self, '$>=', $Hash_$gt_eq$6 = function(other) { + var $$7, self = this, result = nil; - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); if (self.$$keys.length < other.$$keys.length) { return false } ; result = true; - $send(other, 'each', [], (TMP_6 = function(other_key, other_val){var self = TMP_6.$$s || this, val = nil; -if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; + $send(other, 'each', [], ($$7 = function(other_key, other_val){var self = $$7.$$s || this, val = nil; + + + if (other_key == null) { + other_key = nil; + }; + + if (other_val == null) { + other_val = nil; + }; val = self.$fetch(other_key, null); if (val == null || val !== other_val) { result = false; return; } - ;}, TMP_6.$$s = self, TMP_6.$$arity = 2, TMP_6)); + ;}, $$7.$$s = self, $$7.$$arity = 2, $$7)); return result; - }, TMP_Hash_$gt$eq_7.$$arity = 1); + }, $Hash_$gt_eq$6.$$arity = 1); - Opal.defn(self, '$>', TMP_Hash_$gt_8 = function(other) { + Opal.def(self, '$>', $Hash_$gt$8 = function(other) { var self = this; - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); if (self.$$keys.length <= other.$$keys.length) { return false } ; return $rb_ge(self, other); - }, TMP_Hash_$gt_8.$$arity = 1); + }, $Hash_$gt$8.$$arity = 1); - Opal.defn(self, '$<', TMP_Hash_$lt_9 = function(other) { + Opal.def(self, '$<', $Hash_$lt$9 = function(other) { var self = this; - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); return $rb_gt(other, self); - }, TMP_Hash_$lt_9.$$arity = 1); + }, $Hash_$lt$9.$$arity = 1); - Opal.defn(self, '$<=', TMP_Hash_$lt$eq_10 = function(other) { + Opal.def(self, '$<=', $Hash_$lt_eq$10 = function(other) { var self = this; - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); return $rb_ge(other, self); - }, TMP_Hash_$lt$eq_10.$$arity = 1); + }, $Hash_$lt_eq$10.$$arity = 1); - Opal.defn(self, '$[]', TMP_Hash_$$_11 = function(key) { + Opal.def(self, '$[]', $Hash_$$$11 = function(key) { var self = this; @@ -14135,18 +14497,18 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return self.$default(key); - }, TMP_Hash_$$_11.$$arity = 1); + }, $Hash_$$$11.$$arity = 1); - Opal.defn(self, '$[]=', TMP_Hash_$$$eq_12 = function(key, value) { + Opal.def(self, '$[]=', $Hash_$$$eq$12 = function(key, value) { var self = this; Opal.hash_put(self, key, value); return value; - }, TMP_Hash_$$$eq_12.$$arity = 2); + }, $Hash_$$$eq$12.$$arity = 2); - Opal.defn(self, '$assoc', TMP_Hash_assoc_13 = function $$assoc(object) { + Opal.def(self, '$assoc', $Hash_assoc$13 = function $$assoc(object) { var self = this; @@ -14166,31 +14528,31 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return nil; - }, TMP_Hash_assoc_13.$$arity = 1); + }, $Hash_assoc$13.$$arity = 1); - Opal.defn(self, '$clear', TMP_Hash_clear_14 = function $$clear() { + Opal.def(self, '$clear', $Hash_clear$14 = function $$clear() { var self = this; Opal.hash_init(self); return self; - }, TMP_Hash_clear_14.$$arity = 0); + }, $Hash_clear$14.$$arity = 0); - Opal.defn(self, '$clone', TMP_Hash_clone_15 = function $$clone() { + Opal.def(self, '$clone', $Hash_clone$15 = function $$clone() { var self = this; - var hash = new self.$$class.$$alloc(); + var hash = new self.$$class(); Opal.hash_init(hash); Opal.hash_clone(self, hash); return hash; - }, TMP_Hash_clone_15.$$arity = 0); + }, $Hash_clone$15.$$arity = 0); - Opal.defn(self, '$compact', TMP_Hash_compact_16 = function $$compact() { + Opal.def(self, '$compact', $Hash_compact$16 = function $$compact() { var self = this; @@ -14213,9 +14575,9 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return hash; - }, TMP_Hash_compact_16.$$arity = 0); + }, $Hash_compact$16.$$arity = 0); - Opal.defn(self, '$compact!', TMP_Hash_compact$B_17 = function() { + Opal.def(self, '$compact!', $Hash_compact$excl$17 = function() { var self = this; @@ -14242,9 +14604,9 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return changes_were_made ? self : nil; - }, TMP_Hash_compact$B_17.$$arity = 0); + }, $Hash_compact$excl$17.$$arity = 0); - Opal.defn(self, '$compare_by_identity', TMP_Hash_compare_by_identity_18 = function $$compare_by_identity() { + Opal.def(self, '$compare_by_identity', $Hash_compare_by_identity$18 = function $$compare_by_identity() { var self = this; @@ -14268,18 +14630,20 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; self.$$smap = identity_hash.$$smap; return self; - }, TMP_Hash_compare_by_identity_18.$$arity = 0); + }, $Hash_compare_by_identity$18.$$arity = 0); - Opal.defn(self, '$compare_by_identity?', TMP_Hash_compare_by_identity$q_19 = function() { + Opal.def(self, '$compare_by_identity?', $Hash_compare_by_identity$ques$19 = function() { var self = this; - return self.$$by_identity === true - }, TMP_Hash_compare_by_identity$q_19.$$arity = 0); + return self.$$by_identity === true; + }, $Hash_compare_by_identity$ques$19.$$arity = 0); - Opal.defn(self, '$default', TMP_Hash_default_20 = function(key) { + Opal.def(self, '$default', $Hash_default$20 = function(key) { var self = this; + ; + if (key !== undefined && self.$$proc !== nil && self.$$proc !== undefined) { return self.$$proc.$call(self, key); } @@ -14287,10 +14651,10 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return nil; } return self.$$none; + ; + }, $Hash_default$20.$$arity = -1); - }, TMP_Hash_default_20.$$arity = -1); - - Opal.defn(self, '$default=', TMP_Hash_default$eq_21 = function(object) { + Opal.def(self, '$default=', $Hash_default$eq$21 = function(object) { var self = this; @@ -14299,9 +14663,9 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return object; - }, TMP_Hash_default$eq_21.$$arity = 1); + }, $Hash_default$eq$21.$$arity = 1); - Opal.defn(self, '$default_proc', TMP_Hash_default_proc_22 = function $$default_proc() { + Opal.def(self, '$default_proc', $Hash_default_proc$22 = function $$default_proc() { var self = this; @@ -14310,19 +14674,19 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; } return nil; - }, TMP_Hash_default_proc_22.$$arity = 0); + }, $Hash_default_proc$22.$$arity = 0); - Opal.defn(self, '$default_proc=', TMP_Hash_default_proc$eq_23 = function(default_proc) { + Opal.def(self, '$default_proc=', $Hash_default_proc$eq$23 = function(default_proc) { var self = this; var proc = default_proc; if (proc !== nil) { - proc = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](proc, Opal.const_get_relative($nesting, 'Proc'), "to_proc"); + proc = $$($nesting, 'Opal')['$coerce_to!'](proc, $$($nesting, 'Proc'), "to_proc"); if ((proc)['$lambda?']() && (proc).$arity().$abs() !== 2) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "default_proc takes two arguments"); + self.$raise($$($nesting, 'TypeError'), "default_proc takes two arguments"); } } @@ -14331,12 +14695,15 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return default_proc; - }, TMP_Hash_default_proc$eq_23.$$arity = 1); + }, $Hash_default_proc$eq$23.$$arity = 1); - Opal.defn(self, '$delete', TMP_Hash_delete_24 = function(key) { - var self = this, $iter = TMP_Hash_delete_24.$$p, block = $iter || nil; + Opal.def(self, '$delete', $Hash_delete$24 = function(key) { + var $iter = $Hash_delete$24.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_delete_24.$$p = null; + if ($iter) $Hash_delete$24.$$p = null; + + + if ($iter) $Hash_delete$24.$$p = null;; var value = Opal.hash_delete(self, key); @@ -14345,23 +14712,25 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; } if (block !== nil) { - return block.$call(key); + return Opal.yield1(block, key); } return nil; + ; + }, $Hash_delete$24.$$arity = 1); - }, TMP_Hash_delete_24.$$arity = 1); - - Opal.defn(self, '$delete_if', TMP_Hash_delete_if_25 = function $$delete_if() { - var TMP_26, self = this, $iter = TMP_Hash_delete_if_25.$$p, block = $iter || nil; + Opal.def(self, '$delete_if', $Hash_delete_if$25 = function $$delete_if() { + var $iter = $Hash_delete_if$25.$$p, block = $iter || nil, $$26, self = this; - if ($iter) TMP_Hash_delete_if_25.$$p = null; + if ($iter) $Hash_delete_if$25.$$p = null; + + if ($iter) $Hash_delete_if$25.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["delete_if"], (TMP_26 = function(){var self = TMP_26.$$s || this; + } else { + return $send(self, 'enum_for', ["delete_if"], ($$26 = function(){var self = $$26.$$s || this; - return self.$size()}, TMP_26.$$s = self, TMP_26.$$arity = 0, TMP_26)) + return self.$size()}, $$26.$$s = self, $$26.$$arity = 0, $$26)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { @@ -14386,19 +14755,17 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return self; ; - }, TMP_Hash_delete_if_25.$$arity = 0); + }, $Hash_delete_if$25.$$arity = 0); Opal.alias(self, "dup", "clone"); - Opal.defn(self, '$dig', TMP_Hash_dig_27 = function $$dig(key, $a_rest) { - var self = this, keys, item = nil; + Opal.def(self, '$dig', $Hash_dig$27 = function $$dig(key, $a) { + var $post_args, keys, self = this, item = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - keys = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - keys[$arg_idx - 1] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + keys = $post_args;; item = self['$[]'](key); if (item === nil || keys.length === 0) { @@ -14406,22 +14773,24 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; } ; if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") + } else { + self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") }; return $send(item, 'dig', Opal.to_a(keys)); - }, TMP_Hash_dig_27.$$arity = -2); + }, $Hash_dig$27.$$arity = -2); - Opal.defn(self, '$each', TMP_Hash_each_28 = function $$each() { - var TMP_29, self = this, $iter = TMP_Hash_each_28.$$p, block = $iter || nil; + Opal.def(self, '$each', $Hash_each$28 = function $$each() { + var $iter = $Hash_each$28.$$p, block = $iter || nil, $$29, self = this; - if ($iter) TMP_Hash_each_28.$$p = null; + if ($iter) $Hash_each$28.$$p = null; + + if ($iter) $Hash_each$28.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each"], (TMP_29 = function(){var self = TMP_29.$$s || this; + } else { + return $send(self, 'enum_for', ["each"], ($$29 = function(){var self = $$29.$$s || this; - return self.$size()}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29)) + return self.$size()}, $$29.$$s = self, $$29.$$arity = 0, $$29)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { @@ -14439,18 +14808,20 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return self; ; - }, TMP_Hash_each_28.$$arity = 0); + }, $Hash_each$28.$$arity = 0); - Opal.defn(self, '$each_key', TMP_Hash_each_key_30 = function $$each_key() { - var TMP_31, self = this, $iter = TMP_Hash_each_key_30.$$p, block = $iter || nil; + Opal.def(self, '$each_key', $Hash_each_key$30 = function $$each_key() { + var $iter = $Hash_each_key$30.$$p, block = $iter || nil, $$31, self = this; - if ($iter) TMP_Hash_each_key_30.$$p = null; + if ($iter) $Hash_each_key$30.$$p = null; + + if ($iter) $Hash_each_key$30.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each_key"], (TMP_31 = function(){var self = TMP_31.$$s || this; + } else { + return $send(self, 'enum_for', ["each_key"], ($$31 = function(){var self = $$31.$$s || this; - return self.$size()}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31)) + return self.$size()}, $$31.$$s = self, $$31.$$arity = 0, $$31)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { @@ -14461,19 +14832,21 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return self; ; - }, TMP_Hash_each_key_30.$$arity = 0); + }, $Hash_each_key$30.$$arity = 0); Opal.alias(self, "each_pair", "each"); - Opal.defn(self, '$each_value', TMP_Hash_each_value_32 = function $$each_value() { - var TMP_33, self = this, $iter = TMP_Hash_each_value_32.$$p, block = $iter || nil; + Opal.def(self, '$each_value', $Hash_each_value$32 = function $$each_value() { + var $iter = $Hash_each_value$32.$$p, block = $iter || nil, $$33, self = this; - if ($iter) TMP_Hash_each_value_32.$$p = null; + if ($iter) $Hash_each_value$32.$$p = null; + + if ($iter) $Hash_each_value$32.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each_value"], (TMP_33 = function(){var self = TMP_33.$$s || this; + } else { + return $send(self, 'enum_for', ["each_value"], ($$33 = function(){var self = $$33.$$s || this; - return self.$size()}, TMP_33.$$s = self, TMP_33.$$arity = 0, TMP_33)) + return self.$size()}, $$33.$$s = self, $$33.$$arity = 0, $$33)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { @@ -14484,21 +14857,24 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return self; ; - }, TMP_Hash_each_value_32.$$arity = 0); + }, $Hash_each_value$32.$$arity = 0); - Opal.defn(self, '$empty?', TMP_Hash_empty$q_34 = function() { + Opal.def(self, '$empty?', $Hash_empty$ques$34 = function() { var self = this; - return self.$$keys.length === 0 - }, TMP_Hash_empty$q_34.$$arity = 0); + return self.$$keys.length === 0; + }, $Hash_empty$ques$34.$$arity = 0); Opal.alias(self, "eql?", "=="); - Opal.defn(self, '$fetch', TMP_Hash_fetch_35 = function $$fetch(key, defaults) { - var self = this, $iter = TMP_Hash_fetch_35.$$p, block = $iter || nil; + Opal.def(self, '$fetch', $Hash_fetch$35 = function $$fetch(key, defaults) { + var $iter = $Hash_fetch$35.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_fetch_35.$$p = null; + if ($iter) $Hash_fetch$35.$$p = null; + if ($iter) $Hash_fetch$35.$$p = null;; + ; + var value = Opal.hash_get(self, key); if (value !== undefined) { @@ -14513,32 +14889,39 @@ if (other_key == null) other_key = nil;if (other_val == null) other_val = nil; return defaults; } ; - return self.$raise(Opal.const_get_relative($nesting, 'KeyError'), "" + "key not found: " + (key.$inspect())); - }, TMP_Hash_fetch_35.$$arity = -2); + return self.$raise($$($nesting, 'KeyError').$new("" + "key not found: " + (key.$inspect()), $hash2(["key", "receiver"], {"key": key, "receiver": self}))); + }, $Hash_fetch$35.$$arity = -2); - Opal.defn(self, '$fetch_values', TMP_Hash_fetch_values_36 = function $$fetch_values($a_rest) { - var TMP_37, self = this, keys, $iter = TMP_Hash_fetch_values_36.$$p, block = $iter || nil; + Opal.def(self, '$fetch_values', $Hash_fetch_values$36 = function $$fetch_values($a) { + var $iter = $Hash_fetch_values$36.$$p, block = $iter || nil, $post_args, keys, $$37, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - keys = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - keys[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Hash_fetch_values_36.$$p = null; - return $send(keys, 'map', [], (TMP_37 = function(key){var self = TMP_37.$$s || this; -if (key == null) key = nil; - return $send(self, 'fetch', [key], block.$to_proc())}, TMP_37.$$s = self, TMP_37.$$arity = 1, TMP_37)) - }, TMP_Hash_fetch_values_36.$$arity = -1); + if ($iter) $Hash_fetch_values$36.$$p = null; + + + if ($iter) $Hash_fetch_values$36.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + keys = $post_args;; + return $send(keys, 'map', [], ($$37 = function(key){var self = $$37.$$s || this; + + + + if (key == null) { + key = nil; + }; + return $send(self, 'fetch', [key], block.$to_proc());}, $$37.$$s = self, $$37.$$arity = 1, $$37)); + }, $Hash_fetch_values$36.$$arity = -1); - Opal.defn(self, '$flatten', TMP_Hash_flatten_38 = function $$flatten(level) { + Opal.def(self, '$flatten', $Hash_flatten$38 = function $$flatten(level) { var self = this; + + if (level == null) { level = 1; - } - - level = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](level, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + }; + level = $$($nesting, 'Opal')['$coerce_to!'](level, $$($nesting, 'Integer'), "to_int"); var result = []; @@ -14569,15 +14952,15 @@ if (key == null) key = nil; return result; ; - }, TMP_Hash_flatten_38.$$arity = -1); + }, $Hash_flatten$38.$$arity = -1); - Opal.defn(self, '$has_key?', TMP_Hash_has_key$q_39 = function(key) { + Opal.def(self, '$has_key?', $Hash_has_key$ques$39 = function(key) { var self = this; - return Opal.hash_get(self, key) !== undefined - }, TMP_Hash_has_key$q_39.$$arity = 1); + return Opal.hash_get(self, key) !== undefined; + }, $Hash_has_key$ques$39.$$arity = 1); - Opal.defn(self, '$has_value?', TMP_Hash_has_value$q_40 = function(value) { + Opal.def(self, '$has_value?', $Hash_has_value$ques$40 = function(value) { var self = this; @@ -14591,9 +14974,9 @@ if (key == null) key = nil; return false; - }, TMP_Hash_has_value$q_40.$$arity = 1); + }, $Hash_has_value$ques$40.$$arity = 1); - Opal.defn(self, '$hash', TMP_Hash_hash_41 = function $$hash() { + Opal.def(self, '$hash', $Hash_hash$41 = function $$hash() { var self = this; @@ -14638,10 +15021,10 @@ if (key == null) key = nil; } } - }, TMP_Hash_hash_41.$$arity = 0); + }, $Hash_hash$41.$$arity = 0); Opal.alias(self, "include?", "has_key?"); - Opal.defn(self, '$index', TMP_Hash_index_42 = function $$index(object) { + Opal.def(self, '$index', $Hash_index$42 = function $$index(object) { var self = this; @@ -14662,17 +15045,16 @@ if (key == null) key = nil; return nil; - }, TMP_Hash_index_42.$$arity = 1); + }, $Hash_index$42.$$arity = 1); - Opal.defn(self, '$indexes', TMP_Hash_indexes_43 = function $$indexes($a_rest) { - var self = this, args; + Opal.def(self, '$indexes', $Hash_indexes$43 = function $$indexes($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; var result = []; @@ -14689,12 +15071,12 @@ if (key == null) key = nil; } return result; - - }, TMP_Hash_indexes_43.$$arity = -1); + ; + }, $Hash_indexes$43.$$arity = -1); Opal.alias(self, "indices", "indexes"); - var inspect_ids;; + var inspect_ids; - Opal.defn(self, '$inspect', TMP_Hash_inspect_44 = function $$inspect() { + Opal.def(self, '$inspect', $Hash_inspect$44 = function $$inspect() { var self = this; @@ -14734,9 +15116,9 @@ if (key == null) key = nil; } } - }, TMP_Hash_inspect_44.$$arity = 0); + }, $Hash_inspect$44.$$arity = 0); - Opal.defn(self, '$invert', TMP_Hash_invert_45 = function $$invert() { + Opal.def(self, '$invert', $Hash_invert$45 = function $$invert() { var self = this; @@ -14757,18 +15139,20 @@ if (key == null) key = nil; return hash; - }, TMP_Hash_invert_45.$$arity = 0); + }, $Hash_invert$45.$$arity = 0); - Opal.defn(self, '$keep_if', TMP_Hash_keep_if_46 = function $$keep_if() { - var TMP_47, self = this, $iter = TMP_Hash_keep_if_46.$$p, block = $iter || nil; + Opal.def(self, '$keep_if', $Hash_keep_if$46 = function $$keep_if() { + var $iter = $Hash_keep_if$46.$$p, block = $iter || nil, $$47, self = this; - if ($iter) TMP_Hash_keep_if_46.$$p = null; + if ($iter) $Hash_keep_if$46.$$p = null; + + if ($iter) $Hash_keep_if$46.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["keep_if"], (TMP_47 = function(){var self = TMP_47.$$s || this; + } else { + return $send(self, 'enum_for', ["keep_if"], ($$47 = function(){var self = $$47.$$s || this; - return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47)) + return self.$size()}, $$47.$$s = self, $$47.$$arity = 0, $$47)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { @@ -14793,11 +15177,11 @@ if (key == null) key = nil; return self; ; - }, TMP_Hash_keep_if_46.$$arity = 0); + }, $Hash_keep_if$46.$$arity = 0); Opal.alias(self, "key", "index"); Opal.alias(self, "key?", "has_key?"); - Opal.defn(self, '$keys', TMP_Hash_keys_48 = function $$keys() { + Opal.def(self, '$keys', $Hash_keys$48 = function $$keys() { var self = this; @@ -14815,29 +15199,35 @@ if (key == null) key = nil; return result; - }, TMP_Hash_keys_48.$$arity = 0); + }, $Hash_keys$48.$$arity = 0); - Opal.defn(self, '$length', TMP_Hash_length_49 = function $$length() { + Opal.def(self, '$length', $Hash_length$49 = function $$length() { var self = this; - return self.$$keys.length - }, TMP_Hash_length_49.$$arity = 0); + return self.$$keys.length; + }, $Hash_length$49.$$arity = 0); Opal.alias(self, "member?", "has_key?"); - Opal.defn(self, '$merge', TMP_Hash_merge_50 = function $$merge(other) { - var self = this, $iter = TMP_Hash_merge_50.$$p, block = $iter || nil; + Opal.def(self, '$merge', $Hash_merge$50 = function $$merge(other) { + var $iter = $Hash_merge$50.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_merge_50.$$p = null; - return $send(self.$dup(), 'merge!', [other], block.$to_proc()) - }, TMP_Hash_merge_50.$$arity = 1); + if ($iter) $Hash_merge$50.$$p = null; + + + if ($iter) $Hash_merge$50.$$p = null;; + return $send(self.$dup(), 'merge!', [other], block.$to_proc()); + }, $Hash_merge$50.$$arity = 1); - Opal.defn(self, '$merge!', TMP_Hash_merge$B_51 = function(other) { - var self = this, $iter = TMP_Hash_merge$B_51.$$p, block = $iter || nil; + Opal.def(self, '$merge!', $Hash_merge$excl$51 = function(other) { + var $iter = $Hash_merge$excl$51.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_merge$B_51.$$p = null; + if ($iter) $Hash_merge$excl$51.$$p = null; + + + if ($iter) $Hash_merge$excl$51.$$p = null;; if (!other.$$is_hash) { - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); } var i, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; @@ -14880,10 +15270,10 @@ if (key == null) key = nil; } return self; + ; + }, $Hash_merge$excl$51.$$arity = 1); - }, TMP_Hash_merge$B_51.$$arity = 1); - - Opal.defn(self, '$rassoc', TMP_Hash_rassoc_52 = function $$rassoc(object) { + Opal.def(self, '$rassoc', $Hash_rassoc$52 = function $$rassoc(object) { var self = this; @@ -14904,27 +15294,29 @@ if (key == null) key = nil; return nil; - }, TMP_Hash_rassoc_52.$$arity = 1); + }, $Hash_rassoc$52.$$arity = 1); - Opal.defn(self, '$rehash', TMP_Hash_rehash_53 = function $$rehash() { + Opal.def(self, '$rehash', $Hash_rehash$53 = function $$rehash() { var self = this; Opal.hash_rehash(self); return self; - }, TMP_Hash_rehash_53.$$arity = 0); + }, $Hash_rehash$53.$$arity = 0); - Opal.defn(self, '$reject', TMP_Hash_reject_54 = function $$reject() { - var TMP_55, self = this, $iter = TMP_Hash_reject_54.$$p, block = $iter || nil; + Opal.def(self, '$reject', $Hash_reject$54 = function $$reject() { + var $iter = $Hash_reject$54.$$p, block = $iter || nil, $$55, self = this; - if ($iter) TMP_Hash_reject_54.$$p = null; + if ($iter) $Hash_reject$54.$$p = null; + + if ($iter) $Hash_reject$54.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["reject"], (TMP_55 = function(){var self = TMP_55.$$s || this; + } else { + return $send(self, 'enum_for', ["reject"], ($$55 = function(){var self = $$55.$$s || this; - return self.$size()}, TMP_55.$$s = self, TMP_55.$$arity = 0, TMP_55)) + return self.$size()}, $$55.$$s = self, $$55.$$arity = 0, $$55)) }; var hash = Opal.hash(); @@ -14948,18 +15340,20 @@ if (key == null) key = nil; return hash; ; - }, TMP_Hash_reject_54.$$arity = 0); + }, $Hash_reject$54.$$arity = 0); - Opal.defn(self, '$reject!', TMP_Hash_reject$B_56 = function() { - var TMP_57, self = this, $iter = TMP_Hash_reject$B_56.$$p, block = $iter || nil; + Opal.def(self, '$reject!', $Hash_reject$excl$56 = function() { + var $iter = $Hash_reject$excl$56.$$p, block = $iter || nil, $$57, self = this; - if ($iter) TMP_Hash_reject$B_56.$$p = null; + if ($iter) $Hash_reject$excl$56.$$p = null; + + if ($iter) $Hash_reject$excl$56.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["reject!"], (TMP_57 = function(){var self = TMP_57.$$s || this; + } else { + return $send(self, 'enum_for', ["reject!"], ($$57 = function(){var self = $$57.$$s || this; - return self.$size()}, TMP_57.$$s = self, TMP_57.$$arity = 0, TMP_57)) + return self.$size()}, $$57.$$s = self, $$57.$$arity = 0, $$57)) }; var changes_were_made = false; @@ -14987,13 +15381,13 @@ if (key == null) key = nil; return changes_were_made ? self : nil; ; - }, TMP_Hash_reject$B_56.$$arity = 0); + }, $Hash_reject$excl$56.$$arity = 0); - Opal.defn(self, '$replace', TMP_Hash_replace_58 = function $$replace(other) { + Opal.def(self, '$replace', $Hash_replace$58 = function $$replace(other) { var self = this, $writer = nil; - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Hash'), "to_hash"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); Opal.hash_init(self); @@ -15015,25 +15409,27 @@ if (key == null) key = nil; $writer = [other.$default_proc()]; $send(self, 'default_proc=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; - } else { + } else { $writer = [other.$default()]; $send(self, 'default=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; return self; - }, TMP_Hash_replace_58.$$arity = 1); + }, $Hash_replace$58.$$arity = 1); - Opal.defn(self, '$select', TMP_Hash_select_59 = function $$select() { - var TMP_60, self = this, $iter = TMP_Hash_select_59.$$p, block = $iter || nil; + Opal.def(self, '$select', $Hash_select$59 = function $$select() { + var $iter = $Hash_select$59.$$p, block = $iter || nil, $$60, self = this; - if ($iter) TMP_Hash_select_59.$$p = null; + if ($iter) $Hash_select$59.$$p = null; + + if ($iter) $Hash_select$59.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["select"], (TMP_60 = function(){var self = TMP_60.$$s || this; + } else { + return $send(self, 'enum_for', ["select"], ($$60 = function(){var self = $$60.$$s || this; - return self.$size()}, TMP_60.$$s = self, TMP_60.$$arity = 0, TMP_60)) + return self.$size()}, $$60.$$s = self, $$60.$$arity = 0, $$60)) }; var hash = Opal.hash(); @@ -15057,18 +15453,20 @@ if (key == null) key = nil; return hash; ; - }, TMP_Hash_select_59.$$arity = 0); + }, $Hash_select$59.$$arity = 0); - Opal.defn(self, '$select!', TMP_Hash_select$B_61 = function() { - var TMP_62, self = this, $iter = TMP_Hash_select$B_61.$$p, block = $iter || nil; + Opal.def(self, '$select!', $Hash_select$excl$61 = function() { + var $iter = $Hash_select$excl$61.$$p, block = $iter || nil, $$62, self = this; - if ($iter) TMP_Hash_select$B_61.$$p = null; + if ($iter) $Hash_select$excl$61.$$p = null; + + if ($iter) $Hash_select$excl$61.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["select!"], (TMP_62 = function(){var self = TMP_62.$$s || this; + } else { + return $send(self, 'enum_for', ["select!"], ($$62 = function(){var self = $$62.$$s || this; - return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62)) + return self.$size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) }; var result = nil; @@ -15096,9 +15494,9 @@ if (key == null) key = nil; return result; ; - }, TMP_Hash_select$B_61.$$arity = 0); + }, $Hash_select$excl$61.$$arity = 0); - Opal.defn(self, '$shift', TMP_Hash_shift_63 = function $$shift() { + Opal.def(self, '$shift', $Hash_shift$63 = function $$shift() { var self = this; @@ -15115,11 +15513,34 @@ if (key == null) key = nil; return self.$default(nil); - }, TMP_Hash_shift_63.$$arity = 0); + }, $Hash_shift$63.$$arity = 0); Opal.alias(self, "size", "length"); - self.$alias_method("store", "[]="); - Opal.defn(self, '$to_a', TMP_Hash_to_a_64 = function $$to_a() { + Opal.def(self, '$slice', $Hash_slice$64 = function $$slice($a) { + var $post_args, keys, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + keys = $post_args;; + + var result = Opal.hash(); + + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i], value = Opal.hash_get(self, key); + + if (value !== undefined) { + Opal.hash_put(result, key, value); + } + } + + return result; + ; + }, $Hash_slice$64.$$arity = -1); + Opal.alias(self, "store", "[]="); + + Opal.def(self, '$to_a', $Hash_to_a$65 = function $$to_a() { var self = this; @@ -15140,9 +15561,9 @@ if (key == null) key = nil; return result; - }, TMP_Hash_to_a_64.$$arity = 0); + }, $Hash_to_a$65.$$arity = 0); - Opal.defn(self, '$to_h', TMP_Hash_to_h_65 = function $$to_h() { + Opal.def(self, '$to_h', $Hash_to_h$66 = function $$to_h() { var self = this; @@ -15150,46 +15571,121 @@ if (key == null) key = nil; return self; } - var hash = new Opal.Hash.$$alloc(); + var hash = new Opal.Hash(); Opal.hash_init(hash); Opal.hash_clone(self, hash); return hash; - }, TMP_Hash_to_h_65.$$arity = 0); + }, $Hash_to_h$66.$$arity = 0); - Opal.defn(self, '$to_hash', TMP_Hash_to_hash_66 = function $$to_hash() { + Opal.def(self, '$to_hash', $Hash_to_hash$67 = function $$to_hash() { var self = this; return self - }, TMP_Hash_to_hash_66.$$arity = 0); + }, $Hash_to_hash$67.$$arity = 0); - Opal.defn(self, '$to_proc', TMP_Hash_to_proc_68 = function $$to_proc() { - var TMP_67, self = this; + Opal.def(self, '$to_proc', $Hash_to_proc$68 = function $$to_proc() { + var $$69, self = this; - return $send(self, 'proc', [], (TMP_67 = function(key){var self = TMP_67.$$s || this; + return $send(self, 'proc', [], ($$69 = function(key){var self = $$69.$$s || this; + ; if (key == null) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no key given") + self.$raise($$($nesting, 'ArgumentError'), "no key given") } ; - return self['$[]'](key);}, TMP_67.$$s = self, TMP_67.$$arity = -1, TMP_67)) - }, TMP_Hash_to_proc_68.$$arity = 0); + return self['$[]'](key);}, $$69.$$s = self, $$69.$$arity = -1, $$69)) + }, $Hash_to_proc$68.$$arity = 0); Opal.alias(self, "to_s", "inspect"); - Opal.defn(self, '$transform_values', TMP_Hash_transform_values_69 = function $$transform_values() { - var TMP_70, self = this, $iter = TMP_Hash_transform_values_69.$$p, block = $iter || nil; + Opal.def(self, '$transform_keys', $Hash_transform_keys$70 = function $$transform_keys() { + var $iter = $Hash_transform_keys$70.$$p, block = $iter || nil, $$71, self = this; - if ($iter) TMP_Hash_transform_values_69.$$p = null; + if ($iter) $Hash_transform_keys$70.$$p = null; + + if ($iter) $Hash_transform_keys$70.$$p = null;; if ($truthy(block)) { + } else { + return $send(self, 'enum_for', ["transform_keys"], ($$71 = function(){var self = $$71.$$s || this; + + return self.$size()}, $$71.$$s = self, $$71.$$arity = 0, $$71)) + }; + + var result = Opal.hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; } else { - return $send(self, 'enum_for', ["transform_values"], (TMP_70 = function(){var self = TMP_70.$$s || this; + value = key.value; + key = key.key; + } + + key = Opal.yield1(block, key); - return self.$size()}, TMP_70.$$s = self, TMP_70.$$arity = 0, TMP_70)) + Opal.hash_put(result, key, value); + } + + return result; + ; + }, $Hash_transform_keys$70.$$arity = 0); + + Opal.def(self, '$transform_keys!', $Hash_transform_keys$excl$72 = function() { + var $iter = $Hash_transform_keys$excl$72.$$p, block = $iter || nil, $$73, self = this; + + if ($iter) $Hash_transform_keys$excl$72.$$p = null; + + + if ($iter) $Hash_transform_keys$excl$72.$$p = null;; + if ($truthy(block)) { + } else { + return $send(self, 'enum_for', ["transform_keys!"], ($$73 = function(){var self = $$73.$$s || this; + + return self.$size()}, $$73.$$s = self, $$73.$$arity = 0, $$73)) + }; + + var keys = Opal.slice.call(self.$$keys), + i, length = keys.length, key, value, new_key; + + for (i = 0; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + new_key = Opal.yield1(block, key); + + Opal.hash_delete(self, key); + Opal.hash_put(self, new_key, value); + } + + return self; + ; + }, $Hash_transform_keys$excl$72.$$arity = 0); + + Opal.def(self, '$transform_values', $Hash_transform_values$74 = function $$transform_values() { + var $iter = $Hash_transform_values$74.$$p, block = $iter || nil, $$75, self = this; + + if ($iter) $Hash_transform_values$74.$$p = null; + + + if ($iter) $Hash_transform_values$74.$$p = null;; + if ($truthy(block)) { + } else { + return $send(self, 'enum_for', ["transform_values"], ($$75 = function(){var self = $$75.$$s || this; + + return self.$size()}, $$75.$$s = self, $$75.$$arity = 0, $$75)) }; var result = Opal.hash(); @@ -15211,18 +15707,20 @@ if (key == null) key = nil; return result; ; - }, TMP_Hash_transform_values_69.$$arity = 0); + }, $Hash_transform_values$74.$$arity = 0); - Opal.defn(self, '$transform_values!', TMP_Hash_transform_values$B_71 = function() { - var TMP_72, self = this, $iter = TMP_Hash_transform_values$B_71.$$p, block = $iter || nil; + Opal.def(self, '$transform_values!', $Hash_transform_values$excl$76 = function() { + var $iter = $Hash_transform_values$excl$76.$$p, block = $iter || nil, $$77, self = this; - if ($iter) TMP_Hash_transform_values$B_71.$$p = null; + if ($iter) $Hash_transform_values$excl$76.$$p = null; + + if ($iter) $Hash_transform_values$excl$76.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["transform_values!"], (TMP_72 = function(){var self = TMP_72.$$s || this; + } else { + return $send(self, 'enum_for', ["transform_values!"], ($$77 = function(){var self = $$77.$$s || this; - return self.$size()}, TMP_72.$$s = self, TMP_72.$$arity = 0, TMP_72)) + return self.$size()}, $$77.$$s = self, $$77.$$arity = 0, $$77)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { @@ -15242,11 +15740,11 @@ if (key == null) key = nil; return self; ; - }, TMP_Hash_transform_values$B_71.$$arity = 0); + }, $Hash_transform_values$excl$76.$$arity = 0); Opal.alias(self, "update", "merge!"); Opal.alias(self, "value?", "has_value?"); Opal.alias(self, "values_at", "indexes"); - return (Opal.defn(self, '$values', TMP_Hash_values_73 = function $$values() { + return (Opal.def(self, '$values', $Hash_values$78 = function $$values() { var self = this; @@ -15264,11 +15762,11 @@ if (key == null) key = nil; return result; - }, TMP_Hash_values_73.$$arity = 0), nil) && 'values'; + }, $Hash_values$78.$$arity = 0), nil) && 'values'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/number"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -15294,67 +15792,66 @@ Opal.modules["corelib/number"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - Opal.add_stubs(['$require', '$bridge', '$raise', '$name', '$class', '$Float', '$respond_to?', '$coerce_to!', '$__coerced__', '$===', '$!', '$>', '$**', '$new', '$<', '$to_f', '$==', '$nan?', '$infinite?', '$enum_for', '$+', '$-', '$gcd', '$lcm', '$/', '$frexp', '$to_i', '$ldexp', '$rationalize', '$*', '$<<', '$to_r', '$-@', '$size', '$<=', '$>=', '$<=>', '$compare', '$empty?']); + Opal.add_stubs(['$require', '$bridge', '$raise', '$name', '$class', '$Float', '$respond_to?', '$coerce_to!', '$__coerced__', '$===', '$!', '$>', '$**', '$new', '$<', '$to_f', '$==', '$nan?', '$infinite?', '$enum_for', '$+', '$-', '$gcd', '$lcm', '$%', '$/', '$frexp', '$to_i', '$ldexp', '$rationalize', '$*', '$<<', '$to_r', '$truncate', '$-@', '$size', '$<=', '$>=', '$<=>', '$compare', '$any?']); self.$require("corelib/numeric"); (function($base, $super, $parent_nesting) { - function $Number(){}; - var self = $Number = $klass($base, $super, 'Number', $Number); + var self = $klass($base, $super, 'Number'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Number_coerce_2, TMP_Number___id___3, TMP_Number_$_4, TMP_Number_$_5, TMP_Number_$_6, TMP_Number_$_7, TMP_Number_$_8, TMP_Number_$_9, TMP_Number_$_10, TMP_Number_$_11, TMP_Number_$lt_12, TMP_Number_$lt$eq_13, TMP_Number_$gt_14, TMP_Number_$gt$eq_15, TMP_Number_$lt$eq$gt_16, TMP_Number_$lt$lt_17, TMP_Number_$gt$gt_18, TMP_Number_$$_19, TMP_Number_$$_20, TMP_Number_$$_21, TMP_Number_$_22, TMP_Number_$$_23, TMP_Number_$eq$eq$eq_24, TMP_Number_$eq$eq_25, TMP_Number_abs_26, TMP_Number_abs2_27, TMP_Number_angle_28, TMP_Number_bit_length_29, TMP_Number_ceil_30, TMP_Number_chr_31, TMP_Number_denominator_32, TMP_Number_downto_33, TMP_Number_equal$q_35, TMP_Number_even$q_36, TMP_Number_floor_37, TMP_Number_gcd_38, TMP_Number_gcdlcm_39, TMP_Number_integer$q_40, TMP_Number_is_a$q_41, TMP_Number_instance_of$q_42, TMP_Number_lcm_43, TMP_Number_next_44, TMP_Number_nonzero$q_45, TMP_Number_numerator_46, TMP_Number_odd$q_47, TMP_Number_ord_48, TMP_Number_pred_49, TMP_Number_quo_50, TMP_Number_rationalize_51, TMP_Number_round_52, TMP_Number_step_53, TMP_Number_times_55, TMP_Number_to_f_57, TMP_Number_to_i_58, TMP_Number_to_r_59, TMP_Number_to_s_60, TMP_Number_divmod_61, TMP_Number_upto_62, TMP_Number_zero$q_64, TMP_Number_size_65, TMP_Number_nan$q_66, TMP_Number_finite$q_67, TMP_Number_infinite$q_68, TMP_Number_positive$q_69, TMP_Number_negative$q_70; + var $nesting = [self].concat($parent_nesting), $Number_coerce$2, $Number___id__$3, $Number_$plus$4, $Number_$minus$5, $Number_$$6, $Number_$slash$7, $Number_$percent$8, $Number_$$9, $Number_$$10, $Number_$$11, $Number_$lt$12, $Number_$lt_eq$13, $Number_$gt$14, $Number_$gt_eq$15, $Number_$lt_eq_gt$16, $Number_$lt$lt$17, $Number_$gt$gt$18, $Number_$$$19, $Number_$plus$$20, $Number_$minus$$21, $Number_$$22, $Number_$$$23, $Number_$eq_eq_eq$24, $Number_$eq_eq$25, $Number_abs$26, $Number_abs2$27, $Number_allbits$ques$28, $Number_anybits$ques$29, $Number_angle$30, $Number_bit_length$31, $Number_ceil$32, $Number_chr$33, $Number_denominator$34, $Number_downto$35, $Number_equal$ques$37, $Number_even$ques$38, $Number_floor$39, $Number_gcd$40, $Number_gcdlcm$41, $Number_integer$ques$42, $Number_is_a$ques$43, $Number_instance_of$ques$44, $Number_lcm$45, $Number_next$46, $Number_nobits$ques$47, $Number_nonzero$ques$48, $Number_numerator$49, $Number_odd$ques$50, $Number_ord$51, $Number_pow$52, $Number_pred$53, $Number_quo$54, $Number_rationalize$55, $Number_remainder$56, $Number_round$57, $Number_step$58, $Number_times$60, $Number_to_f$62, $Number_to_i$63, $Number_to_r$64, $Number_to_s$65, $Number_truncate$66, $Number_digits$67, $Number_divmod$68, $Number_upto$69, $Number_zero$ques$71, $Number_size$72, $Number_nan$ques$73, $Number_finite$ques$74, $Number_infinite$ques$75, $Number_positive$ques$76, $Number_negative$ques$77; - Opal.const_get_relative($nesting, 'Opal').$bridge(self, Number); - Number.prototype.$$is_number = true; + $$($nesting, 'Opal').$bridge(Number, self); + Opal.defineProperty(self.$$prototype, '$$is_number', true); self.$$is_number_class = true; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1; + var $nesting = [self].concat($parent_nesting), $allocate$1; - Opal.defn(self, '$allocate', TMP_allocate_1 = function $$allocate() { + Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, TMP_allocate_1.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) + }, $allocate$1.$$arity = 0); Opal.udef(self, '$' + "new");; return nil;; })(Opal.get_singleton_class(self), $nesting); - Opal.defn(self, '$coerce', TMP_Number_coerce_2 = function $$coerce(other) { + Opal.def(self, '$coerce', $Number_coerce$2 = function $$coerce(other) { var self = this; if (other === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); + self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); } else if (other.$$is_string) { return [self.$Float(other), self]; } else if (other['$respond_to?']("to_f")) { - return [Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Float'), "to_f"), self]; + return [$$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Float'), "to_f"), self]; } else if (other.$$is_number) { return [other, self]; } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); + self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); } - }, TMP_Number_coerce_2.$$arity = 1); + }, $Number_coerce$2.$$arity = 1); - Opal.defn(self, '$__id__', TMP_Number___id___3 = function $$__id__() { + Opal.def(self, '$__id__', $Number___id__$3 = function $$__id__() { var self = this; - return (self * 2) + 1 - }, TMP_Number___id___3.$$arity = 0); + return (self * 2) + 1; + }, $Number___id__$3.$$arity = 0); Opal.alias(self, "object_id", "__id__"); - Opal.defn(self, '$+', TMP_Number_$_4 = function(other) { + Opal.def(self, '$+', $Number_$plus$4 = function(other) { var self = this; @@ -15365,9 +15862,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("+", other); } - }, TMP_Number_$_4.$$arity = 1); + }, $Number_$plus$4.$$arity = 1); - Opal.defn(self, '$-', TMP_Number_$_5 = function(other) { + Opal.def(self, '$-', $Number_$minus$5 = function(other) { var self = this; @@ -15378,9 +15875,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("-", other); } - }, TMP_Number_$_5.$$arity = 1); + }, $Number_$minus$5.$$arity = 1); - Opal.defn(self, '$*', TMP_Number_$_6 = function(other) { + Opal.def(self, '$*', $Number_$$6 = function(other) { var self = this; @@ -15391,9 +15888,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("*", other); } - }, TMP_Number_$_6.$$arity = 1); + }, $Number_$$6.$$arity = 1); - Opal.defn(self, '$/', TMP_Number_$_7 = function(other) { + Opal.def(self, '$/', $Number_$slash$7 = function(other) { var self = this; @@ -15404,10 +15901,10 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("/", other); } - }, TMP_Number_$_7.$$arity = 1); + }, $Number_$slash$7.$$arity = 1); Opal.alias(self, "fdiv", "/"); - Opal.defn(self, '$%', TMP_Number_$_8 = function(other) { + Opal.def(self, '$%', $Number_$percent$8 = function(other) { var self = this; @@ -15416,7 +15913,7 @@ Opal.modules["corelib/number"] = function(Opal) { return other; } else if (other == 0) { - self.$raise(Opal.const_get_relative($nesting, 'ZeroDivisionError'), "divided by 0"); + self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0"); } else if (other < 0 || self < 0) { return (self % other + other) % other; @@ -15429,9 +15926,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("%", other); } - }, TMP_Number_$_8.$$arity = 1); + }, $Number_$percent$8.$$arity = 1); - Opal.defn(self, '$&', TMP_Number_$_9 = function(other) { + Opal.def(self, '$&', $Number_$$9 = function(other) { var self = this; @@ -15442,9 +15939,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("&", other); } - }, TMP_Number_$_9.$$arity = 1); + }, $Number_$$9.$$arity = 1); - Opal.defn(self, '$|', TMP_Number_$_10 = function(other) { + Opal.def(self, '$|', $Number_$$10 = function(other) { var self = this; @@ -15455,9 +15952,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("|", other); } - }, TMP_Number_$_10.$$arity = 1); + }, $Number_$$10.$$arity = 1); - Opal.defn(self, '$^', TMP_Number_$_11 = function(other) { + Opal.def(self, '$^', $Number_$$11 = function(other) { var self = this; @@ -15468,9 +15965,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("^", other); } - }, TMP_Number_$_11.$$arity = 1); + }, $Number_$$11.$$arity = 1); - Opal.defn(self, '$<', TMP_Number_$lt_12 = function(other) { + Opal.def(self, '$<', $Number_$lt$12 = function(other) { var self = this; @@ -15481,9 +15978,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("<", other); } - }, TMP_Number_$lt_12.$$arity = 1); + }, $Number_$lt$12.$$arity = 1); - Opal.defn(self, '$<=', TMP_Number_$lt$eq_13 = function(other) { + Opal.def(self, '$<=', $Number_$lt_eq$13 = function(other) { var self = this; @@ -15494,9 +15991,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__("<=", other); } - }, TMP_Number_$lt$eq_13.$$arity = 1); + }, $Number_$lt_eq$13.$$arity = 1); - Opal.defn(self, '$>', TMP_Number_$gt_14 = function(other) { + Opal.def(self, '$>', $Number_$gt$14 = function(other) { var self = this; @@ -15507,9 +16004,9 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__(">", other); } - }, TMP_Number_$gt_14.$$arity = 1); + }, $Number_$gt$14.$$arity = 1); - Opal.defn(self, '$>=', TMP_Number_$gt$eq_15 = function(other) { + Opal.def(self, '$>=', $Number_$gt_eq$15 = function(other) { var self = this; @@ -15520,7 +16017,7 @@ Opal.modules["corelib/number"] = function(Opal) { return self.$__coerced__(">=", other); } - }, TMP_Number_$gt$eq_15.$$arity = 1); + }, $Number_$gt_eq$15.$$arity = 1); var spaceship_operator = function(self, other) { if (other.$$is_number) { @@ -15542,43 +16039,41 @@ Opal.modules["corelib/number"] = function(Opal) { } ; - Opal.defn(self, '$<=>', TMP_Number_$lt$eq$gt_16 = function(other) { + Opal.def(self, '$<=>', $Number_$lt_eq_gt$16 = function(other) { var self = this; try { - - return spaceship_operator(self, other); - + return spaceship_operator(self, other); } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'ArgumentError')])) { + if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { try { return nil } finally { Opal.pop_exception() } } else { throw $err; } } - }, TMP_Number_$lt$eq$gt_16.$$arity = 1); + }, $Number_$lt_eq_gt$16.$$arity = 1); - Opal.defn(self, '$<<', TMP_Number_$lt$lt_17 = function(count) { + Opal.def(self, '$<<', $Number_$lt$lt$17 = function(count) { var self = this; - count = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), "to_int"); return count > 0 ? self << count : self >> -count; - }, TMP_Number_$lt$lt_17.$$arity = 1); + }, $Number_$lt$lt$17.$$arity = 1); - Opal.defn(self, '$>>', TMP_Number_$gt$gt_18 = function(count) { + Opal.def(self, '$>>', $Number_$gt$gt$18 = function(count) { var self = this; - count = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), "to_int"); return count > 0 ? self >> count : self << -count; - }, TMP_Number_$gt$gt_18.$$arity = 1); + }, $Number_$gt$gt$18.$$arity = 1); - Opal.defn(self, '$[]', TMP_Number_$$_19 = function(bit) { + Opal.def(self, '$[]', $Number_$$$19 = function(bit) { var self = this; - bit = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](bit, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + bit = $$($nesting, 'Opal')['$coerce_to!'](bit, $$($nesting, 'Integer'), "to_int"); if (bit < 0) { return 0; @@ -15588,45 +16083,45 @@ Opal.modules["corelib/number"] = function(Opal) { } return (self >> bit) & 1; ; - }, TMP_Number_$$_19.$$arity = 1); + }, $Number_$$$19.$$arity = 1); - Opal.defn(self, '$+@', TMP_Number_$$_20 = function() { + Opal.def(self, '$+@', $Number_$plus$$20 = function() { var self = this; - return +self - }, TMP_Number_$$_20.$$arity = 0); + return +self; + }, $Number_$plus$$20.$$arity = 0); - Opal.defn(self, '$-@', TMP_Number_$$_21 = function() { + Opal.def(self, '$-@', $Number_$minus$$21 = function() { var self = this; - return -self - }, TMP_Number_$$_21.$$arity = 0); + return -self; + }, $Number_$minus$$21.$$arity = 0); - Opal.defn(self, '$~', TMP_Number_$_22 = function() { + Opal.def(self, '$~', $Number_$$22 = function() { var self = this; - return ~self - }, TMP_Number_$_22.$$arity = 0); + return ~self; + }, $Number_$$22.$$arity = 0); - Opal.defn(self, '$**', TMP_Number_$$_23 = function(other) { + Opal.def(self, '$**', $Number_$$$23 = function(other) { var $a, $b, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](other))) { - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Integer')['$==='](self)['$!']()) ? $a : $rb_gt(other, 0)))) { - return Math.pow(self, other) - } else { - return Opal.const_get_relative($nesting, 'Rational').$new(self, 1)['$**'](other) + if ($truthy($$($nesting, 'Integer')['$==='](other))) { + if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](self)['$!']()) ? $a : $rb_gt(other, 0)))) { + return Math.pow(self, other); + } else { + return $$($nesting, 'Rational').$new(self, 1)['$**'](other) } - } else if ($truthy((($a = $rb_lt(self, 0)) ? ($truthy($b = Opal.const_get_relative($nesting, 'Float')['$==='](other)) ? $b : Opal.const_get_relative($nesting, 'Rational')['$==='](other)) : $rb_lt(self, 0)))) { - return Opal.const_get_relative($nesting, 'Complex').$new(self, 0)['$**'](other.$to_f()) + } else if ($truthy((($a = $rb_lt(self, 0)) ? ($truthy($b = $$($nesting, 'Float')['$==='](other)) ? $b : $$($nesting, 'Rational')['$==='](other)) : $rb_lt(self, 0)))) { + return $$($nesting, 'Complex').$new(self, 0)['$**'](other.$to_f()) } else if ($truthy(other.$$is_number != null)) { - return Math.pow(self, other) - } else { + return Math.pow(self, other); + } else { return self.$__coerced__("**", other) } - }, TMP_Number_$$_23.$$arity = 1); + }, $Number_$$$23.$$arity = 1); - Opal.defn(self, '$===', TMP_Number_$eq$eq$eq_24 = function(other) { + Opal.def(self, '$===', $Number_$eq_eq_eq$24 = function(other) { var self = this; @@ -15640,9 +16135,9 @@ Opal.modules["corelib/number"] = function(Opal) { return false; } - }, TMP_Number_$eq$eq$eq_24.$$arity = 1); + }, $Number_$eq_eq_eq$24.$$arity = 1); - Opal.defn(self, '$==', TMP_Number_$eq$eq_25 = function(other) { + Opal.def(self, '$==', $Number_$eq_eq$25 = function(other) { var self = this; @@ -15656,21 +16151,37 @@ Opal.modules["corelib/number"] = function(Opal) { return false; } - }, TMP_Number_$eq$eq_25.$$arity = 1); + }, $Number_$eq_eq$25.$$arity = 1); + + Opal.def(self, '$abs', $Number_abs$26 = function $$abs() { + var self = this; + + return Math.abs(self); + }, $Number_abs$26.$$arity = 0); + + Opal.def(self, '$abs2', $Number_abs2$27 = function $$abs2() { + var self = this; + + return Math.abs(self * self); + }, $Number_abs2$27.$$arity = 0); - Opal.defn(self, '$abs', TMP_Number_abs_26 = function $$abs() { + Opal.def(self, '$allbits?', $Number_allbits$ques$28 = function(mask) { var self = this; - return Math.abs(self) - }, TMP_Number_abs_26.$$arity = 0); + + mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); + return (self & mask) == mask;; + }, $Number_allbits$ques$28.$$arity = 1); - Opal.defn(self, '$abs2', TMP_Number_abs2_27 = function $$abs2() { + Opal.def(self, '$anybits?', $Number_anybits$ques$29 = function(mask) { var self = this; - return Math.abs(self * self) - }, TMP_Number_abs2_27.$$arity = 0); + + mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); + return (self & mask) !== 0;; + }, $Number_anybits$ques$29.$$arity = 1); - Opal.defn(self, '$angle', TMP_Number_angle_28 = function $$angle() { + Opal.def(self, '$angle', $Number_angle$30 = function $$angle() { var self = this; @@ -15692,17 +16203,17 @@ Opal.modules["corelib/number"] = function(Opal) { return 0; } ; - }, TMP_Number_angle_28.$$arity = 0); + }, $Number_angle$30.$$arity = 0); Opal.alias(self, "arg", "angle"); Opal.alias(self, "phase", "angle"); - Opal.defn(self, '$bit_length', TMP_Number_bit_length_29 = function $$bit_length() { + Opal.def(self, '$bit_length', $Number_bit_length$31 = function $$bit_length() { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](self))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'NoMethodError').$new("" + "undefined method `bit_length` for " + (self) + ":Float", "bit_length")) + if ($truthy($$($nesting, 'Integer')['$==='](self))) { + } else { + self.$raise($$($nesting, 'NoMethodError').$new("" + "undefined method `bit_length` for " + (self) + ":Float", "bit_length")) }; if (self === 0 || self === -1) { @@ -15719,92 +16230,136 @@ Opal.modules["corelib/number"] = function(Opal) { return result; ; - }, TMP_Number_bit_length_29.$$arity = 0); + }, $Number_bit_length$31.$$arity = 0); - Opal.defn(self, '$ceil', TMP_Number_ceil_30 = function $$ceil() { + Opal.def(self, '$ceil', $Number_ceil$32 = function $$ceil(ndigits) { var self = this; - return Math.ceil(self) - }, TMP_Number_ceil_30.$$arity = 0); + + + if (ndigits == null) { + ndigits = 0; + }; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = Math.ceil(f * factor) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, $Number_ceil$32.$$arity = -1); - Opal.defn(self, '$chr', TMP_Number_chr_31 = function $$chr(encoding) { + Opal.def(self, '$chr', $Number_chr$33 = function $$chr(encoding) { var self = this; - return String.fromCharCode(self) - }, TMP_Number_chr_31.$$arity = -1); + + ; + return String.fromCharCode(self);; + }, $Number_chr$33.$$arity = -1); - Opal.defn(self, '$denominator', TMP_Number_denominator_32 = function $$denominator() { - var $a, self = this, $iter = TMP_Number_denominator_32.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$denominator', $Number_denominator$34 = function $$denominator() { + var $a, $iter = $Number_denominator$34.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Number_denominator_32.$$p = null; + if ($iter) $Number_denominator$34.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { return 1 - } else { - return $send(self, Opal.find_super_dispatcher(self, 'denominator', TMP_Number_denominator_32, false), $zuper, $iter) + } else { + return $send(self, Opal.find_super_dispatcher(self, 'denominator', $Number_denominator$34, false), $zuper, $iter) } - }, TMP_Number_denominator_32.$$arity = 0); + }, $Number_denominator$34.$$arity = 0); - Opal.defn(self, '$downto', TMP_Number_downto_33 = function $$downto(stop) { - var TMP_34, self = this, $iter = TMP_Number_downto_33.$$p, block = $iter || nil; + Opal.def(self, '$downto', $Number_downto$35 = function $$downto(stop) { + var $iter = $Number_downto$35.$$p, block = $iter || nil, $$36, self = this; - if ($iter) TMP_Number_downto_33.$$p = null; + if ($iter) $Number_downto$35.$$p = null; + + if ($iter) $Number_downto$35.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["downto", stop], (TMP_34 = function(){var self = TMP_34.$$s || this; + } else { + return $send(self, 'enum_for', ["downto", stop], ($$36 = function(){var self = $$36.$$s || this; - if ($truthy(Opal.const_get_relative($nesting, 'Numeric')['$==='](stop))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + if ($truthy($$($nesting, 'Numeric')['$==='](stop))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") }; if ($truthy($rb_gt(stop, self))) { return 0 - } else { + } else { return $rb_plus($rb_minus(self, stop), 1) - };}, TMP_34.$$s = self, TMP_34.$$arity = 0, TMP_34)) + };}, $$36.$$s = self, $$36.$$arity = 0, $$36)) }; if (!stop.$$is_number) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") } for (var i = self; i >= stop; i--) { block(i); } ; return self; - }, TMP_Number_downto_33.$$arity = 1); + }, $Number_downto$35.$$arity = 1); Opal.alias(self, "eql?", "=="); - Opal.defn(self, '$equal?', TMP_Number_equal$q_35 = function(other) { + Opal.def(self, '$equal?', $Number_equal$ques$37 = function(other) { var $a, self = this; return ($truthy($a = self['$=='](other)) ? $a : isNaN(self) && isNaN(other)) - }, TMP_Number_equal$q_35.$$arity = 1); + }, $Number_equal$ques$37.$$arity = 1); - Opal.defn(self, '$even?', TMP_Number_even$q_36 = function() { + Opal.def(self, '$even?', $Number_even$ques$38 = function() { var self = this; - return self % 2 === 0 - }, TMP_Number_even$q_36.$$arity = 0); + return self % 2 === 0; + }, $Number_even$ques$38.$$arity = 0); - Opal.defn(self, '$floor', TMP_Number_floor_37 = function $$floor() { + Opal.def(self, '$floor', $Number_floor$39 = function $$floor(ndigits) { var self = this; - return Math.floor(self) - }, TMP_Number_floor_37.$$arity = 0); + + + if (ndigits == null) { + ndigits = 0; + }; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = Math.floor(f * factor) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, $Number_floor$39.$$arity = -1); - Opal.defn(self, '$gcd', TMP_Number_gcd_38 = function $$gcd(other) { + Opal.def(self, '$gcd', $Number_gcd$40 = function $$gcd(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](other))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "not an integer") + if ($truthy($$($nesting, 'Integer')['$==='](other))) { + } else { + self.$raise($$($nesting, 'TypeError'), "not an integer") }; var min = Math.abs(self), @@ -15819,64 +16374,64 @@ Opal.modules["corelib/number"] = function(Opal) { return max; ; - }, TMP_Number_gcd_38.$$arity = 1); + }, $Number_gcd$40.$$arity = 1); - Opal.defn(self, '$gcdlcm', TMP_Number_gcdlcm_39 = function $$gcdlcm(other) { + Opal.def(self, '$gcdlcm', $Number_gcdlcm$41 = function $$gcdlcm(other) { var self = this; return [self.$gcd(), self.$lcm()] - }, TMP_Number_gcdlcm_39.$$arity = 1); + }, $Number_gcdlcm$41.$$arity = 1); - Opal.defn(self, '$integer?', TMP_Number_integer$q_40 = function() { + Opal.def(self, '$integer?', $Number_integer$ques$42 = function() { var self = this; - return self % 1 === 0 - }, TMP_Number_integer$q_40.$$arity = 0); + return self % 1 === 0; + }, $Number_integer$ques$42.$$arity = 0); - Opal.defn(self, '$is_a?', TMP_Number_is_a$q_41 = function(klass) { - var $a, self = this, $iter = TMP_Number_is_a$q_41.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$is_a?', $Number_is_a$ques$43 = function(klass) { + var $a, $iter = $Number_is_a$ques$43.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Number_is_a$q_41.$$p = null; + if ($iter) $Number_is_a$ques$43.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Fixnum'))) ? Opal.const_get_relative($nesting, 'Integer')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Fixnum'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { return true}; - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Integer'))) ? Opal.const_get_relative($nesting, 'Integer')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Integer'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { return true}; - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Float'))) ? Opal.const_get_relative($nesting, 'Float')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Float'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) { return true}; - return $send(self, Opal.find_super_dispatcher(self, 'is_a?', TMP_Number_is_a$q_41, false), $zuper, $iter); - }, TMP_Number_is_a$q_41.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'is_a?', $Number_is_a$ques$43, false), $zuper, $iter); + }, $Number_is_a$ques$43.$$arity = 1); Opal.alias(self, "kind_of?", "is_a?"); - Opal.defn(self, '$instance_of?', TMP_Number_instance_of$q_42 = function(klass) { - var $a, self = this, $iter = TMP_Number_instance_of$q_42.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$instance_of?', $Number_instance_of$ques$44 = function(klass) { + var $a, $iter = $Number_instance_of$ques$44.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Number_instance_of$q_42.$$p = null; + if ($iter) $Number_instance_of$ques$44.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Fixnum'))) ? Opal.const_get_relative($nesting, 'Integer')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Fixnum'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { return true}; - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Integer'))) ? Opal.const_get_relative($nesting, 'Integer')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Integer'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { return true}; - if ($truthy((($a = klass['$=='](Opal.const_get_relative($nesting, 'Float'))) ? Opal.const_get_relative($nesting, 'Float')['$==='](self) : klass['$=='](Opal.const_get_relative($nesting, 'Float'))))) { + if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) { return true}; - return $send(self, Opal.find_super_dispatcher(self, 'instance_of?', TMP_Number_instance_of$q_42, false), $zuper, $iter); - }, TMP_Number_instance_of$q_42.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'instance_of?', $Number_instance_of$ques$44, false), $zuper, $iter); + }, $Number_instance_of$ques$44.$$arity = 1); - Opal.defn(self, '$lcm', TMP_Number_lcm_43 = function $$lcm(other) { + Opal.def(self, '$lcm', $Number_lcm$45 = function $$lcm(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](other))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "not an integer") + if ($truthy($$($nesting, 'Integer')['$==='](other))) { + } else { + self.$raise($$($nesting, 'TypeError'), "not an integer") }; if (self == 0 || other == 0) { @@ -15886,108 +16441,159 @@ Opal.modules["corelib/number"] = function(Opal) { return Math.abs(self * other / self.$gcd(other)); } ; - }, TMP_Number_lcm_43.$$arity = 1); + }, $Number_lcm$45.$$arity = 1); Opal.alias(self, "magnitude", "abs"); Opal.alias(self, "modulo", "%"); - Opal.defn(self, '$next', TMP_Number_next_44 = function $$next() { + Opal.def(self, '$next', $Number_next$46 = function $$next() { var self = this; - return self + 1 - }, TMP_Number_next_44.$$arity = 0); + return self + 1; + }, $Number_next$46.$$arity = 0); - Opal.defn(self, '$nonzero?', TMP_Number_nonzero$q_45 = function() { + Opal.def(self, '$nobits?', $Number_nobits$ques$47 = function(mask) { var self = this; - return self == 0 ? nil : self - }, TMP_Number_nonzero$q_45.$$arity = 0); + + mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); + return (self & mask) == 0;; + }, $Number_nobits$ques$47.$$arity = 1); - Opal.defn(self, '$numerator', TMP_Number_numerator_46 = function $$numerator() { - var $a, self = this, $iter = TMP_Number_numerator_46.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$nonzero?', $Number_nonzero$ques$48 = function() { + var self = this; - if ($iter) TMP_Number_numerator_46.$$p = null; + return self == 0 ? nil : self; + }, $Number_nonzero$ques$48.$$arity = 0); + + Opal.def(self, '$numerator', $Number_numerator$49 = function $$numerator() { + var $a, $iter = $Number_numerator$49.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + if ($iter) $Number_numerator$49.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { return self - } else { - return $send(self, Opal.find_super_dispatcher(self, 'numerator', TMP_Number_numerator_46, false), $zuper, $iter) + } else { + return $send(self, Opal.find_super_dispatcher(self, 'numerator', $Number_numerator$49, false), $zuper, $iter) } - }, TMP_Number_numerator_46.$$arity = 0); + }, $Number_numerator$49.$$arity = 0); - Opal.defn(self, '$odd?', TMP_Number_odd$q_47 = function() { + Opal.def(self, '$odd?', $Number_odd$ques$50 = function() { var self = this; - return self % 2 !== 0 - }, TMP_Number_odd$q_47.$$arity = 0); + return self % 2 !== 0; + }, $Number_odd$ques$50.$$arity = 0); - Opal.defn(self, '$ord', TMP_Number_ord_48 = function $$ord() { + Opal.def(self, '$ord', $Number_ord$51 = function $$ord() { var self = this; return self - }, TMP_Number_ord_48.$$arity = 0); + }, $Number_ord$51.$$arity = 0); - Opal.defn(self, '$pred', TMP_Number_pred_49 = function $$pred() { + Opal.def(self, '$pow', $Number_pow$52 = function $$pow(b, m) { var self = this; - return self - 1 - }, TMP_Number_pred_49.$$arity = 0); + + ; + + if (self == 0) { + self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") + } + + if (m === undefined) { + return self['$**'](b); + } else { + if (!($$($nesting, 'Integer')['$==='](b))) { + self.$raise($$($nesting, 'TypeError'), "Integer#pow() 2nd argument not allowed unless a 1st argument is integer") + } + + if (b < 0) { + self.$raise($$($nesting, 'TypeError'), "Integer#pow() 1st argument cannot be negative when 2nd argument specified") + } + + if (!($$($nesting, 'Integer')['$==='](m))) { + self.$raise($$($nesting, 'TypeError'), "Integer#pow() 2nd argument not allowed unless all arguments are integers") + } + + if (m === 0) { + self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") + } + + return self['$**'](b)['$%'](m) + } + ; + }, $Number_pow$52.$$arity = -2); + + Opal.def(self, '$pred', $Number_pred$53 = function $$pred() { + var self = this; + + return self - 1; + }, $Number_pred$53.$$arity = 0); - Opal.defn(self, '$quo', TMP_Number_quo_50 = function $$quo(other) { - var self = this, $iter = TMP_Number_quo_50.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$quo', $Number_quo$54 = function $$quo(other) { + var $iter = $Number_quo$54.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Number_quo_50.$$p = null; + if ($iter) $Number_quo$54.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](self))) { - return $send(self, Opal.find_super_dispatcher(self, 'quo', TMP_Number_quo_50, false), $zuper, $iter) - } else { + if ($truthy($$($nesting, 'Integer')['$==='](self))) { + return $send(self, Opal.find_super_dispatcher(self, 'quo', $Number_quo$54, false), $zuper, $iter) + } else { return $rb_divide(self, other) } - }, TMP_Number_quo_50.$$arity = 1); + }, $Number_quo$54.$$arity = 1); - Opal.defn(self, '$rationalize', TMP_Number_rationalize_51 = function $$rationalize(eps) { + Opal.def(self, '$rationalize', $Number_rationalize$55 = function $$rationalize(eps) { var $a, $b, self = this, f = nil, n = nil; + ; if (arguments.length > 1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); } ; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](self))) { - return Opal.const_get_relative($nesting, 'Rational').$new(self, 1) + if ($truthy($$($nesting, 'Integer')['$==='](self))) { + return $$($nesting, 'Rational').$new(self, 1) } else if ($truthy(self['$infinite?']())) { - return self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "Infinity") + return self.$raise($$($nesting, 'FloatDomainError'), "Infinity") } else if ($truthy(self['$nan?']())) { - return self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "NaN") + return self.$raise($$($nesting, 'FloatDomainError'), "NaN") } else if ($truthy(eps == null)) { - $b = Opal.const_get_relative($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b; - f = Opal.const_get_relative($nesting, 'Math').$ldexp(f, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'MANT_DIG')).$to_i(); - n = $rb_minus(n, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'MANT_DIG')); - return Opal.const_get_relative($nesting, 'Rational').$new($rb_times(2, f), (1)['$<<']($rb_minus(1, n))).$rationalize(Opal.const_get_relative($nesting, 'Rational').$new(1, (1)['$<<']($rb_minus(1, n)))); - } else { + $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b; + f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i(); + n = $rb_minus(n, $$$($$($nesting, 'Float'), 'MANT_DIG')); + return $$($nesting, 'Rational').$new($rb_times(2, f), (1)['$<<']($rb_minus(1, n))).$rationalize($$($nesting, 'Rational').$new(1, (1)['$<<']($rb_minus(1, n)))); + } else { return self.$to_r().$rationalize(eps) }; - }, TMP_Number_rationalize_51.$$arity = -1); + }, $Number_rationalize$55.$$arity = -1); + + Opal.def(self, '$remainder', $Number_remainder$56 = function $$remainder(y) { + var self = this; + + return $rb_minus(self, $rb_times(y, $rb_divide(self, y).$truncate())) + }, $Number_remainder$56.$$arity = 1); - Opal.defn(self, '$round', TMP_Number_round_52 = function $$round(ndigits) { + Opal.def(self, '$round', $Number_round$57 = function $$round(ndigits) { var $a, $b, self = this, _ = nil, exp = nil; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](self))) { + + ; + if ($truthy($$($nesting, 'Integer')['$==='](self))) { if ($truthy(ndigits == null)) { return self}; - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Float')['$==='](ndigits)) ? ndigits['$infinite?']() : $a))) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "Infinity")}; - ndigits = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](ndigits, Opal.const_get_relative($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(ndigits, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Integer'), 'MIN')))) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "out of bounds")}; + if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](ndigits)) ? ndigits['$infinite?']() : $a))) { + self.$raise($$($nesting, 'RangeError'), "Infinity")}; + ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits, $$($nesting, 'Integer'), "to_int"); + if ($truthy($rb_lt(ndigits, $$$($$($nesting, 'Integer'), 'MIN')))) { + self.$raise($$($nesting, 'RangeError'), "out of bounds")}; if ($truthy(ndigits >= 0)) { return self}; ndigits = ndigits['$-@'](); @@ -16001,66 +16607,75 @@ Opal.modules["corelib/number"] = function(Opal) { return self < 0 ? -x : x; ; - } else { + } else { if ($truthy(($truthy($a = self['$nan?']()) ? ndigits == null : $a))) { - self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "NaN")}; - ndigits = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](ndigits || 0, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + self.$raise($$($nesting, 'FloatDomainError'), "NaN")}; + ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits || 0, $$($nesting, 'Integer'), "to_int"); if ($truthy($rb_le(ndigits, 0))) { if ($truthy(self['$nan?']())) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "NaN") + self.$raise($$($nesting, 'RangeError'), "NaN") } else if ($truthy(self['$infinite?']())) { - self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "Infinity")} + self.$raise($$($nesting, 'FloatDomainError'), "Infinity")} } else if (ndigits['$=='](0)) { return Math.round(self) } else if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { return self}; - $b = Opal.const_get_relative($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (exp = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_ge(ndigits, $rb_minus($rb_plus(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'DIG'), 2), (function() {if ($truthy($rb_gt(exp, 0))) { + $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (exp = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy($rb_ge(ndigits, $rb_minus($rb_plus($$$($$($nesting, 'Float'), 'DIG'), 2), (function() {if ($truthy($rb_gt(exp, 0))) { return $rb_divide(exp, 4) - } else { + } else { return $rb_minus($rb_divide(exp, 3), 1) }; return nil; })())))) { return self}; if ($truthy($rb_lt(ndigits, (function() {if ($truthy($rb_gt(exp, 0))) { return $rb_plus($rb_divide(exp, 3), 1) - } else { + } else { return $rb_divide(exp, 4) }; return nil; })()['$-@']()))) { return 0}; - return Math.round(self * Math.pow(10, ndigits)) / Math.pow(10, ndigits); - } - }, TMP_Number_round_52.$$arity = -1); + return Math.round(self * Math.pow(10, ndigits)) / Math.pow(10, ndigits);; + }; + }, $Number_round$57.$$arity = -1); - Opal.defn(self, '$step', TMP_Number_step_53 = function $$step($limit, $step, $kwargs) { - var TMP_54, self = this, $post_args, to, by, limit, step, $iter = TMP_Number_step_53.$$p, block = $iter || nil, positional_args = nil, keyword_args = nil; + Opal.def(self, '$step', $Number_step$58 = function $$step($a, $b, $c) { + var $iter = $Number_step$58.$$p, block = $iter || nil, $post_args, $kwargs, limit, step, to, by, $$59, self = this, positional_args = nil, keyword_args = nil; + if ($iter) $Number_step$58.$$p = null; + + + if ($iter) $Number_step$58.$$p = null;; + $post_args = Opal.slice.call(arguments, 0, arguments.length); + $kwargs = Opal.extract_kwargs($post_args); - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } - } - to = $kwargs.$$smap["to"]; - by = $kwargs.$$smap["by"]; - if (0 < $post_args.length) { - limit = $post_args.splice(0,1)[0]; - } - if (0 < $post_args.length) { - step = $post_args.splice(0,1)[0]; - } - if ($iter) TMP_Number_step_53.$$p = null; + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) { + limit = $post_args[0]; + $post_args.splice(0, 1); + }; + + if ($post_args.length > 0) { + step = $post_args[0]; + $post_args.splice(0, 1); + }; + + to = $kwargs.$$smap["to"];; + + by = $kwargs.$$smap["by"];; if (limit !== undefined && to !== undefined) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "to is given twice") + self.$raise($$($nesting, 'ArgumentError'), "to is given twice") } if (step !== undefined && by !== undefined) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "step is given twice") + self.$raise($$($nesting, 'ArgumentError'), "step is given twice") } function validateParameters() { @@ -16073,11 +16688,11 @@ Opal.modules["corelib/number"] = function(Opal) { } if (step === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "step must be numeric") + self.$raise($$($nesting, 'TypeError'), "step must be numeric") } if (step === 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "step can't be 0") + self.$raise($$($nesting, 'ArgumentError'), "step can't be 0") } if (by !== undefined) { @@ -16091,14 +16706,14 @@ Opal.modules["corelib/number"] = function(Opal) { var sign = step['$<=>'](0); if (sign === nil) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "0 can't be coerced into " + (step.$class())) + self.$raise($$($nesting, 'ArgumentError'), "" + "0 can't be coerced into " + (step.$class())) } if (limit === nil || limit == null) { - limit = sign > 0 ? Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') : Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY')['$-@'](); + limit = sign > 0 ? $$$($$($nesting, 'Float'), 'INFINITY') : $$$($$($nesting, 'Float'), 'INFINITY')['$-@'](); } - Opal.const_get_relative($nesting, 'Opal').$compare(self, limit) + $$($nesting, 'Opal').$compare(self, limit) } function stepFloatSize() { @@ -16108,7 +16723,7 @@ Opal.modules["corelib/number"] = function(Opal) { return 1; } else { var abs = Math.abs, floor = Math.floor, - err = (abs(self) + abs(limit) + abs(limit - self)) / abs(step) * Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'EPSILON'); + err = (abs(self) + abs(limit) + abs(limit - self)) / abs(step) * $$$($$($nesting, 'Float'), 'EPSILON'); if (err === Infinity || err === -Infinity) { return 0; @@ -16143,7 +16758,7 @@ Opal.modules["corelib/number"] = function(Opal) { } ; if ((block !== nil)) { - } else { + } else { positional_args = []; keyword_args = $hash2([], {}); @@ -16164,13 +16779,13 @@ Opal.modules["corelib/number"] = function(Opal) { Opal.hash_put(keyword_args, "by", by); } - if (!keyword_args['$empty?']()) { + if (keyword_args['$any?']()) { positional_args.push(keyword_args); } ; - return $send(self, 'enum_for', ["step"].concat(Opal.to_a(positional_args)), (TMP_54 = function(){var self = TMP_54.$$s || this; + return $send(self, 'enum_for', ["step"].concat(Opal.to_a(positional_args)), ($$59 = function(){var self = $$59.$$s || this; - return stepSize()}, TMP_54.$$s = self, TMP_54.$$arity = 0, TMP_54)); + return stepSize();}, $$59.$$s = self, $$59.$$arity = 0, $$59)); }; validateParameters(); @@ -16229,19 +16844,21 @@ Opal.modules["corelib/number"] = function(Opal) { return self; ; - }, TMP_Number_step_53.$$arity = -1); + }, $Number_step$58.$$arity = -1); Opal.alias(self, "succ", "next"); - Opal.defn(self, '$times', TMP_Number_times_55 = function $$times() { - var TMP_56, self = this, $iter = TMP_Number_times_55.$$p, block = $iter || nil; + Opal.def(self, '$times', $Number_times$60 = function $$times() { + var $iter = $Number_times$60.$$p, block = $iter || nil, $$61, self = this; - if ($iter) TMP_Number_times_55.$$p = null; + if ($iter) $Number_times$60.$$p = null; + + if ($iter) $Number_times$60.$$p = null;; if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["times"], (TMP_56 = function(){var self = TMP_56.$$s || this; + } else { + return $send(self, 'enum_for', ["times"], ($$61 = function(){var self = $$61.$$s || this; - return self}, TMP_56.$$s = self, TMP_56.$$arity = 0, TMP_56)) + return self}, $$61.$$s = self, $$61.$$arity = 0, $$61)) }; for (var i = 0; i < self; i++) { @@ -16249,122 +16866,176 @@ Opal.modules["corelib/number"] = function(Opal) { } ; return self; - }, TMP_Number_times_55.$$arity = 0); + }, $Number_times$60.$$arity = 0); - Opal.defn(self, '$to_f', TMP_Number_to_f_57 = function $$to_f() { + Opal.def(self, '$to_f', $Number_to_f$62 = function $$to_f() { var self = this; return self - }, TMP_Number_to_f_57.$$arity = 0); + }, $Number_to_f$62.$$arity = 0); - Opal.defn(self, '$to_i', TMP_Number_to_i_58 = function $$to_i() { + Opal.def(self, '$to_i', $Number_to_i$63 = function $$to_i() { var self = this; - return parseInt(self, 10) - }, TMP_Number_to_i_58.$$arity = 0); + return parseInt(self, 10); + }, $Number_to_i$63.$$arity = 0); Opal.alias(self, "to_int", "to_i"); - Opal.defn(self, '$to_r', TMP_Number_to_r_59 = function $$to_r() { + Opal.def(self, '$to_r', $Number_to_r$64 = function $$to_r() { var $a, $b, self = this, f = nil, e = nil; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](self))) { - return Opal.const_get_relative($nesting, 'Rational').$new(self, 1) - } else { + if ($truthy($$($nesting, 'Integer')['$==='](self))) { + return $$($nesting, 'Rational').$new(self, 1) + } else { - $b = Opal.const_get_relative($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b; - f = Opal.const_get_relative($nesting, 'Math').$ldexp(f, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'MANT_DIG')).$to_i(); - e = $rb_minus(e, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'MANT_DIG')); - return $rb_times(f, Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'RADIX')['$**'](e)).$to_r(); + $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b; + f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i(); + e = $rb_minus(e, $$$($$($nesting, 'Float'), 'MANT_DIG')); + return $rb_times(f, $$$($$($nesting, 'Float'), 'RADIX')['$**'](e)).$to_r(); } - }, TMP_Number_to_r_59.$$arity = 0); + }, $Number_to_r$64.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Number_to_s_60 = function $$to_s(base) { + Opal.def(self, '$to_s', $Number_to_s$65 = function $$to_s(base) { var $a, self = this; + + if (base == null) { base = 10; - } - + }; + base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), "to_int"); if ($truthy(($truthy($a = $rb_lt(base, 2)) ? $a : $rb_gt(base, 36)))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "base must be between 2 and 36")}; - return self.toString(base); - }, TMP_Number_to_s_60.$$arity = -1); - Opal.alias(self, "truncate", "to_i"); + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base))}; + return self.toString(base);; + }, $Number_to_s$65.$$arity = -1); + + Opal.def(self, '$truncate', $Number_truncate$66 = function $$truncate(ndigits) { + var self = this; + + + + if (ndigits == null) { + ndigits = 0; + }; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = parseInt(f * factor, 10) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, $Number_truncate$66.$$arity = -1); Opal.alias(self, "inspect", "to_s"); - Opal.defn(self, '$divmod', TMP_Number_divmod_61 = function $$divmod(other) { - var $a, self = this, $iter = TMP_Number_divmod_61.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$digits', $Number_digits$67 = function $$digits(base) { + var self = this; + + + + if (base == null) { + base = 10; + }; + if ($rb_lt(self, 0)) { + self.$raise($$$($$($nesting, 'Math'), 'DomainError'), "out of domain")}; + base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), "to_int"); + if ($truthy($rb_lt(base, 2))) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base))}; + + var value = self, result = []; + + while (value !== 0) { + result.push(value % base); + value = parseInt(value / base, 10); + } + + return result; + ; + }, $Number_digits$67.$$arity = -1); + + Opal.def(self, '$divmod', $Number_divmod$68 = function $$divmod(other) { + var $a, $iter = $Number_divmod$68.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Number_divmod_61.$$p = null; + if ($iter) $Number_divmod$68.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if ($truthy(($truthy($a = self['$nan?']()) ? $a : other['$nan?']()))) { - return self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "NaN") + return self.$raise($$($nesting, 'FloatDomainError'), "NaN") } else if ($truthy(self['$infinite?']())) { - return self.$raise(Opal.const_get_relative($nesting, 'FloatDomainError'), "Infinity") - } else { - return $send(self, Opal.find_super_dispatcher(self, 'divmod', TMP_Number_divmod_61, false), $zuper, $iter) + return self.$raise($$($nesting, 'FloatDomainError'), "Infinity") + } else { + return $send(self, Opal.find_super_dispatcher(self, 'divmod', $Number_divmod$68, false), $zuper, $iter) } - }, TMP_Number_divmod_61.$$arity = 1); + }, $Number_divmod$68.$$arity = 1); - Opal.defn(self, '$upto', TMP_Number_upto_62 = function $$upto(stop) { - var TMP_63, self = this, $iter = TMP_Number_upto_62.$$p, block = $iter || nil; + Opal.def(self, '$upto', $Number_upto$69 = function $$upto(stop) { + var $iter = $Number_upto$69.$$p, block = $iter || nil, $$70, self = this; - if ($iter) TMP_Number_upto_62.$$p = null; + if ($iter) $Number_upto$69.$$p = null; + + if ($iter) $Number_upto$69.$$p = null;; if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["upto", stop], (TMP_63 = function(){var self = TMP_63.$$s || this; + } else { + return $send(self, 'enum_for', ["upto", stop], ($$70 = function(){var self = $$70.$$s || this; - if ($truthy(Opal.const_get_relative($nesting, 'Numeric')['$==='](stop))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + if ($truthy($$($nesting, 'Numeric')['$==='](stop))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") }; if ($truthy($rb_lt(stop, self))) { return 0 - } else { + } else { return $rb_plus($rb_minus(stop, self), 1) - };}, TMP_63.$$s = self, TMP_63.$$arity = 0, TMP_63)) + };}, $$70.$$s = self, $$70.$$arity = 0, $$70)) }; if (!stop.$$is_number) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") } for (var i = self; i <= stop; i++) { block(i); } ; return self; - }, TMP_Number_upto_62.$$arity = 1); + }, $Number_upto$69.$$arity = 1); - Opal.defn(self, '$zero?', TMP_Number_zero$q_64 = function() { + Opal.def(self, '$zero?', $Number_zero$ques$71 = function() { var self = this; - return self == 0 - }, TMP_Number_zero$q_64.$$arity = 0); + return self == 0; + }, $Number_zero$ques$71.$$arity = 0); - Opal.defn(self, '$size', TMP_Number_size_65 = function $$size() { + Opal.def(self, '$size', $Number_size$72 = function $$size() { var self = this; return 4 - }, TMP_Number_size_65.$$arity = 0); + }, $Number_size$72.$$arity = 0); - Opal.defn(self, '$nan?', TMP_Number_nan$q_66 = function() { + Opal.def(self, '$nan?', $Number_nan$ques$73 = function() { var self = this; - return isNaN(self) - }, TMP_Number_nan$q_66.$$arity = 0); + return isNaN(self); + }, $Number_nan$ques$73.$$arity = 0); - Opal.defn(self, '$finite?', TMP_Number_finite$q_67 = function() { + Opal.def(self, '$finite?', $Number_finite$ques$74 = function() { var self = this; - return self != Infinity && self != -Infinity && !isNaN(self) - }, TMP_Number_finite$q_67.$$arity = 0); + return self != Infinity && self != -Infinity && !isNaN(self); + }, $Number_finite$ques$74.$$arity = 0); - Opal.defn(self, '$infinite?', TMP_Number_infinite$q_68 = function() { + Opal.def(self, '$infinite?', $Number_infinite$ques$75 = function() { var self = this; @@ -16378,41 +17049,41 @@ Opal.modules["corelib/number"] = function(Opal) { return nil; } - }, TMP_Number_infinite$q_68.$$arity = 0); + }, $Number_infinite$ques$75.$$arity = 0); - Opal.defn(self, '$positive?', TMP_Number_positive$q_69 = function() { + Opal.def(self, '$positive?', $Number_positive$ques$76 = function() { var self = this; - return self != 0 && (self == Infinity || 1 / self > 0) - }, TMP_Number_positive$q_69.$$arity = 0); - return (Opal.defn(self, '$negative?', TMP_Number_negative$q_70 = function() { + return self != 0 && (self == Infinity || 1 / self > 0); + }, $Number_positive$ques$76.$$arity = 0); + return (Opal.def(self, '$negative?', $Number_negative$ques$77 = function() { var self = this; - return self == -Infinity || 1 / self < 0 - }, TMP_Number_negative$q_70.$$arity = 0), nil) && 'negative?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); - Opal.const_set($nesting[0], 'Fixnum', Opal.const_get_relative($nesting, 'Number')); + return self == -Infinity || 1 / self < 0; + }, $Number_negative$ques$77.$$arity = 0), nil) && 'negative?'; + })($nesting[0], $$($nesting, 'Numeric'), $nesting); + Opal.const_set($nesting[0], 'Fixnum', $$($nesting, 'Number')); (function($base, $super, $parent_nesting) { - function $Integer(){}; - var self = $Integer = $klass($base, $super, 'Integer', $Integer); + var self = $klass($base, $super, 'Integer'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$$is_number_class = true; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_71, TMP_$eq$eq$eq_72; + var $nesting = [self].concat($parent_nesting), $allocate$78, $eq_eq_eq$79, $sqrt$80; - Opal.defn(self, '$allocate', TMP_allocate_71 = function $$allocate() { + Opal.def(self, '$allocate', $allocate$78 = function $$allocate() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, TMP_allocate_71.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) + }, $allocate$78.$$arity = 0); Opal.udef(self, '$' + "new");; - return (Opal.defn(self, '$===', TMP_$eq$eq$eq_72 = function(other) { + + Opal.def(self, '$===', $eq_eq_eq$79 = function(other) { var self = this; @@ -16422,36 +17093,48 @@ Opal.modules["corelib/number"] = function(Opal) { return (other % 1) === 0; - }, TMP_$eq$eq$eq_72.$$arity = 1), nil) && '==='; + }, $eq_eq_eq$79.$$arity = 1); + return (Opal.def(self, '$sqrt', $sqrt$80 = function $$sqrt(n) { + var self = this; + + + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); + + if (n < 0) { + self.$raise($$$($$($nesting, 'Math'), 'DomainError'), "Numerical argument is out of domain - \"isqrt\"") + } + + return parseInt(Math.sqrt(n), 10); + ; + }, $sqrt$80.$$arity = 1), nil) && 'sqrt'; })(Opal.get_singleton_class(self), $nesting); Opal.const_set($nesting[0], 'MAX', Math.pow(2, 30) - 1); return Opal.const_set($nesting[0], 'MIN', -Math.pow(2, 30)); - })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); + })($nesting[0], $$($nesting, 'Numeric'), $nesting); return (function($base, $super, $parent_nesting) { - function $Float(){}; - var self = $Float = $klass($base, $super, 'Float', $Float); + var self = $klass($base, $super, 'Float'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$$is_number_class = true; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_73, TMP_$eq$eq$eq_74; + var $nesting = [self].concat($parent_nesting), $allocate$81, $eq_eq_eq$82; - Opal.defn(self, '$allocate', TMP_allocate_73 = function $$allocate() { + Opal.def(self, '$allocate', $allocate$81 = function $$allocate() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, TMP_allocate_73.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) + }, $allocate$81.$$arity = 0); Opal.udef(self, '$' + "new");; - return (Opal.defn(self, '$===', TMP_$eq$eq$eq_74 = function(other) { + return (Opal.def(self, '$===', $eq_eq_eq$82 = function(other) { var self = this; - return !!other.$$is_number - }, TMP_$eq$eq$eq_74.$$arity = 1), nil) && '==='; + return !!other.$$is_number; + }, $eq_eq_eq$82.$$arity = 1), nil) && '==='; })(Opal.get_singleton_class(self), $nesting); Opal.const_set($nesting[0], 'INFINITY', Infinity); Opal.const_set($nesting[0], 'MAX', Number.MAX_VALUE); @@ -16461,10 +17144,10 @@ Opal.modules["corelib/number"] = function(Opal) { Opal.const_set($nesting[0], 'MANT_DIG', 53); Opal.const_set($nesting[0], 'RADIX', 2); return Opal.const_set($nesting[0], 'EPSILON', Number.EPSILON || 2.2204460492503130808472633361816E-16); - })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); + })($nesting[0], $$($nesting, 'Numeric'), $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/range"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); @@ -16490,42 +17173,42 @@ Opal.modules["corelib/range"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$include', '$attr_reader', '$raise', '$<=>', '$include?', '$<=', '$<', '$enum_for', '$upto', '$to_proc', '$respond_to?', '$class', '$succ', '$!', '$==', '$===', '$exclude_end?', '$eql?', '$begin', '$end', '$last', '$to_a', '$>', '$-', '$abs', '$to_i', '$coerce_to!', '$ceil', '$/', '$size', '$loop', '$+', '$*', '$>=', '$each_with_index', '$%', '$bsearch', '$inspect', '$[]', '$hash']); self.$require("corelib/enumerable"); return (function($base, $super, $parent_nesting) { - function $Range(){}; - var self = $Range = $klass($base, $super, 'Range', $Range); + var self = $klass($base, $super, 'Range'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Range_initialize_1, TMP_Range_$eq$eq_2, TMP_Range_$eq$eq$eq_3, TMP_Range_cover$q_4, TMP_Range_each_5, TMP_Range_eql$q_6, TMP_Range_exclude_end$q_7, TMP_Range_first_8, TMP_Range_last_9, TMP_Range_max_10, TMP_Range_min_11, TMP_Range_size_12, TMP_Range_step_13, TMP_Range_bsearch_17, TMP_Range_to_s_18, TMP_Range_inspect_19, TMP_Range_marshal_load_20, TMP_Range_hash_21; + var $nesting = [self].concat($parent_nesting), $Range_initialize$1, $Range_$eq_eq$2, $Range_$eq_eq_eq$3, $Range_cover$ques$4, $Range_each$5, $Range_eql$ques$6, $Range_exclude_end$ques$7, $Range_first$8, $Range_last$9, $Range_max$10, $Range_min$11, $Range_size$12, $Range_step$13, $Range_bsearch$17, $Range_to_s$18, $Range_inspect$19, $Range_marshal_load$20, $Range_hash$21; - def.begin = def.end = def.excl = nil; + self.$$prototype.begin = self.$$prototype.end = self.$$prototype.excl = nil; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - def.$$is_range = true;; + self.$include($$($nesting, 'Enumerable')); + self.$$prototype.$$is_range = true; self.$attr_reader("begin", "end"); - Opal.defn(self, '$initialize', TMP_Range_initialize_1 = function $$initialize(first, last, exclude) { + Opal.def(self, '$initialize', $Range_initialize$1 = function $$initialize(first, last, exclude) { var self = this; + + if (exclude == null) { exclude = false; - } - + }; if ($truthy(self.begin)) { - self.$raise(Opal.const_get_relative($nesting, 'NameError'), "'initialize' called twice")}; + self.$raise($$($nesting, 'NameError'), "'initialize' called twice")}; if ($truthy(first['$<=>'](last))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "bad value for range") + } else { + self.$raise($$($nesting, 'ArgumentError'), "bad value for range") }; self.begin = first; self.end = last; return (self.excl = exclude); - }, TMP_Range_initialize_1.$$arity = -3); + }, $Range_initialize$1.$$arity = -3); - Opal.defn(self, '$==', TMP_Range_$eq$eq_2 = function(other) { + Opal.def(self, '$==', $Range_$eq_eq$2 = function(other) { var self = this; @@ -16537,38 +17220,40 @@ Opal.modules["corelib/range"] = function(Opal) { self.begin == other.begin && self.end == other.end; - }, TMP_Range_$eq$eq_2.$$arity = 1); + }, $Range_$eq_eq$2.$$arity = 1); - Opal.defn(self, '$===', TMP_Range_$eq$eq$eq_3 = function(value) { + Opal.def(self, '$===', $Range_$eq_eq_eq$3 = function(value) { var self = this; return self['$include?'](value) - }, TMP_Range_$eq$eq$eq_3.$$arity = 1); + }, $Range_$eq_eq_eq$3.$$arity = 1); - Opal.defn(self, '$cover?', TMP_Range_cover$q_4 = function(value) { + Opal.def(self, '$cover?', $Range_cover$ques$4 = function(value) { var $a, self = this, beg_cmp = nil, end_cmp = nil; beg_cmp = self.begin['$<=>'](value); if ($truthy(($truthy($a = beg_cmp) ? $rb_le(beg_cmp, 0) : $a))) { - } else { + } else { return false }; end_cmp = value['$<=>'](self.end); if ($truthy(self.excl)) { return ($truthy($a = end_cmp) ? $rb_lt(end_cmp, 0) : $a) - } else { + } else { return ($truthy($a = end_cmp) ? $rb_le(end_cmp, 0) : $a) }; - }, TMP_Range_cover$q_4.$$arity = 1); + }, $Range_cover$ques$4.$$arity = 1); - Opal.defn(self, '$each', TMP_Range_each_5 = function $$each() { - var $a, self = this, $iter = TMP_Range_each_5.$$p, block = $iter || nil, current = nil, last = nil; + Opal.def(self, '$each', $Range_each$5 = function $$each() { + var $iter = $Range_each$5.$$p, block = $iter || nil, $a, self = this, current = nil, last = nil; - if ($iter) TMP_Range_each_5.$$p = null; + if ($iter) $Range_each$5.$$p = null; + + if ($iter) $Range_each$5.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("each") }; @@ -16576,12 +17261,12 @@ Opal.modules["corelib/range"] = function(Opal) { if (self.begin.$$is_number && self.end.$$is_number) { if (self.begin % 1 !== 0 || self.end % 1 !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "can't iterate from Float") + self.$raise($$($nesting, 'TypeError'), "can't iterate from Float") } for (i = self.begin, limit = self.end + (function() {if ($truthy(self.excl)) { return 0 - } else { + } else { return 1 }; return nil; })(); i < limit; i++) { block(i); @@ -16598,8 +17283,8 @@ Opal.modules["corelib/range"] = function(Opal) { current = self.begin; last = self.end; if ($truthy(current['$respond_to?']("succ"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't iterate from " + (current.$class())) + } else { + self.$raise($$($nesting, 'TypeError'), "" + "can't iterate from " + (current.$class())) }; while ($truthy($rb_lt(current['$<=>'](last), 0))) { @@ -16609,126 +17294,129 @@ Opal.modules["corelib/range"] = function(Opal) { if ($truthy(($truthy($a = self.excl['$!']()) ? current['$=='](last) : $a))) { Opal.yield1(block, current)}; return self; - }, TMP_Range_each_5.$$arity = 0); + }, $Range_each$5.$$arity = 0); - Opal.defn(self, '$eql?', TMP_Range_eql$q_6 = function(other) { + Opal.def(self, '$eql?', $Range_eql$ques$6 = function(other) { var $a, $b, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Range')['$==='](other))) { - } else { + if ($truthy($$($nesting, 'Range')['$==='](other))) { + } else { return false }; return ($truthy($a = ($truthy($b = self.excl['$==='](other['$exclude_end?']())) ? self.begin['$eql?'](other.$begin()) : $b)) ? self.end['$eql?'](other.$end()) : $a); - }, TMP_Range_eql$q_6.$$arity = 1); + }, $Range_eql$ques$6.$$arity = 1); - Opal.defn(self, '$exclude_end?', TMP_Range_exclude_end$q_7 = function() { + Opal.def(self, '$exclude_end?', $Range_exclude_end$ques$7 = function() { var self = this; return self.excl - }, TMP_Range_exclude_end$q_7.$$arity = 0); + }, $Range_exclude_end$ques$7.$$arity = 0); - Opal.defn(self, '$first', TMP_Range_first_8 = function $$first(n) { - var self = this, $iter = TMP_Range_first_8.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$first', $Range_first$8 = function $$first(n) { + var $iter = $Range_first$8.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Range_first_8.$$p = null; + if ($iter) $Range_first$8.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } + ; if ($truthy(n == null)) { return self.begin}; - return $send(self, Opal.find_super_dispatcher(self, 'first', TMP_Range_first_8, false), $zuper, $iter); - }, TMP_Range_first_8.$$arity = -1); + return $send(self, Opal.find_super_dispatcher(self, 'first', $Range_first$8, false), $zuper, $iter); + }, $Range_first$8.$$arity = -1); Opal.alias(self, "include?", "cover?"); - Opal.defn(self, '$last', TMP_Range_last_9 = function $$last(n) { + Opal.def(self, '$last', $Range_last$9 = function $$last(n) { var self = this; + ; if ($truthy(n == null)) { return self.end}; return self.$to_a().$last(n); - }, TMP_Range_last_9.$$arity = -1); + }, $Range_last$9.$$arity = -1); - Opal.defn(self, '$max', TMP_Range_max_10 = function $$max() { - var $a, self = this, $iter = TMP_Range_max_10.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$max', $Range_max$10 = function $$max() { + var $a, $iter = $Range_max$10.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Range_max_10.$$p = null; + if ($iter) $Range_max$10.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if (($yield !== nil)) { - return $send(self, Opal.find_super_dispatcher(self, 'max', TMP_Range_max_10, false), $zuper, $iter) + return $send(self, Opal.find_super_dispatcher(self, 'max', $Range_max$10, false), $zuper, $iter) } else if ($truthy($rb_gt(self.begin, self.end))) { return nil } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) { return nil - } else { + } else { return self.excl ? self.end - 1 : self.end } - }, TMP_Range_max_10.$$arity = 0); + }, $Range_max$10.$$arity = 0); Opal.alias(self, "member?", "cover?"); - Opal.defn(self, '$min', TMP_Range_min_11 = function $$min() { - var $a, self = this, $iter = TMP_Range_min_11.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$min', $Range_min$11 = function $$min() { + var $a, $iter = $Range_min$11.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Range_min_11.$$p = null; + if ($iter) $Range_min$11.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if (($yield !== nil)) { - return $send(self, Opal.find_super_dispatcher(self, 'min', TMP_Range_min_11, false), $zuper, $iter) + return $send(self, Opal.find_super_dispatcher(self, 'min', $Range_min$11, false), $zuper, $iter) } else if ($truthy($rb_gt(self.begin, self.end))) { return nil } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) { return nil - } else { + } else { return self.begin } - }, TMP_Range_min_11.$$arity = 0); + }, $Range_min$11.$$arity = 0); - Opal.defn(self, '$size', TMP_Range_size_12 = function $$size() { - var $a, self = this, _begin = nil, _end = nil, infinity = nil; + Opal.def(self, '$size', $Range_size$12 = function $$size() { + var $a, self = this, range_begin = nil, range_end = nil, infinity = nil; - _begin = self.begin; - _end = self.end; + range_begin = self.begin; + range_end = self.end; if ($truthy(self.excl)) { - _end = $rb_minus(_end, 1)}; - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](_begin)) ? Opal.const_get_relative($nesting, 'Numeric')['$==='](_end) : $a))) { - } else { + range_end = $rb_minus(range_end, 1)}; + if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](range_begin)) ? $$($nesting, 'Numeric')['$==='](range_end) : $a))) { + } else { return nil }; - if ($truthy($rb_lt(_end, _begin))) { + if ($truthy($rb_lt(range_end, range_begin))) { return 0}; - infinity = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY'); - if ($truthy(($truthy($a = infinity['$=='](_begin.$abs())) ? $a : _end.$abs()['$=='](infinity)))) { + infinity = $$$($$($nesting, 'Float'), 'INFINITY'); + if ($truthy([range_begin.$abs(), range_end.$abs()]['$include?'](infinity))) { return infinity}; - return (Math.abs(_end - _begin) + 1).$to_i(); - }, TMP_Range_size_12.$$arity = 0); + return (Math.abs(range_end - range_begin) + 1).$to_i(); + }, $Range_size$12.$$arity = 0); - Opal.defn(self, '$step', TMP_Range_step_13 = function $$step(n) { - var TMP_14, TMP_15, TMP_16, self = this, $iter = TMP_Range_step_13.$$p, $yield = $iter || nil, i = nil; + Opal.def(self, '$step', $Range_step$13 = function $$step(n) { + var $$14, $$15, $$16, $iter = $Range_step$13.$$p, $yield = $iter || nil, self = this, i = nil; + if ($iter) $Range_step$13.$$p = null; + + if (n == null) { n = 1; - } - if ($iter) TMP_Range_step_13.$$p = null; - + }; function coerceStepSize() { if (!n.$$is_number) { - n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int") + n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int") } if (n < 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "step can't be negative") + self.$raise($$($nesting, 'ArgumentError'), "step can't be negative") } else if (n === 0) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "step can't be 0") + self.$raise($$($nesting, 'ArgumentError'), "step can't be 0") } } @@ -16747,7 +17435,7 @@ Opal.modules["corelib/range"] = function(Opal) { // n is a float var begin = self.begin, end = self.end, abs = Math.abs, floor = Math.floor, - err = (abs(begin) + abs(end) + abs(end - begin)) / abs(n) * Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'EPSILON'), + err = (abs(begin) + abs(end) + abs(end - begin)) / abs(n) * $$$($$($nesting, 'Float'), 'EPSILON'), size; if (err > 0.5) { @@ -16768,19 +17456,19 @@ Opal.modules["corelib/range"] = function(Opal) { } ; if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["step", n], (TMP_14 = function(){var self = TMP_14.$$s || this; + } else { + return $send(self, 'enum_for', ["step", n], ($$14 = function(){var self = $$14.$$s || this; coerceStepSize(); return enumeratorSize(); - }, TMP_14.$$s = self, TMP_14.$$arity = 0, TMP_14)) + }, $$14.$$s = self, $$14.$$arity = 0, $$14)) }; coerceStepSize(); if ($truthy(self.begin.$$is_number && self.end.$$is_number)) { i = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], (TMP_15 = function(){var self = TMP_15.$$s || this, current = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$15 = function(){var self = $$15.$$s || this, current = nil; if (self.begin == null) self.begin = nil; if (self.excl == null) self.excl = nil; if (self.end == null) self.end = nil; @@ -16795,114 +17483,127 @@ Opal.modules["corelib/range"] = function(Opal) { Opal.brk(nil, $brk)}; Opal.yield1($yield, current); - return (i = $rb_plus(i, 1));}, TMP_15.$$s = self, TMP_15.$$brk = $brk, TMP_15.$$arity = 0, TMP_15)) + return (i = $rb_plus(i, 1));}, $$15.$$s = self, $$15.$$brk = $brk, $$15.$$arity = 0, $$15)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - } else { + } else { if (self.begin.$$is_string && self.end.$$is_string && n % 1 !== 0) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "no implicit conversion to float from string") + self.$raise($$($nesting, 'TypeError'), "no implicit conversion to float from string") } ; - $send(self, 'each_with_index', [], (TMP_16 = function(value, idx){var self = TMP_16.$$s || this; -if (value == null) value = nil;if (idx == null) idx = nil; - if (idx['$%'](n)['$=='](0)) { + $send(self, 'each_with_index', [], ($$16 = function(value, idx){var self = $$16.$$s || this; + + + + if (value == null) { + value = nil; + }; + + if (idx == null) { + idx = nil; + }; + if (idx['$%'](n)['$=='](0)) { return Opal.yield1($yield, value); - } else { + } else { return nil - }}, TMP_16.$$s = self, TMP_16.$$arity = 2, TMP_16)); + };}, $$16.$$s = self, $$16.$$arity = 2, $$16)); }; return self; - }, TMP_Range_step_13.$$arity = -1); + }, $Range_step$13.$$arity = -1); - Opal.defn(self, '$bsearch', TMP_Range_bsearch_17 = function $$bsearch() { - var self = this, $iter = TMP_Range_bsearch_17.$$p, block = $iter || nil; + Opal.def(self, '$bsearch', $Range_bsearch$17 = function $$bsearch() { + var $iter = $Range_bsearch$17.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Range_bsearch_17.$$p = null; + if ($iter) $Range_bsearch$17.$$p = null; + + if ($iter) $Range_bsearch$17.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("bsearch") }; if ($truthy(self.begin.$$is_number && self.end.$$is_number)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't do binary search for " + (self.begin.$class())) + } else { + self.$raise($$($nesting, 'TypeError'), "" + "can't do binary search for " + (self.begin.$class())) }; return $send(self.$to_a(), 'bsearch', [], block.$to_proc()); - }, TMP_Range_bsearch_17.$$arity = 0); + }, $Range_bsearch$17.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Range_to_s_18 = function $$to_s() { + Opal.def(self, '$to_s', $Range_to_s$18 = function $$to_s() { var self = this; return "" + (self.begin) + ((function() {if ($truthy(self.excl)) { return "..." - } else { + } else { return ".." }; return nil; })()) + (self.end) - }, TMP_Range_to_s_18.$$arity = 0); + }, $Range_to_s$18.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Range_inspect_19 = function $$inspect() { + Opal.def(self, '$inspect', $Range_inspect$19 = function $$inspect() { var self = this; return "" + (self.begin.$inspect()) + ((function() {if ($truthy(self.excl)) { return "..." - } else { + } else { return ".." }; return nil; })()) + (self.end.$inspect()) - }, TMP_Range_inspect_19.$$arity = 0); + }, $Range_inspect$19.$$arity = 0); - Opal.defn(self, '$marshal_load', TMP_Range_marshal_load_20 = function $$marshal_load(args) { + Opal.def(self, '$marshal_load', $Range_marshal_load$20 = function $$marshal_load(args) { var self = this; self.begin = args['$[]']("begin"); self.end = args['$[]']("end"); return (self.excl = args['$[]']("excl")); - }, TMP_Range_marshal_load_20.$$arity = 1); - return (Opal.defn(self, '$hash', TMP_Range_hash_21 = function $$hash() { + }, $Range_marshal_load$20.$$arity = 1); + return (Opal.def(self, '$hash', $Range_hash$21 = function $$hash() { var self = this; return [self.begin, self.end, self.excl].$hash() - }, TMP_Range_hash_21.$$arity = 0), nil) && 'hash'; + }, $Range_hash$21.$$arity = 0), nil) && 'hash'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/proc"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$raise', '$coerce_to!']); return (function($base, $super, $parent_nesting) { - function $Proc(){}; - var self = $Proc = $klass($base, $super, 'Proc', $Proc); + var self = $klass($base, $super, 'Proc'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Proc_new_1, TMP_Proc_call_2, TMP_Proc_to_proc_3, TMP_Proc_lambda$q_4, TMP_Proc_arity_5, TMP_Proc_source_location_6, TMP_Proc_binding_7, TMP_Proc_parameters_8, TMP_Proc_curry_9, TMP_Proc_dup_10; + var $nesting = [self].concat($parent_nesting), $Proc_new$1, $Proc_call$2, $Proc_to_proc$3, $Proc_lambda$ques$4, $Proc_arity$5, $Proc_source_location$6, $Proc_binding$7, $Proc_parameters$8, $Proc_curry$9, $Proc_dup$10; - def.$$is_proc = true; - def.$$is_lambda = false; - Opal.defs(self, '$new', TMP_Proc_new_1 = function() { - var self = this, $iter = TMP_Proc_new_1.$$p, block = $iter || nil; + Opal.defineProperty(self.$$prototype, '$$is_proc', true); + Opal.defineProperty(self.$$prototype, '$$is_lambda', false); + Opal.defs(self, '$new', $Proc_new$1 = function() { + var $iter = $Proc_new$1.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Proc_new_1.$$p = null; + if ($iter) $Proc_new$1.$$p = null; + + if ($iter) $Proc_new$1.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "tried to create a Proc object without a block") + } else { + self.$raise($$($nesting, 'ArgumentError'), "tried to create a Proc object without a block") }; return block; - }, TMP_Proc_new_1.$$arity = 0); + }, $Proc_new$1.$$arity = 0); - Opal.defn(self, '$call', TMP_Proc_call_2 = function $$call($a_rest) { - var self = this, args, $iter = TMP_Proc_call_2.$$p, block = $iter || nil; + Opal.def(self, '$call', $Proc_call$2 = function $$call($a) { + var $iter = $Proc_call$2.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Proc_call_2.$$p = null; + if ($iter) $Proc_call$2.$$p = null; + + + if ($iter) $Proc_call$2.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if (block !== nil) { self.$$p = block; @@ -16937,25 +17638,25 @@ Opal.modules["corelib/proc"] = function(Opal) { } return result; - - }, TMP_Proc_call_2.$$arity = -1); + ; + }, $Proc_call$2.$$arity = -1); Opal.alias(self, "[]", "call"); Opal.alias(self, "===", "call"); Opal.alias(self, "yield", "call"); - Opal.defn(self, '$to_proc', TMP_Proc_to_proc_3 = function $$to_proc() { + Opal.def(self, '$to_proc', $Proc_to_proc$3 = function $$to_proc() { var self = this; return self - }, TMP_Proc_to_proc_3.$$arity = 0); + }, $Proc_to_proc$3.$$arity = 0); - Opal.defn(self, '$lambda?', TMP_Proc_lambda$q_4 = function() { + Opal.def(self, '$lambda?', $Proc_lambda$ques$4 = function() { var self = this; - return !!self.$$is_lambda - }, TMP_Proc_lambda$q_4.$$arity = 0); + return !!self.$$is_lambda; + }, $Proc_lambda$ques$4.$$arity = 0); - Opal.defn(self, '$arity', TMP_Proc_arity_5 = function $$arity() { + Opal.def(self, '$arity', $Proc_arity$5 = function $$arity() { var self = this; @@ -16965,25 +17666,25 @@ Opal.modules["corelib/proc"] = function(Opal) { return self.$$arity; } - }, TMP_Proc_arity_5.$$arity = 0); + }, $Proc_arity$5.$$arity = 0); - Opal.defn(self, '$source_location', TMP_Proc_source_location_6 = function $$source_location() { + Opal.def(self, '$source_location', $Proc_source_location$6 = function $$source_location() { var self = this; if (self.$$is_curried) { return nil; }; return nil; - }, TMP_Proc_source_location_6.$$arity = 0); + }, $Proc_source_location$6.$$arity = 0); - Opal.defn(self, '$binding', TMP_Proc_binding_7 = function $$binding() { + Opal.def(self, '$binding', $Proc_binding$7 = function $$binding() { var self = this; - if (self.$$is_curried) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Can't create Binding") }; + if (self.$$is_curried) { self.$raise($$($nesting, 'ArgumentError'), "Can't create Binding") }; return nil; - }, TMP_Proc_binding_7.$$arity = 0); + }, $Proc_binding$7.$$arity = 0); - Opal.defn(self, '$parameters', TMP_Proc_parameters_8 = function $$parameters() { + Opal.def(self, '$parameters', $Proc_parameters$8 = function $$parameters() { var self = this; @@ -17012,19 +17713,21 @@ Opal.modules["corelib/proc"] = function(Opal) { return []; } - }, TMP_Proc_parameters_8.$$arity = 0); + }, $Proc_parameters$8.$$arity = 0); - Opal.defn(self, '$curry', TMP_Proc_curry_9 = function $$curry(arity) { + Opal.def(self, '$curry', $Proc_curry$9 = function $$curry(arity) { var self = this; + ; + if (arity === undefined) { arity = self.length; } else { - arity = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](arity, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + arity = $$($nesting, 'Opal')['$coerce_to!'](arity, $$($nesting, 'Integer'), "to_int"); if (self.$$is_lambda && arity !== self.length) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arity) + " for " + (self.length) + ")") + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arity) + " for " + (self.length) + ")") } } @@ -17034,7 +17737,7 @@ Opal.modules["corelib/proc"] = function(Opal) { result; if (length > arity && self.$$is_lambda && !self.$$is_curried) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (length) + " for " + (arity) + ")") + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (length) + " for " + (arity) + ")") } if (length >= arity) { @@ -17054,10 +17757,10 @@ Opal.modules["corelib/proc"] = function(Opal) { curried.$$is_lambda = self.$$is_lambda; curried.$$is_curried = true; return curried; + ; + }, $Proc_curry$9.$$arity = -1); - }, TMP_Proc_curry_9.$$arity = -1); - - Opal.defn(self, '$dup', TMP_Proc_dup_10 = function $$dup() { + Opal.def(self, '$dup', $Proc_dup$10 = function $$dup() { var self = this; @@ -17074,28 +17777,27 @@ Opal.modules["corelib/proc"] = function(Opal) { return proc; - }, TMP_Proc_dup_10.$$arity = 0); + }, $Proc_dup$10.$$arity = 0); return Opal.alias(self, "clone", "dup"); })($nesting[0], Function, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/method"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$attr_reader', '$arity', '$new', '$class', '$join', '$source_location', '$raise']); (function($base, $super, $parent_nesting) { - function $Method(){}; - var self = $Method = $klass($base, $super, 'Method', $Method); + var self = $klass($base, $super, 'Method'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Method_initialize_1, TMP_Method_arity_2, TMP_Method_parameters_3, TMP_Method_source_location_4, TMP_Method_comments_5, TMP_Method_call_6, TMP_Method_unbind_7, TMP_Method_to_proc_8, TMP_Method_inspect_9; + var $nesting = [self].concat($parent_nesting), $Method_initialize$1, $Method_arity$2, $Method_parameters$3, $Method_source_location$4, $Method_comments$5, $Method_call$6, $Method_unbind$7, $Method_to_proc$8, $Method_inspect$9; - def.method = def.receiver = def.owner = def.name = nil; + self.$$prototype.method = self.$$prototype.receiver = self.$$prototype.owner = self.$$prototype.name = nil; self.$attr_reader("owner", "receiver", "name"); - Opal.defn(self, '$initialize', TMP_Method_initialize_1 = function $$initialize(receiver, owner, method, name) { + Opal.def(self, '$initialize', $Method_initialize$1 = function $$initialize(receiver, owner, method, name) { var self = this; @@ -17103,83 +17805,85 @@ Opal.modules["corelib/method"] = function(Opal) { self.owner = owner; self.name = name; return (self.method = method); - }, TMP_Method_initialize_1.$$arity = 4); + }, $Method_initialize$1.$$arity = 4); - Opal.defn(self, '$arity', TMP_Method_arity_2 = function $$arity() { + Opal.def(self, '$arity', $Method_arity$2 = function $$arity() { var self = this; return self.method.$arity() - }, TMP_Method_arity_2.$$arity = 0); + }, $Method_arity$2.$$arity = 0); - Opal.defn(self, '$parameters', TMP_Method_parameters_3 = function $$parameters() { + Opal.def(self, '$parameters', $Method_parameters$3 = function $$parameters() { var self = this; return self.method.$$parameters - }, TMP_Method_parameters_3.$$arity = 0); + }, $Method_parameters$3.$$arity = 0); - Opal.defn(self, '$source_location', TMP_Method_source_location_4 = function $$source_location() { + Opal.def(self, '$source_location', $Method_source_location$4 = function $$source_location() { var $a, self = this; return ($truthy($a = self.method.$$source_location) ? $a : ["(eval)", 0]) - }, TMP_Method_source_location_4.$$arity = 0); + }, $Method_source_location$4.$$arity = 0); - Opal.defn(self, '$comments', TMP_Method_comments_5 = function $$comments() { + Opal.def(self, '$comments', $Method_comments$5 = function $$comments() { var $a, self = this; return ($truthy($a = self.method.$$comments) ? $a : []) - }, TMP_Method_comments_5.$$arity = 0); + }, $Method_comments$5.$$arity = 0); - Opal.defn(self, '$call', TMP_Method_call_6 = function $$call($a_rest) { - var self = this, args, $iter = TMP_Method_call_6.$$p, block = $iter || nil; + Opal.def(self, '$call', $Method_call$6 = function $$call($a) { + var $iter = $Method_call$6.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Method_call_6.$$p = null; + if ($iter) $Method_call$6.$$p = null; + + + if ($iter) $Method_call$6.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; self.method.$$p = block; return self.method.apply(self.receiver, args); - - }, TMP_Method_call_6.$$arity = -1); + ; + }, $Method_call$6.$$arity = -1); Opal.alias(self, "[]", "call"); - Opal.defn(self, '$unbind', TMP_Method_unbind_7 = function $$unbind() { + Opal.def(self, '$unbind', $Method_unbind$7 = function $$unbind() { var self = this; - return Opal.const_get_relative($nesting, 'UnboundMethod').$new(self.receiver.$class(), self.owner, self.method, self.name) - }, TMP_Method_unbind_7.$$arity = 0); + return $$($nesting, 'UnboundMethod').$new(self.receiver.$class(), self.owner, self.method, self.name) + }, $Method_unbind$7.$$arity = 0); - Opal.defn(self, '$to_proc', TMP_Method_to_proc_8 = function $$to_proc() { + Opal.def(self, '$to_proc', $Method_to_proc$8 = function $$to_proc() { var self = this; var proc = self.$call.bind(self); proc.$$unbound = self.method; proc.$$is_lambda = true; + proc.$$arity = self.method.$$arity; + proc.$$parameters = self.method.$$parameters; return proc; - }, TMP_Method_to_proc_8.$$arity = 0); - return (Opal.defn(self, '$inspect', TMP_Method_inspect_9 = function $$inspect() { + }, $Method_to_proc$8.$$arity = 0); + return (Opal.def(self, '$inspect', $Method_inspect$9 = function $$inspect() { var self = this; return "" + "#<" + (self.$class()) + ": " + (self.receiver.$class()) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" - }, TMP_Method_inspect_9.$$arity = 0), nil) && 'inspect'; + }, $Method_inspect$9.$$arity = 0), nil) && 'inspect'; })($nesting[0], null, $nesting); return (function($base, $super, $parent_nesting) { - function $UnboundMethod(){}; - var self = $UnboundMethod = $klass($base, $super, 'UnboundMethod', $UnboundMethod); + var self = $klass($base, $super, 'UnboundMethod'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UnboundMethod_initialize_10, TMP_UnboundMethod_arity_11, TMP_UnboundMethod_parameters_12, TMP_UnboundMethod_source_location_13, TMP_UnboundMethod_comments_14, TMP_UnboundMethod_bind_15, TMP_UnboundMethod_inspect_16; + var $nesting = [self].concat($parent_nesting), $UnboundMethod_initialize$10, $UnboundMethod_arity$11, $UnboundMethod_parameters$12, $UnboundMethod_source_location$13, $UnboundMethod_comments$14, $UnboundMethod_bind$15, $UnboundMethod_inspect$16; - def.method = def.owner = def.name = def.source = nil; + self.$$prototype.method = self.$$prototype.owner = self.$$prototype.name = self.$$prototype.source = nil; self.$attr_reader("source", "owner", "name"); - Opal.defn(self, '$initialize', TMP_UnboundMethod_initialize_10 = function $$initialize(source, owner, method, name) { + Opal.def(self, '$initialize', $UnboundMethod_initialize$10 = function $$initialize(source, owner, method, name) { var self = this; @@ -17187,55 +17891,55 @@ Opal.modules["corelib/method"] = function(Opal) { self.owner = owner; self.method = method; return (self.name = name); - }, TMP_UnboundMethod_initialize_10.$$arity = 4); + }, $UnboundMethod_initialize$10.$$arity = 4); - Opal.defn(self, '$arity', TMP_UnboundMethod_arity_11 = function $$arity() { + Opal.def(self, '$arity', $UnboundMethod_arity$11 = function $$arity() { var self = this; return self.method.$arity() - }, TMP_UnboundMethod_arity_11.$$arity = 0); + }, $UnboundMethod_arity$11.$$arity = 0); - Opal.defn(self, '$parameters', TMP_UnboundMethod_parameters_12 = function $$parameters() { + Opal.def(self, '$parameters', $UnboundMethod_parameters$12 = function $$parameters() { var self = this; return self.method.$$parameters - }, TMP_UnboundMethod_parameters_12.$$arity = 0); + }, $UnboundMethod_parameters$12.$$arity = 0); - Opal.defn(self, '$source_location', TMP_UnboundMethod_source_location_13 = function $$source_location() { + Opal.def(self, '$source_location', $UnboundMethod_source_location$13 = function $$source_location() { var $a, self = this; return ($truthy($a = self.method.$$source_location) ? $a : ["(eval)", 0]) - }, TMP_UnboundMethod_source_location_13.$$arity = 0); + }, $UnboundMethod_source_location$13.$$arity = 0); - Opal.defn(self, '$comments', TMP_UnboundMethod_comments_14 = function $$comments() { + Opal.def(self, '$comments', $UnboundMethod_comments$14 = function $$comments() { var $a, self = this; return ($truthy($a = self.method.$$comments) ? $a : []) - }, TMP_UnboundMethod_comments_14.$$arity = 0); + }, $UnboundMethod_comments$14.$$arity = 0); - Opal.defn(self, '$bind', TMP_UnboundMethod_bind_15 = function $$bind(object) { + Opal.def(self, '$bind', $UnboundMethod_bind$15 = function $$bind(object) { var self = this; if (self.owner.$$is_module || Opal.is_a(object, self.owner)) { - return Opal.const_get_relative($nesting, 'Method').$new(object, self.owner, self.method, self.name); + return $$($nesting, 'Method').$new(object, self.owner, self.method, self.name); } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't bind singleton method to a different class (expected " + (object) + ".kind_of?(" + (self.owner) + " to be true)"); + self.$raise($$($nesting, 'TypeError'), "" + "can't bind singleton method to a different class (expected " + (object) + ".kind_of?(" + (self.owner) + " to be true)"); } - }, TMP_UnboundMethod_bind_15.$$arity = 1); - return (Opal.defn(self, '$inspect', TMP_UnboundMethod_inspect_16 = function $$inspect() { + }, $UnboundMethod_bind$15.$$arity = 1); + return (Opal.def(self, '$inspect', $UnboundMethod_inspect$16 = function $$inspect() { var self = this; return "" + "#<" + (self.$class()) + ": " + (self.source) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" - }, TMP_UnboundMethod_inspect_16.$$arity = 0), nil) && 'inspect'; + }, $UnboundMethod_inspect$16.$$arity = 0), nil) && 'inspect'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/variables"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $hash2 = Opal.hash2; Opal.add_stubs(['$new']); @@ -17245,45 +17949,45 @@ Opal.modules["corelib/variables"] = function(Opal) { $gvars["/"] = "\n"; $gvars[","] = nil; Opal.const_set($nesting[0], 'ARGV', []); - Opal.const_set($nesting[0], 'ARGF', Opal.const_get_relative($nesting, 'Object').$new()); + Opal.const_set($nesting[0], 'ARGF', $$($nesting, 'Object').$new()); Opal.const_set($nesting[0], 'ENV', $hash2([], {})); $gvars.VERBOSE = false; $gvars.DEBUG = false; return ($gvars.SAFE = 0); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/regexp_anchors"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; Opal.add_stubs(['$==', '$new']); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - Opal.const_set($nesting[0], 'REGEXP_START', (function() {if (Opal.const_get_relative($nesting, 'RUBY_ENGINE')['$==']("opal")) { + Opal.const_set($nesting[0], 'REGEXP_START', (function() {if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { return "^" - } else { + } else { return nil }; return nil; })()); - Opal.const_set($nesting[0], 'REGEXP_END', (function() {if (Opal.const_get_relative($nesting, 'RUBY_ENGINE')['$==']("opal")) { + Opal.const_set($nesting[0], 'REGEXP_END', (function() {if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { return "$" - } else { + } else { return nil }; return nil; })()); Opal.const_set($nesting[0], 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', "\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); Opal.const_set($nesting[0], 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', "\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); - Opal.const_set($nesting[0], 'INLINE_IDENTIFIER_REGEXP', Opal.const_get_relative($nesting, 'Regexp').$new("" + "[^" + (Opal.const_get_relative($nesting, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + (Opal.const_get_relative($nesting, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); + Opal.const_set($nesting[0], 'INLINE_IDENTIFIER_REGEXP', $$($nesting, 'Regexp').$new("" + "[^" + ($$($nesting, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + ($$($nesting, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); Opal.const_set($nesting[0], 'FORBIDDEN_CONST_NAME_CHARS', "\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); - Opal.const_set($nesting[0], 'CONST_NAME_REGEXP', Opal.const_get_relative($nesting, 'Regexp').$new("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(::)?[A-Z][^" + (Opal.const_get_relative($nesting, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'CONST_NAME_REGEXP', $$($nesting, 'Regexp').$new("" + ($$($nesting, 'REGEXP_START')) + "(::)?[A-Z][^" + ($$($nesting, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + ($$($nesting, 'REGEXP_END')))); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/mini"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$require']); @@ -17305,287 +18009,615 @@ Opal.modules["opal/mini"] = function(Opal) { return self.$require("opal/regexp_anchors"); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["corelib/string/inheritance"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars; +/* Generated by Opal 1.0.5 */ +Opal.modules["corelib/kernel/format"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars; - Opal.add_stubs(['$require', '$new', '$allocate', '$initialize', '$to_proc', '$__send__', '$class', '$clone', '$respond_to?', '$==', '$to_s', '$inspect', '$+', '$*', '$map', '$split', '$enum_for', '$each_line', '$to_a', '$%', '$-']); - - self.$require("corelib/string"); - (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); + Opal.add_stubs(['$==', '$length', '$respond_to?', '$[]', '$coerce_to?', '$nil?', '$to_a', '$raise', '$to_int', '$fetch', '$Integer', '$Float', '$to_ary', '$to_str', '$coerce_to', '$inspect', '$to_s']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_inherited_1; + var $nesting = [self].concat($parent_nesting), $Kernel_format$1; - return Opal.defs(self, '$inherited', TMP_String_inherited_1 = function $$inherited(klass) { - var self = this, replace = nil; + + + Opal.def(self, '$format', $Kernel_format$1 = function $$format(format_string, $a) { + var $post_args, args, $b, self = this, ary = nil; + if ($gvars.DEBUG == null) $gvars.DEBUG = nil; - replace = Opal.const_get_relative($nesting, 'Class').$new(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'String'), 'Wrapper')); - klass.$$proto = replace.$$proto; - klass.$$proto.$$class = klass; - klass.$$alloc = replace.$$alloc; - klass.$$parent = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'String'), 'Wrapper'); + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + if ($truthy((($b = args.$length()['$=='](1)) ? args['$[]'](0)['$respond_to?']("to_ary") : args.$length()['$=='](1)))) { + + ary = $$($nesting, 'Opal')['$coerce_to?'](args['$[]'](0), $$($nesting, 'Array'), "to_ary"); + if ($truthy(ary['$nil?']())) { + } else { + args = ary.$to_a() + };}; + + var result = '', + //used for slicing: + begin_slice = 0, + end_slice, + //used for iterating over the format string: + i, + len = format_string.length, + //used for processing field values: + arg, + str, + //used for processing %g and %G fields: + exponent, + //used for keeping track of width and precision: + width, + precision, + //used for holding temporary values: + tmp_num, + //used for processing %{} and %<> fileds: + hash_parameter_key, + closing_brace_char, + //used for processing %b, %B, %o, %x, and %X fields: + base_number, + base_prefix, + base_neg_zero_regex, + base_neg_zero_digit, + //used for processing arguments: + next_arg, + seq_arg_num = 1, + pos_arg_num = 0, + //used for keeping track of flags: + flags, + FNONE = 0, + FSHARP = 1, + FMINUS = 2, + FPLUS = 4, + FZERO = 8, + FSPACE = 16, + FWIDTH = 32, + FPREC = 64, + FPREC0 = 128; - klass.$allocate = replace.$allocate; - klass.$new = replace.$new; - ; - }, TMP_String_inherited_1.$$arity = 1) - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - function $Wrapper(){}; - var self = $Wrapper = $klass($base, $super, 'Wrapper', $Wrapper); + function CHECK_FOR_FLAGS() { + if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), "flag after width") } + if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), "flag after precision") } + } - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Wrapper_allocate_2, TMP_Wrapper_new_3, TMP_Wrapper_$$_4, TMP_Wrapper_initialize_5, TMP_Wrapper_method_missing_6, TMP_Wrapper_initialize_copy_7, TMP_Wrapper_respond_to$q_8, TMP_Wrapper_$eq$eq_9, TMP_Wrapper_to_s_10, TMP_Wrapper_inspect_11, TMP_Wrapper_$_12, TMP_Wrapper_$_13, TMP_Wrapper_split_15, TMP_Wrapper_replace_16, TMP_Wrapper_each_line_17, TMP_Wrapper_lines_19, TMP_Wrapper_$_20, TMP_Wrapper_instance_variables_21; + function CHECK_FOR_WIDTH() { + if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), "width given twice") } + if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), "width after precision") } + } - def.literal = nil; - - def.$$is_string = true; - Opal.defs(self, '$allocate', TMP_Wrapper_allocate_2 = function $$allocate(string) { - var self = this, $iter = TMP_Wrapper_allocate_2.$$p, $yield = $iter || nil, obj = nil; + function GET_NTH_ARG(num) { + if (num >= args.length) { self.$raise($$($nesting, 'ArgumentError'), "too few arguments") } + return args[num]; + } - if (string == null) { - string = ""; + function GET_NEXT_ARG() { + switch (pos_arg_num) { + case -1: self.$raise($$($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with numbered") + case -2: self.$raise($$($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with named") + } + pos_arg_num = seq_arg_num++; + return GET_NTH_ARG(pos_arg_num - 1); } - if ($iter) TMP_Wrapper_allocate_2.$$p = null; - - obj = $send(self, Opal.find_super_dispatcher(self, 'allocate', TMP_Wrapper_allocate_2, false, $Wrapper), [], null); - obj.literal = string; - return obj; - }, TMP_Wrapper_allocate_2.$$arity = -1); - Opal.defs(self, '$new', TMP_Wrapper_new_3 = function($a_rest) { - var self = this, args, $iter = TMP_Wrapper_new_3.$$p, block = $iter || nil, obj = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; + function GET_POS_ARG(num) { + if (pos_arg_num > 0) { + self.$raise($$($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after unnumbered(" + (pos_arg_num) + ")") + } + if (pos_arg_num === -2) { + self.$raise($$($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after named") + } + if (num < 1) { + self.$raise($$($nesting, 'ArgumentError'), "" + "invalid index - " + (num) + "$") + } + pos_arg_num = -1; + return GET_NTH_ARG(num - 1); } - if ($iter) TMP_Wrapper_new_3.$$p = null; - - obj = self.$allocate(); - $send(obj, 'initialize', Opal.to_a(args), block.$to_proc()); - return obj; - }, TMP_Wrapper_new_3.$$arity = -1); - Opal.defs(self, '$[]', TMP_Wrapper_$$_4 = function($a_rest) { - var self = this, objects; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - objects = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - objects[$arg_idx - 0] = arguments[$arg_idx]; + function GET_ARG() { + return (next_arg === undefined ? GET_NEXT_ARG() : next_arg); } - return self.$allocate(objects) - }, TMP_Wrapper_$$_4.$$arity = -1); - - Opal.defn(self, '$initialize', TMP_Wrapper_initialize_5 = function $$initialize(string) { - var self = this; - if (string == null) { - string = ""; + function READ_NUM(label) { + var num, str = ''; + for (;; i++) { + if (i === len) { + self.$raise($$($nesting, 'ArgumentError'), "malformed format string - %*[0-9]") + } + if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) { + i--; + num = parseInt(str, 10) || 0; + if (num > 2147483647) { + self.$raise($$($nesting, 'ArgumentError'), "" + (label) + " too big") + } + return num; + } + str += format_string.charAt(i); + } } - return (self.literal = string) - }, TMP_Wrapper_initialize_5.$$arity = -1); - - Opal.defn(self, '$method_missing', TMP_Wrapper_method_missing_6 = function $$method_missing($a_rest) { - var self = this, args, $iter = TMP_Wrapper_method_missing_6.$$p, block = $iter || nil, result = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; + function READ_NUM_AFTER_ASTER(label) { + var arg, num = READ_NUM(label); + if (format_string.charAt(i + 1) === '$') { + i++; + arg = GET_POS_ARG(num); + } else { + arg = GET_NEXT_ARG(); + } + return (arg).$to_int(); } - if ($iter) TMP_Wrapper_method_missing_6.$$p = null; - - result = $send(self.literal, '__send__', Opal.to_a(args), block.$to_proc()); - if ($truthy(result.$$is_string != null)) { - if ($truthy(result == self.literal)) { - return self - } else { - return self.$class().$allocate(result) + + for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) { + str = undefined; + + flags = FNONE; + width = -1; + precision = -1; + next_arg = undefined; + + end_slice = i; + + i++; + + switch (format_string.charAt(i)) { + case '%': + begin_slice = i; + case '': + case '\n': + case '\0': + i++; + continue; } - } else { - return result - }; - }, TMP_Wrapper_method_missing_6.$$arity = -1); - - Opal.defn(self, '$initialize_copy', TMP_Wrapper_initialize_copy_7 = function $$initialize_copy(other) { - var self = this; - return (self.literal = (other.literal).$clone()) - }, TMP_Wrapper_initialize_copy_7.$$arity = 1); - - Opal.defn(self, '$respond_to?', TMP_Wrapper_respond_to$q_8 = function(name, $a_rest) { - var $b, self = this, $iter = TMP_Wrapper_respond_to$q_8.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + format_sequence: for (; i < len; i++) { + switch (format_string.charAt(i)) { - if ($iter) TMP_Wrapper_respond_to$q_8.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return ($truthy($b = $send(self, Opal.find_super_dispatcher(self, 'respond_to?', TMP_Wrapper_respond_to$q_8, false), $zuper, $iter)) ? $b : self.literal['$respond_to?'](name)) - }, TMP_Wrapper_respond_to$q_8.$$arity = -2); - - Opal.defn(self, '$==', TMP_Wrapper_$eq$eq_9 = function(other) { - var self = this; + case ' ': + CHECK_FOR_FLAGS(); + flags |= FSPACE; + continue format_sequence; + + case '#': + CHECK_FOR_FLAGS(); + flags |= FSHARP; + continue format_sequence; + + case '+': + CHECK_FOR_FLAGS(); + flags |= FPLUS; + continue format_sequence; + + case '-': + CHECK_FOR_FLAGS(); + flags |= FMINUS; + continue format_sequence; + + case '0': + CHECK_FOR_FLAGS(); + flags |= FZERO; + continue format_sequence; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + tmp_num = READ_NUM('width'); + if (format_string.charAt(i + 1) === '$') { + if (i + 2 === len) { + str = '%'; + i++; + break format_sequence; + } + if (next_arg !== undefined) { + self.$raise($$($nesting, 'ArgumentError'), "" + "value given twice - %" + (tmp_num) + "$") + } + next_arg = GET_POS_ARG(tmp_num); + i++; + } else { + CHECK_FOR_WIDTH(); + flags |= FWIDTH; + width = tmp_num; + } + continue format_sequence; + + case '<': + case '\{': + closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\}'); + hash_parameter_key = ''; + + i++; + + for (;; i++) { + if (i === len) { + self.$raise($$($nesting, 'ArgumentError'), "malformed name - unmatched parenthesis") + } + if (format_string.charAt(i) === closing_brace_char) { + + if (pos_arg_num > 0) { + self.$raise($$($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after unnumbered(" + (pos_arg_num) + ")") + } + if (pos_arg_num === -1) { + self.$raise($$($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after numbered") + } + pos_arg_num = -2; + + if (args[0] === undefined || !args[0].$$is_hash) { + self.$raise($$($nesting, 'ArgumentError'), "one hash required") + } + + next_arg = (args[0]).$fetch(hash_parameter_key); + + if (closing_brace_char === '>') { + continue format_sequence; + } else { + str = next_arg.toString(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; + } + } + hash_parameter_key += format_string.charAt(i); + } + + case '*': + i++; + CHECK_FOR_WIDTH(); + flags |= FWIDTH; + width = READ_NUM_AFTER_ASTER('width'); + if (width < 0) { + flags |= FMINUS; + width = -width; + } + continue format_sequence; + + case '.': + if (flags&FPREC0) { + self.$raise($$($nesting, 'ArgumentError'), "precision given twice") + } + flags |= FPREC|FPREC0; + precision = 0; + i++; + if (format_string.charAt(i) === '*') { + i++; + precision = READ_NUM_AFTER_ASTER('precision'); + if (precision < 0) { + flags &= ~FPREC; + } + continue format_sequence; + } + precision = READ_NUM('precision'); + continue format_sequence; + + case 'd': + case 'i': + case 'u': + arg = self.$Integer(GET_ARG()); + if (arg >= 0) { + str = arg.toString(); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + str = (-arg).toString(); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 1) { str = '0' + str; } + str = '-' + str; + } else { + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } + break format_sequence; - return self.literal['$=='](other) - }, TMP_Wrapper_$eq$eq_9.$$arity = 1); - Opal.alias(self, "eql?", "=="); - Opal.alias(self, "===", "=="); - - Opal.defn(self, '$to_s', TMP_Wrapper_to_s_10 = function $$to_s() { - var self = this; + case 'b': + case 'B': + case 'o': + case 'x': + case 'X': + switch (format_string.charAt(i)) { + case 'b': + case 'B': + base_number = 2; + base_prefix = '0b'; + base_neg_zero_regex = /^1+/; + base_neg_zero_digit = '1'; + break; + case 'o': + base_number = 8; + base_prefix = '0'; + base_neg_zero_regex = /^3?7+/; + base_neg_zero_digit = '7'; + break; + case 'x': + case 'X': + base_number = 16; + base_prefix = '0x'; + base_neg_zero_regex = /^f+/; + base_neg_zero_digit = 'f'; + break; + } + arg = self.$Integer(GET_ARG()); + if (arg >= 0) { + str = arg.toString(base_number); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; } + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + if (flags&FPLUS || flags&FSPACE) { + str = (-arg).toString(base_number); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; } + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + } else { + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } else { + str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit); + while (str.length < precision - 2) { str = base_neg_zero_digit + str; } + if (flags&FMINUS) { + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; } + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + } else { + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } + } + if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) { + str = str.toUpperCase(); + } + break format_sequence; - return self.literal.$to_s() - }, TMP_Wrapper_to_s_10.$$arity = 0); - Opal.alias(self, "to_str", "to_s"); - - Opal.defn(self, '$inspect', TMP_Wrapper_inspect_11 = function $$inspect() { - var self = this; + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + arg = self.$Float(GET_ARG()); + if (arg >= 0 || isNaN(arg)) { + if (arg === Infinity) { + str = 'Inf'; + } else { + switch (format_string.charAt(i)) { + case 'f': + str = arg.toFixed(precision === -1 ? 6 : precision); + break; + case 'e': + case 'E': + str = arg.toExponential(precision === -1 ? 6 : precision); + break; + case 'g': + case 'G': + str = arg.toExponential(); + exponent = parseInt(str.split('e')[1], 10); + if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { + str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); + } + break; + } + } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && arg !== Infinity && !isNaN(arg)) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + if (arg === -Infinity) { + str = 'Inf'; + } else { + switch (format_string.charAt(i)) { + case 'f': + str = (-arg).toFixed(precision === -1 ? 6 : precision); + break; + case 'e': + case 'E': + str = (-arg).toExponential(precision === -1 ? 6 : precision); + break; + case 'g': + case 'G': + str = (-arg).toExponential(); + exponent = parseInt(str.split('e')[1], 10); + if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { + str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); + } + break; + } + } + if (flags&FMINUS) { + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && arg !== -Infinity) { + while (str.length < width - 1) { str = '0' + str; } + str = '-' + str; + } else { + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } + if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) { + str = str.toUpperCase(); + } + str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2'); + break format_sequence; - return self.literal.$inspect() - }, TMP_Wrapper_inspect_11.$$arity = 0); - - Opal.defn(self, '$+', TMP_Wrapper_$_12 = function(other) { - var self = this; + case 'a': + case 'A': + // Not implemented because there are no specs for this field type. + self.$raise($$($nesting, 'NotImplementedError'), "`A` and `a` format field types are not implemented in Opal yet") - return $rb_plus(self.literal, other) - }, TMP_Wrapper_$_12.$$arity = 1); - - Opal.defn(self, '$*', TMP_Wrapper_$_13 = function(other) { - var self = this; + case 'c': + arg = GET_ARG(); + if ((arg)['$respond_to?']("to_ary")) { arg = (arg).$to_ary()[0]; } + if ((arg)['$respond_to?']("to_str")) { + str = (arg).$to_str(); + } else { + str = String.fromCharCode($$($nesting, 'Opal').$coerce_to(arg, $$($nesting, 'Integer'), "to_int")); + } + if (str.length !== 1) { + self.$raise($$($nesting, 'ArgumentError'), "%c requires a character") + } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; - - var result = $rb_times(self.literal, other); + case 'p': + str = (GET_ARG()).$inspect(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; - if (result.$$is_string) { - return self.$class().$allocate(result) - } - else { - return result; - } - - }, TMP_Wrapper_$_13.$$arity = 1); - - Opal.defn(self, '$split', TMP_Wrapper_split_15 = function $$split(pattern, limit) { - var TMP_14, self = this; + case 's': + str = (GET_ARG()).$to_s(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; - return $send(self.literal.$split(pattern, limit), 'map', [], (TMP_14 = function(str){var self = TMP_14.$$s || this; -if (str == null) str = nil; - return self.$class().$allocate(str)}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)) - }, TMP_Wrapper_split_15.$$arity = -1); - - Opal.defn(self, '$replace', TMP_Wrapper_replace_16 = function $$replace(string) { - var self = this; + default: + self.$raise($$($nesting, 'ArgumentError'), "" + "malformed format string - %" + (format_string.charAt(i))) + } + } - return (self.literal = string) - }, TMP_Wrapper_replace_16.$$arity = 1); - - Opal.defn(self, '$each_line', TMP_Wrapper_each_line_17 = function $$each_line(separator) { - var TMP_18, self = this, $iter = TMP_Wrapper_each_line_17.$$p, $yield = $iter || nil; - if ($gvars["/"] == null) $gvars["/"] = nil; + if (str === undefined) { + self.$raise($$($nesting, 'ArgumentError'), "malformed format string - %") + } - if (separator == null) { - separator = $gvars["/"]; + result += format_string.slice(begin_slice, end_slice) + str; + begin_slice = i + 1; } - if ($iter) TMP_Wrapper_each_line_17.$$p = null; - - if (($yield !== nil)) { - } else { - return self.$enum_for("each_line", separator) - }; - return $send(self.literal, 'each_line', [separator], (TMP_18 = function(str){var self = TMP_18.$$s || this; -if (str == null) str = nil; - return Opal.yield1($yield, self.$class().$allocate(str));}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18)); - }, TMP_Wrapper_each_line_17.$$arity = -1); - - Opal.defn(self, '$lines', TMP_Wrapper_lines_19 = function $$lines(separator) { - var self = this, $iter = TMP_Wrapper_lines_19.$$p, block = $iter || nil, e = nil; - if ($gvars["/"] == null) $gvars["/"] = nil; - if (separator == null) { - separator = $gvars["/"]; + if ($gvars.DEBUG && pos_arg_num >= 0 && seq_arg_num < args.length) { + self.$raise($$($nesting, 'ArgumentError'), "too many arguments for format string") } - if ($iter) TMP_Wrapper_lines_19.$$p = null; - - e = $send(self, 'each_line', [separator], block.$to_proc()); - if ($truthy(block)) { - return self - } else { - return e.$to_a() - }; - }, TMP_Wrapper_lines_19.$$arity = -1); - - Opal.defn(self, '$%', TMP_Wrapper_$_20 = function(data) { - var self = this; - - return self.literal['$%'](data) - }, TMP_Wrapper_$_20.$$arity = 1); - return (Opal.defn(self, '$instance_variables', TMP_Wrapper_instance_variables_21 = function $$instance_variables() { - var self = this, $iter = TMP_Wrapper_instance_variables_21.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Wrapper_instance_variables_21.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return $rb_minus($send(self, Opal.find_super_dispatcher(self, 'instance_variables', TMP_Wrapper_instance_variables_21, false), $zuper, $iter), ["@literal"]) - }, TMP_Wrapper_instance_variables_21.$$arity = 0), nil) && 'instance_variables'; - })(Opal.const_get_relative($nesting, 'String'), null, $nesting); + return result + format_string.slice(begin_slice); + ; + }, $Kernel_format$1.$$arity = -2); + Opal.alias(self, "sprintf", "format"); + })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/string/encoding"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var TMP_12, TMP_15, TMP_18, TMP_21, TMP_24, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; + var $$12, $$15, $$18, $$21, $$24, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$+', '$[]', '$new', '$to_proc', '$each', '$const_set', '$sub', '$==', '$default_external', '$upcase', '$raise', '$attr_accessor', '$attr_reader', '$register', '$length', '$bytes', '$to_a', '$each_byte', '$bytesize', '$enum_for', '$force_encoding', '$dup', '$coerce_to!', '$find', '$getbyte']); + Opal.add_stubs(['$require', '$+', '$[]', '$new', '$to_proc', '$each', '$const_set', '$sub', '$==', '$default_external', '$upcase', '$raise', '$attr_accessor', '$attr_reader', '$register', '$length', '$bytes', '$to_a', '$each_byte', '$bytesize', '$enum_for', '$each_codepoint', '$force_encoding', '$dup', '$coerce_to!', '$find', '$getbyte']); self.$require("corelib/string"); (function($base, $super, $parent_nesting) { - function $Encoding(){}; - var self = $Encoding = $klass($base, $super, 'Encoding', $Encoding); + var self = $klass($base, $super, 'Encoding'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Encoding_register_1, TMP_Encoding_find_3, TMP_Encoding_initialize_4, TMP_Encoding_ascii_compatible$q_5, TMP_Encoding_dummy$q_6, TMP_Encoding_to_s_7, TMP_Encoding_inspect_8, TMP_Encoding_each_byte_9, TMP_Encoding_getbyte_10, TMP_Encoding_bytesize_11; + var $nesting = [self].concat($parent_nesting), $Encoding_register$1, $Encoding_find$3, $Encoding_initialize$4, $Encoding_ascii_compatible$ques$5, $Encoding_dummy$ques$6, $Encoding_to_s$7, $Encoding_inspect$8, $Encoding_each_byte$9, $Encoding_getbyte$10, $Encoding_bytesize$11; - def.ascii = def.dummy = def.name = nil; + self.$$prototype.ascii = self.$$prototype.dummy = self.$$prototype.name = nil; - self["$$register"] = {}; - Opal.defs(self, '$register', TMP_Encoding_register_1 = function $$register(name, options) { - var $a, TMP_2, self = this, $iter = TMP_Encoding_register_1.$$p, block = $iter || nil, names = nil, encoding = nil, register = nil; + Opal.defineProperty(self, '$$register', {}); + Opal.defs(self, '$register', $Encoding_register$1 = function $$register(name, options) { + var $iter = $Encoding_register$1.$$p, block = $iter || nil, $a, $$2, self = this, names = nil, encoding = nil, register = nil; + if ($iter) $Encoding_register$1.$$p = null; + + + if ($iter) $Encoding_register$1.$$p = null;; + if (options == null) { options = $hash2([], {}); - } - if ($iter) TMP_Encoding_register_1.$$p = null; - + }; names = $rb_plus([name], ($truthy($a = options['$[]']("aliases")) ? $a : [])); - encoding = $send(Opal.const_get_relative($nesting, 'Class'), 'new', [self], block.$to_proc()).$new(name, names, ($truthy($a = options['$[]']("ascii")) ? $a : false), ($truthy($a = options['$[]']("dummy")) ? $a : false)); + encoding = $send($$($nesting, 'Class'), 'new', [self], block.$to_proc()).$new(name, names, ($truthy($a = options['$[]']("ascii")) ? $a : false), ($truthy($a = options['$[]']("dummy")) ? $a : false)); register = self["$$register"]; - return $send(names, 'each', [], (TMP_2 = function(name){var self = TMP_2.$$s || this; -if (name == null) name = nil; + return $send(names, 'each', [], ($$2 = function(encoding_name){var self = $$2.$$s || this; + - self.$const_set(name.$sub("-", "_"), encoding); - return register["" + "$$" + (name)] = encoding;}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - }, TMP_Encoding_register_1.$$arity = -2); - Opal.defs(self, '$find', TMP_Encoding_find_3 = function $$find(name) { + + if (encoding_name == null) { + encoding_name = nil; + }; + self.$const_set(encoding_name.$sub("-", "_"), encoding); + return register["" + "$$" + (encoding_name)] = encoding;}, $$2.$$s = self, $$2.$$arity = 1, $$2)); + }, $Encoding_register$1.$$arity = -2); + Opal.defs(self, '$find', $Encoding_find$3 = function $$find(name) { var $a, self = this, register = nil, encoding = nil; @@ -17594,19 +18626,19 @@ if (name == null) name = nil; register = self["$$register"]; encoding = ($truthy($a = register["" + "$$" + (name)]) ? $a : register["" + "$$" + (name.$upcase())]); if ($truthy(encoding)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "unknown encoding name - " + (name)) + } else { + self.$raise($$($nesting, 'ArgumentError'), "" + "unknown encoding name - " + (name)) }; return encoding; - }, TMP_Encoding_find_3.$$arity = 1); + }, $Encoding_find$3.$$arity = 1); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("default_external") })(Opal.get_singleton_class(self), $nesting); self.$attr_reader("name", "names"); - Opal.defn(self, '$initialize', TMP_Encoding_initialize_4 = function $$initialize(name, names, ascii, dummy) { + Opal.def(self, '$initialize', $Encoding_initialize$4 = function $$initialize(name, names, ascii, dummy) { var self = this; @@ -17614,78 +18646,91 @@ if (name == null) name = nil; self.names = names; self.ascii = ascii; return (self.dummy = dummy); - }, TMP_Encoding_initialize_4.$$arity = 4); + }, $Encoding_initialize$4.$$arity = 4); - Opal.defn(self, '$ascii_compatible?', TMP_Encoding_ascii_compatible$q_5 = function() { + Opal.def(self, '$ascii_compatible?', $Encoding_ascii_compatible$ques$5 = function() { var self = this; return self.ascii - }, TMP_Encoding_ascii_compatible$q_5.$$arity = 0); + }, $Encoding_ascii_compatible$ques$5.$$arity = 0); - Opal.defn(self, '$dummy?', TMP_Encoding_dummy$q_6 = function() { + Opal.def(self, '$dummy?', $Encoding_dummy$ques$6 = function() { var self = this; return self.dummy - }, TMP_Encoding_dummy$q_6.$$arity = 0); + }, $Encoding_dummy$ques$6.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Encoding_to_s_7 = function $$to_s() { + Opal.def(self, '$to_s', $Encoding_to_s$7 = function $$to_s() { var self = this; return self.name - }, TMP_Encoding_to_s_7.$$arity = 0); + }, $Encoding_to_s$7.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Encoding_inspect_8 = function $$inspect() { + Opal.def(self, '$inspect', $Encoding_inspect$8 = function $$inspect() { var self = this; return "" + "#" - }, TMP_Encoding_inspect_8.$$arity = 0); + }, $Encoding_inspect$8.$$arity = 0); - Opal.defn(self, '$each_byte', TMP_Encoding_each_byte_9 = function $$each_byte($a_rest) { - var self = this; + Opal.def(self, '$each_byte', $Encoding_each_byte$9 = function $$each_byte($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Encoding_each_byte_9.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Encoding_each_byte$9.$$arity = -1); - Opal.defn(self, '$getbyte', TMP_Encoding_getbyte_10 = function $$getbyte($a_rest) { - var self = this; + Opal.def(self, '$getbyte', $Encoding_getbyte$10 = function $$getbyte($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Encoding_getbyte_10.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Encoding_getbyte$10.$$arity = -1); - Opal.defn(self, '$bytesize', TMP_Encoding_bytesize_11 = function $$bytesize($a_rest) { - var self = this; + Opal.def(self, '$bytesize', $Encoding_bytesize$11 = function $$bytesize($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Encoding_bytesize_11.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Encoding_bytesize$11.$$arity = -1); (function($base, $super, $parent_nesting) { - function $EncodingError(){}; - var self = $EncodingError = $klass($base, $super, 'EncodingError', $EncodingError); + var self = $klass($base, $super, 'EncodingError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting); + })($nesting[0], $$($nesting, 'StandardError'), $nesting); return (function($base, $super, $parent_nesting) { - function $CompatibilityError(){}; - var self = $CompatibilityError = $klass($base, $super, 'CompatibilityError', $CompatibilityError); + var self = $klass($base, $super, 'CompatibilityError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'EncodingError'), $nesting); + })($nesting[0], $$($nesting, 'EncodingError'), $nesting); })($nesting[0], null, $nesting); - $send(Opal.const_get_relative($nesting, 'Encoding'), 'register', ["UTF-8", $hash2(["aliases", "ascii"], {"aliases": ["CP65001"], "ascii": true})], (TMP_12 = function(){var self = TMP_12.$$s || this, TMP_each_byte_13, TMP_bytesize_14; + $send($$($nesting, 'Encoding'), 'register', ["UTF-8", $hash2(["aliases", "ascii"], {"aliases": ["CP65001"], "ascii": true})], ($$12 = function(){var self = $$12.$$s || this, $each_byte$13, $bytesize$14; - Opal.def(self, '$each_byte', TMP_each_byte_13 = function $$each_byte(string) { - var self = this, $iter = TMP_each_byte_13.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $each_byte$13 = function $$each_byte(string) { + var $iter = $each_byte$13.$$p, block = $iter || nil, self = this; - if ($iter) TMP_each_byte_13.$$p = null; + if ($iter) $each_byte$13.$$p = null; + + + if ($iter) $each_byte$13.$$p = null;; for (var i = 0, length = string.length; i < length; i++) { var code = string.charCodeAt(i); @@ -17701,21 +18746,24 @@ if (name == null) name = nil; } } } - - }, TMP_each_byte_13.$$arity = 1); - return (Opal.def(self, '$bytesize', TMP_bytesize_14 = function $$bytesize(string) { + ; + }, $each_byte$13.$$arity = 1); + return (Opal.def(self, '$bytesize', $bytesize$14 = function $$bytesize(string) { var self = this; return string.$bytes().$length() - }, TMP_bytesize_14.$$arity = 1), nil) && 'bytesize';}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12)); - $send(Opal.const_get_relative($nesting, 'Encoding'), 'register', ["UTF-16LE"], (TMP_15 = function(){var self = TMP_15.$$s || this, TMP_each_byte_16, TMP_bytesize_17; + }, $bytesize$14.$$arity = 1), nil) && 'bytesize';}, $$12.$$s = self, $$12.$$arity = 0, $$12)); + $send($$($nesting, 'Encoding'), 'register', ["UTF-16LE"], ($$15 = function(){var self = $$15.$$s || this, $each_byte$16, $bytesize$17; - Opal.def(self, '$each_byte', TMP_each_byte_16 = function $$each_byte(string) { - var self = this, $iter = TMP_each_byte_16.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $each_byte$16 = function $$each_byte(string) { + var $iter = $each_byte$16.$$p, block = $iter || nil, self = this; - if ($iter) TMP_each_byte_16.$$p = null; + if ($iter) $each_byte$16.$$p = null; + + + if ($iter) $each_byte$16.$$p = null;; for (var i = 0, length = string.length; i < length; i++) { var code = string.charCodeAt(i); @@ -17723,21 +18771,24 @@ if (name == null) name = nil; Opal.yield1(block, code & 0xff); Opal.yield1(block, code >> 8); } - - }, TMP_each_byte_16.$$arity = 1); - return (Opal.def(self, '$bytesize', TMP_bytesize_17 = function $$bytesize(string) { + ; + }, $each_byte$16.$$arity = 1); + return (Opal.def(self, '$bytesize', $bytesize$17 = function $$bytesize(string) { var self = this; return string.$bytes().$length() - }, TMP_bytesize_17.$$arity = 1), nil) && 'bytesize';}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15)); - $send(Opal.const_get_relative($nesting, 'Encoding'), 'register', ["UTF-16BE"], (TMP_18 = function(){var self = TMP_18.$$s || this, TMP_each_byte_19, TMP_bytesize_20; + }, $bytesize$17.$$arity = 1), nil) && 'bytesize';}, $$15.$$s = self, $$15.$$arity = 0, $$15)); + $send($$($nesting, 'Encoding'), 'register', ["UTF-16BE"], ($$18 = function(){var self = $$18.$$s || this, $each_byte$19, $bytesize$20; - Opal.def(self, '$each_byte', TMP_each_byte_19 = function $$each_byte(string) { - var self = this, $iter = TMP_each_byte_19.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $each_byte$19 = function $$each_byte(string) { + var $iter = $each_byte$19.$$p, block = $iter || nil, self = this; - if ($iter) TMP_each_byte_19.$$p = null; + if ($iter) $each_byte$19.$$p = null; + + + if ($iter) $each_byte$19.$$p = null;; for (var i = 0, length = string.length; i < length; i++) { var code = string.charCodeAt(i); @@ -17745,21 +18796,24 @@ if (name == null) name = nil; Opal.yield1(block, code >> 8); Opal.yield1(block, code & 0xff); } - - }, TMP_each_byte_19.$$arity = 1); - return (Opal.def(self, '$bytesize', TMP_bytesize_20 = function $$bytesize(string) { + ; + }, $each_byte$19.$$arity = 1); + return (Opal.def(self, '$bytesize', $bytesize$20 = function $$bytesize(string) { var self = this; return string.$bytes().$length() - }, TMP_bytesize_20.$$arity = 1), nil) && 'bytesize';}, TMP_18.$$s = self, TMP_18.$$arity = 0, TMP_18)); - $send(Opal.const_get_relative($nesting, 'Encoding'), 'register', ["UTF-32LE"], (TMP_21 = function(){var self = TMP_21.$$s || this, TMP_each_byte_22, TMP_bytesize_23; + }, $bytesize$20.$$arity = 1), nil) && 'bytesize';}, $$18.$$s = self, $$18.$$arity = 0, $$18)); + $send($$($nesting, 'Encoding'), 'register', ["UTF-32LE"], ($$21 = function(){var self = $$21.$$s || this, $each_byte$22, $bytesize$23; - Opal.def(self, '$each_byte', TMP_each_byte_22 = function $$each_byte(string) { - var self = this, $iter = TMP_each_byte_22.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $each_byte$22 = function $$each_byte(string) { + var $iter = $each_byte$22.$$p, block = $iter || nil, self = this; - if ($iter) TMP_each_byte_22.$$p = null; + if ($iter) $each_byte$22.$$p = null; + + + if ($iter) $each_byte$22.$$p = null;; for (var i = 0, length = string.length; i < length; i++) { var code = string.charCodeAt(i); @@ -17767,111 +18821,141 @@ if (name == null) name = nil; Opal.yield1(block, code & 0xff); Opal.yield1(block, code >> 8); } - - }, TMP_each_byte_22.$$arity = 1); - return (Opal.def(self, '$bytesize', TMP_bytesize_23 = function $$bytesize(string) { + ; + }, $each_byte$22.$$arity = 1); + return (Opal.def(self, '$bytesize', $bytesize$23 = function $$bytesize(string) { var self = this; return string.$bytes().$length() - }, TMP_bytesize_23.$$arity = 1), nil) && 'bytesize';}, TMP_21.$$s = self, TMP_21.$$arity = 0, TMP_21)); - $send(Opal.const_get_relative($nesting, 'Encoding'), 'register', ["ASCII-8BIT", $hash2(["aliases", "ascii", "dummy"], {"aliases": ["BINARY", "US-ASCII", "ASCII"], "ascii": true, "dummy": true})], (TMP_24 = function(){var self = TMP_24.$$s || this, TMP_each_byte_25, TMP_bytesize_26; + }, $bytesize$23.$$arity = 1), nil) && 'bytesize';}, $$21.$$s = self, $$21.$$arity = 0, $$21)); + $send($$($nesting, 'Encoding'), 'register', ["ASCII-8BIT", $hash2(["aliases", "ascii", "dummy"], {"aliases": ["BINARY", "US-ASCII", "ASCII"], "ascii": true, "dummy": true})], ($$24 = function(){var self = $$24.$$s || this, $each_byte$25, $bytesize$26; - Opal.def(self, '$each_byte', TMP_each_byte_25 = function $$each_byte(string) { - var self = this, $iter = TMP_each_byte_25.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $each_byte$25 = function $$each_byte(string) { + var $iter = $each_byte$25.$$p, block = $iter || nil, self = this; - if ($iter) TMP_each_byte_25.$$p = null; + if ($iter) $each_byte$25.$$p = null; + + + if ($iter) $each_byte$25.$$p = null;; for (var i = 0, length = string.length; i < length; i++) { var code = string.charCodeAt(i); Opal.yield1(block, code & 0xff); Opal.yield1(block, code >> 8); } - - }, TMP_each_byte_25.$$arity = 1); - return (Opal.def(self, '$bytesize', TMP_bytesize_26 = function $$bytesize(string) { + ; + }, $each_byte$25.$$arity = 1); + return (Opal.def(self, '$bytesize', $bytesize$26 = function $$bytesize(string) { var self = this; return string.$bytes().$length() - }, TMP_bytesize_26.$$arity = 1), nil) && 'bytesize';}, TMP_24.$$s = self, TMP_24.$$arity = 0, TMP_24)); + }, $bytesize$26.$$arity = 1), nil) && 'bytesize';}, $$24.$$s = self, $$24.$$arity = 0, $$24)); return (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); + var self = $klass($base, $super, 'String'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_bytes_27, TMP_String_bytesize_28, TMP_String_each_byte_29, TMP_String_encode_30, TMP_String_encoding_31, TMP_String_force_encoding_32, TMP_String_getbyte_33, TMP_String_valid_encoding$q_34; + var $nesting = [self].concat($parent_nesting), $String_bytes$27, $String_bytesize$28, $String_each_byte$29, $String_each_codepoint$30, $String_codepoints$31, $String_encode$32, $String_force_encoding$33, $String_getbyte$34, $String_valid_encoding$ques$35; - def.encoding = nil; + self.$$prototype.encoding = nil; - String.prototype.encoding = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_16LE'); + self.$attr_reader("encoding"); + Opal.defineProperty(String.prototype, 'encoding', $$$($$($nesting, 'Encoding'), 'UTF_16LE')); - Opal.defn(self, '$bytes', TMP_String_bytes_27 = function $$bytes() { + Opal.def(self, '$bytes', $String_bytes$27 = function $$bytes() { var self = this; return self.$each_byte().$to_a() - }, TMP_String_bytes_27.$$arity = 0); + }, $String_bytes$27.$$arity = 0); - Opal.defn(self, '$bytesize', TMP_String_bytesize_28 = function $$bytesize() { + Opal.def(self, '$bytesize', $String_bytesize$28 = function $$bytesize() { var self = this; return self.encoding.$bytesize(self) - }, TMP_String_bytesize_28.$$arity = 0); + }, $String_bytesize$28.$$arity = 0); - Opal.defn(self, '$each_byte', TMP_String_each_byte_29 = function $$each_byte() { - var self = this, $iter = TMP_String_each_byte_29.$$p, block = $iter || nil; + Opal.def(self, '$each_byte', $String_each_byte$29 = function $$each_byte() { + var $iter = $String_each_byte$29.$$p, block = $iter || nil, self = this; - if ($iter) TMP_String_each_byte_29.$$p = null; + if ($iter) $String_each_byte$29.$$p = null; + + if ($iter) $String_each_byte$29.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("each_byte") }; $send(self.encoding, 'each_byte', [self], block.$to_proc()); return self; - }, TMP_String_each_byte_29.$$arity = 0); + }, $String_each_byte$29.$$arity = 0); - Opal.defn(self, '$encode', TMP_String_encode_30 = function $$encode(encoding) { - var self = this; + Opal.def(self, '$each_codepoint', $String_each_codepoint$30 = function $$each_codepoint() { + var $iter = $String_each_codepoint$30.$$p, block = $iter || nil, self = this; - return self.$dup().$force_encoding(encoding) - }, TMP_String_encode_30.$$arity = 1); + if ($iter) $String_each_codepoint$30.$$p = null; + + + if ($iter) $String_each_codepoint$30.$$p = null;; + if ((block !== nil)) { + } else { + return self.$enum_for("each_codepoint") + }; + + for (var i = 0, length = self.length; i < length; i++) { + Opal.yield1(block, self.codePointAt(i)); + } + ; + return self; + }, $String_each_codepoint$30.$$arity = 0); + + Opal.def(self, '$codepoints', $String_codepoints$31 = function $$codepoints() { + var $iter = $String_codepoints$31.$$p, block = $iter || nil, self = this; + + if ($iter) $String_codepoints$31.$$p = null; + + + if ($iter) $String_codepoints$31.$$p = null;; + if ((block !== nil)) { + return $send(self, 'each_codepoint', [], block.$to_proc())}; + return self.$each_codepoint().$to_a(); + }, $String_codepoints$31.$$arity = 0); - Opal.defn(self, '$encoding', TMP_String_encoding_31 = function $$encoding() { + Opal.def(self, '$encode', $String_encode$32 = function $$encode(encoding) { var self = this; - return self.encoding - }, TMP_String_encoding_31.$$arity = 0); + return self.$dup().$force_encoding(encoding) + }, $String_encode$32.$$arity = 1); - Opal.defn(self, '$force_encoding', TMP_String_force_encoding_32 = function $$force_encoding(encoding) { + Opal.def(self, '$force_encoding', $String_force_encoding$33 = function $$force_encoding(encoding) { var self = this; if (encoding === self.encoding) { return self; } - encoding = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](encoding, Opal.const_get_relative($nesting, 'String'), "to_s"); - encoding = Opal.const_get_relative($nesting, 'Encoding').$find(encoding); + encoding = $$($nesting, 'Opal')['$coerce_to!'](encoding, $$($nesting, 'String'), "to_s"); + encoding = $$($nesting, 'Encoding').$find(encoding); if (encoding === self.encoding) { return self; } self.encoding = encoding; return self; - }, TMP_String_force_encoding_32.$$arity = 1); + }, $String_force_encoding$33.$$arity = 1); - Opal.defn(self, '$getbyte', TMP_String_getbyte_33 = function $$getbyte(idx) { + Opal.def(self, '$getbyte', $String_getbyte$34 = function $$getbyte(idx) { var self = this; return self.encoding.$getbyte(self, idx) - }, TMP_String_getbyte_33.$$arity = 1); - return (Opal.defn(self, '$valid_encoding?', TMP_String_valid_encoding$q_34 = function() { + }, $String_getbyte$34.$$arity = 1); + return (Opal.def(self, '$valid_encoding?', $String_valid_encoding$ques$35 = function() { var self = this; return true - }, TMP_String_valid_encoding$q_34.$$arity = 0), nil) && 'valid_encoding?'; + }, $String_valid_encoding$ques$35.$$arity = 0), nil) && 'valid_encoding?'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/math"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -17879,27 +18963,26 @@ Opal.modules["corelib/math"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; Opal.add_stubs(['$new', '$raise', '$Float', '$type_error', '$Integer', '$module_function', '$checked', '$float!', '$===', '$gamma', '$-', '$integer!', '$/', '$infinite?']); return (function($base, $parent_nesting) { - var $Math, self = $Math = $module($base, 'Math'); + var self = $module($base, 'Math'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Math_checked_1, TMP_Math_float$B_2, TMP_Math_integer$B_3, TMP_Math_acos_4, TMP_Math_acosh_5, TMP_Math_asin_6, TMP_Math_asinh_7, TMP_Math_atan_8, TMP_Math_atan2_9, TMP_Math_atanh_10, TMP_Math_cbrt_11, TMP_Math_cos_12, TMP_Math_cosh_13, TMP_Math_erf_14, TMP_Math_erfc_15, TMP_Math_exp_16, TMP_Math_frexp_17, TMP_Math_gamma_18, TMP_Math_hypot_19, TMP_Math_ldexp_20, TMP_Math_lgamma_21, TMP_Math_log_22, TMP_Math_log10_23, TMP_Math_log2_24, TMP_Math_sin_25, TMP_Math_sinh_26, TMP_Math_sqrt_27, TMP_Math_tan_28, TMP_Math_tanh_29; + var $nesting = [self].concat($parent_nesting), $Math_checked$1, $Math_float$excl$2, $Math_integer$excl$3, $Math_acos$4, $Math_acosh$5, $Math_asin$6, $Math_asinh$7, $Math_atan$8, $Math_atan2$9, $Math_atanh$10, $Math_cbrt$11, $Math_cos$12, $Math_cosh$13, $Math_erf$14, $Math_erfc$15, $Math_exp$16, $Math_frexp$17, $Math_gamma$18, $Math_hypot$19, $Math_ldexp$20, $Math_lgamma$21, $Math_log$22, $Math_log10$23, $Math_log2$24, $Math_sin$25, $Math_sinh$26, $Math_sqrt$27, $Math_tan$28, $Math_tanh$29; Opal.const_set($nesting[0], 'E', Math.E); Opal.const_set($nesting[0], 'PI', Math.PI); - Opal.const_set($nesting[0], 'DomainError', Opal.const_get_relative($nesting, 'Class').$new(Opal.const_get_relative($nesting, 'StandardError'))); - Opal.defs(self, '$checked', TMP_Math_checked_1 = function $$checked(method, $a_rest) { - var self = this, args; + Opal.const_set($nesting[0], 'DomainError', $$($nesting, 'Class').$new($$($nesting, 'StandardError'))); + Opal.defs(self, '$checked', $Math_checked$1 = function $$checked(method, $a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; if (isNaN(args[0]) || (args.length == 2 && isNaN(args[1]))) { return NaN; @@ -17908,49 +18991,47 @@ Opal.modules["corelib/math"] = function(Opal) { var result = Math[method].apply(null, args); if (isNaN(result)) { - self.$raise(Opal.const_get_relative($nesting, 'DomainError'), "" + "Numerical argument is out of domain - \"" + (method) + "\""); + self.$raise($$($nesting, 'DomainError'), "" + "Numerical argument is out of domain - \"" + (method) + "\""); } return result; - - }, TMP_Math_checked_1.$$arity = -2); - Opal.defs(self, '$float!', TMP_Math_float$B_2 = function(value) { + ; + }, $Math_checked$1.$$arity = -2); + Opal.defs(self, '$float!', $Math_float$excl$2 = function(value) { var self = this; - try { return self.$Float(value) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'ArgumentError')])) { + if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { try { - return self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(value, Opal.const_get_relative($nesting, 'Float'))) + return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Float'))) } finally { Opal.pop_exception() } } else { throw $err; } - }; - }, TMP_Math_float$B_2.$$arity = 1); - Opal.defs(self, '$integer!', TMP_Math_integer$B_3 = function(value) { + } + }, $Math_float$excl$2.$$arity = 1); + Opal.defs(self, '$integer!', $Math_integer$excl$3 = function(value) { var self = this; - try { return self.$Integer(value) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'ArgumentError')])) { + if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { try { - return self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(value, Opal.const_get_relative($nesting, 'Integer'))) + return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Integer'))) } finally { Opal.pop_exception() } } else { throw $err; } - }; - }, TMP_Math_integer$B_3.$$arity = 1); + } + }, $Math_integer$excl$3.$$arity = 1); self.$module_function(); - Opal.defn(self, '$acos', TMP_Math_acos_4 = function $$acos(x) { + Opal.def(self, '$acos', $Math_acos$4 = function $$acos(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("acos", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_acos_4.$$arity = 1); + return $$($nesting, 'Math').$checked("acos", $$($nesting, 'Math')['$float!'](x)) + }, $Math_acos$4.$$arity = 1); if ($truthy((typeof(Math.acosh) !== "undefined"))) { - } else { + } else { Math.acosh = function(x) { return Math.log(x + Math.sqrt(x * x - 1)); @@ -17958,19 +19039,19 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$acosh', TMP_Math_acosh_5 = function $$acosh(x) { + Opal.def(self, '$acosh', $Math_acosh$5 = function $$acosh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("acosh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_acosh_5.$$arity = 1); + return $$($nesting, 'Math').$checked("acosh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_acosh$5.$$arity = 1); - Opal.defn(self, '$asin', TMP_Math_asin_6 = function $$asin(x) { + Opal.def(self, '$asin', $Math_asin$6 = function $$asin(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("asin", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_asin_6.$$arity = 1); + return $$($nesting, 'Math').$checked("asin", $$($nesting, 'Math')['$float!'](x)) + }, $Math_asin$6.$$arity = 1); if ($truthy((typeof(Math.asinh) !== "undefined"))) { - } else { + } else { Math.asinh = function(x) { return Math.log(x + Math.sqrt(x * x + 1)) @@ -17978,25 +19059,25 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$asinh', TMP_Math_asinh_7 = function $$asinh(x) { + Opal.def(self, '$asinh', $Math_asinh$7 = function $$asinh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("asinh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_asinh_7.$$arity = 1); + return $$($nesting, 'Math').$checked("asinh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_asinh$7.$$arity = 1); - Opal.defn(self, '$atan', TMP_Math_atan_8 = function $$atan(x) { + Opal.def(self, '$atan', $Math_atan$8 = function $$atan(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("atan", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_atan_8.$$arity = 1); + return $$($nesting, 'Math').$checked("atan", $$($nesting, 'Math')['$float!'](x)) + }, $Math_atan$8.$$arity = 1); - Opal.defn(self, '$atan2', TMP_Math_atan2_9 = function $$atan2(y, x) { + Opal.def(self, '$atan2', $Math_atan2$9 = function $$atan2(y, x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("atan2", Opal.const_get_relative($nesting, 'Math')['$float!'](y), Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_atan2_9.$$arity = 2); + return $$($nesting, 'Math').$checked("atan2", $$($nesting, 'Math')['$float!'](y), $$($nesting, 'Math')['$float!'](x)) + }, $Math_atan2$9.$$arity = 2); if ($truthy((typeof(Math.atanh) !== "undefined"))) { - } else { + } else { Math.atanh = function(x) { return 0.5 * Math.log((1 + x) / (1 - x)); @@ -18004,13 +19085,13 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$atanh', TMP_Math_atanh_10 = function $$atanh(x) { + Opal.def(self, '$atanh', $Math_atanh$10 = function $$atanh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("atanh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_atanh_10.$$arity = 1); + return $$($nesting, 'Math').$checked("atanh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_atanh$10.$$arity = 1); if ($truthy((typeof(Math.cbrt) !== "undefined"))) { - } else { + } else { Math.cbrt = function(x) { if (x == 0) { @@ -18056,19 +19137,19 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$cbrt', TMP_Math_cbrt_11 = function $$cbrt(x) { + Opal.def(self, '$cbrt', $Math_cbrt$11 = function $$cbrt(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("cbrt", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_cbrt_11.$$arity = 1); + return $$($nesting, 'Math').$checked("cbrt", $$($nesting, 'Math')['$float!'](x)) + }, $Math_cbrt$11.$$arity = 1); - Opal.defn(self, '$cos', TMP_Math_cos_12 = function $$cos(x) { + Opal.def(self, '$cos', $Math_cos$12 = function $$cos(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("cos", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_cos_12.$$arity = 1); + return $$($nesting, 'Math').$checked("cos", $$($nesting, 'Math')['$float!'](x)) + }, $Math_cos$12.$$arity = 1); if ($truthy((typeof(Math.cosh) !== "undefined"))) { - } else { + } else { Math.cosh = function(x) { return (Math.exp(x) + Math.exp(-x)) / 2; @@ -18076,15 +19157,15 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$cosh', TMP_Math_cosh_13 = function $$cosh(x) { + Opal.def(self, '$cosh', $Math_cosh$13 = function $$cosh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("cosh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_cosh_13.$$arity = 1); + return $$($nesting, 'Math').$checked("cosh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_cosh$13.$$arity = 1); if ($truthy((typeof(Math.erf) !== "undefined"))) { - } else { + } else { - Math.erf = function(x) { + Opal.defineProperty(Math, 'erf', function(x) { var A1 = 0.254829592, A2 = -0.284496736, A3 = 1.421413741, @@ -18104,19 +19185,19 @@ Opal.modules["corelib/math"] = function(Opal) { var y = 1.0 - (((((A5 * t + A4) * t) + A3) * t + A2) * t + A1) * t * Math.exp(-x * x); return sign * y; - } + }); }; - Opal.defn(self, '$erf', TMP_Math_erf_14 = function $$erf(x) { + Opal.def(self, '$erf', $Math_erf$14 = function $$erf(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("erf", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_erf_14.$$arity = 1); + return $$($nesting, 'Math').$checked("erf", $$($nesting, 'Math')['$float!'](x)) + }, $Math_erf$14.$$arity = 1); if ($truthy((typeof(Math.erfc) !== "undefined"))) { - } else { + } else { - Math.erfc = function(x) { + Opal.defineProperty(Math, 'erfc', function(x) { var z = Math.abs(x), t = 1.0 / (0.5 * z + 1.0); @@ -18139,27 +19220,27 @@ Opal.modules["corelib/math"] = function(Opal) { else { return a; } - } + }); }; - Opal.defn(self, '$erfc', TMP_Math_erfc_15 = function $$erfc(x) { + Opal.def(self, '$erfc', $Math_erfc$15 = function $$erfc(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("erfc", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_erfc_15.$$arity = 1); + return $$($nesting, 'Math').$checked("erfc", $$($nesting, 'Math')['$float!'](x)) + }, $Math_erfc$15.$$arity = 1); - Opal.defn(self, '$exp', TMP_Math_exp_16 = function $$exp(x) { + Opal.def(self, '$exp', $Math_exp$16 = function $$exp(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("exp", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_exp_16.$$arity = 1); + return $$($nesting, 'Math').$checked("exp", $$($nesting, 'Math')['$float!'](x)) + }, $Math_exp$16.$$arity = 1); - Opal.defn(self, '$frexp', TMP_Math_frexp_17 = function $$frexp(x) { + Opal.def(self, '$frexp', $Math_frexp$17 = function $$frexp(x) { var self = this; - x = Opal.const_get_relative($nesting, 'Math')['$float!'](x); + x = $$($nesting, 'Math')['$float!'](x); if (isNaN(x)) { return [NaN, 0]; @@ -18170,13 +19251,13 @@ Opal.modules["corelib/math"] = function(Opal) { return [frac, ex]; ; - }, TMP_Math_frexp_17.$$arity = 1); + }, $Math_frexp$17.$$arity = 1); - Opal.defn(self, '$gamma', TMP_Math_gamma_18 = function $$gamma(n) { + Opal.def(self, '$gamma', $Math_gamma$18 = function $$gamma(n) { var self = this; - n = Opal.const_get_relative($nesting, 'Math')['$float!'](n); + n = $$($nesting, 'Math')['$float!'](n); var i, t, x, value, result, twoN, threeN, fourN, fiveN; @@ -18210,10 +19291,10 @@ Opal.modules["corelib/math"] = function(Opal) { } if (n === -1 || n === -Infinity) { - self.$raise(Opal.const_get_relative($nesting, 'DomainError'), "Numerical argument is out of domain - \"gamma\""); + self.$raise($$($nesting, 'DomainError'), "Numerical argument is out of domain - \"gamma\""); } - if (Opal.const_get_relative($nesting, 'Integer')['$==='](n)) { + if ($$($nesting, 'Integer')['$==='](n)) { if (n <= 0) { return isFinite(n) ? Infinity : NaN; } @@ -18238,7 +19319,7 @@ Opal.modules["corelib/math"] = function(Opal) { } if (n < 0.5) { - return Math.PI / (Math.sin(Math.PI * n) * Opal.const_get_relative($nesting, 'Math').$gamma($rb_minus(1, n))); + return Math.PI / (Math.sin(Math.PI * n) * $$($nesting, 'Math').$gamma($rb_minus(1, n))); } if (n >= 171.35) { @@ -18268,9 +19349,9 @@ Opal.modules["corelib/math"] = function(Opal) { return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x; ; - }, TMP_Math_gamma_18.$$arity = 1); + }, $Math_gamma$18.$$arity = 1); if ($truthy((typeof(Math.hypot) !== "undefined"))) { - } else { + } else { Math.hypot = function(x, y) { return Math.sqrt(x * x + y * y) @@ -18278,28 +19359,28 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$hypot', TMP_Math_hypot_19 = function $$hypot(x, y) { + Opal.def(self, '$hypot', $Math_hypot$19 = function $$hypot(x, y) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("hypot", Opal.const_get_relative($nesting, 'Math')['$float!'](x), Opal.const_get_relative($nesting, 'Math')['$float!'](y)) - }, TMP_Math_hypot_19.$$arity = 2); + return $$($nesting, 'Math').$checked("hypot", $$($nesting, 'Math')['$float!'](x), $$($nesting, 'Math')['$float!'](y)) + }, $Math_hypot$19.$$arity = 2); - Opal.defn(self, '$ldexp', TMP_Math_ldexp_20 = function $$ldexp(mantissa, exponent) { + Opal.def(self, '$ldexp', $Math_ldexp$20 = function $$ldexp(mantissa, exponent) { var self = this; - mantissa = Opal.const_get_relative($nesting, 'Math')['$float!'](mantissa); - exponent = Opal.const_get_relative($nesting, 'Math')['$integer!'](exponent); + mantissa = $$($nesting, 'Math')['$float!'](mantissa); + exponent = $$($nesting, 'Math')['$integer!'](exponent); if (isNaN(exponent)) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "float NaN out of range of integer"); + self.$raise($$($nesting, 'RangeError'), "float NaN out of range of integer"); } return mantissa * Math.pow(2, exponent); ; - }, TMP_Math_ldexp_20.$$arity = 2); + }, $Math_ldexp$20.$$arity = 2); - Opal.defn(self, '$lgamma', TMP_Math_lgamma_21 = function $$lgamma(n) { + Opal.def(self, '$lgamma', $Math_lgamma$21 = function $$lgamma(n) { var self = this; @@ -18307,28 +19388,29 @@ Opal.modules["corelib/math"] = function(Opal) { return [Infinity, 1]; } else { - return [Math.log(Math.abs(Opal.const_get_relative($nesting, 'Math').$gamma(n))), Opal.const_get_relative($nesting, 'Math').$gamma(n) < 0 ? -1 : 1]; + return [Math.log(Math.abs($$($nesting, 'Math').$gamma(n))), $$($nesting, 'Math').$gamma(n) < 0 ? -1 : 1]; } - }, TMP_Math_lgamma_21.$$arity = 1); + }, $Math_lgamma$21.$$arity = 1); - Opal.defn(self, '$log', TMP_Math_log_22 = function $$log(x, base) { + Opal.def(self, '$log', $Math_log$22 = function $$log(x, base) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](x))) { - self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(x, Opal.const_get_relative($nesting, 'Float')))}; + ; + if ($truthy($$($nesting, 'String')['$==='](x))) { + self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; if ($truthy(base == null)) { - return Opal.const_get_relative($nesting, 'Math').$checked("log", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - } else { + return $$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](x)) + } else { - if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](base))) { - self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(base, Opal.const_get_relative($nesting, 'Float')))}; - return $rb_divide(Opal.const_get_relative($nesting, 'Math').$checked("log", Opal.const_get_relative($nesting, 'Math')['$float!'](x)), Opal.const_get_relative($nesting, 'Math').$checked("log", Opal.const_get_relative($nesting, 'Math')['$float!'](base))); + if ($truthy($$($nesting, 'String')['$==='](base))) { + self.$raise($$($nesting, 'Opal').$type_error(base, $$($nesting, 'Float')))}; + return $rb_divide($$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](x)), $$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](base))); }; - }, TMP_Math_log_22.$$arity = -2); + }, $Math_log$22.$$arity = -2); if ($truthy((typeof(Math.log10) !== "undefined"))) { - } else { + } else { Math.log10 = function(x) { return Math.log(x) / Math.LN10; @@ -18336,16 +19418,16 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$log10', TMP_Math_log10_23 = function $$log10(x) { + Opal.def(self, '$log10', $Math_log10$23 = function $$log10(x) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](x))) { - self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(x, Opal.const_get_relative($nesting, 'Float')))}; - return Opal.const_get_relative($nesting, 'Math').$checked("log10", Opal.const_get_relative($nesting, 'Math')['$float!'](x)); - }, TMP_Math_log10_23.$$arity = 1); + if ($truthy($$($nesting, 'String')['$==='](x))) { + self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; + return $$($nesting, 'Math').$checked("log10", $$($nesting, 'Math')['$float!'](x)); + }, $Math_log10$23.$$arity = 1); if ($truthy((typeof(Math.log2) !== "undefined"))) { - } else { + } else { Math.log2 = function(x) { return Math.log(x) / Math.LN2; @@ -18353,22 +19435,22 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$log2', TMP_Math_log2_24 = function $$log2(x) { + Opal.def(self, '$log2', $Math_log2$24 = function $$log2(x) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](x))) { - self.$raise(Opal.const_get_relative($nesting, 'Opal').$type_error(x, Opal.const_get_relative($nesting, 'Float')))}; - return Opal.const_get_relative($nesting, 'Math').$checked("log2", Opal.const_get_relative($nesting, 'Math')['$float!'](x)); - }, TMP_Math_log2_24.$$arity = 1); + if ($truthy($$($nesting, 'String')['$==='](x))) { + self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; + return $$($nesting, 'Math').$checked("log2", $$($nesting, 'Math')['$float!'](x)); + }, $Math_log2$24.$$arity = 1); - Opal.defn(self, '$sin', TMP_Math_sin_25 = function $$sin(x) { + Opal.def(self, '$sin', $Math_sin$25 = function $$sin(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("sin", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_sin_25.$$arity = 1); + return $$($nesting, 'Math').$checked("sin", $$($nesting, 'Math')['$float!'](x)) + }, $Math_sin$25.$$arity = 1); if ($truthy((typeof(Math.sinh) !== "undefined"))) { - } else { + } else { Math.sinh = function(x) { return (Math.exp(x) - Math.exp(-x)) / 2; @@ -18376,29 +19458,29 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$sinh', TMP_Math_sinh_26 = function $$sinh(x) { + Opal.def(self, '$sinh', $Math_sinh$26 = function $$sinh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("sinh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_sinh_26.$$arity = 1); + return $$($nesting, 'Math').$checked("sinh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_sinh$26.$$arity = 1); - Opal.defn(self, '$sqrt', TMP_Math_sqrt_27 = function $$sqrt(x) { + Opal.def(self, '$sqrt', $Math_sqrt$27 = function $$sqrt(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("sqrt", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_sqrt_27.$$arity = 1); + return $$($nesting, 'Math').$checked("sqrt", $$($nesting, 'Math')['$float!'](x)) + }, $Math_sqrt$27.$$arity = 1); - Opal.defn(self, '$tan', TMP_Math_tan_28 = function $$tan(x) { + Opal.def(self, '$tan', $Math_tan$28 = function $$tan(x) { var self = this; - x = Opal.const_get_relative($nesting, 'Math')['$float!'](x); + x = $$($nesting, 'Math')['$float!'](x); if ($truthy(x['$infinite?']())) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'NAN')}; - return Opal.const_get_relative($nesting, 'Math').$checked("tan", Opal.const_get_relative($nesting, 'Math')['$float!'](x)); - }, TMP_Math_tan_28.$$arity = 1); + return $$$($$($nesting, 'Float'), 'NAN')}; + return $$($nesting, 'Math').$checked("tan", $$($nesting, 'Math')['$float!'](x)); + }, $Math_tan$28.$$arity = 1); if ($truthy((typeof(Math.tanh) !== "undefined"))) { - } else { + } else { Math.tanh = function(x) { if (x == Infinity) { @@ -18414,15 +19496,15 @@ Opal.modules["corelib/math"] = function(Opal) { }; - Opal.defn(self, '$tanh', TMP_Math_tanh_29 = function $$tanh(x) { + Opal.def(self, '$tanh', $Math_tanh$29 = function $$tanh(x) { var self = this; - return Opal.const_get_relative($nesting, 'Math').$checked("tanh", Opal.const_get_relative($nesting, 'Math')['$float!'](x)) - }, TMP_Math_tanh_29.$$arity = 1); + return $$($nesting, 'Math').$checked("tanh", $$($nesting, 'Math')['$float!'](x)) + }, $Math_tanh$29.$$arity = 1); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/complex"] = function(Opal) { function $rb_times(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); @@ -18439,160 +19521,162 @@ Opal.modules["corelib/complex"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; - Opal.add_stubs(['$require', '$===', '$real?', '$raise', '$new', '$*', '$cos', '$sin', '$attr_reader', '$class', '$==', '$real', '$imag', '$Complex', '$-@', '$+', '$__coerced__', '$-', '$nan?', '$/', '$conj', '$abs2', '$quo', '$polar', '$exp', '$log', '$>', '$!=', '$divmod', '$**', '$hypot', '$atan2', '$lcm', '$denominator', '$to_s', '$numerator', '$abs', '$arg', '$rationalize', '$to_f', '$to_i', '$to_r', '$inspect', '$positive?', '$zero?', '$infinite?']); + Opal.add_stubs(['$require', '$===', '$real?', '$raise', '$new', '$*', '$cos', '$sin', '$attr_reader', '$class', '$==', '$real', '$imag', '$Complex', '$-@', '$+', '$__coerced__', '$-', '$nan?', '$/', '$conj', '$abs2', '$quo', '$polar', '$exp', '$log', '$>', '$!=', '$divmod', '$**', '$hypot', '$atan2', '$lcm', '$denominator', '$finite?', '$infinite?', '$numerator', '$abs', '$arg', '$rationalize', '$to_f', '$to_i', '$to_r', '$inspect', '$positive?', '$zero?', '$Rational']); self.$require("corelib/numeric"); (function($base, $super, $parent_nesting) { - function $Complex(){}; - var self = $Complex = $klass($base, $super, 'Complex', $Complex); + var self = $klass($base, $super, 'Complex'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Complex_rect_1, TMP_Complex_polar_2, TMP_Complex_initialize_3, TMP_Complex_coerce_4, TMP_Complex_$eq$eq_5, TMP_Complex_$$_6, TMP_Complex_$_7, TMP_Complex_$_8, TMP_Complex_$_9, TMP_Complex_$_10, TMP_Complex_$$_11, TMP_Complex_abs_12, TMP_Complex_abs2_13, TMP_Complex_angle_14, TMP_Complex_conj_15, TMP_Complex_denominator_16, TMP_Complex_eql$q_17, TMP_Complex_fdiv_18, TMP_Complex_hash_19, TMP_Complex_inspect_20, TMP_Complex_numerator_21, TMP_Complex_polar_22, TMP_Complex_rationalize_23, TMP_Complex_real$q_24, TMP_Complex_rect_25, TMP_Complex_to_f_26, TMP_Complex_to_i_27, TMP_Complex_to_r_28, TMP_Complex_to_s_29; + var $nesting = [self].concat($parent_nesting), $Complex_rect$1, $Complex_polar$2, $Complex_initialize$3, $Complex_coerce$4, $Complex_$eq_eq$5, $Complex_$minus$$6, $Complex_$plus$7, $Complex_$minus$8, $Complex_$$9, $Complex_$slash$10, $Complex_$$$11, $Complex_abs$12, $Complex_abs2$13, $Complex_angle$14, $Complex_conj$15, $Complex_denominator$16, $Complex_eql$ques$17, $Complex_fdiv$18, $Complex_finite$ques$19, $Complex_hash$20, $Complex_infinite$ques$21, $Complex_inspect$22, $Complex_numerator$23, $Complex_polar$24, $Complex_rationalize$25, $Complex_real$ques$26, $Complex_rect$27, $Complex_to_f$28, $Complex_to_i$29, $Complex_to_r$30, $Complex_to_s$31; - def.real = def.imag = nil; + self.$$prototype.real = self.$$prototype.imag = nil; - Opal.defs(self, '$rect', TMP_Complex_rect_1 = function $$rect(real, imag) { + Opal.defs(self, '$rect', $Complex_rect$1 = function $$rect(real, imag) { var $a, $b, $c, self = this; + + if (imag == null) { imag = 0; - } - - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = Opal.const_get_relative($nesting, 'Numeric')['$==='](real)) ? real['$real?']() : $c)) ? Opal.const_get_relative($nesting, 'Numeric')['$==='](imag) : $b)) ? imag['$real?']() : $a))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "not a real") + }; + if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](real)) ? real['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](imag) : $b)) ? imag['$real?']() : $a))) { + } else { + self.$raise($$($nesting, 'TypeError'), "not a real") }; return self.$new(real, imag); - }, TMP_Complex_rect_1.$$arity = -2); + }, $Complex_rect$1.$$arity = -2); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return Opal.alias(self, "rectangular", "rect") })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$polar', TMP_Complex_polar_2 = function $$polar(r, theta) { + Opal.defs(self, '$polar', $Complex_polar$2 = function $$polar(r, theta) { var $a, $b, $c, self = this; + + if (theta == null) { theta = 0; - } - - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = Opal.const_get_relative($nesting, 'Numeric')['$==='](r)) ? r['$real?']() : $c)) ? Opal.const_get_relative($nesting, 'Numeric')['$==='](theta) : $b)) ? theta['$real?']() : $a))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "not a real") }; - return self.$new($rb_times(r, Opal.const_get_relative($nesting, 'Math').$cos(theta)), $rb_times(r, Opal.const_get_relative($nesting, 'Math').$sin(theta))); - }, TMP_Complex_polar_2.$$arity = -2); + if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](r)) ? r['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](theta) : $b)) ? theta['$real?']() : $a))) { + } else { + self.$raise($$($nesting, 'TypeError'), "not a real") + }; + return self.$new($rb_times(r, $$($nesting, 'Math').$cos(theta)), $rb_times(r, $$($nesting, 'Math').$sin(theta))); + }, $Complex_polar$2.$$arity = -2); self.$attr_reader("real", "imag"); - Opal.defn(self, '$initialize', TMP_Complex_initialize_3 = function $$initialize(real, imag) { + Opal.def(self, '$initialize', $Complex_initialize$3 = function $$initialize(real, imag) { var self = this; + + if (imag == null) { imag = 0; - } - + }; self.real = real; return (self.imag = imag); - }, TMP_Complex_initialize_3.$$arity = -2); + }, $Complex_initialize$3.$$arity = -2); - Opal.defn(self, '$coerce', TMP_Complex_coerce_4 = function $$coerce(other) { + Opal.def(self, '$coerce', $Complex_coerce$4 = function $$coerce(other) { var $a, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { return [other, self] - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return [Opal.const_get_relative($nesting, 'Complex').$new(other, 0), self] - } else { - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + return [$$($nesting, 'Complex').$new(other, 0), self] + } else { + return self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") } - }, TMP_Complex_coerce_4.$$arity = 1); + }, $Complex_coerce$4.$$arity = 1); - Opal.defn(self, '$==', TMP_Complex_$eq$eq_5 = function(other) { + Opal.def(self, '$==', $Complex_$eq_eq$5 = function(other) { var $a, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { return (($a = self.real['$=='](other.$real())) ? self.imag['$=='](other.$imag()) : self.real['$=='](other.$real())) - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { return (($a = self.real['$=='](other)) ? self.imag['$=='](0) : self.real['$=='](other)) - } else { + } else { return other['$=='](self) } - }, TMP_Complex_$eq$eq_5.$$arity = 1); + }, $Complex_$eq_eq$5.$$arity = 1); - Opal.defn(self, '$-@', TMP_Complex_$$_6 = function() { + Opal.def(self, '$-@', $Complex_$minus$$6 = function() { var self = this; return self.$Complex(self.real['$-@'](), self.imag['$-@']()) - }, TMP_Complex_$$_6.$$arity = 0); + }, $Complex_$minus$$6.$$arity = 0); - Opal.defn(self, '$+', TMP_Complex_$_7 = function(other) { + Opal.def(self, '$+', $Complex_$plus$7 = function(other) { var $a, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { return self.$Complex($rb_plus(self.real, other.$real()), $rb_plus(self.imag, other.$imag())) - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { return self.$Complex($rb_plus(self.real, other), self.imag) - } else { + } else { return self.$__coerced__("+", other) } - }, TMP_Complex_$_7.$$arity = 1); + }, $Complex_$plus$7.$$arity = 1); - Opal.defn(self, '$-', TMP_Complex_$_8 = function(other) { + Opal.def(self, '$-', $Complex_$minus$8 = function(other) { var $a, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { return self.$Complex($rb_minus(self.real, other.$real()), $rb_minus(self.imag, other.$imag())) - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { return self.$Complex($rb_minus(self.real, other), self.imag) - } else { + } else { return self.$__coerced__("-", other) } - }, TMP_Complex_$_8.$$arity = 1); + }, $Complex_$minus$8.$$arity = 1); - Opal.defn(self, '$*', TMP_Complex_$_9 = function(other) { + Opal.def(self, '$*', $Complex_$$9 = function(other) { var $a, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { return self.$Complex($rb_minus($rb_times(self.real, other.$real()), $rb_times(self.imag, other.$imag())), $rb_plus($rb_times(self.real, other.$imag()), $rb_times(self.imag, other.$real()))) - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { return self.$Complex($rb_times(self.real, other), $rb_times(self.imag, other)) - } else { + } else { return self.$__coerced__("*", other) } - }, TMP_Complex_$_9.$$arity = 1); + }, $Complex_$$9.$$arity = 1); - Opal.defn(self, '$/', TMP_Complex_$_10 = function(other) { + Opal.def(self, '$/', $Complex_$slash$10 = function(other) { var $a, $b, $c, $d, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = Opal.const_get_relative($nesting, 'Number')['$==='](self.real)) ? self.real['$nan?']() : $d)) ? $c : ($truthy($d = Opal.const_get_relative($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $d))) ? $b : ($truthy($c = Opal.const_get_relative($nesting, 'Number')['$==='](other.$real())) ? other.$real()['$nan?']() : $c))) ? $a : ($truthy($b = Opal.const_get_relative($nesting, 'Number')['$==='](other.$imag())) ? other.$imag()['$nan?']() : $b)))) { - return Opal.const_get_relative($nesting, 'Complex').$new(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'NAN'), Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'NAN')) - } else { + if ($truthy($$($nesting, 'Complex')['$==='](other))) { + if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = $$($nesting, 'Number')['$==='](self.real)) ? self.real['$nan?']() : $d)) ? $c : ($truthy($d = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $d))) ? $b : ($truthy($c = $$($nesting, 'Number')['$==='](other.$real())) ? other.$real()['$nan?']() : $c))) ? $a : ($truthy($b = $$($nesting, 'Number')['$==='](other.$imag())) ? other.$imag()['$nan?']() : $b)))) { + return $$($nesting, 'Complex').$new($$$($$($nesting, 'Float'), 'NAN'), $$$($$($nesting, 'Float'), 'NAN')) + } else { return $rb_divide($rb_times(self, other.$conj()), other.$abs2()) } - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { return self.$Complex(self.real.$quo(other), self.imag.$quo(other)) - } else { + } else { return self.$__coerced__("/", other) } - }, TMP_Complex_$_10.$$arity = 1); + }, $Complex_$slash$10.$$arity = 1); - Opal.defn(self, '$**', TMP_Complex_$$_11 = function(other) { + Opal.def(self, '$**', $Complex_$$$11 = function(other) { var $a, $b, $c, $d, self = this, r = nil, theta = nil, ore = nil, oim = nil, nr = nil, ntheta = nil, x = nil, z = nil, n = nil, div = nil, mod = nil; if (other['$=='](0)) { - return Opal.const_get_relative($nesting, 'Complex').$new(1, 0)}; - if ($truthy(Opal.const_get_relative($nesting, 'Complex')['$==='](other))) { + return $$($nesting, 'Complex').$new(1, 0)}; + if ($truthy($$($nesting, 'Complex')['$==='](other))) { $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; ore = other.$real(); oim = other.$imag(); - nr = Opal.const_get_relative($nesting, 'Math').$exp($rb_minus($rb_times(ore, Opal.const_get_relative($nesting, 'Math').$log(r)), $rb_times(oim, theta))); - ntheta = $rb_plus($rb_times(theta, ore), $rb_times(oim, Opal.const_get_relative($nesting, 'Math').$log(r))); - return Opal.const_get_relative($nesting, 'Complex').$polar(nr, ntheta); - } else if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](other))) { + nr = $$($nesting, 'Math').$exp($rb_minus($rb_times(ore, $$($nesting, 'Math').$log(r)), $rb_times(oim, theta))); + ntheta = $rb_plus($rb_times(theta, ore), $rb_times(oim, $$($nesting, 'Math').$log(r))); + return $$($nesting, 'Complex').$polar(nr, ntheta); + } else if ($truthy($$($nesting, 'Integer')['$==='](other))) { if ($truthy($rb_gt(other, 0))) { x = self; @@ -18600,210 +19684,313 @@ Opal.modules["corelib/complex"] = function(Opal) { n = $rb_minus(other, 1); while ($truthy(n['$!='](0))) { - while ($truthy(($d = n.$divmod(2), $c = Opal.to_ary($d), (div = ($c[0] == null ? nil : $c[0])), (mod = ($c[1] == null ? nil : $c[1])), $d, mod['$=='](0)))) { + $c = n.$divmod(2), $b = Opal.to_ary($c), (div = ($b[0] == null ? nil : $b[0])), (mod = ($b[1] == null ? nil : $b[1])), $c; + while (mod['$=='](0)) { x = self.$Complex($rb_minus($rb_times(x.$real(), x.$real()), $rb_times(x.$imag(), x.$imag())), $rb_times($rb_times(2, x.$real()), x.$imag())); n = div; + $d = n.$divmod(2), $c = Opal.to_ary($d), (div = ($c[0] == null ? nil : $c[0])), (mod = ($c[1] == null ? nil : $c[1])), $d; }; z = $rb_times(z, x); n = $rb_minus(n, 1); }; return z; - } else { - return $rb_divide(Opal.const_get_relative($nesting, 'Rational').$new(1, 1), self)['$**'](other['$-@']()) + } else { + return $rb_divide($$($nesting, 'Rational').$new(1, 1), self)['$**'](other['$-@']()) } - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Float')['$==='](other)) ? $a : Opal.const_get_relative($nesting, 'Rational')['$==='](other)))) { + } else if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](other)) ? $a : $$($nesting, 'Rational')['$==='](other)))) { $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; - return Opal.const_get_relative($nesting, 'Complex').$polar(r['$**'](other), $rb_times(theta, other)); - } else { + return $$($nesting, 'Complex').$polar(r['$**'](other), $rb_times(theta, other)); + } else { return self.$__coerced__("**", other) }; - }, TMP_Complex_$$_11.$$arity = 1); + }, $Complex_$$$11.$$arity = 1); - Opal.defn(self, '$abs', TMP_Complex_abs_12 = function $$abs() { + Opal.def(self, '$abs', $Complex_abs$12 = function $$abs() { var self = this; - return Opal.const_get_relative($nesting, 'Math').$hypot(self.real, self.imag) - }, TMP_Complex_abs_12.$$arity = 0); + return $$($nesting, 'Math').$hypot(self.real, self.imag) + }, $Complex_abs$12.$$arity = 0); - Opal.defn(self, '$abs2', TMP_Complex_abs2_13 = function $$abs2() { + Opal.def(self, '$abs2', $Complex_abs2$13 = function $$abs2() { var self = this; return $rb_plus($rb_times(self.real, self.real), $rb_times(self.imag, self.imag)) - }, TMP_Complex_abs2_13.$$arity = 0); + }, $Complex_abs2$13.$$arity = 0); - Opal.defn(self, '$angle', TMP_Complex_angle_14 = function $$angle() { + Opal.def(self, '$angle', $Complex_angle$14 = function $$angle() { var self = this; - return Opal.const_get_relative($nesting, 'Math').$atan2(self.imag, self.real) - }, TMP_Complex_angle_14.$$arity = 0); + return $$($nesting, 'Math').$atan2(self.imag, self.real) + }, $Complex_angle$14.$$arity = 0); Opal.alias(self, "arg", "angle"); - Opal.defn(self, '$conj', TMP_Complex_conj_15 = function $$conj() { + Opal.def(self, '$conj', $Complex_conj$15 = function $$conj() { var self = this; return self.$Complex(self.real, self.imag['$-@']()) - }, TMP_Complex_conj_15.$$arity = 0); + }, $Complex_conj$15.$$arity = 0); Opal.alias(self, "conjugate", "conj"); - Opal.defn(self, '$denominator', TMP_Complex_denominator_16 = function $$denominator() { + Opal.def(self, '$denominator', $Complex_denominator$16 = function $$denominator() { var self = this; return self.real.$denominator().$lcm(self.imag.$denominator()) - }, TMP_Complex_denominator_16.$$arity = 0); + }, $Complex_denominator$16.$$arity = 0); Opal.alias(self, "divide", "/"); - Opal.defn(self, '$eql?', TMP_Complex_eql$q_17 = function(other) { + Opal.def(self, '$eql?', $Complex_eql$ques$17 = function(other) { var $a, $b, self = this; - return ($truthy($a = ($truthy($b = Opal.const_get_relative($nesting, 'Complex')['$==='](other)) ? self.real.$class()['$=='](self.imag.$class()) : $b)) ? self['$=='](other) : $a) - }, TMP_Complex_eql$q_17.$$arity = 1); + return ($truthy($a = ($truthy($b = $$($nesting, 'Complex')['$==='](other)) ? self.real.$class()['$=='](self.imag.$class()) : $b)) ? self['$=='](other) : $a) + }, $Complex_eql$ques$17.$$arity = 1); - Opal.defn(self, '$fdiv', TMP_Complex_fdiv_18 = function $$fdiv(other) { + Opal.def(self, '$fdiv', $Complex_fdiv$18 = function $$fdiv(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Numeric')['$==='](other))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") + if ($truthy($$($nesting, 'Numeric')['$==='](other))) { + } else { + self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") }; return $rb_divide(self, other); - }, TMP_Complex_fdiv_18.$$arity = 1); + }, $Complex_fdiv$18.$$arity = 1); + + Opal.def(self, '$finite?', $Complex_finite$ques$19 = function() { + var $a, self = this; + + return ($truthy($a = self.real['$finite?']()) ? self.imag['$finite?']() : $a) + }, $Complex_finite$ques$19.$$arity = 0); - Opal.defn(self, '$hash', TMP_Complex_hash_19 = function $$hash() { + Opal.def(self, '$hash', $Complex_hash$20 = function $$hash() { var self = this; return "" + "Complex:" + (self.real) + ":" + (self.imag) - }, TMP_Complex_hash_19.$$arity = 0); + }, $Complex_hash$20.$$arity = 0); Opal.alias(self, "imaginary", "imag"); - Opal.defn(self, '$inspect', TMP_Complex_inspect_20 = function $$inspect() { + Opal.def(self, '$infinite?', $Complex_infinite$ques$21 = function() { + var $a, self = this; + + return ($truthy($a = self.real['$infinite?']()) ? $a : self.imag['$infinite?']()) + }, $Complex_infinite$ques$21.$$arity = 0); + + Opal.def(self, '$inspect', $Complex_inspect$22 = function $$inspect() { var self = this; - return "" + "(" + (self.$to_s()) + ")" - }, TMP_Complex_inspect_20.$$arity = 0); + return "" + "(" + (self) + ")" + }, $Complex_inspect$22.$$arity = 0); Opal.alias(self, "magnitude", "abs"); Opal.udef(self, '$' + "negative?");; - Opal.defn(self, '$numerator', TMP_Complex_numerator_21 = function $$numerator() { + Opal.def(self, '$numerator', $Complex_numerator$23 = function $$numerator() { var self = this, d = nil; d = self.$denominator(); return self.$Complex($rb_times(self.real.$numerator(), $rb_divide(d, self.real.$denominator())), $rb_times(self.imag.$numerator(), $rb_divide(d, self.imag.$denominator()))); - }, TMP_Complex_numerator_21.$$arity = 0); + }, $Complex_numerator$23.$$arity = 0); Opal.alias(self, "phase", "arg"); - Opal.defn(self, '$polar', TMP_Complex_polar_22 = function $$polar() { + Opal.def(self, '$polar', $Complex_polar$24 = function $$polar() { var self = this; return [self.$abs(), self.$arg()] - }, TMP_Complex_polar_22.$$arity = 0); + }, $Complex_polar$24.$$arity = 0); Opal.udef(self, '$' + "positive?");; Opal.alias(self, "quo", "/"); - Opal.defn(self, '$rationalize', TMP_Complex_rationalize_23 = function $$rationalize(eps) { + Opal.def(self, '$rationalize', $Complex_rationalize$25 = function $$rationalize(eps) { var self = this; + ; if (arguments.length > 1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); } ; if ($truthy(self.imag['$!='](0))) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "can't' convert " + (self) + " into Rational")}; + self.$raise($$($nesting, 'RangeError'), "" + "can't' convert " + (self) + " into Rational")}; return self.$real().$rationalize(eps); - }, TMP_Complex_rationalize_23.$$arity = -1); + }, $Complex_rationalize$25.$$arity = -1); - Opal.defn(self, '$real?', TMP_Complex_real$q_24 = function() { + Opal.def(self, '$real?', $Complex_real$ques$26 = function() { var self = this; return false - }, TMP_Complex_real$q_24.$$arity = 0); + }, $Complex_real$ques$26.$$arity = 0); - Opal.defn(self, '$rect', TMP_Complex_rect_25 = function $$rect() { + Opal.def(self, '$rect', $Complex_rect$27 = function $$rect() { var self = this; return [self.real, self.imag] - }, TMP_Complex_rect_25.$$arity = 0); + }, $Complex_rect$27.$$arity = 0); Opal.alias(self, "rectangular", "rect"); - Opal.defn(self, '$to_f', TMP_Complex_to_f_26 = function $$to_f() { + Opal.def(self, '$to_f', $Complex_to_f$28 = function $$to_f() { var self = this; if (self.imag['$=='](0)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Float") + } else { + self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Float") }; return self.real.$to_f(); - }, TMP_Complex_to_f_26.$$arity = 0); + }, $Complex_to_f$28.$$arity = 0); - Opal.defn(self, '$to_i', TMP_Complex_to_i_27 = function $$to_i() { + Opal.def(self, '$to_i', $Complex_to_i$29 = function $$to_i() { var self = this; if (self.imag['$=='](0)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Integer") + } else { + self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Integer") }; return self.real.$to_i(); - }, TMP_Complex_to_i_27.$$arity = 0); + }, $Complex_to_i$29.$$arity = 0); - Opal.defn(self, '$to_r', TMP_Complex_to_r_28 = function $$to_r() { + Opal.def(self, '$to_r', $Complex_to_r$30 = function $$to_r() { var self = this; if (self.imag['$=='](0)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Rational") + } else { + self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Rational") }; return self.real.$to_r(); - }, TMP_Complex_to_r_28.$$arity = 0); + }, $Complex_to_r$30.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Complex_to_s_29 = function $$to_s() { + Opal.def(self, '$to_s', $Complex_to_s$31 = function $$to_s() { var $a, $b, $c, self = this, result = nil; result = self.real.$inspect(); - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = Opal.const_get_relative($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $c)) ? $b : self.imag['$positive?']())) ? $a : self.imag['$zero?']()))) { - result = $rb_plus(result, "+") - } else { - result = $rb_plus(result, "-") - }; + result = $rb_plus(result, (function() {if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $c)) ? $b : self.imag['$positive?']())) ? $a : self.imag['$zero?']()))) { + return "+" + } else { + return "-" + }; return nil; })()); result = $rb_plus(result, self.imag.$abs().$inspect()); - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Number')['$==='](self.imag)) ? ($truthy($b = self.imag['$nan?']()) ? $b : self.imag['$infinite?']()) : $a))) { + if ($truthy(($truthy($a = $$($nesting, 'Number')['$==='](self.imag)) ? ($truthy($b = self.imag['$nan?']()) ? $b : self.imag['$infinite?']()) : $a))) { result = $rb_plus(result, "*")}; return $rb_plus(result, "i"); - }, TMP_Complex_to_s_29.$$arity = 0); + }, $Complex_to_s$31.$$arity = 0); return Opal.const_set($nesting[0], 'I', self.$new(0, 1)); - })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); - return (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + })($nesting[0], $$($nesting, 'Numeric'), $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_Complex_30; + var $nesting = [self].concat($parent_nesting), $Kernel_Complex$32; - Opal.defn(self, '$Complex', TMP_Kernel_Complex_30 = function $$Complex(real, imag) { + Opal.def(self, '$Complex', $Kernel_Complex$32 = function $$Complex(real, imag) { var self = this; + + if (imag == null) { imag = nil; - } + }; if ($truthy(imag)) { - return Opal.const_get_relative($nesting, 'Complex').$new(real, imag) + return $$($nesting, 'Complex').$new(real, imag) + } else { + return $$($nesting, 'Complex').$new(real, 0) + }; + }, $Kernel_Complex$32.$$arity = -2) + })($nesting[0], $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $String_to_c$33; + + return (Opal.def(self, '$to_c', $String_to_c$33 = function $$to_c() { + var self = this; + + + var str = self, + re = /[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/, + match = str.match(re), + real, imag, denominator; + + function isFloat() { + return re.test(str); + } + + function cutFloat() { + var match = str.match(re); + var number = match[0]; + str = str.slice(number.length); + return number.replace(/_/g, ''); + } + + // handles both floats and rationals + function cutNumber() { + if (isFloat()) { + var numerator = parseFloat(cutFloat()); + + if (str[0] === '/') { + // rational real part + str = str.slice(1); + + if (isFloat()) { + var denominator = parseFloat(cutFloat()); + return self.$Rational(numerator, denominator); + } else { + // reverting '/' + str = '/' + str; + return numerator; + } + } else { + // float real part, no denominator + return numerator; + } } else { - return Opal.const_get_relative($nesting, 'Complex').$new(real, 0) + return null; + } } - }, TMP_Kernel_Complex_30.$$arity = -2) - })($nesting[0], $nesting); + + real = cutNumber(); + + if (!real) { + if (str[0] === 'i') { + // i => Complex(0, 1) + return self.$Complex(0, 1); + } + if (str[0] === '-' && str[1] === 'i') { + // -i => Complex(0, -1) + return self.$Complex(0, -1); + } + if (str[0] === '+' && str[1] === 'i') { + // +i => Complex(0, 1) + return self.$Complex(0, 1); + } + // anything => Complex(0, 0) + return self.$Complex(0, 0); + } + + imag = cutNumber(); + if (!imag) { + if (str[0] === 'i') { + // 3i => Complex(0, 3) + return self.$Complex(0, real); + } else { + // 3 => Complex(3, 0) + return self.$Complex(real, 0); + } + } else { + // 3+2i => Complex(3, 2) + return self.$Complex(real, imag); + } + + }, $String_to_c$33.$$arity = 0), nil) && 'to_c' + })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/rational"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); @@ -18826,27 +20013,26 @@ Opal.modules["corelib/rational"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; - Opal.add_stubs(['$require', '$to_i', '$==', '$raise', '$<', '$-@', '$new', '$gcd', '$/', '$nil?', '$===', '$reduce', '$to_r', '$equal?', '$!', '$coerce_to!', '$attr_reader', '$to_f', '$numerator', '$denominator', '$<=>', '$-', '$*', '$__coerced__', '$+', '$Rational', '$>', '$**', '$abs', '$ceil', '$with_precision', '$floor', '$to_s', '$<=', '$truncate', '$send', '$convert']); + Opal.add_stubs(['$require', '$to_i', '$==', '$raise', '$<', '$-@', '$new', '$gcd', '$/', '$nil?', '$===', '$reduce', '$to_r', '$equal?', '$!', '$coerce_to!', '$to_f', '$numerator', '$denominator', '$<=>', '$-', '$*', '$__coerced__', '$+', '$Rational', '$>', '$**', '$abs', '$ceil', '$with_precision', '$floor', '$<=', '$truncate', '$send', '$convert']); self.$require("corelib/numeric"); (function($base, $super, $parent_nesting) { - function $Rational(){}; - var self = $Rational = $klass($base, $super, 'Rational', $Rational); + var self = $klass($base, $super, 'Rational'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rational_reduce_1, TMP_Rational_convert_2, TMP_Rational_initialize_3, TMP_Rational_numerator_4, TMP_Rational_denominator_5, TMP_Rational_coerce_6, TMP_Rational_$eq$eq_7, TMP_Rational_$lt$eq$gt_8, TMP_Rational_$_9, TMP_Rational_$_10, TMP_Rational_$_11, TMP_Rational_$_12, TMP_Rational_$$_13, TMP_Rational_abs_14, TMP_Rational_ceil_15, TMP_Rational_floor_16, TMP_Rational_hash_17, TMP_Rational_inspect_18, TMP_Rational_rationalize_19, TMP_Rational_round_20, TMP_Rational_to_f_21, TMP_Rational_to_i_22, TMP_Rational_to_r_23, TMP_Rational_to_s_24, TMP_Rational_truncate_25, TMP_Rational_with_precision_26; + var $nesting = [self].concat($parent_nesting), $Rational_reduce$1, $Rational_convert$2, $Rational_initialize$3, $Rational_numerator$4, $Rational_denominator$5, $Rational_coerce$6, $Rational_$eq_eq$7, $Rational_$lt_eq_gt$8, $Rational_$plus$9, $Rational_$minus$10, $Rational_$$11, $Rational_$slash$12, $Rational_$$$13, $Rational_abs$14, $Rational_ceil$15, $Rational_floor$16, $Rational_hash$17, $Rational_inspect$18, $Rational_rationalize$19, $Rational_round$20, $Rational_to_f$21, $Rational_to_i$22, $Rational_to_r$23, $Rational_to_s$24, $Rational_truncate$25, $Rational_with_precision$26; - def.num = def.den = nil; + self.$$prototype.num = self.$$prototype.den = nil; - Opal.defs(self, '$reduce', TMP_Rational_reduce_1 = function $$reduce(num, den) { + Opal.defs(self, '$reduce', $Rational_reduce$1 = function $$reduce(num, den) { var self = this, gcd = nil; num = num.$to_i(); den = den.$to_i(); if (den['$=='](0)) { - self.$raise(Opal.const_get_relative($nesting, 'ZeroDivisionError'), "divided by 0") + self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") } else if ($truthy($rb_lt(den, 0))) { num = num['$-@'](); @@ -18855,217 +20041,222 @@ Opal.modules["corelib/rational"] = function(Opal) { return self.$new(num, den)}; gcd = num.$gcd(den); return self.$new($rb_divide(num, gcd), $rb_divide(den, gcd)); - }, TMP_Rational_reduce_1.$$arity = 2); - Opal.defs(self, '$convert', TMP_Rational_convert_2 = function $$convert(num, den) { + }, $Rational_reduce$1.$$arity = 2); + Opal.defs(self, '$convert', $Rational_convert$2 = function $$convert(num, den) { var $a, $b, self = this; if ($truthy(($truthy($a = num['$nil?']()) ? $a : den['$nil?']()))) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "cannot convert nil into Rational")}; - if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Integer')['$==='](num)) ? Opal.const_get_relative($nesting, 'Integer')['$==='](den) : $a))) { + self.$raise($$($nesting, 'TypeError'), "cannot convert nil into Rational")}; + if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](num)) ? $$($nesting, 'Integer')['$==='](den) : $a))) { return self.$reduce(num, den)}; - if ($truthy(($truthy($a = ($truthy($b = Opal.const_get_relative($nesting, 'Float')['$==='](num)) ? $b : Opal.const_get_relative($nesting, 'String')['$==='](num))) ? $a : Opal.const_get_relative($nesting, 'Complex')['$==='](num)))) { + if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](num)) ? $b : $$($nesting, 'String')['$==='](num))) ? $a : $$($nesting, 'Complex')['$==='](num)))) { num = num.$to_r()}; - if ($truthy(($truthy($a = ($truthy($b = Opal.const_get_relative($nesting, 'Float')['$==='](den)) ? $b : Opal.const_get_relative($nesting, 'String')['$==='](den))) ? $a : Opal.const_get_relative($nesting, 'Complex')['$==='](den)))) { + if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](den)) ? $b : $$($nesting, 'String')['$==='](den))) ? $a : $$($nesting, 'Complex')['$==='](den)))) { den = den.$to_r()}; - if ($truthy(($truthy($a = den['$equal?'](1)) ? Opal.const_get_relative($nesting, 'Integer')['$==='](num)['$!']() : $a))) { - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](num, Opal.const_get_relative($nesting, 'Rational'), "to_r") - } else if ($truthy(($truthy($a = Opal.const_get_relative($nesting, 'Numeric')['$==='](num)) ? Opal.const_get_relative($nesting, 'Numeric')['$==='](den) : $a))) { + if ($truthy(($truthy($a = den['$equal?'](1)) ? $$($nesting, 'Integer')['$==='](num)['$!']() : $a))) { + return $$($nesting, 'Opal')['$coerce_to!'](num, $$($nesting, 'Rational'), "to_r") + } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](num)) ? $$($nesting, 'Numeric')['$==='](den) : $a))) { return $rb_divide(num, den) - } else { + } else { return self.$reduce(num, den) }; - }, TMP_Rational_convert_2.$$arity = 2); - self.$attr_reader("numerator", "denominator"); + }, $Rational_convert$2.$$arity = 2); - Opal.defn(self, '$initialize', TMP_Rational_initialize_3 = function $$initialize(num, den) { + Opal.def(self, '$initialize', $Rational_initialize$3 = function $$initialize(num, den) { var self = this; self.num = num; return (self.den = den); - }, TMP_Rational_initialize_3.$$arity = 2); + }, $Rational_initialize$3.$$arity = 2); - Opal.defn(self, '$numerator', TMP_Rational_numerator_4 = function $$numerator() { + Opal.def(self, '$numerator', $Rational_numerator$4 = function $$numerator() { var self = this; return self.num - }, TMP_Rational_numerator_4.$$arity = 0); + }, $Rational_numerator$4.$$arity = 0); - Opal.defn(self, '$denominator', TMP_Rational_denominator_5 = function $$denominator() { + Opal.def(self, '$denominator', $Rational_denominator$5 = function $$denominator() { var self = this; return self.den - }, TMP_Rational_denominator_5.$$arity = 0); + }, $Rational_denominator$5.$$arity = 0); - Opal.defn(self, '$coerce', TMP_Rational_coerce_6 = function $$coerce(other) { + Opal.def(self, '$coerce', $Rational_coerce$6 = function $$coerce(other) { var self = this, $case = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) {return [other, self]} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return [other.$to_r(), self]} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return [other, self.$to_f()]} + if ($$($nesting, 'Rational')['$===']($case)) {return [other, self]} + else if ($$($nesting, 'Integer')['$===']($case)) {return [other.$to_r(), self]} + else if ($$($nesting, 'Float')['$===']($case)) {return [other, self.$to_f()]} else { return nil }})() - }, TMP_Rational_coerce_6.$$arity = 1); + }, $Rational_coerce$6.$$arity = 1); - Opal.defn(self, '$==', TMP_Rational_$eq$eq_7 = function(other) { + Opal.def(self, '$==', $Rational_$eq_eq$7 = function(other) { var $a, self = this, $case = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) {return (($a = self.num['$=='](other.$numerator())) ? self.den['$=='](other.$denominator()) : self.num['$=='](other.$numerator()))} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return (($a = self.num['$=='](other)) ? self.den['$=='](1) : self.num['$=='](other))} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return self.$to_f()['$=='](other)} + if ($$($nesting, 'Rational')['$===']($case)) {return (($a = self.num['$=='](other.$numerator())) ? self.den['$=='](other.$denominator()) : self.num['$=='](other.$numerator()))} + else if ($$($nesting, 'Integer')['$===']($case)) {return (($a = self.num['$=='](other)) ? self.den['$=='](1) : self.num['$=='](other))} + else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$=='](other)} else {return other['$=='](self)}})() - }, TMP_Rational_$eq$eq_7.$$arity = 1); + }, $Rational_$eq_eq$7.$$arity = 1); - Opal.defn(self, '$<=>', TMP_Rational_$lt$eq$gt_8 = function(other) { + Opal.def(self, '$<=>', $Rational_$lt_eq_gt$8 = function(other) { var self = this, $case = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) {return $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()))['$<=>'](0)} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return $rb_minus(self.num, $rb_times(self.den, other))['$<=>'](0)} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return self.$to_f()['$<=>'](other)} + if ($$($nesting, 'Rational')['$===']($case)) {return $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()))['$<=>'](0)} + else if ($$($nesting, 'Integer')['$===']($case)) {return $rb_minus(self.num, $rb_times(self.den, other))['$<=>'](0)} + else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$<=>'](other)} else {return self.$__coerced__("<=>", other)}})() - }, TMP_Rational_$lt$eq$gt_8.$$arity = 1); + }, $Rational_$lt_eq_gt$8.$$arity = 1); - Opal.defn(self, '$+', TMP_Rational_$_9 = function(other) { + Opal.def(self, '$+', $Rational_$plus$9 = function(other) { var self = this, $case = nil, num = nil, den = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) { + if ($$($nesting, 'Rational')['$===']($case)) { num = $rb_plus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); den = $rb_times(self.den, other.$denominator()); return self.$Rational(num, den);} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_plus(self.num, $rb_times(other, self.den)), self.den)} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return $rb_plus(self.$to_f(), other)} + else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_plus(self.num, $rb_times(other, self.den)), self.den)} + else if ($$($nesting, 'Float')['$===']($case)) {return $rb_plus(self.$to_f(), other)} else {return self.$__coerced__("+", other)}})() - }, TMP_Rational_$_9.$$arity = 1); + }, $Rational_$plus$9.$$arity = 1); - Opal.defn(self, '$-', TMP_Rational_$_10 = function(other) { + Opal.def(self, '$-', $Rational_$minus$10 = function(other) { var self = this, $case = nil, num = nil, den = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) { + if ($$($nesting, 'Rational')['$===']($case)) { num = $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); den = $rb_times(self.den, other.$denominator()); return self.$Rational(num, den);} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_minus(self.num, $rb_times(other, self.den)), self.den)} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return $rb_minus(self.$to_f(), other)} + else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_minus(self.num, $rb_times(other, self.den)), self.den)} + else if ($$($nesting, 'Float')['$===']($case)) {return $rb_minus(self.$to_f(), other)} else {return self.$__coerced__("-", other)}})() - }, TMP_Rational_$_10.$$arity = 1); + }, $Rational_$minus$10.$$arity = 1); - Opal.defn(self, '$*', TMP_Rational_$_11 = function(other) { + Opal.def(self, '$*', $Rational_$$11 = function(other) { var self = this, $case = nil, num = nil, den = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) { + if ($$($nesting, 'Rational')['$===']($case)) { num = $rb_times(self.num, other.$numerator()); den = $rb_times(self.den, other.$denominator()); return self.$Rational(num, den);} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_times(self.num, other), self.den)} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return $rb_times(self.$to_f(), other)} + else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_times(self.num, other), self.den)} + else if ($$($nesting, 'Float')['$===']($case)) {return $rb_times(self.$to_f(), other)} else {return self.$__coerced__("*", other)}})() - }, TMP_Rational_$_11.$$arity = 1); + }, $Rational_$$11.$$arity = 1); - Opal.defn(self, '$/', TMP_Rational_$_12 = function(other) { + Opal.def(self, '$/', $Rational_$slash$12 = function(other) { var self = this, $case = nil, num = nil, den = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) { + if ($$($nesting, 'Rational')['$===']($case)) { num = $rb_times(self.num, other.$denominator()); den = $rb_times(self.den, other.$numerator()); return self.$Rational(num, den);} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {if (other['$=='](0)) { + else if ($$($nesting, 'Integer')['$===']($case)) {if (other['$=='](0)) { return $rb_divide(self.$to_f(), 0.0) - } else { + } else { return self.$Rational(self.num, $rb_times(self.den, other)) }} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return $rb_divide(self.$to_f(), other)} + else if ($$($nesting, 'Float')['$===']($case)) {return $rb_divide(self.$to_f(), other)} else {return self.$__coerced__("/", other)}})() - }, TMP_Rational_$_12.$$arity = 1); + }, $Rational_$slash$12.$$arity = 1); - Opal.defn(self, '$**', TMP_Rational_$$_13 = function(other) { + Opal.def(self, '$**', $Rational_$$$13 = function(other) { var $a, self = this, $case = nil; return (function() {$case = other; - if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') + if ($$($nesting, 'Integer')['$===']($case)) {if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) { + return $$$($$($nesting, 'Float'), 'INFINITY') } else if ($truthy($rb_gt(other, 0))) { return self.$Rational(self.num['$**'](other), self.den['$**'](other)) } else if ($truthy($rb_lt(other, 0))) { return self.$Rational(self.den['$**'](other['$-@']()), self.num['$**'](other['$-@']())) - } else { + } else { return self.$Rational(1, 1) }} - else if (Opal.const_get_relative($nesting, 'Float')['$===']($case)) {return self.$to_f()['$**'](other)} - else if (Opal.const_get_relative($nesting, 'Rational')['$===']($case)) {if (other['$=='](0)) { + else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$**'](other)} + else if ($$($nesting, 'Rational')['$===']($case)) {if (other['$=='](0)) { return self.$Rational(1, 1) } else if (other.$denominator()['$=='](1)) { if ($truthy($rb_lt(other, 0))) { return self.$Rational(self.den['$**'](other.$numerator().$abs()), self.num['$**'](other.$numerator().$abs())) - } else { + } else { return self.$Rational(self.num['$**'](other.$numerator()), self.den['$**'](other.$numerator())) } } else if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) { - return self.$raise(Opal.const_get_relative($nesting, 'ZeroDivisionError'), "divided by 0") - } else { + return self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") + } else { return self.$to_f()['$**'](other) }} else {return self.$__coerced__("**", other)}})() - }, TMP_Rational_$$_13.$$arity = 1); + }, $Rational_$$$13.$$arity = 1); - Opal.defn(self, '$abs', TMP_Rational_abs_14 = function $$abs() { + Opal.def(self, '$abs', $Rational_abs$14 = function $$abs() { var self = this; return self.$Rational(self.num.$abs(), self.den.$abs()) - }, TMP_Rational_abs_14.$$arity = 0); + }, $Rational_abs$14.$$arity = 0); - Opal.defn(self, '$ceil', TMP_Rational_ceil_15 = function $$ceil(precision) { + Opal.def(self, '$ceil', $Rational_ceil$15 = function $$ceil(precision) { var self = this; + + if (precision == null) { precision = 0; - } + }; if (precision['$=='](0)) { return $rb_divide(self.num['$-@'](), self.den)['$-@']().$ceil() - } else { + } else { return self.$with_precision("ceil", precision) - } - }, TMP_Rational_ceil_15.$$arity = -1); + }; + }, $Rational_ceil$15.$$arity = -1); Opal.alias(self, "divide", "/"); - Opal.defn(self, '$floor', TMP_Rational_floor_16 = function $$floor(precision) { + Opal.def(self, '$floor', $Rational_floor$16 = function $$floor(precision) { var self = this; + + if (precision == null) { precision = 0; - } + }; if (precision['$=='](0)) { return $rb_divide(self.num['$-@'](), self.den)['$-@']().$floor() - } else { + } else { return self.$with_precision("floor", precision) - } - }, TMP_Rational_floor_16.$$arity = -1); + }; + }, $Rational_floor$16.$$arity = -1); - Opal.defn(self, '$hash', TMP_Rational_hash_17 = function $$hash() { + Opal.def(self, '$hash', $Rational_hash$17 = function $$hash() { var self = this; return "" + "Rational:" + (self.num) + ":" + (self.den) - }, TMP_Rational_hash_17.$$arity = 0); + }, $Rational_hash$17.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Rational_inspect_18 = function $$inspect() { + Opal.def(self, '$inspect', $Rational_inspect$18 = function $$inspect() { var self = this; - return "" + "(" + (self.$to_s()) + ")" - }, TMP_Rational_inspect_18.$$arity = 0); + return "" + "(" + (self) + ")" + }, $Rational_inspect$18.$$arity = 0); Opal.alias(self, "quo", "/"); - Opal.defn(self, '$rationalize', TMP_Rational_rationalize_19 = function $$rationalize(eps) { + Opal.def(self, '$rationalize', $Rational_rationalize$19 = function $$rationalize(eps) { var self = this; + ; + if (arguments.length > 1) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); } if (eps == null) { @@ -19105,18 +20296,19 @@ Opal.modules["corelib/rational"] = function(Opal) { } return self.$Rational(c * p1 + p0, c * q1 + q0); + ; + }, $Rational_rationalize$19.$$arity = -1); - }, TMP_Rational_rationalize_19.$$arity = -1); - - Opal.defn(self, '$round', TMP_Rational_round_20 = function $$round(precision) { + Opal.def(self, '$round', $Rational_round$20 = function $$round(precision) { var self = this, num = nil, den = nil, approx = nil; + + if (precision == null) { precision = 0; - } - + }; if (precision['$=='](0)) { - } else { + } else { return self.$with_precision("round", precision) }; if (self.num['$=='](0)) { @@ -19128,86 +20320,137 @@ Opal.modules["corelib/rational"] = function(Opal) { approx = $rb_divide(num, den).$truncate(); if ($truthy($rb_lt(self.num, 0))) { return approx['$-@']() - } else { + } else { return approx }; - }, TMP_Rational_round_20.$$arity = -1); + }, $Rational_round$20.$$arity = -1); - Opal.defn(self, '$to_f', TMP_Rational_to_f_21 = function $$to_f() { + Opal.def(self, '$to_f', $Rational_to_f$21 = function $$to_f() { var self = this; return $rb_divide(self.num, self.den) - }, TMP_Rational_to_f_21.$$arity = 0); + }, $Rational_to_f$21.$$arity = 0); - Opal.defn(self, '$to_i', TMP_Rational_to_i_22 = function $$to_i() { + Opal.def(self, '$to_i', $Rational_to_i$22 = function $$to_i() { var self = this; return self.$truncate() - }, TMP_Rational_to_i_22.$$arity = 0); + }, $Rational_to_i$22.$$arity = 0); - Opal.defn(self, '$to_r', TMP_Rational_to_r_23 = function $$to_r() { + Opal.def(self, '$to_r', $Rational_to_r$23 = function $$to_r() { var self = this; return self - }, TMP_Rational_to_r_23.$$arity = 0); + }, $Rational_to_r$23.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Rational_to_s_24 = function $$to_s() { + Opal.def(self, '$to_s', $Rational_to_s$24 = function $$to_s() { var self = this; return "" + (self.num) + "/" + (self.den) - }, TMP_Rational_to_s_24.$$arity = 0); + }, $Rational_to_s$24.$$arity = 0); - Opal.defn(self, '$truncate', TMP_Rational_truncate_25 = function $$truncate(precision) { + Opal.def(self, '$truncate', $Rational_truncate$25 = function $$truncate(precision) { var self = this; + + if (precision == null) { precision = 0; - } + }; if (precision['$=='](0)) { if ($truthy($rb_lt(self.num, 0))) { return self.$ceil() - } else { + } else { return self.$floor() } - } else { + } else { return self.$with_precision("truncate", precision) - } - }, TMP_Rational_truncate_25.$$arity = -1); - return (Opal.defn(self, '$with_precision', TMP_Rational_with_precision_26 = function $$with_precision(method, precision) { + }; + }, $Rational_truncate$25.$$arity = -1); + return (Opal.def(self, '$with_precision', $Rational_with_precision$26 = function $$with_precision(method, precision) { var self = this, p = nil, s = nil; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](precision))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "not an Integer") + if ($truthy($$($nesting, 'Integer')['$==='](precision))) { + } else { + self.$raise($$($nesting, 'TypeError'), "not an Integer") }; p = (10)['$**'](precision); s = $rb_times(self, p); if ($truthy($rb_lt(precision, 1))) { return $rb_divide(s.$send(method), p).$to_i() - } else { + } else { return self.$Rational(s.$send(method), p) }; - }, TMP_Rational_with_precision_26.$$arity = 2), nil) && 'with_precision'; - })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); - return (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + }, $Rational_with_precision$26.$$arity = 2), nil) && 'with_precision'; + })($nesting[0], $$($nesting, 'Numeric'), $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_Rational_27; + var $nesting = [self].concat($parent_nesting), $Kernel_Rational$27; - Opal.defn(self, '$Rational', TMP_Kernel_Rational_27 = function $$Rational(numerator, denominator) { + Opal.def(self, '$Rational', $Kernel_Rational$27 = function $$Rational(numerator, denominator) { var self = this; + + if (denominator == null) { denominator = 1; - } - return Opal.const_get_relative($nesting, 'Rational').$convert(numerator, denominator) - }, TMP_Kernel_Rational_27.$$arity = -2) + }; + return $$($nesting, 'Rational').$convert(numerator, denominator); + }, $Kernel_Rational$27.$$arity = -2) })($nesting[0], $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $String_to_r$28; + + return (Opal.def(self, '$to_r', $String_to_r$28 = function $$to_r() { + var self = this; + + + var str = self.trimLeft(), + re = /^[+-]?[\d_]+(\.[\d_]+)?/, + match = str.match(re), + numerator, denominator; + + function isFloat() { + return re.test(str); + } + + function cutFloat() { + var match = str.match(re); + var number = match[0]; + str = str.slice(number.length); + return number.replace(/_/g, ''); + } + + if (isFloat()) { + numerator = parseFloat(cutFloat()); + + if (str[0] === '/') { + // rational real part + str = str.slice(1); + + if (isFloat()) { + denominator = parseFloat(cutFloat()); + return self.$Rational(numerator, denominator); + } else { + return self.$Rational(numerator, 1); + } + } else { + return self.$Rational(numerator, 1); + } + } else { + return self.$Rational(0, 1); + } + + }, $String_to_r$28.$$arity = 0), nil) && 'to_r' + })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/time"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -19227,34 +20470,35 @@ Opal.modules["corelib/time"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range; Opal.add_stubs(['$require', '$include', '$===', '$raise', '$coerce_to!', '$respond_to?', '$to_str', '$to_i', '$new', '$<=>', '$to_f', '$nil?', '$>', '$<', '$strftime', '$year', '$month', '$day', '$+', '$round', '$/', '$-', '$copy_instance_variables', '$initialize_dup', '$is_a?', '$zero?', '$wday', '$utc?', '$mon', '$yday', '$hour', '$min', '$sec', '$rjust', '$ljust', '$zone', '$to_s', '$[]', '$cweek_cyear', '$isdst', '$<=', '$!=', '$==', '$ceil']); self.$require("corelib/comparable"); return (function($base, $super, $parent_nesting) { - function $Time(){}; - var self = $Time = $klass($base, $super, 'Time', $Time); + var self = $klass($base, $super, 'Time'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Time_at_1, TMP_Time_new_2, TMP_Time_local_3, TMP_Time_gm_4, TMP_Time_now_5, TMP_Time_$_6, TMP_Time_$_7, TMP_Time_$lt$eq$gt_8, TMP_Time_$eq$eq_9, TMP_Time_asctime_10, TMP_Time_day_11, TMP_Time_yday_12, TMP_Time_isdst_13, TMP_Time_dup_14, TMP_Time_eql$q_15, TMP_Time_friday$q_16, TMP_Time_hash_17, TMP_Time_hour_18, TMP_Time_inspect_19, TMP_Time_min_20, TMP_Time_mon_21, TMP_Time_monday$q_22, TMP_Time_saturday$q_23, TMP_Time_sec_24, TMP_Time_succ_25, TMP_Time_usec_26, TMP_Time_zone_27, TMP_Time_getgm_28, TMP_Time_gmtime_29, TMP_Time_gmt$q_30, TMP_Time_gmt_offset_31, TMP_Time_strftime_32, TMP_Time_sunday$q_33, TMP_Time_thursday$q_34, TMP_Time_to_a_35, TMP_Time_to_f_36, TMP_Time_to_i_37, TMP_Time_tuesday$q_38, TMP_Time_wday_39, TMP_Time_wednesday$q_40, TMP_Time_year_41, TMP_Time_cweek_cyear_42; + var $nesting = [self].concat($parent_nesting), $Time_at$1, $Time_new$2, $Time_local$3, $Time_gm$4, $Time_now$5, $Time_$plus$6, $Time_$minus$7, $Time_$lt_eq_gt$8, $Time_$eq_eq$9, $Time_asctime$10, $Time_day$11, $Time_yday$12, $Time_isdst$13, $Time_dup$14, $Time_eql$ques$15, $Time_friday$ques$16, $Time_hash$17, $Time_hour$18, $Time_inspect$19, $Time_min$20, $Time_mon$21, $Time_monday$ques$22, $Time_saturday$ques$23, $Time_sec$24, $Time_succ$25, $Time_usec$26, $Time_zone$27, $Time_getgm$28, $Time_gmtime$29, $Time_gmt$ques$30, $Time_gmt_offset$31, $Time_strftime$32, $Time_sunday$ques$33, $Time_thursday$ques$34, $Time_to_a$35, $Time_to_f$36, $Time_to_i$37, $Time_tuesday$ques$38, $Time_wday$39, $Time_wednesday$ques$40, $Time_year$41, $Time_cweek_cyear$42; - self.$include(Opal.const_get_relative($nesting, 'Comparable')); + self.$include($$($nesting, 'Comparable')); var days_of_week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], short_days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], short_months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], long_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; ; - Opal.defs(self, '$at', TMP_Time_at_1 = function $$at(seconds, frac) { + Opal.defs(self, '$at', $Time_at$1 = function $$at(seconds, frac) { var self = this; + ; + var result; - if (Opal.const_get_relative($nesting, 'Time')['$==='](seconds)) { + if ($$($nesting, 'Time')['$==='](seconds)) { if (frac !== undefined) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "can't convert Time into an exact number") + self.$raise($$($nesting, 'TypeError'), "can't convert Time into an exact number") } result = new Date(seconds.getTime()); result.is_utc = seconds.is_utc; @@ -19262,7 +20506,7 @@ Opal.modules["corelib/time"] = function(Opal) { } if (!seconds.$$is_number) { - seconds = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](seconds, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + seconds = $$($nesting, 'Opal')['$coerce_to!'](seconds, $$($nesting, 'Integer'), "to_int"); } if (frac === undefined) { @@ -19270,18 +20514,18 @@ Opal.modules["corelib/time"] = function(Opal) { } if (!frac.$$is_number) { - frac = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](frac, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + frac = $$($nesting, 'Opal')['$coerce_to!'](frac, $$($nesting, 'Integer'), "to_int"); } return new Date(seconds * 1000 + (frac / 1000)); - - }, TMP_Time_at_1.$$arity = -2); + ; + }, $Time_at$1.$$arity = -2); function time_params(year, month, day, hour, min, sec) { if (year.$$is_string) { year = parseInt(year, 10); } else { - year = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](year, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + year = $$($nesting, 'Opal')['$coerce_to!'](year, $$($nesting, 'Integer'), "to_int"); } if (month === nil) { @@ -19305,12 +20549,12 @@ Opal.modules["corelib/time"] = function(Opal) { default: month = (month).$to_i(); } } else { - month = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](month, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + month = $$($nesting, 'Opal')['$coerce_to!'](month, $$($nesting, 'Integer'), "to_int"); } } if (month < 1 || month > 12) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "month out of range: " + (month)) + self.$raise($$($nesting, 'ArgumentError'), "" + "month out of range: " + (month)) } month = month - 1; @@ -19319,11 +20563,11 @@ Opal.modules["corelib/time"] = function(Opal) { } else if (day.$$is_string) { day = parseInt(day, 10); } else { - day = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](day, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + day = $$($nesting, 'Opal')['$coerce_to!'](day, $$($nesting, 'Integer'), "to_int"); } if (day < 1 || day > 31) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "day out of range: " + (day)) + self.$raise($$($nesting, 'ArgumentError'), "" + "day out of range: " + (day)) } if (hour === nil) { @@ -19331,11 +20575,11 @@ Opal.modules["corelib/time"] = function(Opal) { } else if (hour.$$is_string) { hour = parseInt(hour, 10); } else { - hour = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](hour, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + hour = $$($nesting, 'Opal')['$coerce_to!'](hour, $$($nesting, 'Integer'), "to_int"); } if (hour < 0 || hour > 24) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "hour out of range: " + (hour)) + self.$raise($$($nesting, 'ArgumentError'), "" + "hour out of range: " + (hour)) } if (min === nil) { @@ -19343,11 +20587,11 @@ Opal.modules["corelib/time"] = function(Opal) { } else if (min.$$is_string) { min = parseInt(min, 10); } else { - min = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](min, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + min = $$($nesting, 'Opal')['$coerce_to!'](min, $$($nesting, 'Integer'), "to_int"); } if (min < 0 || min > 59) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "min out of range: " + (min)) + self.$raise($$($nesting, 'ArgumentError'), "" + "min out of range: " + (min)) } if (sec === nil) { @@ -19356,38 +20600,46 @@ Opal.modules["corelib/time"] = function(Opal) { if (sec.$$is_string) { sec = parseInt(sec, 10); } else { - sec = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](sec, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + sec = $$($nesting, 'Opal')['$coerce_to!'](sec, $$($nesting, 'Integer'), "to_int"); } } if (sec < 0 || sec > 60) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "sec out of range: " + (sec)) + self.$raise($$($nesting, 'ArgumentError'), "" + "sec out of range: " + (sec)) } return [year, month, day, hour, min, sec]; } ; - Opal.defs(self, '$new', TMP_Time_new_2 = function(year, month, day, hour, min, sec, utc_offset) { + Opal.defs(self, '$new', $Time_new$2 = function(year, month, day, hour, min, sec, utc_offset) { var self = this; + + ; + if (month == null) { month = nil; - } + }; + if (day == null) { day = nil; - } + }; + if (hour == null) { hour = nil; - } + }; + if (min == null) { min = nil; - } + }; + if (sec == null) { sec = nil; - } + }; + if (utc_offset == null) { utc_offset = nil; - } + }; var args, result; @@ -19396,7 +20648,7 @@ Opal.modules["corelib/time"] = function(Opal) { } if (utc_offset !== nil) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Opal does not support explicitly specifying UTC offset for Time") + self.$raise($$($nesting, 'ArgumentError'), "Opal does not support explicitly specifying UTC offset for Time") } args = time_params(year, month, day, hour, min, sec); @@ -19412,38 +20664,48 @@ Opal.modules["corelib/time"] = function(Opal) { result.setFullYear(year); } return result; - - }, TMP_Time_new_2.$$arity = -1); - Opal.defs(self, '$local', TMP_Time_local_3 = function $$local(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { + ; + }, $Time_new$2.$$arity = -1); + Opal.defs(self, '$local', $Time_local$3 = function $$local(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { var self = this; + + if (month == null) { month = nil; - } + }; + if (day == null) { day = nil; - } + }; + if (hour == null) { hour = nil; - } + }; + if (min == null) { min = nil; - } + }; + if (sec == null) { sec = nil; - } + }; + if (millisecond == null) { millisecond = nil; - } + }; + if (_dummy1 == null) { _dummy1 = nil; - } + }; + if (_dummy2 == null) { _dummy2 = nil; - } + }; + if (_dummy3 == null) { _dummy3 = nil; - } + }; var args, result; @@ -19470,38 +20732,48 @@ Opal.modules["corelib/time"] = function(Opal) { result.setFullYear(year); } return result; - - }, TMP_Time_local_3.$$arity = -2); - Opal.defs(self, '$gm', TMP_Time_gm_4 = function $$gm(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { + ; + }, $Time_local$3.$$arity = -2); + Opal.defs(self, '$gm', $Time_gm$4 = function $$gm(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { var self = this; + + if (month == null) { month = nil; - } + }; + if (day == null) { day = nil; - } + }; + if (hour == null) { hour = nil; - } + }; + if (min == null) { min = nil; - } + }; + if (sec == null) { sec = nil; - } + }; + if (millisecond == null) { millisecond = nil; - } + }; + if (_dummy1 == null) { _dummy1 = nil; - } + }; + if (_dummy2 == null) { _dummy2 = nil; - } + }; + if (_dummy3 == null) { _dummy3 = nil; - } + }; var args, result; @@ -19529,59 +20801,59 @@ Opal.modules["corelib/time"] = function(Opal) { } result.is_utc = true; return result; - - }, TMP_Time_gm_4.$$arity = -2); + ; + }, $Time_gm$4.$$arity = -2); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.alias(self, "mktime", "local"); return Opal.alias(self, "utc", "gm"); })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$now', TMP_Time_now_5 = function $$now() { + Opal.defs(self, '$now', $Time_now$5 = function $$now() { var self = this; return self.$new() - }, TMP_Time_now_5.$$arity = 0); + }, $Time_now$5.$$arity = 0); - Opal.defn(self, '$+', TMP_Time_$_6 = function(other) { + Opal.def(self, '$+', $Time_$plus$6 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Time')['$==='](other))) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "time + time?")}; + if ($truthy($$($nesting, 'Time')['$==='](other))) { + self.$raise($$($nesting, 'TypeError'), "time + time?")}; if (!other.$$is_number) { - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), "to_int"); } var result = new Date(self.getTime() + (other * 1000)); result.is_utc = self.is_utc; return result; ; - }, TMP_Time_$_6.$$arity = 1); + }, $Time_$plus$6.$$arity = 1); - Opal.defn(self, '$-', TMP_Time_$_7 = function(other) { + Opal.def(self, '$-', $Time_$minus$7 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Time')['$==='](other))) { + if ($truthy($$($nesting, 'Time')['$==='](other))) { return (self.getTime() - other.getTime()) / 1000}; if (!other.$$is_number) { - other = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](other, Opal.const_get_relative($nesting, 'Integer'), "to_int"); + other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), "to_int"); } var result = new Date(self.getTime() - (other * 1000)); result.is_utc = self.is_utc; return result; ; - }, TMP_Time_$_7.$$arity = 1); + }, $Time_$minus$7.$$arity = 1); - Opal.defn(self, '$<=>', TMP_Time_$lt$eq$gt_8 = function(other) { + Opal.def(self, '$<=>', $Time_$lt_eq_gt$8 = function(other) { var self = this, r = nil; - if ($truthy(Opal.const_get_relative($nesting, 'Time')['$==='](other))) { + if ($truthy($$($nesting, 'Time')['$==='](other))) { return self.$to_f()['$<=>'](other.$to_f()) - } else { + } else { r = other['$<=>'](self); if ($truthy(r['$nil?']())) { @@ -19590,42 +20862,42 @@ Opal.modules["corelib/time"] = function(Opal) { return -1 } else if ($truthy($rb_lt(r, 0))) { return 1 - } else { + } else { return 0 }; } - }, TMP_Time_$lt$eq$gt_8.$$arity = 1); + }, $Time_$lt_eq_gt$8.$$arity = 1); - Opal.defn(self, '$==', TMP_Time_$eq$eq_9 = function(other) { + Opal.def(self, '$==', $Time_$eq_eq$9 = function(other) { var $a, self = this; - return ($truthy($a = Opal.const_get_relative($nesting, 'Time')['$==='](other)) ? self.$to_f() === other.$to_f() : $a) - }, TMP_Time_$eq$eq_9.$$arity = 1); + return ($truthy($a = $$($nesting, 'Time')['$==='](other)) ? self.$to_f() === other.$to_f() : $a) + }, $Time_$eq_eq$9.$$arity = 1); - Opal.defn(self, '$asctime', TMP_Time_asctime_10 = function $$asctime() { + Opal.def(self, '$asctime', $Time_asctime$10 = function $$asctime() { var self = this; return self.$strftime("%a %b %e %H:%M:%S %Y") - }, TMP_Time_asctime_10.$$arity = 0); + }, $Time_asctime$10.$$arity = 0); Opal.alias(self, "ctime", "asctime"); - Opal.defn(self, '$day', TMP_Time_day_11 = function $$day() { + Opal.def(self, '$day', $Time_day$11 = function $$day() { var self = this; - return self.is_utc ? self.getUTCDate() : self.getDate() - }, TMP_Time_day_11.$$arity = 0); + return self.is_utc ? self.getUTCDate() : self.getDate(); + }, $Time_day$11.$$arity = 0); - Opal.defn(self, '$yday', TMP_Time_yday_12 = function $$yday() { + Opal.def(self, '$yday', $Time_yday$12 = function $$yday() { var self = this, start_of_year = nil, start_of_day = nil, one_day = nil; - start_of_year = Opal.const_get_relative($nesting, 'Time').$new(self.$year()).$to_i(); - start_of_day = Opal.const_get_relative($nesting, 'Time').$new(self.$year(), self.$month(), self.$day()).$to_i(); + start_of_year = $$($nesting, 'Time').$new(self.$year()).$to_i(); + start_of_day = $$($nesting, 'Time').$new(self.$year(), self.$month(), self.$day()).$to_i(); one_day = 86400; return $rb_plus($rb_divide($rb_minus(start_of_day, start_of_year), one_day).$round(), 1); - }, TMP_Time_yday_12.$$arity = 0); + }, $Time_yday$12.$$arity = 0); - Opal.defn(self, '$isdst', TMP_Time_isdst_13 = function $$isdst() { + Opal.def(self, '$isdst', $Time_isdst$13 = function $$isdst() { var self = this; @@ -19633,10 +20905,10 @@ Opal.modules["corelib/time"] = function(Opal) { jul = new Date(self.getFullYear(), 6, 1); return self.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); - }, TMP_Time_isdst_13.$$arity = 0); + }, $Time_isdst$13.$$arity = 0); Opal.alias(self, "dst?", "isdst"); - Opal.defn(self, '$dup', TMP_Time_dup_14 = function $$dup() { + Opal.def(self, '$dup', $Time_dup$14 = function $$dup() { var self = this, copy = nil; @@ -19644,75 +20916,75 @@ Opal.modules["corelib/time"] = function(Opal) { copy.$copy_instance_variables(self); copy.$initialize_dup(self); return copy; - }, TMP_Time_dup_14.$$arity = 0); + }, $Time_dup$14.$$arity = 0); - Opal.defn(self, '$eql?', TMP_Time_eql$q_15 = function(other) { + Opal.def(self, '$eql?', $Time_eql$ques$15 = function(other) { var $a, self = this; - return ($truthy($a = other['$is_a?'](Opal.const_get_relative($nesting, 'Time'))) ? self['$<=>'](other)['$zero?']() : $a) - }, TMP_Time_eql$q_15.$$arity = 1); + return ($truthy($a = other['$is_a?']($$($nesting, 'Time'))) ? self['$<=>'](other)['$zero?']() : $a) + }, $Time_eql$ques$15.$$arity = 1); - Opal.defn(self, '$friday?', TMP_Time_friday$q_16 = function() { + Opal.def(self, '$friday?', $Time_friday$ques$16 = function() { var self = this; return self.$wday() == 5 - }, TMP_Time_friday$q_16.$$arity = 0); + }, $Time_friday$ques$16.$$arity = 0); - Opal.defn(self, '$hash', TMP_Time_hash_17 = function $$hash() { + Opal.def(self, '$hash', $Time_hash$17 = function $$hash() { var self = this; - return 'Time:' + self.getTime() - }, TMP_Time_hash_17.$$arity = 0); + return 'Time:' + self.getTime(); + }, $Time_hash$17.$$arity = 0); - Opal.defn(self, '$hour', TMP_Time_hour_18 = function $$hour() { + Opal.def(self, '$hour', $Time_hour$18 = function $$hour() { var self = this; - return self.is_utc ? self.getUTCHours() : self.getHours() - }, TMP_Time_hour_18.$$arity = 0); + return self.is_utc ? self.getUTCHours() : self.getHours(); + }, $Time_hour$18.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Time_inspect_19 = function $$inspect() { + Opal.def(self, '$inspect', $Time_inspect$19 = function $$inspect() { var self = this; if ($truthy(self['$utc?']())) { return self.$strftime("%Y-%m-%d %H:%M:%S UTC") - } else { + } else { return self.$strftime("%Y-%m-%d %H:%M:%S %z") } - }, TMP_Time_inspect_19.$$arity = 0); + }, $Time_inspect$19.$$arity = 0); Opal.alias(self, "mday", "day"); - Opal.defn(self, '$min', TMP_Time_min_20 = function $$min() { + Opal.def(self, '$min', $Time_min$20 = function $$min() { var self = this; - return self.is_utc ? self.getUTCMinutes() : self.getMinutes() - }, TMP_Time_min_20.$$arity = 0); + return self.is_utc ? self.getUTCMinutes() : self.getMinutes(); + }, $Time_min$20.$$arity = 0); - Opal.defn(self, '$mon', TMP_Time_mon_21 = function $$mon() { + Opal.def(self, '$mon', $Time_mon$21 = function $$mon() { var self = this; - return (self.is_utc ? self.getUTCMonth() : self.getMonth()) + 1 - }, TMP_Time_mon_21.$$arity = 0); + return (self.is_utc ? self.getUTCMonth() : self.getMonth()) + 1; + }, $Time_mon$21.$$arity = 0); - Opal.defn(self, '$monday?', TMP_Time_monday$q_22 = function() { + Opal.def(self, '$monday?', $Time_monday$ques$22 = function() { var self = this; return self.$wday() == 1 - }, TMP_Time_monday$q_22.$$arity = 0); + }, $Time_monday$ques$22.$$arity = 0); Opal.alias(self, "month", "mon"); - Opal.defn(self, '$saturday?', TMP_Time_saturday$q_23 = function() { + Opal.def(self, '$saturday?', $Time_saturday$ques$23 = function() { var self = this; return self.$wday() == 6 - }, TMP_Time_saturday$q_23.$$arity = 0); + }, $Time_saturday$ques$23.$$arity = 0); - Opal.defn(self, '$sec', TMP_Time_sec_24 = function $$sec() { + Opal.def(self, '$sec', $Time_sec$24 = function $$sec() { var self = this; - return self.is_utc ? self.getUTCSeconds() : self.getSeconds() - }, TMP_Time_sec_24.$$arity = 0); + return self.is_utc ? self.getUTCSeconds() : self.getSeconds(); + }, $Time_sec$24.$$arity = 0); - Opal.defn(self, '$succ', TMP_Time_succ_25 = function $$succ() { + Opal.def(self, '$succ', $Time_succ$25 = function $$succ() { var self = this; @@ -19720,15 +20992,15 @@ Opal.modules["corelib/time"] = function(Opal) { result.is_utc = self.is_utc; return result; - }, TMP_Time_succ_25.$$arity = 0); + }, $Time_succ$25.$$arity = 0); - Opal.defn(self, '$usec', TMP_Time_usec_26 = function $$usec() { + Opal.def(self, '$usec', $Time_usec$26 = function $$usec() { var self = this; - return self.getMilliseconds() * 1000 - }, TMP_Time_usec_26.$$arity = 0); + return self.getMilliseconds() * 1000; + }, $Time_usec$26.$$arity = 0); - Opal.defn(self, '$zone', TMP_Time_zone_27 = function $$zone() { + Opal.def(self, '$zone', $Time_zone$27 = function $$zone() { var self = this; @@ -19749,9 +21021,9 @@ Opal.modules["corelib/time"] = function(Opal) { return result; } - }, TMP_Time_zone_27.$$arity = 0); + }, $Time_zone$27.$$arity = 0); - Opal.defn(self, '$getgm', TMP_Time_getgm_28 = function $$getgm() { + Opal.def(self, '$getgm', $Time_getgm$28 = function $$getgm() { var self = this; @@ -19759,32 +21031,32 @@ Opal.modules["corelib/time"] = function(Opal) { result.is_utc = true; return result; - }, TMP_Time_getgm_28.$$arity = 0); + }, $Time_getgm$28.$$arity = 0); Opal.alias(self, "getutc", "getgm"); - Opal.defn(self, '$gmtime', TMP_Time_gmtime_29 = function $$gmtime() { + Opal.def(self, '$gmtime', $Time_gmtime$29 = function $$gmtime() { var self = this; self.is_utc = true; return self; - }, TMP_Time_gmtime_29.$$arity = 0); + }, $Time_gmtime$29.$$arity = 0); Opal.alias(self, "utc", "gmtime"); - Opal.defn(self, '$gmt?', TMP_Time_gmt$q_30 = function() { + Opal.def(self, '$gmt?', $Time_gmt$ques$30 = function() { var self = this; - return self.is_utc === true - }, TMP_Time_gmt$q_30.$$arity = 0); + return self.is_utc === true; + }, $Time_gmt$ques$30.$$arity = 0); - Opal.defn(self, '$gmt_offset', TMP_Time_gmt_offset_31 = function $$gmt_offset() { + Opal.def(self, '$gmt_offset', $Time_gmt_offset$31 = function $$gmt_offset() { var self = this; - return -self.getTimezoneOffset() * 60 - }, TMP_Time_gmt_offset_31.$$arity = 0); + return self.is_utc ? 0 : -self.getTimezoneOffset() * 60; + }, $Time_gmt_offset$31.$$arity = 0); - Opal.defn(self, '$strftime', TMP_Time_strftime_32 = function $$strftime(format) { + Opal.def(self, '$strftime', $Time_strftime$32 = function $$strftime(format) { var self = this; @@ -20022,78 +21294,78 @@ Opal.modules["corelib/time"] = function(Opal) { return result; }); - }, TMP_Time_strftime_32.$$arity = 1); + }, $Time_strftime$32.$$arity = 1); - Opal.defn(self, '$sunday?', TMP_Time_sunday$q_33 = function() { + Opal.def(self, '$sunday?', $Time_sunday$ques$33 = function() { var self = this; return self.$wday() == 0 - }, TMP_Time_sunday$q_33.$$arity = 0); + }, $Time_sunday$ques$33.$$arity = 0); - Opal.defn(self, '$thursday?', TMP_Time_thursday$q_34 = function() { + Opal.def(self, '$thursday?', $Time_thursday$ques$34 = function() { var self = this; return self.$wday() == 4 - }, TMP_Time_thursday$q_34.$$arity = 0); + }, $Time_thursday$ques$34.$$arity = 0); - Opal.defn(self, '$to_a', TMP_Time_to_a_35 = function $$to_a() { + Opal.def(self, '$to_a', $Time_to_a$35 = function $$to_a() { var self = this; return [self.$sec(), self.$min(), self.$hour(), self.$day(), self.$month(), self.$year(), self.$wday(), self.$yday(), self.$isdst(), self.$zone()] - }, TMP_Time_to_a_35.$$arity = 0); + }, $Time_to_a$35.$$arity = 0); - Opal.defn(self, '$to_f', TMP_Time_to_f_36 = function $$to_f() { + Opal.def(self, '$to_f', $Time_to_f$36 = function $$to_f() { var self = this; - return self.getTime() / 1000 - }, TMP_Time_to_f_36.$$arity = 0); + return self.getTime() / 1000; + }, $Time_to_f$36.$$arity = 0); - Opal.defn(self, '$to_i', TMP_Time_to_i_37 = function $$to_i() { + Opal.def(self, '$to_i', $Time_to_i$37 = function $$to_i() { var self = this; - return parseInt(self.getTime() / 1000, 10) - }, TMP_Time_to_i_37.$$arity = 0); + return parseInt(self.getTime() / 1000, 10); + }, $Time_to_i$37.$$arity = 0); Opal.alias(self, "to_s", "inspect"); - Opal.defn(self, '$tuesday?', TMP_Time_tuesday$q_38 = function() { + Opal.def(self, '$tuesday?', $Time_tuesday$ques$38 = function() { var self = this; return self.$wday() == 2 - }, TMP_Time_tuesday$q_38.$$arity = 0); + }, $Time_tuesday$ques$38.$$arity = 0); Opal.alias(self, "tv_sec", "to_i"); Opal.alias(self, "tv_usec", "usec"); Opal.alias(self, "utc?", "gmt?"); Opal.alias(self, "gmtoff", "gmt_offset"); Opal.alias(self, "utc_offset", "gmt_offset"); - Opal.defn(self, '$wday', TMP_Time_wday_39 = function $$wday() { + Opal.def(self, '$wday', $Time_wday$39 = function $$wday() { var self = this; - return self.is_utc ? self.getUTCDay() : self.getDay() - }, TMP_Time_wday_39.$$arity = 0); + return self.is_utc ? self.getUTCDay() : self.getDay(); + }, $Time_wday$39.$$arity = 0); - Opal.defn(self, '$wednesday?', TMP_Time_wednesday$q_40 = function() { + Opal.def(self, '$wednesday?', $Time_wednesday$ques$40 = function() { var self = this; return self.$wday() == 3 - }, TMP_Time_wednesday$q_40.$$arity = 0); + }, $Time_wednesday$ques$40.$$arity = 0); - Opal.defn(self, '$year', TMP_Time_year_41 = function $$year() { + Opal.def(self, '$year', $Time_year$41 = function $$year() { var self = this; - return self.is_utc ? self.getUTCFullYear() : self.getFullYear() - }, TMP_Time_year_41.$$arity = 0); - return (Opal.defn(self, '$cweek_cyear', TMP_Time_cweek_cyear_42 = function $$cweek_cyear() { + return self.is_utc ? self.getUTCFullYear() : self.getFullYear(); + }, $Time_year$41.$$arity = 0); + return (Opal.def(self, '$cweek_cyear', $Time_cweek_cyear$42 = function $$cweek_cyear() { var $a, self = this, jan01 = nil, jan01_wday = nil, first_monday = nil, year = nil, offset = nil, week = nil, dec31 = nil, dec31_wday = nil; - jan01 = Opal.const_get_relative($nesting, 'Time').$new(self.$year(), 1, 1); + jan01 = $$($nesting, 'Time').$new(self.$year(), 1, 1); jan01_wday = jan01.$wday(); first_monday = 0; year = self.$year(); if ($truthy(($truthy($a = $rb_le(jan01_wday, 4)) ? jan01_wday['$!='](0) : $a))) { offset = $rb_minus(jan01_wday, 1) - } else { + } else { offset = $rb_minus($rb_minus(jan01_wday, 7), 1); if (offset['$=='](-8)) { @@ -20101,21 +21373,21 @@ Opal.modules["corelib/time"] = function(Opal) { }; week = $rb_divide($rb_plus(self.$yday(), offset), 7.0).$ceil(); if ($truthy($rb_le(week, 0))) { - return Opal.const_get_relative($nesting, 'Time').$new($rb_minus(self.$year(), 1), 12, 31).$cweek_cyear() + return $$($nesting, 'Time').$new($rb_minus(self.$year(), 1), 12, 31).$cweek_cyear() } else if (week['$=='](53)) { - dec31 = Opal.const_get_relative($nesting, 'Time').$new(self.$year(), 12, 31); + dec31 = $$($nesting, 'Time').$new(self.$year(), 12, 31); dec31_wday = dec31.$wday(); if ($truthy(($truthy($a = $rb_le(dec31_wday, 3)) ? dec31_wday['$!='](0) : $a))) { week = 1; year = $rb_plus(year, 1);};}; return [week, year]; - }, TMP_Time_cweek_cyear_42.$$arity = 0), nil) && 'cweek_cyear'; + }, $Time_cweek_cyear$42.$$arity = 0), nil) && 'cweek_cyear'; })($nesting[0], Date, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/struct"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -20132,36 +21404,48 @@ Opal.modules["corelib/struct"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$include', '$const_name!', '$unshift', '$map', '$coerce_to!', '$new', '$each', '$define_struct_attribute', '$allocate', '$initialize', '$module_eval', '$to_proc', '$const_set', '$==', '$raise', '$<<', '$members', '$define_method', '$instance_eval', '$>', '$length', '$class', '$each_with_index', '$[]', '$[]=', '$-', '$hash', '$===', '$<', '$-@', '$size', '$>=', '$include?', '$to_sym', '$instance_of?', '$__id__', '$eql?', '$enum_for', '$name', '$+', '$join', '$each_pair', '$inspect', '$inject', '$flatten', '$to_a', '$respond_to?', '$dig']); + Opal.add_stubs(['$require', '$include', '$const_name!', '$unshift', '$map', '$coerce_to!', '$new', '$each', '$define_struct_attribute', '$allocate', '$initialize', '$alias_method', '$module_eval', '$to_proc', '$const_set', '$==', '$raise', '$<<', '$members', '$define_method', '$instance_eval', '$class', '$last', '$>', '$length', '$-', '$keys', '$any?', '$join', '$[]', '$[]=', '$each_with_index', '$hash', '$===', '$<', '$-@', '$size', '$>=', '$include?', '$to_sym', '$instance_of?', '$__id__', '$eql?', '$enum_for', '$name', '$+', '$each_pair', '$inspect', '$each_with_object', '$flatten', '$to_a', '$respond_to?', '$dig']); self.$require("corelib/enumerable"); return (function($base, $super, $parent_nesting) { - function $Struct(){}; - var self = $Struct = $klass($base, $super, 'Struct', $Struct); + var self = $klass($base, $super, 'Struct'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Struct_new_1, TMP_Struct_define_struct_attribute_8, TMP_Struct_members_9, TMP_Struct_inherited_11, TMP_Struct_initialize_13, TMP_Struct_members_14, TMP_Struct_hash_15, TMP_Struct_$$_16, TMP_Struct_$$$eq_17, TMP_Struct_$eq$eq_18, TMP_Struct_eql$q_19, TMP_Struct_each_20, TMP_Struct_each_pair_23, TMP_Struct_length_26, TMP_Struct_to_a_28, TMP_Struct_inspect_30, TMP_Struct_to_h_32, TMP_Struct_values_at_34, TMP_Struct_dig_35; + var $nesting = [self].concat($parent_nesting), $Struct_new$1, $Struct_define_struct_attribute$6, $Struct_members$9, $Struct_inherited$10, $Struct_initialize$12, $Struct_members$15, $Struct_hash$16, $Struct_$$$17, $Struct_$$$eq$18, $Struct_$eq_eq$19, $Struct_eql$ques$20, $Struct_each$21, $Struct_each_pair$24, $Struct_length$27, $Struct_to_a$28, $Struct_inspect$30, $Struct_to_h$32, $Struct_values_at$34, $Struct_dig$36; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - Opal.defs(self, '$new', TMP_Struct_new_1 = function(const_name, $a_rest) { - var TMP_2, TMP_3, self = this, args, $iter = TMP_Struct_new_1.$$p, block = $iter || nil, klass = nil; + self.$include($$($nesting, 'Enumerable')); + Opal.defs(self, '$new', $Struct_new$1 = function(const_name, $a, $b) { + var $iter = $Struct_new$1.$$p, block = $iter || nil, $post_args, $kwargs, args, keyword_init, $$2, $$3, self = this, klass = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Struct_new_1.$$p = null; + if ($iter) $Struct_new$1.$$p = null; + + + if ($iter) $Struct_new$1.$$p = null;; + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + args = $post_args;; + + keyword_init = $kwargs.$$smap["keyword_init"]; + if (keyword_init == null) { + keyword_init = false + }; if ($truthy(const_name)) { try { - const_name = Opal.const_get_relative($nesting, 'Opal')['$const_name!'](const_name) + const_name = $$($nesting, 'Opal')['$const_name!'](const_name) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'TypeError'), Opal.const_get_relative($nesting, 'NameError')])) { + if (Opal.rescue($err, [$$($nesting, 'TypeError'), $$($nesting, 'NameError')])) { try { args.$unshift(const_name); @@ -20169,162 +21453,203 @@ Opal.modules["corelib/struct"] = function(Opal) { } finally { Opal.pop_exception() } } else { throw $err; } };}; - $send(args, 'map', [], (TMP_2 = function(arg){var self = TMP_2.$$s || this; -if (arg == null) arg = nil; - return Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](arg, Opal.const_get_relative($nesting, 'String'), "to_str")}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - klass = $send(Opal.const_get_relative($nesting, 'Class'), 'new', [self], (TMP_3 = function(){var self = TMP_3.$$s || this, TMP_4; + $send(args, 'map', [], ($$2 = function(arg){var self = $$2.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'String'), "to_str");}, $$2.$$s = self, $$2.$$arity = 1, $$2)); + klass = $send($$($nesting, 'Class'), 'new', [self], ($$3 = function(){var self = $$3.$$s || this, $$4; - $send(args, 'each', [], (TMP_4 = function(arg){var self = TMP_4.$$s || this; -if (arg == null) arg = nil; - return self.$define_struct_attribute(arg)}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); + $send(args, 'each', [], ($$4 = function(arg){var self = $$4.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return self.$define_struct_attribute(arg);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); return (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_new_5; + var $nesting = [self].concat($parent_nesting), $new$5; - Opal.defn(self, '$new', TMP_new_5 = function($a_rest) { - var self = this, args, instance = nil; + Opal.def(self, '$new', $new$5 = function($a) { + var $post_args, args, self = this, instance = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; instance = self.$allocate(); - instance.$$data = {};; + instance.$$data = {}; $send(instance, 'initialize', Opal.to_a(args)); return instance; - }, TMP_new_5.$$arity = -1); - return Opal.alias(self, "[]", "new"); - })(Opal.get_singleton_class(self), $nesting);}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3)); + }, $new$5.$$arity = -1); + return self.$alias_method("[]", "new"); + })(Opal.get_singleton_class(self), $nesting);}, $$3.$$s = self, $$3.$$arity = 0, $$3)); if ($truthy(block)) { $send(klass, 'module_eval', [], block.$to_proc())}; + klass.$$keyword_init = keyword_init; if ($truthy(const_name)) { - Opal.const_get_relative($nesting, 'Struct').$const_set(const_name, klass)}; + $$($nesting, 'Struct').$const_set(const_name, klass)}; return klass; - }, TMP_Struct_new_1.$$arity = -2); - Opal.defs(self, '$define_struct_attribute', TMP_Struct_define_struct_attribute_8 = function $$define_struct_attribute(name) { - var TMP_6, TMP_7, self = this; + }, $Struct_new$1.$$arity = -2); + Opal.defs(self, '$define_struct_attribute', $Struct_define_struct_attribute$6 = function $$define_struct_attribute(name) { + var $$7, $$8, self = this; - if (self['$=='](Opal.const_get_relative($nesting, 'Struct'))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "you cannot define attributes to the Struct class")}; + if (self['$==']($$($nesting, 'Struct'))) { + self.$raise($$($nesting, 'ArgumentError'), "you cannot define attributes to the Struct class")}; self.$members()['$<<'](name); - $send(self, 'define_method', [name], (TMP_6 = function(){var self = TMP_6.$$s || this; - - return self.$$data[name]}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6)); - return $send(self, 'define_method', ["" + (name) + "="], (TMP_7 = function(value){var self = TMP_7.$$s || this; -if (value == null) value = nil; - return self.$$data[name] = value}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); - }, TMP_Struct_define_struct_attribute_8.$$arity = 1); - Opal.defs(self, '$members', TMP_Struct_members_9 = function $$members() { + $send(self, 'define_method', [name], ($$7 = function(){var self = $$7.$$s || this; + + return self.$$data[name];}, $$7.$$s = self, $$7.$$arity = 0, $$7)); + return $send(self, 'define_method', ["" + (name) + "="], ($$8 = function(value){var self = $$8.$$s || this; + + + + if (value == null) { + value = nil; + }; + return self.$$data[name] = value;;}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + }, $Struct_define_struct_attribute$6.$$arity = 1); + Opal.defs(self, '$members', $Struct_members$9 = function $$members() { var $a, self = this; if (self.members == null) self.members = nil; - if (self['$=='](Opal.const_get_relative($nesting, 'Struct'))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "the Struct class has no members")}; + if (self['$==']($$($nesting, 'Struct'))) { + self.$raise($$($nesting, 'ArgumentError'), "the Struct class has no members")}; return (self.members = ($truthy($a = self.members) ? $a : [])); - }, TMP_Struct_members_9.$$arity = 0); - Opal.defs(self, '$inherited', TMP_Struct_inherited_11 = function $$inherited(klass) { - var TMP_10, self = this, members = nil; + }, $Struct_members$9.$$arity = 0); + Opal.defs(self, '$inherited', $Struct_inherited$10 = function $$inherited(klass) { + var $$11, self = this, members = nil; if (self.members == null) self.members = nil; members = self.members; - return $send(klass, 'instance_eval', [], (TMP_10 = function(){var self = TMP_10.$$s || this; + return $send(klass, 'instance_eval', [], ($$11 = function(){var self = $$11.$$s || this; - return (self.members = members)}, TMP_10.$$s = self, TMP_10.$$arity = 0, TMP_10)); - }, TMP_Struct_inherited_11.$$arity = 1); + return (self.members = members)}, $$11.$$s = self, $$11.$$arity = 0, $$11)); + }, $Struct_inherited$10.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Struct_initialize_13 = function $$initialize($a_rest) { - var TMP_12, self = this, args; + Opal.def(self, '$initialize', $Struct_initialize$12 = function $$initialize($a) { + var $post_args, args, $b, $$13, $$14, self = this, kwargs = nil, extra = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy($rb_gt(args.$length(), self.$class().$members().$length()))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "struct size differs")}; - return $send(self.$class().$members(), 'each_with_index', [], (TMP_12 = function(name, index){var self = TMP_12.$$s || this, $writer = nil; -if (name == null) name = nil;if (index == null) index = nil; - $writer = [name, args['$[]'](index)]; - $send(self, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_12.$$s = self, TMP_12.$$arity = 2, TMP_12)); - }, TMP_Struct_initialize_13.$$arity = -1); + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + if ($truthy(self.$class().$$keyword_init)) { + + kwargs = ($truthy($b = args.$last()) ? $b : $hash2([], {})); + if ($truthy(($truthy($b = $rb_gt(args.$length(), 1)) ? $b : (args.length === 1 && !kwargs.$$is_hash)))) { + self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (given " + (args.$length()) + ", expected 0)")}; + extra = $rb_minus(kwargs.$keys(), self.$class().$members()); + if ($truthy(extra['$any?']())) { + self.$raise($$($nesting, 'ArgumentError'), "" + "unknown keywords: " + (extra.$join(", ")))}; + return $send(self.$class().$members(), 'each', [], ($$13 = function(name){var self = $$13.$$s || this, $writer = nil; + + + + if (name == null) { + name = nil; + }; + $writer = [name, kwargs['$[]'](name)]; + $send(self, '[]=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, $$13.$$s = self, $$13.$$arity = 1, $$13)); + } else { + + if ($truthy($rb_gt(args.$length(), self.$class().$members().$length()))) { + self.$raise($$($nesting, 'ArgumentError'), "struct size differs")}; + return $send(self.$class().$members(), 'each_with_index', [], ($$14 = function(name, index){var self = $$14.$$s || this, $writer = nil; + + + + if (name == null) { + name = nil; + }; + + if (index == null) { + index = nil; + }; + $writer = [name, args['$[]'](index)]; + $send(self, '[]=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, $$14.$$s = self, $$14.$$arity = 2, $$14)); + }; + }, $Struct_initialize$12.$$arity = -1); - Opal.defn(self, '$members', TMP_Struct_members_14 = function $$members() { + Opal.def(self, '$members', $Struct_members$15 = function $$members() { var self = this; return self.$class().$members() - }, TMP_Struct_members_14.$$arity = 0); + }, $Struct_members$15.$$arity = 0); - Opal.defn(self, '$hash', TMP_Struct_hash_15 = function $$hash() { + Opal.def(self, '$hash', $Struct_hash$16 = function $$hash() { var self = this; - return Opal.const_get_relative($nesting, 'Hash').$new(self.$$data).$hash() - }, TMP_Struct_hash_15.$$arity = 0); + return $$($nesting, 'Hash').$new(self.$$data).$hash() + }, $Struct_hash$16.$$arity = 0); - Opal.defn(self, '$[]', TMP_Struct_$$_16 = function(name) { + Opal.def(self, '$[]', $Struct_$$$17 = function(name) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](name))) { + if ($truthy($$($nesting, 'Integer')['$==='](name))) { if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; + self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; if ($truthy($rb_ge(name, self.$class().$members().$size()))) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; + self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; name = self.$class().$members()['$[]'](name); - } else if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](name))) { + } else if ($truthy($$($nesting, 'String')['$==='](name))) { if(!self.$$data.hasOwnProperty(name)) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) + self.$raise($$($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) } - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") + } else { + self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") }; - name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($nesting, 'String'), "to_str"); - return self.$$data[name]; - }, TMP_Struct_$$_16.$$arity = 1); + name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); + return self.$$data[name];; + }, $Struct_$$$17.$$arity = 1); - Opal.defn(self, '$[]=', TMP_Struct_$$$eq_17 = function(name, value) { + Opal.def(self, '$[]=', $Struct_$$$eq$18 = function(name, value) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Integer')['$==='](name))) { + if ($truthy($$($nesting, 'Integer')['$==='](name))) { if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; + self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; if ($truthy($rb_ge(name, self.$class().$members().$size()))) { - self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; + self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; name = self.$class().$members()['$[]'](name); - } else if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](name))) { + } else if ($truthy($$($nesting, 'String')['$==='](name))) { if ($truthy(self.$class().$members()['$include?'](name.$to_sym()))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) - } } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") + self.$raise($$($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) + } + } else { + self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") }; - name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($nesting, 'String'), "to_str"); - return self.$$data[name] = value; - }, TMP_Struct_$$$eq_17.$$arity = 2); + name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); + return self.$$data[name] = value;; + }, $Struct_$$$eq$18.$$arity = 2); - Opal.defn(self, '$==', TMP_Struct_$eq$eq_18 = function(other) { + Opal.def(self, '$==', $Struct_$eq_eq$19 = function(other) { var self = this; if ($truthy(other['$instance_of?'](self.$class()))) { - } else { + } else { return false }; @@ -20340,7 +21665,7 @@ if (name == null) name = nil;if (index == null) index = nil; a = struct.$$data[key]; b = other.$$data[key]; - if (Opal.const_get_relative($nesting, 'Struct')['$==='](a)) { + if ($$($nesting, 'Struct')['$==='](a)) { if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { if (!_eqeq(a, b)) { return false; @@ -20358,14 +21683,14 @@ if (name == null) name = nil;if (index == null) index = nil; return _eqeq(self, other); ; - }, TMP_Struct_$eq$eq_18.$$arity = 1); + }, $Struct_$eq_eq$19.$$arity = 1); - Opal.defn(self, '$eql?', TMP_Struct_eql$q_19 = function(other) { + Opal.def(self, '$eql?', $Struct_eql$ques$20 = function(other) { var self = this; if ($truthy(other['$instance_of?'](self.$class()))) { - } else { + } else { return false }; @@ -20381,7 +21706,7 @@ if (name == null) name = nil;if (index == null) index = nil; a = struct.$$data[key]; b = other.$$data[key]; - if (Opal.const_get_relative($nesting, 'Struct')['$==='](a)) { + if ($$($nesting, 'Struct')['$==='](a)) { if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { if (!_eqeq(a, b)) { return false; @@ -20399,334 +21724,373 @@ if (name == null) name = nil;if (index == null) index = nil; return _eqeq(self, other); ; - }, TMP_Struct_eql$q_19.$$arity = 1); + }, $Struct_eql$ques$20.$$arity = 1); - Opal.defn(self, '$each', TMP_Struct_each_20 = function $$each() { - var TMP_21, TMP_22, self = this, $iter = TMP_Struct_each_20.$$p, $yield = $iter || nil; + Opal.def(self, '$each', $Struct_each$21 = function $$each() { + var $$22, $$23, $iter = $Struct_each$21.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Struct_each_20.$$p = null; + if ($iter) $Struct_each$21.$$p = null; if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["each"], (TMP_21 = function(){var self = TMP_21.$$s || this; + } else { + return $send(self, 'enum_for', ["each"], ($$22 = function(){var self = $$22.$$s || this; - return self.$size()}, TMP_21.$$s = self, TMP_21.$$arity = 0, TMP_21)) + return self.$size()}, $$22.$$s = self, $$22.$$arity = 0, $$22)) }; - $send(self.$class().$members(), 'each', [], (TMP_22 = function(name){var self = TMP_22.$$s || this; -if (name == null) name = nil; - return Opal.yield1($yield, self['$[]'](name));}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)); + $send(self.$class().$members(), 'each', [], ($$23 = function(name){var self = $$23.$$s || this; + + + + if (name == null) { + name = nil; + }; + return Opal.yield1($yield, self['$[]'](name));;}, $$23.$$s = self, $$23.$$arity = 1, $$23)); return self; - }, TMP_Struct_each_20.$$arity = 0); + }, $Struct_each$21.$$arity = 0); - Opal.defn(self, '$each_pair', TMP_Struct_each_pair_23 = function $$each_pair() { - var TMP_24, TMP_25, self = this, $iter = TMP_Struct_each_pair_23.$$p, $yield = $iter || nil; + Opal.def(self, '$each_pair', $Struct_each_pair$24 = function $$each_pair() { + var $$25, $$26, $iter = $Struct_each_pair$24.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Struct_each_pair_23.$$p = null; + if ($iter) $Struct_each_pair$24.$$p = null; if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["each_pair"], (TMP_24 = function(){var self = TMP_24.$$s || this; + } else { + return $send(self, 'enum_for', ["each_pair"], ($$25 = function(){var self = $$25.$$s || this; - return self.$size()}, TMP_24.$$s = self, TMP_24.$$arity = 0, TMP_24)) + return self.$size()}, $$25.$$s = self, $$25.$$arity = 0, $$25)) }; - $send(self.$class().$members(), 'each', [], (TMP_25 = function(name){var self = TMP_25.$$s || this; -if (name == null) name = nil; - return Opal.yield1($yield, [name, self['$[]'](name)]);}, TMP_25.$$s = self, TMP_25.$$arity = 1, TMP_25)); + $send(self.$class().$members(), 'each', [], ($$26 = function(name){var self = $$26.$$s || this; + + + + if (name == null) { + name = nil; + }; + return Opal.yield1($yield, [name, self['$[]'](name)]);;}, $$26.$$s = self, $$26.$$arity = 1, $$26)); return self; - }, TMP_Struct_each_pair_23.$$arity = 0); + }, $Struct_each_pair$24.$$arity = 0); - Opal.defn(self, '$length', TMP_Struct_length_26 = function $$length() { + Opal.def(self, '$length', $Struct_length$27 = function $$length() { var self = this; return self.$class().$members().$length() - }, TMP_Struct_length_26.$$arity = 0); + }, $Struct_length$27.$$arity = 0); Opal.alias(self, "size", "length"); - Opal.defn(self, '$to_a', TMP_Struct_to_a_28 = function $$to_a() { - var TMP_27, self = this; + Opal.def(self, '$to_a', $Struct_to_a$28 = function $$to_a() { + var $$29, self = this; - return $send(self.$class().$members(), 'map', [], (TMP_27 = function(name){var self = TMP_27.$$s || this; -if (name == null) name = nil; - return self['$[]'](name)}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)) - }, TMP_Struct_to_a_28.$$arity = 0); + return $send(self.$class().$members(), 'map', [], ($$29 = function(name){var self = $$29.$$s || this; + + + + if (name == null) { + name = nil; + }; + return self['$[]'](name);}, $$29.$$s = self, $$29.$$arity = 1, $$29)) + }, $Struct_to_a$28.$$arity = 0); Opal.alias(self, "values", "to_a"); - Opal.defn(self, '$inspect', TMP_Struct_inspect_30 = function $$inspect() { - var $a, TMP_29, self = this, result = nil; + Opal.def(self, '$inspect', $Struct_inspect$30 = function $$inspect() { + var $a, $$31, self = this, result = nil; result = "#"); return result; - }, TMP_Struct_inspect_30.$$arity = 0); + }, $Struct_inspect$30.$$arity = 0); Opal.alias(self, "to_s", "inspect"); - Opal.defn(self, '$to_h', TMP_Struct_to_h_32 = function $$to_h() { - var TMP_31, self = this; + Opal.def(self, '$to_h', $Struct_to_h$32 = function $$to_h() { + var $$33, self = this; + + return $send(self.$class().$members(), 'each_with_object', [$hash2([], {})], ($$33 = function(name, h){var self = $$33.$$s || this, $writer = nil; - return $send(self.$class().$members(), 'inject', [$hash2([], {})], (TMP_31 = function(h, name){var self = TMP_31.$$s || this, $writer = nil; -if (h == null) h = nil;if (name == null) name = nil; + if (name == null) { + name = nil; + }; + + if (h == null) { + h = nil; + }; $writer = [name, self['$[]'](name)]; $send(h, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return h;}, TMP_31.$$s = self, TMP_31.$$arity = 2, TMP_31)) - }, TMP_Struct_to_h_32.$$arity = 0); + return $writer[$rb_minus($writer["length"], 1)];}, $$33.$$s = self, $$33.$$arity = 2, $$33)) + }, $Struct_to_h$32.$$arity = 0); - Opal.defn(self, '$values_at', TMP_Struct_values_at_34 = function $$values_at($a_rest) { - var TMP_33, self = this, args; + Opal.def(self, '$values_at', $Struct_values_at$34 = function $$values_at($a) { + var $post_args, args, $$35, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - args = $send(args, 'map', [], (TMP_33 = function(arg){var self = TMP_33.$$s || this; -if (arg == null) arg = nil; - return arg.$$is_range ? arg.$to_a() : arg}, TMP_33.$$s = self, TMP_33.$$arity = 1, TMP_33)).$flatten(); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + args = $send(args, 'map', [], ($$35 = function(arg){var self = $$35.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return arg.$$is_range ? arg.$to_a() : arg;}, $$35.$$s = self, $$35.$$arity = 1, $$35)).$flatten(); var result = []; for (var i = 0, len = args.length; i < len; i++) { if (!args[i].$$is_number) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "no implicit conversion of " + ((args[i]).$class()) + " into Integer") + self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + ((args[i]).$class()) + " into Integer") } result.push(self['$[]'](args[i])); } return result; ; - }, TMP_Struct_values_at_34.$$arity = -1); - return (Opal.defn(self, '$dig', TMP_Struct_dig_35 = function $$dig(key, $a_rest) { - var self = this, keys, item = nil; + }, $Struct_values_at$34.$$arity = -1); + return (Opal.def(self, '$dig', $Struct_dig$36 = function $$dig(key, $a) { + var $post_args, keys, self = this, item = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - keys = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - keys[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($truthy(key.$$is_string && self.$$data.hasOwnProperty(key))) { - item = self.$$data[key] || nil - } else { - item = nil - }; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + keys = $post_args;; + item = (function() {if ($truthy(key.$$is_string && self.$$data.hasOwnProperty(key))) { + return self.$$data[key] || nil; + } else { + return nil + }; return nil; })(); if (item === nil || keys.length === 0) { return item; } ; if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") + } else { + self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") }; return $send(item, 'dig', Opal.to_a(keys)); - }, TMP_Struct_dig_35.$$arity = -2), nil) && 'dig'; + }, $Struct_dig$36.$$arity = -2), nil) && 'dig'; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/io"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $writer = nil; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $writer = nil; Opal.add_stubs(['$attr_accessor', '$size', '$write', '$join', '$map', '$String', '$empty?', '$concat', '$chomp', '$getbyte', '$getc', '$raise', '$new', '$write_proc=', '$-', '$extend']); (function($base, $super, $parent_nesting) { - function $IO(){}; - var self = $IO = $klass($base, $super, 'IO', $IO); + var self = $klass($base, $super, 'IO'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IO_tty$q_1, TMP_IO_closed$q_2, TMP_IO_write_3, TMP_IO_flush_4; + var $nesting = [self].concat($parent_nesting), $IO_tty$ques$1, $IO_closed$ques$2, $IO_write$3, $IO_flush$4; - def.tty = def.closed = nil; + self.$$prototype.tty = self.$$prototype.closed = nil; Opal.const_set($nesting[0], 'SEEK_SET', 0); Opal.const_set($nesting[0], 'SEEK_CUR', 1); Opal.const_set($nesting[0], 'SEEK_END', 2); - Opal.defn(self, '$tty?', TMP_IO_tty$q_1 = function() { + Opal.def(self, '$tty?', $IO_tty$ques$1 = function() { var self = this; return self.tty - }, TMP_IO_tty$q_1.$$arity = 0); + }, $IO_tty$ques$1.$$arity = 0); - Opal.defn(self, '$closed?', TMP_IO_closed$q_2 = function() { + Opal.def(self, '$closed?', $IO_closed$ques$2 = function() { var self = this; return self.closed - }, TMP_IO_closed$q_2.$$arity = 0); + }, $IO_closed$ques$2.$$arity = 0); self.$attr_accessor("write_proc"); - Opal.defn(self, '$write', TMP_IO_write_3 = function $$write(string) { + Opal.def(self, '$write', $IO_write$3 = function $$write(string) { var self = this; self.write_proc(string); return string.$size(); - }, TMP_IO_write_3.$$arity = 1); + }, $IO_write$3.$$arity = 1); self.$attr_accessor("sync", "tty"); - Opal.defn(self, '$flush', TMP_IO_flush_4 = function $$flush() { + Opal.def(self, '$flush', $IO_flush$4 = function $$flush() { var self = this; return nil - }, TMP_IO_flush_4.$$arity = 0); + }, $IO_flush$4.$$arity = 0); (function($base, $parent_nesting) { - var $Writable, self = $Writable = $module($base, 'Writable'); + var self = $module($base, 'Writable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Writable_$lt$lt_5, TMP_Writable_print_7, TMP_Writable_puts_9; + var $nesting = [self].concat($parent_nesting), $Writable_$lt$lt$5, $Writable_print$6, $Writable_puts$8; - Opal.defn(self, '$<<', TMP_Writable_$lt$lt_5 = function(string) { + Opal.def(self, '$<<', $Writable_$lt$lt$5 = function(string) { var self = this; self.$write(string); return self; - }, TMP_Writable_$lt$lt_5.$$arity = 1); + }, $Writable_$lt$lt$5.$$arity = 1); - Opal.defn(self, '$print', TMP_Writable_print_7 = function $$print($a_rest) { - var TMP_6, self = this, args; + Opal.def(self, '$print', $Writable_print$6 = function $$print($a) { + var $post_args, args, $$7, self = this; if ($gvars[","] == null) $gvars[","] = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - self.$write($send(args, 'map', [], (TMP_6 = function(arg){var self = TMP_6.$$s || this; -if (arg == null) arg = nil; - return self.$String(arg)}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)).$join($gvars[","])); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + self.$write($send(args, 'map', [], ($$7 = function(arg){var self = $$7.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return self.$String(arg);}, $$7.$$s = self, $$7.$$arity = 1, $$7)).$join($gvars[","])); return nil; - }, TMP_Writable_print_7.$$arity = -1); + }, $Writable_print$6.$$arity = -1); - Opal.defn(self, '$puts', TMP_Writable_puts_9 = function $$puts($a_rest) { - var TMP_8, self = this, args, newline = nil; + Opal.def(self, '$puts', $Writable_puts$8 = function $$puts($a) { + var $post_args, args, $$9, self = this, newline = nil; if ($gvars["/"] == null) $gvars["/"] = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; newline = $gvars["/"]; if ($truthy(args['$empty?']())) { self.$write($gvars["/"]) - } else { - self.$write($send(args, 'map', [], (TMP_8 = function(arg){var self = TMP_8.$$s || this; -if (arg == null) arg = nil; - return self.$String(arg).$chomp()}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)).$concat([nil]).$join(newline)) + } else { + self.$write($send(args, 'map', [], ($$9 = function(arg){var self = $$9.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return self.$String(arg).$chomp();}, $$9.$$s = self, $$9.$$arity = 1, $$9)).$concat([nil]).$join(newline)) }; return nil; - }, TMP_Writable_puts_9.$$arity = -1); + }, $Writable_puts$8.$$arity = -1); })($nesting[0], $nesting); return (function($base, $parent_nesting) { - var $Readable, self = $Readable = $module($base, 'Readable'); + var self = $module($base, 'Readable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Readable_readbyte_10, TMP_Readable_readchar_11, TMP_Readable_readline_12, TMP_Readable_readpartial_13; + var $nesting = [self].concat($parent_nesting), $Readable_readbyte$10, $Readable_readchar$11, $Readable_readline$12, $Readable_readpartial$13; - Opal.defn(self, '$readbyte', TMP_Readable_readbyte_10 = function $$readbyte() { + Opal.def(self, '$readbyte', $Readable_readbyte$10 = function $$readbyte() { var self = this; return self.$getbyte() - }, TMP_Readable_readbyte_10.$$arity = 0); + }, $Readable_readbyte$10.$$arity = 0); - Opal.defn(self, '$readchar', TMP_Readable_readchar_11 = function $$readchar() { + Opal.def(self, '$readchar', $Readable_readchar$11 = function $$readchar() { var self = this; return self.$getc() - }, TMP_Readable_readchar_11.$$arity = 0); + }, $Readable_readchar$11.$$arity = 0); - Opal.defn(self, '$readline', TMP_Readable_readline_12 = function $$readline(sep) { + Opal.def(self, '$readline', $Readable_readline$12 = function $$readline(sep) { var self = this; if ($gvars["/"] == null) $gvars["/"] = nil; + + if (sep == null) { sep = $gvars["/"]; - } - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Readable_readline_12.$$arity = -1); + }; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Readable_readline$12.$$arity = -1); - Opal.defn(self, '$readpartial', TMP_Readable_readpartial_13 = function $$readpartial(integer, outbuf) { + Opal.def(self, '$readpartial', $Readable_readpartial$13 = function $$readpartial(integer, outbuf) { var self = this; + + if (outbuf == null) { outbuf = nil; - } - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_Readable_readpartial_13.$$arity = -2); + }; + return self.$raise($$($nesting, 'NotImplementedError')); + }, $Readable_readpartial$13.$$arity = -2); })($nesting[0], $nesting); })($nesting[0], null, $nesting); - Opal.const_set($nesting[0], 'STDERR', ($gvars.stderr = Opal.const_get_relative($nesting, 'IO').$new())); - Opal.const_set($nesting[0], 'STDIN', ($gvars.stdin = Opal.const_get_relative($nesting, 'IO').$new())); - Opal.const_set($nesting[0], 'STDOUT', ($gvars.stdout = Opal.const_get_relative($nesting, 'IO').$new())); + Opal.const_set($nesting[0], 'STDERR', ($gvars.stderr = $$($nesting, 'IO').$new())); + Opal.const_set($nesting[0], 'STDIN', ($gvars.stdin = $$($nesting, 'IO').$new())); + Opal.const_set($nesting[0], 'STDOUT', ($gvars.stdout = $$($nesting, 'IO').$new())); var console = Opal.global.console; $writer = [typeof(process) === 'object' && typeof(process.stdout) === 'object' ? function(s){process.stdout.write(s)} : function(s){console.log(s)}]; - $send(Opal.const_get_relative($nesting, 'STDOUT'), 'write_proc=', Opal.to_a($writer)); + $send($$($nesting, 'STDOUT'), 'write_proc=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; $writer = [typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){console.warn(s)}]; - $send(Opal.const_get_relative($nesting, 'STDERR'), 'write_proc=', Opal.to_a($writer)); + $send($$($nesting, 'STDERR'), 'write_proc=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - Opal.const_get_relative($nesting, 'STDOUT').$extend(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'IO'), 'Writable')); - return Opal.const_get_relative($nesting, 'STDERR').$extend(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'IO'), 'Writable')); + $$($nesting, 'STDOUT').$extend($$$($$($nesting, 'IO'), 'Writable')); + return $$($nesting, 'STDERR').$extend($$$($$($nesting, 'IO'), 'Writable')); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/main"] = function(Opal) { - var TMP_to_s_1, TMP_include_2, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var $to_s$1, $include$2, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$include']); - Opal.defs(self, '$to_s', TMP_to_s_1 = function $$to_s() { + Opal.defs(self, '$to_s', $to_s$1 = function $$to_s() { var self = this; return "main" - }, TMP_to_s_1.$$arity = 0); - return Opal.defs(self, '$include', TMP_include_2 = function $$include(mod) { + }, $to_s$1.$$arity = 0); + return (Opal.defs(self, '$include', $include$2 = function $$include(mod) { var self = this; - return Opal.const_get_relative($nesting, 'Object').$include(mod) - }, TMP_include_2.$$arity = 1); + return $$($nesting, 'Object').$include(mod) + }, $include$2.$$arity = 1), nil) && 'include'; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/dir"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$[]']); return (function($base, $super, $parent_nesting) { - function $Dir(){}; - var self = $Dir = $klass($base, $super, 'Dir', $Dir); + var self = $klass($base, $super, 'Dir'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_chdir_1, TMP_pwd_2, TMP_home_3; + var $nesting = [self].concat($parent_nesting), $chdir$1, $pwd$2, $home$3; - Opal.defn(self, '$chdir', TMP_chdir_1 = function $$chdir(dir) { - var self = this, $iter = TMP_chdir_1.$$p, $yield = $iter || nil, prev_cwd = nil; + Opal.def(self, '$chdir', $chdir$1 = function $$chdir(dir) { + var $iter = $chdir$1.$$p, $yield = $iter || nil, self = this, prev_cwd = nil; - if ($iter) TMP_chdir_1.$$p = null; + if ($iter) $chdir$1.$$p = null; return (function() { try { prev_cwd = Opal.current_dir; @@ -20735,24 +22099,24 @@ Opal.modules["corelib/dir"] = function(Opal) { } finally { Opal.current_dir = prev_cwd }; })() - }, TMP_chdir_1.$$arity = 1); + }, $chdir$1.$$arity = 1); - Opal.defn(self, '$pwd', TMP_pwd_2 = function $$pwd() { + Opal.def(self, '$pwd', $pwd$2 = function $$pwd() { var self = this; - return Opal.current_dir || '.' - }, TMP_pwd_2.$$arity = 0); + return Opal.current_dir || '.'; + }, $pwd$2.$$arity = 0); Opal.alias(self, "getwd", "pwd"); - return (Opal.defn(self, '$home', TMP_home_3 = function $$home() { + return (Opal.def(self, '$home', $home$3 = function $$home() { var $a, self = this; - return ($truthy($a = Opal.const_get_relative($nesting, 'ENV')['$[]']("HOME")) ? $a : ".") - }, TMP_home_3.$$arity = 0), nil) && 'home'; + return ($truthy($a = $$($nesting, 'ENV')['$[]']("HOME")) ? $a : ".") + }, $home$3.$$arity = 0), nil) && 'home'; })(Opal.get_singleton_class(self), $nesting) })($nesting[0], null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/file"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -20760,14 +22124,13 @@ Opal.modules["corelib/file"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send; - Opal.add_stubs(['$home', '$raise', '$start_with?', '$+', '$sub', '$pwd', '$split', '$unshift', '$join', '$respond_to?', '$coerce_to!', '$basename', '$empty?', '$rindex', '$[]', '$nil?', '$==', '$-', '$length', '$gsub', '$find', '$=~', '$map', '$each_with_index', '$flatten', '$reject', '$end_with?']); + Opal.add_stubs(['$respond_to?', '$to_path', '$pwd', '$split', '$sub', '$+', '$unshift', '$join', '$home', '$raise', '$start_with?', '$absolute_path', '$coerce_to!', '$basename', '$empty?', '$rindex', '$[]', '$nil?', '$==', '$-', '$length', '$gsub', '$find', '$=~', '$map', '$each_with_index', '$flatten', '$reject', '$to_proc', '$end_with?']); return (function($base, $super, $parent_nesting) { - function $File(){}; - var self = $File = $klass($base, $super, 'File', $File); + var self = $klass($base, $super, 'File'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), windows_root_rx = nil; + var $nesting = [self].concat($parent_nesting), windows_root_rx = nil; Opal.const_set($nesting[0], 'Separator', Opal.const_set($nesting[0], 'SEPARATOR', "/")); @@ -20776,40 +22139,27 @@ Opal.modules["corelib/file"] = function(Opal) { Opal.const_set($nesting[0], 'FNM_SYSCASE', 0); windows_root_rx = /^[a-zA-Z]:(?:\\|\/)/; return (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_expand_path_1, TMP_dirname_2, TMP_basename_3, TMP_extname_4, TMP_exist$q_5, TMP_directory$q_7, TMP_join_11, TMP_split_12; + var $nesting = [self].concat($parent_nesting), $absolute_path$1, $expand_path$2, $dirname$3, $basename$4, $extname$5, $exist$ques$6, $directory$ques$7, $join$9, $split$12; - Opal.defn(self, '$expand_path', TMP_expand_path_1 = function $$expand_path(path, basedir) { - var self = this, sep = nil, sep_chars = nil, new_parts = nil, home = nil, home_path_regexp = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; + Opal.def(self, '$absolute_path', $absolute_path$1 = function $$absolute_path(path, basedir) { + var $a, self = this, sep = nil, sep_chars = nil, new_parts = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; + + if (basedir == null) { basedir = nil; - } - - sep = Opal.const_get_relative($nesting, 'SEPARATOR'); + }; + sep = $$($nesting, 'SEPARATOR'); sep_chars = $sep_chars(); new_parts = []; - if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { - - home = Opal.const_get_relative($nesting, 'Dir').$home(); - if ($truthy(home)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "couldn't find HOME environment -- expanding `~'") - }; - if ($truthy(home['$start_with?'](sep))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "non-absolute home") - }; - home = $rb_plus(home, sep); - home_path_regexp = new RegExp("" + "^\\~(?:" + (sep) + "|$)"); - path = path.$sub(home_path_regexp, home); - if ($truthy(basedir)) { - basedir = basedir.$sub(home_path_regexp, home)};}; - if ($truthy(basedir)) { - } else { - basedir = Opal.const_get_relative($nesting, 'Dir').$pwd() - }; + path = (function() {if ($truthy(path['$respond_to?']("to_path"))) { + return path.$to_path() + } else { + return path + }; return nil; })(); + basedir = ($truthy($a = basedir) ? $a : $$($nesting, 'Dir').$pwd()); path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path); basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir); if ($truthy(path_abs)) { @@ -20817,7 +22167,7 @@ Opal.modules["corelib/file"] = function(Opal) { parts = path.$split(new RegExp("" + "[" + (sep_chars) + "]")); leading_sep = windows_root_rx.test(path) ? '' : path.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); abs = true; - } else { + } else { parts = $rb_plus(basedir.$split(new RegExp("" + "[" + (sep_chars) + "]")), path.$split(new RegExp("" + "[" + (sep_chars) + "]"))); leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); @@ -20850,7 +22200,37 @@ Opal.modules["corelib/file"] = function(Opal) { if ($truthy(abs)) { new_path = $rb_plus(leading_sep, new_path)}; return new_path; - }, TMP_expand_path_1.$$arity = -2); + }, $absolute_path$1.$$arity = -2); + + Opal.def(self, '$expand_path', $expand_path$2 = function $$expand_path(path, basedir) { + var self = this, sep = nil, sep_chars = nil, home = nil, leading_sep = nil, home_path_regexp = nil; + + + + if (basedir == null) { + basedir = nil; + }; + sep = $$($nesting, 'SEPARATOR'); + sep_chars = $sep_chars(); + if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { + + home = $$($nesting, 'Dir').$home(); + if ($truthy(home)) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "couldn't find HOME environment -- expanding `~'") + }; + leading_sep = windows_root_rx.test(home) ? '' : home.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); + if ($truthy(home['$start_with?'](leading_sep))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "non-absolute home") + }; + home = $rb_plus(home, sep); + home_path_regexp = new RegExp("" + "^\\~(?:" + (sep) + "|$)"); + path = path.$sub(home_path_regexp, home); + if ($truthy(basedir)) { + basedir = basedir.$sub(home_path_regexp, home)};}; + return self.$absolute_path(path, basedir); + }, $expand_path$2.$$arity = -2); Opal.alias(self, "realpath", "expand_path"); // Coerce a given path to a path string using #to_path and #to_str @@ -20859,22 +22239,22 @@ Opal.modules["corelib/file"] = function(Opal) { path = path.$to_path(); } - path = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](path, Opal.const_get_relative($nesting, 'String'), "to_str"); + path = $$($nesting, 'Opal')['$coerce_to!'](path, $$($nesting, 'String'), "to_str"); return path; } // Return a RegExp compatible char class function $sep_chars() { - if (Opal.const_get_relative($nesting, 'ALT_SEPARATOR') === nil) { - return Opal.escape_regexp(Opal.const_get_relative($nesting, 'SEPARATOR')); + if ($$($nesting, 'ALT_SEPARATOR') === nil) { + return Opal.escape_regexp($$($nesting, 'SEPARATOR')); } else { - return Opal.escape_regexp($rb_plus(Opal.const_get_relative($nesting, 'SEPARATOR'), Opal.const_get_relative($nesting, 'ALT_SEPARATOR'))); + return Opal.escape_regexp($rb_plus($$($nesting, 'SEPARATOR'), $$($nesting, 'ALT_SEPARATOR'))); } } ; - Opal.defn(self, '$dirname', TMP_dirname_2 = function $$dirname(path) { + Opal.def(self, '$dirname', $dirname$3 = function $$dirname(path) { var self = this, sep_chars = nil; @@ -20893,15 +22273,16 @@ Opal.modules["corelib/file"] = function(Opal) { return path; ; - }, TMP_dirname_2.$$arity = 1); + }, $dirname$3.$$arity = 1); - Opal.defn(self, '$basename', TMP_basename_3 = function $$basename(name, suffix) { + Opal.def(self, '$basename', $basename$4 = function $$basename(name, suffix) { var self = this, sep_chars = nil; + + if (suffix == null) { suffix = nil; - } - + }; sep_chars = $sep_chars(); name = $coerce_to_path(name); @@ -20910,7 +22291,7 @@ Opal.modules["corelib/file"] = function(Opal) { } if (suffix !== nil) { - suffix = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](suffix, Opal.const_get_relative($nesting, 'String'), "to_str") + suffix = $$($nesting, 'Opal')['$coerce_to!'](suffix, $$($nesting, 'String'), "to_str") } else { suffix = null; } @@ -20927,33 +22308,33 @@ Opal.modules["corelib/file"] = function(Opal) { return name; ; - }, TMP_basename_3.$$arity = -2); + }, $basename$4.$$arity = -2); - Opal.defn(self, '$extname', TMP_extname_4 = function $$extname(path) { + Opal.def(self, '$extname', $extname$5 = function $$extname(path) { var $a, self = this, filename = nil, last_dot_idx = nil; - path = $coerce_to_path(path);; + path = $coerce_to_path(path); filename = self.$basename(path); if ($truthy(filename['$empty?']())) { return ""}; last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex("."); if ($truthy(($truthy($a = last_dot_idx['$nil?']()) ? $a : $rb_plus(last_dot_idx, 1)['$==']($rb_minus(filename.$length(), 1))))) { return "" - } else { + } else { return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) }; - }, TMP_extname_4.$$arity = 1); + }, $extname$5.$$arity = 1); - Opal.defn(self, '$exist?', TMP_exist$q_5 = function(path) { + Opal.def(self, '$exist?', $exist$ques$6 = function(path) { var self = this; return Opal.modules[path] != null - }, TMP_exist$q_5.$$arity = 1); + }, $exist$ques$6.$$arity = 1); Opal.alias(self, "exists?", "exist?"); - Opal.defn(self, '$directory?', TMP_directory$q_7 = function(path) { - var TMP_6, self = this, files = nil, file = nil; + Opal.def(self, '$directory?', $directory$ques$7 = function(path) { + var $$8, self = this, files = nil, file = nil; files = []; @@ -20962,87 +22343,104 @@ Opal.modules["corelib/file"] = function(Opal) { files.push(key) } ; - path = path.$gsub(new RegExp("" + "(^." + (Opal.const_get_relative($nesting, 'SEPARATOR')) + "+|" + (Opal.const_get_relative($nesting, 'SEPARATOR')) + "+$)")); - file = $send(files, 'find', [], (TMP_6 = function(file){var self = TMP_6.$$s || this; -if (file == null) file = nil; - return file['$=~'](new RegExp("" + "^" + (path)))}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)); + path = path.$gsub(new RegExp("" + "(^." + ($$($nesting, 'SEPARATOR')) + "+|" + ($$($nesting, 'SEPARATOR')) + "+$)")); + file = $send(files, 'find', [], ($$8 = function(f){var self = $$8.$$s || this; + + + + if (f == null) { + f = nil; + }; + return f['$=~'](new RegExp("" + "^" + (path)));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); return file; - }, TMP_directory$q_7.$$arity = 1); + }, $directory$ques$7.$$arity = 1); - Opal.defn(self, '$join', TMP_join_11 = function $$join($a_rest) { - var TMP_8, TMP_9, TMP_10, self = this, paths, result = nil; + Opal.def(self, '$join', $join$9 = function $$join($a) { + var $post_args, paths, $$10, $$11, self = this, result = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - paths = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - paths[$arg_idx - 0] = arguments[$arg_idx]; - } - if (paths.$length()['$=='](0)) { + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + paths = $post_args;; + if ($truthy(paths['$empty?']())) { return ""}; result = ""; - paths = $send(paths.$flatten().$each_with_index(), 'map', [], (TMP_8 = function(item, index){var self = TMP_8.$$s || this, $a; -if (item == null) item = nil;if (index == null) index = nil; - if ($truthy((($a = index['$=='](0)) ? item['$empty?']() : index['$=='](0)))) { - return Opal.const_get_relative($nesting, 'SEPARATOR') - } else if ($truthy((($a = paths.$length()['$==']($rb_plus(index, 1))) ? item['$empty?']() : paths.$length()['$==']($rb_plus(index, 1))))) { - return Opal.const_get_relative($nesting, 'SEPARATOR') - } else { + paths = $send(paths.$flatten().$each_with_index(), 'map', [], ($$10 = function(item, index){var self = $$10.$$s || this, $b; + + + + if (item == null) { + item = nil; + }; + + if (index == null) { + index = nil; + }; + if ($truthy((($b = index['$=='](0)) ? item['$empty?']() : index['$=='](0)))) { + return $$($nesting, 'SEPARATOR') + } else if ($truthy((($b = paths.$length()['$==']($rb_plus(index, 1))) ? item['$empty?']() : paths.$length()['$==']($rb_plus(index, 1))))) { + return $$($nesting, 'SEPARATOR') + } else { return item - }}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8)); - paths = $send(paths, 'reject', [], (TMP_9 = function(path){var self = TMP_9.$$s || this; -if (path == null) path = nil; - return path['$empty?']()}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); - $send(paths, 'each_with_index', [], (TMP_10 = function(item, index){var self = TMP_10.$$s || this, $a, next_item = nil; -if (item == null) item = nil;if (index == null) index = nil; + };}, $$10.$$s = self, $$10.$$arity = 2, $$10)); + paths = $send(paths, 'reject', [], "empty?".$to_proc()); + $send(paths, 'each_with_index', [], ($$11 = function(item, index){var self = $$11.$$s || this, $b, next_item = nil; + + + if (item == null) { + item = nil; + }; + + if (index == null) { + index = nil; + }; next_item = paths['$[]']($rb_plus(index, 1)); if ($truthy(next_item['$nil?']())) { return (result = "" + (result) + (item)) - } else { + } else { - if ($truthy(($truthy($a = item['$end_with?'](Opal.const_get_relative($nesting, 'SEPARATOR'))) ? next_item['$start_with?'](Opal.const_get_relative($nesting, 'SEPARATOR')) : $a))) { - item = item.$sub(new RegExp("" + (Opal.const_get_relative($nesting, 'SEPARATOR')) + "+$"), "")}; - if ($truthy(($truthy($a = item['$end_with?'](Opal.const_get_relative($nesting, 'SEPARATOR'))) ? $a : next_item['$start_with?'](Opal.const_get_relative($nesting, 'SEPARATOR'))))) { - return (result = "" + (result) + (item)) - } else { - return (result = "" + (result) + (item) + (Opal.const_get_relative($nesting, 'SEPARATOR'))) - }; - };}, TMP_10.$$s = self, TMP_10.$$arity = 2, TMP_10)); + if ($truthy(($truthy($b = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? next_item['$start_with?']($$($nesting, 'SEPARATOR')) : $b))) { + item = item.$sub(new RegExp("" + ($$($nesting, 'SEPARATOR')) + "+$"), "")}; + return (result = (function() {if ($truthy(($truthy($b = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? $b : next_item['$start_with?']($$($nesting, 'SEPARATOR'))))) { + return "" + (result) + (item) + } else { + return "" + (result) + (item) + ($$($nesting, 'SEPARATOR')) + }; return nil; })()); + };}, $$11.$$s = self, $$11.$$arity = 2, $$11)); return result; - }, TMP_join_11.$$arity = -1); - return (Opal.defn(self, '$split', TMP_split_12 = function $$split(path) { + }, $join$9.$$arity = -1); + return (Opal.def(self, '$split', $split$12 = function $$split(path) { var self = this; - return path.$split(Opal.const_get_relative($nesting, 'SEPARATOR')) - }, TMP_split_12.$$arity = 1), nil) && 'split'; + return path.$split($$($nesting, 'SEPARATOR')) + }, $split$12.$$arity = 1), nil) && 'split'; })(Opal.get_singleton_class(self), $nesting); - })($nesting[0], Opal.const_get_relative($nesting, 'IO'), $nesting) + })($nesting[0], $$($nesting, 'IO'), $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/process"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$const_set', '$size', '$<<', '$__register_clock__', '$to_f', '$now', '$new', '$[]', '$raise']); (function($base, $super, $parent_nesting) { - function $Process(){}; - var self = $Process = $klass($base, $super, 'Process', $Process); + var self = $klass($base, $super, 'Process'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Process___register_clock___1, TMP_Process_pid_2, TMP_Process_times_3, TMP_Process_clock_gettime_4, monotonic = nil; + var $nesting = [self].concat($parent_nesting), $Process___register_clock__$1, $Process_pid$2, $Process_times$3, $Process_clock_gettime$4, monotonic = nil; self.__clocks__ = []; - Opal.defs(self, '$__register_clock__', TMP_Process___register_clock___1 = function $$__register_clock__(name, func) { + Opal.defs(self, '$__register_clock__', $Process___register_clock__$1 = function $$__register_clock__(name, func) { var self = this; if (self.__clocks__ == null) self.__clocks__ = nil; self.$const_set(name, self.__clocks__.$size()); return self.__clocks__['$<<'](func); - }, TMP_Process___register_clock___1.$$arity = 2); + }, $Process___register_clock__$1.$$arity = 2); self.$__register_clock__("CLOCK_REALTIME", function() { return Date.now() }); monotonic = false; @@ -21064,27 +22462,28 @@ Opal.modules["corelib/process"] = function(Opal) { ; if ($truthy(monotonic)) { self.$__register_clock__("CLOCK_MONOTONIC", monotonic)}; - Opal.defs(self, '$pid', TMP_Process_pid_2 = function $$pid() { + Opal.defs(self, '$pid', $Process_pid$2 = function $$pid() { var self = this; return 0 - }, TMP_Process_pid_2.$$arity = 0); - Opal.defs(self, '$times', TMP_Process_times_3 = function $$times() { + }, $Process_pid$2.$$arity = 0); + Opal.defs(self, '$times', $Process_times$3 = function $$times() { var self = this, t = nil; - t = Opal.const_get_relative($nesting, 'Time').$now().$to_f(); - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Benchmark'), 'Tms').$new(t, t, t, t, t); - }, TMP_Process_times_3.$$arity = 0); - return Opal.defs(self, '$clock_gettime', TMP_Process_clock_gettime_4 = function $$clock_gettime(clock_id, unit) { + t = $$($nesting, 'Time').$now().$to_f(); + return $$$($$($nesting, 'Benchmark'), 'Tms').$new(t, t, t, t, t); + }, $Process_times$3.$$arity = 0); + return (Opal.defs(self, '$clock_gettime', $Process_clock_gettime$4 = function $$clock_gettime(clock_id, unit) { var $a, self = this, clock = nil; if (self.__clocks__ == null) self.__clocks__ = nil; + + if (unit == null) { unit = "float_second"; - } - - ($truthy($a = (clock = self.__clocks__['$[]'](clock_id))) ? $a : self.$raise(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Errno'), 'EINVAL'), "" + "clock_gettime(" + (clock_id) + ") " + (self.__clocks__['$[]'](clock_id)))); + }; + ($truthy($a = (clock = self.__clocks__['$[]'](clock_id))) ? $a : self.$raise($$$($$($nesting, 'Errno'), 'EINVAL'), "" + "clock_gettime(" + (clock_id) + ") " + (self.__clocks__['$[]'](clock_id)))); var ms = clock(); switch (unit) { @@ -21095,152 +22494,142 @@ Opal.modules["corelib/process"] = function(Opal) { case 'millisecond': return ((ms / 1) | 0); // number of milliseconds as an integer case 'microsecond': return ((ms * 1000) | 0); // number of microseconds as an integer case 'nanosecond': return ((ms * 1000000) | 0); // number of nanoseconds as an integer - default: self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "unexpected unit: " + (unit)) + default: self.$raise($$($nesting, 'ArgumentError'), "" + "unexpected unit: " + (unit)) } ; - }, TMP_Process_clock_gettime_4.$$arity = -2); + }, $Process_clock_gettime$4.$$arity = -2), nil) && 'clock_gettime'; })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Signal(){}; - var self = $Signal = $klass($base, $super, 'Signal', $Signal); + var self = $klass($base, $super, 'Signal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Signal_trap_5; + var $nesting = [self].concat($parent_nesting), $Signal_trap$5; - return Opal.defs(self, '$trap', TMP_Signal_trap_5 = function $$trap($a_rest) { - var self = this; + return (Opal.defs(self, '$trap', $Signal_trap$5 = function $$trap($a) { + var $post_args, self = this; - return nil - }, TMP_Signal_trap_5.$$arity = -1) + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $Signal_trap$5.$$arity = -1), nil) && 'trap' })($nesting[0], null, $nesting); return (function($base, $super, $parent_nesting) { - function $GC(){}; - var self = $GC = $klass($base, $super, 'GC', $GC); + var self = $klass($base, $super, 'GC'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_GC_start_6; + var $nesting = [self].concat($parent_nesting), $GC_start$6; - return Opal.defs(self, '$start', TMP_GC_start_6 = function $$start() { + return (Opal.defs(self, '$start', $GC_start$6 = function $$start() { var self = this; return nil - }, TMP_GC_start_6.$$arity = 0) + }, $GC_start$6.$$arity = 0), nil) && 'start' })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["corelib/random/seedrandom"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - return (function($base, $super, $parent_nesting) { - function $Random(){}; - var self = $Random = $klass($base, $super, 'Random', $Random); - - var def = self.$$proto, $nesting = [self].concat($parent_nesting); - - - /* jshint ignore:start */ - /* - seedrandom.min.js 2.4.1 (original source: https://github.com/davidbau/seedrandom/blob/2.4.1/seedrandom.min.js) - How to update: - . Chekout the latest release from GitHub: https://github.com/davidbau/seedrandom - . Apply the following commits: - .. Check for hasOwnProperty in flatten(): https://github.com/iliabylich/seedrandom/commit/06a94f59ae3d3956c8b1a2488334cafab6744b04 - .. Add a module id for the RequireJS `define` method: https://github.com/Mogztter/seedrandom/commit/e047540c3d81f955cab9a01d17b8141d439fbd7d - */ - !function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e and Dave Heitzman +, subsequently readapted from an updated version of +ruby's random.c (rev c38a183032a7826df1adabd8aa0725c713d53e1c). + +The original copyright notice from random.c follows. + + This is based on trimmed version of MT19937. To get the original version, + contact . + + The original copyright notice follows. + + A C-program for MT19937, with initialization improved 2002/2/10. + Coded by Takuji Nishimura and Makoto Matsumoto. + This is a faster version by taking Shawn Cokus's optimization, + Matthe Bellew's simplification, Isaku Wada's real version. + + Before using, initialize the state by using init_genrand(mt, seed) + or init_by_array(mt, init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +var MersenneTwister = (function() { + /* Period parameters */ + var N = 624; + var M = 397; + var MATRIX_A = 0x9908b0df; /* constant vector a */ + var UMASK = 0x80000000; /* most significant w-r bits */ + var LMASK = 0x7fffffff; /* least significant r bits */ + var MIXBITS = function(u,v) { return ( ((u) & UMASK) | ((v) & LMASK) ); }; + var TWIST = function(u,v) { return (MIXBITS((u),(v)) >>> 1) ^ ((v & 0x1) ? MATRIX_A : 0x0); }; + + function init(s) { + var mt = {left: 0, next: N, state: new Array(N)}; + init_genrand(mt, s); + return mt; + } + + /* initializes mt[N] with a seed */ + function init_genrand(mt, s) { + var j, i; + mt.state[0] = s >>> 0; + for (j=1; j> 30) >>> 0)) + j); + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array state[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt.state[j] &= 0xffffffff; /* for >32 bit machines */ + } + mt.left = 1; + mt.next = N; + } + + /* generate N words at one time */ + function next_state(mt) { + var p = 0, _p = mt.state; + var j; + + mt.left = N; + mt.next = 0; + + for (j=N-M+1; --j; p++) + _p[p] = _p[p+(M)] ^ TWIST(_p[p+(0)], _p[p+(1)]); + + for (j=M; --j; p++) + _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[p+(1)]); + + _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[0]); + } + + /* generates a random number on [0,0xffffffff]-interval */ + function genrand_int32(mt) { + /* mt must be initialized */ + var y; + + if (--mt.left <= 0) next_state(mt); + y = mt.state[mt.next++]; + + /* Tempering */ + y ^= (y >>> 11); + y ^= (y << 7) & 0x9d2c5680; + y ^= (y << 15) & 0xefc60000; + y ^= (y >>> 18); + + return y >>> 0; + } + + function int_pair_to_real_exclusive(a, b) { + a >>>= 5; + b >>>= 6; + return(a*67108864.0+b)*(1.0/9007199254740992.0); + } + + // generates a random number on [0,1) with 53-bit resolution + function genrand_real(mt) { + /* mt must be initialized */ + var a = genrand_int32(mt), b = genrand_int32(mt); + return int_pair_to_real_exclusive(a, b); + } + + return { genrand_real: genrand_real, init: init }; +})(); +Opal.loaded(["corelib/random/MersenneTwister.js"]); +/* Generated by Opal 1.0.5 */ +Opal.modules["corelib/random/mersenne_twister"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; + + Opal.add_stubs(['$require', '$generator=', '$-']); + + self.$require("corelib/random/MersenneTwister"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Random'); + + var $nesting = [self].concat($parent_nesting), $writer = nil; + + + var MAX_INT = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; + Opal.const_set($nesting[0], 'MERSENNE_TWISTER_GENERATOR', { + new_seed: function() { return Math.round(Math.random() * MAX_INT); }, + reseed: function(seed) { return MersenneTwister.init(seed); }, + rand: function(mt) { return MersenneTwister.genrand_real(mt); } + }); - }, TMP_Random_rand_9.$$arity = -1), nil) && 'rand'; + $writer = [$$($nesting, 'MERSENNE_TWISTER_GENERATOR')]; + $send(self, 'generator=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["corelib/unsupported"] = function(Opal) { - var TMP_public_30, TMP_private_31, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module; + var $public$35, $private$36, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module; Opal.add_stubs(['$raise', '$warn', '$%']); @@ -21313,7 +22880,7 @@ Opal.modules["corelib/unsupported"] = function(Opal) { function handle_unsupported_feature(message) { switch (Opal.config.unsupported_features_severity) { case 'error': - Opal.const_get_relative($nesting, 'Kernel').$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), message) + $$($nesting, 'Kernel').$raise($$($nesting, 'NotImplementedError'), message) break; case 'warning': warn(message) @@ -21333,275 +22900,419 @@ Opal.modules["corelib/unsupported"] = function(Opal) { } ; (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); + var self = $klass($base, $super, 'String'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_$lt$lt_1, TMP_String_capitalize$B_2, TMP_String_chomp$B_3, TMP_String_chop$B_4, TMP_String_downcase$B_5, TMP_String_gsub$B_6, TMP_String_lstrip$B_7, TMP_String_next$B_8, TMP_String_reverse$B_9, TMP_String_slice$B_10, TMP_String_squeeze$B_11, TMP_String_strip$B_12, TMP_String_sub$B_13, TMP_String_succ$B_14, TMP_String_swapcase$B_15, TMP_String_tr$B_16, TMP_String_tr_s$B_17, TMP_String_upcase$B_18; + var $nesting = [self].concat($parent_nesting), $String_$lt$lt$1, $String_capitalize$excl$2, $String_chomp$excl$3, $String_chop$excl$4, $String_downcase$excl$5, $String_gsub$excl$6, $String_lstrip$excl$7, $String_next$excl$8, $String_reverse$excl$9, $String_slice$excl$10, $String_squeeze$excl$11, $String_strip$excl$12, $String_sub$excl$13, $String_succ$excl$14, $String_swapcase$excl$15, $String_tr$excl$16, $String_tr_s$excl$17, $String_upcase$excl$18, $String_prepend$19, $String_$$$eq$20, $String_clear$21, $String_encode$excl$22, $String_unicode_normalize$excl$23; - var ERROR = "String#%s not supported. Mutable String methods are not supported in Opal.";; + var ERROR = "String#%s not supported. Mutable String methods are not supported in Opal."; - Opal.defn(self, '$<<', TMP_String_$lt$lt_1 = function($a_rest) { - var self = this; + Opal.def(self, '$<<', $String_$lt$lt$1 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("<<")) - }, TMP_String_$lt$lt_1.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("<<")); + }, $String_$lt$lt$1.$$arity = -1); - Opal.defn(self, '$capitalize!', TMP_String_capitalize$B_2 = function($a_rest) { - var self = this; + Opal.def(self, '$capitalize!', $String_capitalize$excl$2 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("capitalize!")) - }, TMP_String_capitalize$B_2.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("capitalize!")); + }, $String_capitalize$excl$2.$$arity = -1); - Opal.defn(self, '$chomp!', TMP_String_chomp$B_3 = function($a_rest) { - var self = this; + Opal.def(self, '$chomp!', $String_chomp$excl$3 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("chomp!")) - }, TMP_String_chomp$B_3.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("chomp!")); + }, $String_chomp$excl$3.$$arity = -1); - Opal.defn(self, '$chop!', TMP_String_chop$B_4 = function($a_rest) { - var self = this; + Opal.def(self, '$chop!', $String_chop$excl$4 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("chop!")) - }, TMP_String_chop$B_4.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("chop!")); + }, $String_chop$excl$4.$$arity = -1); - Opal.defn(self, '$downcase!', TMP_String_downcase$B_5 = function($a_rest) { - var self = this; + Opal.def(self, '$downcase!', $String_downcase$excl$5 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("downcase!")) - }, TMP_String_downcase$B_5.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("downcase!")); + }, $String_downcase$excl$5.$$arity = -1); - Opal.defn(self, '$gsub!', TMP_String_gsub$B_6 = function($a_rest) { - var self = this; + Opal.def(self, '$gsub!', $String_gsub$excl$6 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("gsub!")) - }, TMP_String_gsub$B_6.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("gsub!")); + }, $String_gsub$excl$6.$$arity = -1); - Opal.defn(self, '$lstrip!', TMP_String_lstrip$B_7 = function($a_rest) { - var self = this; + Opal.def(self, '$lstrip!', $String_lstrip$excl$7 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("lstrip!")) - }, TMP_String_lstrip$B_7.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("lstrip!")); + }, $String_lstrip$excl$7.$$arity = -1); - Opal.defn(self, '$next!', TMP_String_next$B_8 = function($a_rest) { - var self = this; + Opal.def(self, '$next!', $String_next$excl$8 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("next!")) - }, TMP_String_next$B_8.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("next!")); + }, $String_next$excl$8.$$arity = -1); - Opal.defn(self, '$reverse!', TMP_String_reverse$B_9 = function($a_rest) { - var self = this; + Opal.def(self, '$reverse!', $String_reverse$excl$9 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("reverse!")) - }, TMP_String_reverse$B_9.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("reverse!")); + }, $String_reverse$excl$9.$$arity = -1); - Opal.defn(self, '$slice!', TMP_String_slice$B_10 = function($a_rest) { - var self = this; + Opal.def(self, '$slice!', $String_slice$excl$10 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("slice!")) - }, TMP_String_slice$B_10.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("slice!")); + }, $String_slice$excl$10.$$arity = -1); - Opal.defn(self, '$squeeze!', TMP_String_squeeze$B_11 = function($a_rest) { - var self = this; + Opal.def(self, '$squeeze!', $String_squeeze$excl$11 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("squeeze!")) - }, TMP_String_squeeze$B_11.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("squeeze!")); + }, $String_squeeze$excl$11.$$arity = -1); - Opal.defn(self, '$strip!', TMP_String_strip$B_12 = function($a_rest) { - var self = this; + Opal.def(self, '$strip!', $String_strip$excl$12 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("strip!")) - }, TMP_String_strip$B_12.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("strip!")); + }, $String_strip$excl$12.$$arity = -1); - Opal.defn(self, '$sub!', TMP_String_sub$B_13 = function($a_rest) { - var self = this; + Opal.def(self, '$sub!', $String_sub$excl$13 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("sub!")) - }, TMP_String_sub$B_13.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("sub!")); + }, $String_sub$excl$13.$$arity = -1); - Opal.defn(self, '$succ!', TMP_String_succ$B_14 = function($a_rest) { - var self = this; + Opal.def(self, '$succ!', $String_succ$excl$14 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("succ!")) - }, TMP_String_succ$B_14.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("succ!")); + }, $String_succ$excl$14.$$arity = -1); - Opal.defn(self, '$swapcase!', TMP_String_swapcase$B_15 = function($a_rest) { - var self = this; + Opal.def(self, '$swapcase!', $String_swapcase$excl$15 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("swapcase!")) - }, TMP_String_swapcase$B_15.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("swapcase!")); + }, $String_swapcase$excl$15.$$arity = -1); - Opal.defn(self, '$tr!', TMP_String_tr$B_16 = function($a_rest) { - var self = this; + Opal.def(self, '$tr!', $String_tr$excl$16 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("tr!")) - }, TMP_String_tr$B_16.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("tr!")); + }, $String_tr$excl$16.$$arity = -1); - Opal.defn(self, '$tr_s!', TMP_String_tr_s$B_17 = function($a_rest) { - var self = this; + Opal.def(self, '$tr_s!', $String_tr_s$excl$17 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("tr_s!")) - }, TMP_String_tr_s$B_17.$$arity = -1); - return (Opal.defn(self, '$upcase!', TMP_String_upcase$B_18 = function($a_rest) { - var self = this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("tr_s!")); + }, $String_tr_s$excl$17.$$arity = -1); + + Opal.def(self, '$upcase!', $String_upcase$excl$18 = function($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("upcase!")); + }, $String_upcase$excl$18.$$arity = -1); + + Opal.def(self, '$prepend', $String_prepend$19 = function $$prepend($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), (ERROR)['$%']("upcase!")) - }, TMP_String_upcase$B_18.$$arity = -1), nil) && 'upcase!'; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("prepend")); + }, $String_prepend$19.$$arity = -1); + + Opal.def(self, '$[]=', $String_$$$eq$20 = function($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("[]=")); + }, $String_$$$eq$20.$$arity = -1); + + Opal.def(self, '$clear', $String_clear$21 = function $$clear($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("clear")); + }, $String_clear$21.$$arity = -1); + + Opal.def(self, '$encode!', $String_encode$excl$22 = function($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("encode!")); + }, $String_encode$excl$22.$$arity = -1); + return (Opal.def(self, '$unicode_normalize!', $String_unicode_normalize$excl$23 = function($a) { + var $post_args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("unicode_normalize!")); + }, $String_unicode_normalize$excl$23.$$arity = -1), nil) && 'unicode_normalize!'; })($nesting[0], null, $nesting); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_freeze_19, TMP_Kernel_frozen$q_20; + var $nesting = [self].concat($parent_nesting), $Kernel_freeze$24, $Kernel_frozen$ques$25; - var ERROR = "Object freezing is not supported by Opal";; + var ERROR = "Object freezing is not supported by Opal"; - Opal.defn(self, '$freeze', TMP_Kernel_freeze_19 = function $$freeze() { + Opal.def(self, '$freeze', $Kernel_freeze$24 = function $$freeze() { var self = this; handle_unsupported_feature(ERROR); return self; - }, TMP_Kernel_freeze_19.$$arity = 0); + }, $Kernel_freeze$24.$$arity = 0); - Opal.defn(self, '$frozen?', TMP_Kernel_frozen$q_20 = function() { + Opal.def(self, '$frozen?', $Kernel_frozen$ques$25 = function() { var self = this; handle_unsupported_feature(ERROR); return false; - }, TMP_Kernel_frozen$q_20.$$arity = 0); + }, $Kernel_frozen$ques$25.$$arity = 0); })($nesting[0], $nesting); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_taint_21, TMP_Kernel_untaint_22, TMP_Kernel_tainted$q_23; + var $nesting = [self].concat($parent_nesting), $Kernel_taint$26, $Kernel_untaint$27, $Kernel_tainted$ques$28; - var ERROR = "Object tainting is not supported by Opal";; + var ERROR = "Object tainting is not supported by Opal"; - Opal.defn(self, '$taint', TMP_Kernel_taint_21 = function $$taint() { + Opal.def(self, '$taint', $Kernel_taint$26 = function $$taint() { var self = this; handle_unsupported_feature(ERROR); return self; - }, TMP_Kernel_taint_21.$$arity = 0); + }, $Kernel_taint$26.$$arity = 0); - Opal.defn(self, '$untaint', TMP_Kernel_untaint_22 = function $$untaint() { + Opal.def(self, '$untaint', $Kernel_untaint$27 = function $$untaint() { var self = this; handle_unsupported_feature(ERROR); return self; - }, TMP_Kernel_untaint_22.$$arity = 0); + }, $Kernel_untaint$27.$$arity = 0); - Opal.defn(self, '$tainted?', TMP_Kernel_tainted$q_23 = function() { + Opal.def(self, '$tainted?', $Kernel_tainted$ques$28 = function() { var self = this; handle_unsupported_feature(ERROR); return false; - }, TMP_Kernel_tainted$q_23.$$arity = 0); + }, $Kernel_tainted$ques$28.$$arity = 0); })($nesting[0], $nesting); (function($base, $super, $parent_nesting) { - function $Module(){}; - var self = $Module = $klass($base, $super, 'Module', $Module); + var self = $klass($base, $super, 'Module'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_public_24, TMP_Module_private_class_method_25, TMP_Module_private_method_defined$q_26, TMP_Module_private_constant_27; + var $nesting = [self].concat($parent_nesting), $Module_public$29, $Module_private_class_method$30, $Module_private_method_defined$ques$31, $Module_private_constant$32; - Opal.defn(self, '$public', TMP_Module_public_24 = function($a_rest) { - var self = this, methods; + Opal.def(self, '$public', $Module_public$29 = function($a) { + var $post_args, methods, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - methods = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - methods[$arg_idx - 0] = arguments[$arg_idx]; - } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + methods = $post_args;; if (methods.length === 0) { self.$$module_function = false; } return nil; - - }, TMP_Module_public_24.$$arity = -1); + ; + }, $Module_public$29.$$arity = -1); Opal.alias(self, "private", "public"); Opal.alias(self, "protected", "public"); Opal.alias(self, "nesting", "public"); - Opal.defn(self, '$private_class_method', TMP_Module_private_class_method_25 = function $$private_class_method($a_rest) { - var self = this; + Opal.def(self, '$private_class_method', $Module_private_class_method$30 = function $$private_class_method($a) { + var $post_args, self = this; - return self - }, TMP_Module_private_class_method_25.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self; + }, $Module_private_class_method$30.$$arity = -1); Opal.alias(self, "public_class_method", "private_class_method"); - Opal.defn(self, '$private_method_defined?', TMP_Module_private_method_defined$q_26 = function(obj) { + Opal.def(self, '$private_method_defined?', $Module_private_method_defined$ques$31 = function(obj) { var self = this; return false - }, TMP_Module_private_method_defined$q_26.$$arity = 1); + }, $Module_private_method_defined$ques$31.$$arity = 1); - Opal.defn(self, '$private_constant', TMP_Module_private_constant_27 = function $$private_constant($a_rest) { - var self = this; + Opal.def(self, '$private_constant', $Module_private_constant$32 = function $$private_constant($a) { + var $post_args, self = this; - return nil - }, TMP_Module_private_constant_27.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $Module_private_constant$32.$$arity = -1); Opal.alias(self, "protected_method_defined?", "private_method_defined?"); Opal.alias(self, "public_instance_methods", "instance_methods"); + Opal.alias(self, "public_instance_method", "instance_method"); return Opal.alias(self, "public_method_defined?", "method_defined?"); })($nesting[0], null, $nesting); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_private_methods_28; + var $nesting = [self].concat($parent_nesting), $Kernel_private_methods$33; - Opal.defn(self, '$private_methods', TMP_Kernel_private_methods_28 = function $$private_methods($a_rest) { - var self = this; + Opal.def(self, '$private_methods', $Kernel_private_methods$33 = function $$private_methods($a) { + var $post_args, self = this; - return [] - }, TMP_Kernel_private_methods_28.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return []; + }, $Kernel_private_methods$33.$$arity = -1); Opal.alias(self, "private_instance_methods", "private_methods"); })($nesting[0], $nesting); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_eval_29; + var $nesting = [self].concat($parent_nesting), $Kernel_eval$34; - Opal.defn(self, '$eval', TMP_Kernel_eval_29 = function($a_rest) { - var self = this; + Opal.def(self, '$eval', $Kernel_eval$34 = function($a) { + var $post_args, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), "" + "To use Kernel#eval, you must first require 'opal-parser'. " + ("" + "See https://github.com/opal/opal/blob/" + (Opal.const_get_relative($nesting, 'RUBY_ENGINE_VERSION')) + "/docs/opal_parser.md for details.")) - }, TMP_Kernel_eval_29.$$arity = -1) + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return self.$raise($$($nesting, 'NotImplementedError'), "" + "To use Kernel#eval, you must first require 'opal-parser'. " + ("" + "See https://github.com/opal/opal/blob/" + ($$($nesting, 'RUBY_ENGINE_VERSION')) + "/docs/opal_parser.md for details.")); + }, $Kernel_eval$34.$$arity = -1) })($nesting[0], $nesting); - Opal.defs(self, '$public', TMP_public_30 = function($a_rest) { - var self = this; + Opal.defs(self, '$public', $public$35 = function($a) { + var $post_args, self = this; - return nil - }, TMP_public_30.$$arity = -1); - return Opal.defs(self, '$private', TMP_private_31 = function($a_rest) { - var self = this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $public$35.$$arity = -1); + return (Opal.defs(self, '$private', $private$36 = function($a) { + var $post_args, self = this; - return nil - }, TMP_private_31.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $private$36.$$arity = -1), nil) && 'private'; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$require']); self.$require("opal/base"); self.$require("opal/mini"); - self.$require("corelib/string/inheritance"); + self.$require("corelib/kernel/format"); self.$require("corelib/string/encoding"); self.$require("corelib/math"); self.$require("corelib/complex"); @@ -21614,10 +23325,11 @@ Opal.modules["opal"] = function(Opal) { self.$require("corelib/file"); self.$require("corelib/process"); self.$require("corelib/random"); + self.$require("corelib/random/mersenne_twister.js"); return self.$require("corelib/unsupported"); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["native"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -21625,17 +23337,17 @@ Opal.modules["native"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range, $hash2 = Opal.hash2, $klass = Opal.klass, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range, $klass = Opal.klass, $gvars = Opal.gvars; - Opal.add_stubs(['$try_convert', '$native?', '$respond_to?', '$to_n', '$raise', '$inspect', '$Native', '$proc', '$map!', '$end_with?', '$define_method', '$[]', '$convert', '$call', '$to_proc', '$new', '$each', '$native_reader', '$native_writer', '$extend', '$is_a?', '$map', '$alias_method', '$to_a', '$_Array', '$include', '$method_missing', '$bind', '$instance_method', '$slice', '$-', '$length', '$[]=', '$enum_for', '$===', '$>=', '$<<', '$each_pair', '$_initialize', '$name', '$exiting_mid', '$native_module']); + Opal.add_stubs(['$try_convert', '$native?', '$respond_to?', '$to_n', '$raise', '$inspect', '$Native', '$proc', '$map!', '$end_with?', '$define_method', '$[]', '$convert', '$call', '$to_proc', '$new', '$each', '$native_reader', '$native_writer', '$extend', '$warn', '$include', '$is_a?', '$map', '$to_a', '$_Array', '$method_missing', '$bind', '$instance_method', '$slice', '$-', '$length', '$[]=', '$enum_for', '$===', '$>=', '$<<', '$each_pair', '$_initialize', '$name', '$native_module']); (function($base, $parent_nesting) { - var $Native, self = $Native = $module($base, 'Native'); + var self = $module($base, 'Native'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Native_is_a$q_1, TMP_Native_try_convert_2, TMP_Native_convert_3, TMP_Native_call_4, TMP_Native_proc_5, TMP_Native_included_19, TMP_Native_initialize_20, TMP_Native_to_n_21; + var $nesting = [self].concat($parent_nesting), $Native_is_a$ques$1, $Native_try_convert$2, $Native_convert$3, $Native_call$4, $Native_proc$5, $Native_included$22; - Opal.defs(self, '$is_a?', TMP_Native_is_a$q_1 = function(object, klass) { + Opal.defs(self, '$is_a?', $Native_is_a$ques$1 = function(object, klass) { var self = this; @@ -21646,13 +23358,15 @@ Opal.modules["native"] = function(Opal) { return false; } - }, TMP_Native_is_a$q_1.$$arity = 2); - Opal.defs(self, '$try_convert', TMP_Native_try_convert_2 = function $$try_convert(value, default$) { + }, $Native_is_a$ques$1.$$arity = 2); + Opal.defs(self, '$try_convert', $Native_try_convert$2 = function $$try_convert(value, default$) { var self = this; + + if (default$ == null) { default$ = nil; - } + }; if (self['$native?'](value)) { return value; @@ -21663,9 +23377,9 @@ Opal.modules["native"] = function(Opal) { else { return default$; } - - }, TMP_Native_try_convert_2.$$arity = -2); - Opal.defs(self, '$convert', TMP_Native_convert_3 = function $$convert(value) { + ; + }, $Native_try_convert$2.$$arity = -2); + Opal.defs(self, '$convert', $Native_convert$3 = function $$convert(value) { var self = this; @@ -21676,20 +23390,21 @@ Opal.modules["native"] = function(Opal) { return value.$to_n(); } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + (value.$inspect()) + " isn't native"); + self.$raise($$($nesting, 'ArgumentError'), "" + (value.$inspect()) + " isn't native"); } - }, TMP_Native_convert_3.$$arity = 1); - Opal.defs(self, '$call', TMP_Native_call_4 = function $$call(obj, key, $a_rest) { - var self = this, args, $iter = TMP_Native_call_4.$$p, block = $iter || nil; + }, $Native_convert$3.$$arity = 1); + Opal.defs(self, '$call', $Native_call$4 = function $$call(obj, key, $a) { + var $iter = $Native_call$4.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 2; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 2; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 2] = arguments[$arg_idx]; - } - if ($iter) TMP_Native_call_4.$$p = null; + if ($iter) $Native_call$4.$$p = null; + + + if ($iter) $Native_call$4.$$p = null;; + + $post_args = Opal.slice.call(arguments, 2, arguments.length); + + args = $post_args;; var prop = obj[key]; @@ -21712,29 +23427,34 @@ Opal.modules["native"] = function(Opal) { else { return self.$Native(prop); } - - }, TMP_Native_call_4.$$arity = -3); - Opal.defs(self, '$proc', TMP_Native_proc_5 = function $$proc() { - var TMP_6, self = this, $iter = TMP_Native_proc_5.$$p, block = $iter || nil; + ; + }, $Native_call$4.$$arity = -3); + Opal.defs(self, '$proc', $Native_proc$5 = function $$proc() { + var $iter = $Native_proc$5.$$p, block = $iter || nil, $$6, self = this; - if ($iter) TMP_Native_proc_5.$$p = null; + if ($iter) $Native_proc$5.$$p = null; + + if ($iter) $Native_proc$5.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'LocalJumpError'), "no block given") + } else { + self.$raise($$($nesting, 'LocalJumpError'), "no block given") }; - return $send(Opal.const_get_qualified('::', 'Kernel'), 'proc', [], (TMP_6 = function($a_rest){var self = TMP_6.$$s || this, args, TMP_7, instance = nil; + return $send($$$('::', 'Kernel'), 'proc', [], ($$6 = function($a){var self = $$6.$$s || this, $post_args, args, $$7, instance = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - $send(args, 'map!', [], (TMP_7 = function(arg){var self = TMP_7.$$s || this; -if (arg == null) arg = nil; - return self.$Native(arg)}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + $send(args, 'map!', [], ($$7 = function(arg){var self = $$7.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return self.$Native(arg);}, $$7.$$s = self, $$7.$$arity = 1, $$7)); instance = self.$Native(this); // if global is current scope, run the block in the scope it was defined @@ -21751,242 +23471,279 @@ if (arg == null) arg = nil; finally { block.$$s = self_; } - ;}, TMP_6.$$s = self, TMP_6.$$arity = -1, TMP_6)); - }, TMP_Native_proc_5.$$arity = 0); + ;}, $$6.$$s = self, $$6.$$arity = -1, $$6)); + }, $Native_proc$5.$$arity = 0); (function($base, $parent_nesting) { - var $Helpers, self = $Helpers = $module($base, 'Helpers'); + var self = $module($base, 'Helpers'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Helpers_alias_native_11, TMP_Helpers_native_reader_14, TMP_Helpers_native_writer_17, TMP_Helpers_native_accessor_18; + var $nesting = [self].concat($parent_nesting), $Helpers_alias_native$8, $Helpers_native_reader$12, $Helpers_native_writer$15, $Helpers_native_accessor$18; - Opal.defn(self, '$alias_native', TMP_Helpers_alias_native_11 = function $$alias_native(new$, $old, $kwargs) { - var TMP_8, TMP_9, TMP_10, self = this, $post_args, as, old; + Opal.def(self, '$alias_native', $Helpers_alias_native$8 = function $$alias_native(new$, $a, $b) { + var $post_args, $kwargs, old, as, $$9, $$10, $$11, $iter = $Helpers_alias_native$8.$$p, $yield = $iter || nil, self = this; + if ($iter) $Helpers_alias_native$8.$$p = null; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + $kwargs = Opal.extract_kwargs($post_args); - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) { + old = $post_args[0]; + $post_args.splice(0, 1); } + if (old == null) { + old = new$; + }; + as = $kwargs.$$smap["as"]; if (as == null) { as = nil - } - if (0 < $post_args.length) { - old = $post_args.splice(0,1)[0]; - } - if (old == null) { - old = new$; - } + }; if ($truthy(old['$end_with?']("="))) { - return $send(self, 'define_method', [new$], (TMP_8 = function(value){var self = TMP_8.$$s || this; + return $send(self, 'define_method', [new$], ($$9 = function(value){var self = $$9.$$s || this; if (self["native"] == null) self["native"] = nil; -if (value == null) value = nil; + - self["native"][old['$[]']($range(0, -2, false))] = Opal.const_get_relative($nesting, 'Native').$convert(value); - return value;}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)) + + if (value == null) { + value = nil; + }; + self["native"][old['$[]']($range(0, -2, false))] = $$($nesting, 'Native').$convert(value); + return value;}, $$9.$$s = self, $$9.$$arity = 1, $$9)) } else if ($truthy(as)) { - return $send(self, 'define_method', [new$], (TMP_9 = function($a_rest){var self = TMP_9.$$s || this, block, args, value = nil; + return $send(self, 'define_method', [new$], ($$10 = function($c){var self = $$10.$$s || this, $iter = $$10.$$p, block = $iter || nil, $post_args, args, value = nil; if (self["native"] == null) self["native"] = nil; - block = TMP_9.$$p || nil; - if (block) TMP_9.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($truthy((value = $send(Opal.const_get_relative($nesting, 'Native'), 'call', [self["native"], old].concat(Opal.to_a(args)), block.$to_proc())))) { + + + if ($iter) $$10.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + value = $send($$($nesting, 'Native'), 'call', [self["native"], old].concat(Opal.to_a(args)), block.$to_proc()); + if ($truthy(value)) { return as.$new(value.$to_n()) - } else { + } else { return nil - }}, TMP_9.$$s = self, TMP_9.$$arity = -1, TMP_9)) - } else { - return $send(self, 'define_method', [new$], (TMP_10 = function($a_rest){var self = TMP_10.$$s || this, block, args; + };}, $$10.$$s = self, $$10.$$arity = -1, $$10)) + } else { + return $send(self, 'define_method', [new$], ($$11 = function($c){var self = $$11.$$s || this, $iter = $$11.$$p, block = $iter || nil, $post_args, args; if (self["native"] == null) self["native"] = nil; - block = TMP_10.$$p || nil; - if (block) TMP_10.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(Opal.const_get_relative($nesting, 'Native'), 'call', [self["native"], old].concat(Opal.to_a(args)), block.$to_proc())}, TMP_10.$$s = self, TMP_10.$$arity = -1, TMP_10)) - } - }, TMP_Helpers_alias_native_11.$$arity = -2); + + + if ($iter) $$11.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send($$($nesting, 'Native'), 'call', [self["native"], old].concat(Opal.to_a(args)), block.$to_proc());}, $$11.$$s = self, $$11.$$arity = -1, $$11)) + }; + }, $Helpers_alias_native$8.$$arity = -2); - Opal.defn(self, '$native_reader', TMP_Helpers_native_reader_14 = function $$native_reader($a_rest) { - var TMP_12, self = this, names; + Opal.def(self, '$native_reader', $Helpers_native_reader$12 = function $$native_reader($a) { + var $post_args, names, $$13, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(names, 'each', [], (TMP_12 = function(name){var self = TMP_12.$$s || this, TMP_13; -if (name == null) name = nil; - return $send(self, 'define_method', [name], (TMP_13 = function(){var self = TMP_13.$$s || this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + return $send(names, 'each', [], ($$13 = function(name){var self = $$13.$$s || this, $$14; + + + + if (name == null) { + name = nil; + }; + return $send(self, 'define_method', [name], ($$14 = function(){var self = $$14.$$s || this; if (self["native"] == null) self["native"] = nil; - return self.$Native(self["native"][name])}, TMP_13.$$s = self, TMP_13.$$arity = 0, TMP_13))}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)) - }, TMP_Helpers_native_reader_14.$$arity = -1); + return self.$Native(self["native"][name])}, $$14.$$s = self, $$14.$$arity = 0, $$14));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); + }, $Helpers_native_reader$12.$$arity = -1); - Opal.defn(self, '$native_writer', TMP_Helpers_native_writer_17 = function $$native_writer($a_rest) { - var TMP_15, self = this, names; + Opal.def(self, '$native_writer', $Helpers_native_writer$15 = function $$native_writer($a) { + var $post_args, names, $$16, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(names, 'each', [], (TMP_15 = function(name){var self = TMP_15.$$s || this, TMP_16; -if (name == null) name = nil; - return $send(self, 'define_method', ["" + (name) + "="], (TMP_16 = function(value){var self = TMP_16.$$s || this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + return $send(names, 'each', [], ($$16 = function(name){var self = $$16.$$s || this, $$17; + + + + if (name == null) { + name = nil; + }; + return $send(self, 'define_method', ["" + (name) + "="], ($$17 = function(value){var self = $$17.$$s || this; if (self["native"] == null) self["native"] = nil; -if (value == null) value = nil; - return self.$Native(self["native"][name] = value)}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16))}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)) - }, TMP_Helpers_native_writer_17.$$arity = -1); + + + + if (value == null) { + value = nil; + }; + return self.$Native(self["native"][name] = value);}, $$17.$$s = self, $$17.$$arity = 1, $$17));}, $$16.$$s = self, $$16.$$arity = 1, $$16)); + }, $Helpers_native_writer$15.$$arity = -1); - Opal.defn(self, '$native_accessor', TMP_Helpers_native_accessor_18 = function $$native_accessor($a_rest) { - var self = this, names; + Opal.def(self, '$native_accessor', $Helpers_native_accessor$18 = function $$native_accessor($a) { + var $post_args, names, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; $send(self, 'native_reader', Opal.to_a(names)); return $send(self, 'native_writer', Opal.to_a(names)); - }, TMP_Helpers_native_accessor_18.$$arity = -1); + }, $Helpers_native_accessor$18.$$arity = -1); })($nesting[0], $nesting); - Opal.defs(self, '$included', TMP_Native_included_19 = function $$included(klass) { - var self = this; + (function($base, $parent_nesting) { + var self = $module($base, 'Wrapper'); - return klass.$extend(Opal.const_get_relative($nesting, 'Helpers')) - }, TMP_Native_included_19.$$arity = 1); - - Opal.defn(self, '$initialize', TMP_Native_initialize_20 = function $$initialize(native$) { - var self = this; + var $nesting = [self].concat($parent_nesting), $Wrapper_initialize$19, $Wrapper_to_n$20, $Wrapper_included$21; - if ($truthy(Opal.const_get_qualified('::', 'Kernel')['$native?'](native$))) { + + Opal.def(self, '$initialize', $Wrapper_initialize$19 = function $$initialize(native$) { + var self = this; + + + if ($truthy($$$('::', 'Kernel')['$native?'](native$))) { } else { - Opal.const_get_qualified('::', 'Kernel').$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + (native$.$inspect()) + " isn't native") - }; - return (self["native"] = native$); - }, TMP_Native_initialize_20.$$arity = 1); - - Opal.defn(self, '$to_n', TMP_Native_to_n_21 = function $$to_n() { + $$$('::', 'Kernel').$raise($$($nesting, 'ArgumentError'), "" + (native$.$inspect()) + " isn't native") + }; + return (self["native"] = native$); + }, $Wrapper_initialize$19.$$arity = 1); + + Opal.def(self, '$to_n', $Wrapper_to_n$20 = function $$to_n() { + var self = this; + if (self["native"] == null) self["native"] = nil; + + return self["native"] + }, $Wrapper_to_n$20.$$arity = 0); + Opal.defs(self, '$included', $Wrapper_included$21 = function $$included(klass) { + var self = this; + + return klass.$extend($$($nesting, 'Helpers')) + }, $Wrapper_included$21.$$arity = 1); + })($nesting[0], $nesting); + Opal.defs(self, '$included', $Native_included$22 = function $$included(base) { var self = this; - if (self["native"] == null) self["native"] = nil; - return self["native"] - }, TMP_Native_to_n_21.$$arity = 0); + + self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."); + return base.$include($$($nesting, 'Wrapper')); + }, $Native_included$22.$$arity = 1); })($nesting[0], $nesting); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_native$q_22, TMP_Kernel_Native_25, TMP_Kernel_Array_26; + var $nesting = [self].concat($parent_nesting), $Kernel_native$ques$23, $Kernel_Native$24, $Kernel_Array$27; - Opal.defn(self, '$native?', TMP_Kernel_native$q_22 = function(value) { + Opal.def(self, '$native?', $Kernel_native$ques$23 = function(value) { var self = this; - return value == null || !value.$$class - }, TMP_Kernel_native$q_22.$$arity = 1); + return value == null || !value.$$class; + }, $Kernel_native$ques$23.$$arity = 1); - Opal.defn(self, '$Native', TMP_Kernel_Native_25 = function $$Native(obj) { - var TMP_23, TMP_24, self = this; + Opal.def(self, '$Native', $Kernel_Native$24 = function $$Native(obj) { + var $$25, $$26, $iter = $Kernel_Native$24.$$p, $yield = $iter || nil, self = this; + if ($iter) $Kernel_Native$24.$$p = null; if ($truthy(obj == null)) { return nil } else if ($truthy(self['$native?'](obj))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Native'), 'Object').$new(obj) - } else if ($truthy(obj['$is_a?'](Opal.const_get_relative($nesting, 'Array')))) { - return $send(obj, 'map', [], (TMP_23 = function(o){var self = TMP_23.$$s || this; -if (o == null) o = nil; - return self.$Native(o)}, TMP_23.$$s = self, TMP_23.$$arity = 1, TMP_23)) - } else if ($truthy(obj['$is_a?'](Opal.const_get_relative($nesting, 'Proc')))) { - return $send(self, 'proc', [], (TMP_24 = function($a_rest){var self = TMP_24.$$s || this, block, args; - - block = TMP_24.$$p || nil; - if (block) TMP_24.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self.$Native($send(obj, 'call', Opal.to_a(args), block.$to_proc()))}, TMP_24.$$s = self, TMP_24.$$arity = -1, TMP_24)) - } else { + return $$$($$($nesting, 'Native'), 'Object').$new(obj) + } else if ($truthy(obj['$is_a?']($$($nesting, 'Array')))) { + return $send(obj, 'map', [], ($$25 = function(o){var self = $$25.$$s || this; + + + + if (o == null) { + o = nil; + }; + return self.$Native(o);}, $$25.$$s = self, $$25.$$arity = 1, $$25)) + } else if ($truthy(obj['$is_a?']($$($nesting, 'Proc')))) { + return $send(self, 'proc', [], ($$26 = function($a){var self = $$26.$$s || this, $iter = $$26.$$p, block = $iter || nil, $post_args, args; + + + + if ($iter) $$26.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self.$Native($send(obj, 'call', Opal.to_a(args), block.$to_proc()));}, $$26.$$s = self, $$26.$$arity = -1, $$26)) + } else { return obj } - }, TMP_Kernel_Native_25.$$arity = 1); - self.$alias_method("_Array", "Array"); + }, $Kernel_Native$24.$$arity = 1); + Opal.alias(self, "_Array", "Array"); - Opal.defn(self, '$Array', TMP_Kernel_Array_26 = function $$Array(object, $a_rest) { - var self = this, args, $iter = TMP_Kernel_Array_26.$$p, block = $iter || nil; + Opal.def(self, '$Array', $Kernel_Array$27 = function $$Array(object, $a) { + var $iter = $Kernel_Array$27.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Kernel_Array_26.$$p = null; + if ($iter) $Kernel_Array$27.$$p = null; + + if ($iter) $Kernel_Array$27.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; if ($truthy(self['$native?'](object))) { - return $send(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Native'), 'Array'), 'new', [object].concat(Opal.to_a(args)), block.$to_proc()).$to_a()}; + return $send($$$($$($nesting, 'Native'), 'Array'), 'new', [object].concat(Opal.to_a(args)), block.$to_proc()).$to_a()}; return self.$_Array(object); - }, TMP_Kernel_Array_26.$$arity = -2); + }, $Kernel_Array$27.$$arity = -2); })($nesting[0], $nesting); (function($base, $super, $parent_nesting) { - function $Object(){}; - var self = $Object = $klass($base, $super, 'Object', $Object); + var self = $klass($base, $super, 'Object'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Object_$eq$eq_27, TMP_Object_has_key$q_28, TMP_Object_each_29, TMP_Object_$$_30, TMP_Object_$$$eq_31, TMP_Object_merge$B_32, TMP_Object_respond_to$q_33, TMP_Object_respond_to_missing$q_34, TMP_Object_method_missing_35, TMP_Object_nil$q_36, TMP_Object_is_a$q_37, TMP_Object_instance_of$q_38, TMP_Object_class_39, TMP_Object_to_a_40, TMP_Object_inspect_41; + var $nesting = [self].concat($parent_nesting), $Object_$eq_eq$28, $Object_has_key$ques$29, $Object_each$30, $Object_$$$31, $Object_$$$eq$32, $Object_merge$excl$33, $Object_respond_to$ques$34, $Object_respond_to_missing$ques$35, $Object_method_missing$36, $Object_nil$ques$37, $Object_is_a$ques$38, $Object_instance_of$ques$39, $Object_class$40, $Object_to_a$41, $Object_inspect$42; - def["native"] = nil; + self.$$prototype["native"] = nil; - self.$include(Opal.const_get_qualified('::', 'Native')); + self.$include($$$($$$('::', 'Native'), 'Wrapper')); - Opal.defn(self, '$==', TMP_Object_$eq$eq_27 = function(other) { + Opal.def(self, '$==', $Object_$eq_eq$28 = function(other) { var self = this; - return self["native"] === Opal.const_get_qualified('::', 'Native').$try_convert(other) - }, TMP_Object_$eq$eq_27.$$arity = 1); + return self["native"] === $$$('::', 'Native').$try_convert(other) + }, $Object_$eq_eq$28.$$arity = 1); - Opal.defn(self, '$has_key?', TMP_Object_has_key$q_28 = function(name) { + Opal.def(self, '$has_key?', $Object_has_key$ques$29 = function(name) { var self = this; return Opal.hasOwnProperty.call(self["native"], name) - }, TMP_Object_has_key$q_28.$$arity = 1); + }, $Object_has_key$ques$29.$$arity = 1); Opal.alias(self, "key?", "has_key?"); Opal.alias(self, "include?", "has_key?"); Opal.alias(self, "member?", "has_key?"); - Opal.defn(self, '$each', TMP_Object_each_29 = function $$each($a_rest) { - var self = this, args, $iter = TMP_Object_each_29.$$p, $yield = $iter || nil; + Opal.def(self, '$each', $Object_each$30 = function $$each($a) { + var $post_args, args, $iter = $Object_each$30.$$p, $yield = $iter || nil, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Object_each_29.$$p = null; + if ($iter) $Object_each$30.$$p = null; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if (($yield !== nil)) { @@ -21995,12 +23752,12 @@ if (o == null) o = nil; } ; return self; - } else { + } else { return $send(self, 'method_missing', ["each"].concat(Opal.to_a(args))) - } - }, TMP_Object_each_29.$$arity = -1); + }; + }, $Object_each$30.$$arity = -1); - Opal.defn(self, '$[]', TMP_Object_$$_30 = function(key) { + Opal.def(self, '$[]', $Object_$$$31 = function(key) { var self = this; @@ -22010,154 +23767,167 @@ if (o == null) o = nil; return prop; } else { - return Opal.const_get_qualified('::', 'Native').$call(self["native"], key) + return $$$('::', 'Native').$call(self["native"], key) } - }, TMP_Object_$$_30.$$arity = 1); + }, $Object_$$$31.$$arity = 1); - Opal.defn(self, '$[]=', TMP_Object_$$$eq_31 = function(key, value) { + Opal.def(self, '$[]=', $Object_$$$eq$32 = function(key, value) { var self = this, native$ = nil; - native$ = Opal.const_get_qualified('::', 'Native').$try_convert(value); + native$ = $$$('::', 'Native').$try_convert(value); if ($truthy(native$ === nil)) { return self["native"][key] = value - } else { + } else { return self["native"][key] = native$ }; - }, TMP_Object_$$$eq_31.$$arity = 2); + }, $Object_$$$eq$32.$$arity = 2); - Opal.defn(self, '$merge!', TMP_Object_merge$B_32 = function(other) { + Opal.def(self, '$merge!', $Object_merge$excl$33 = function(other) { var self = this; - other = Opal.const_get_qualified('::', 'Native').$convert(other); + other = $$$('::', 'Native').$convert(other); for (var prop in other) { self["native"][prop] = other[prop]; } ; return self; - }, TMP_Object_merge$B_32.$$arity = 1); + }, $Object_merge$excl$33.$$arity = 1); - Opal.defn(self, '$respond_to?', TMP_Object_respond_to$q_33 = function(name, include_all) { + Opal.def(self, '$respond_to?', $Object_respond_to$ques$34 = function(name, include_all) { var self = this; + + if (include_all == null) { include_all = false; - } - return Opal.const_get_qualified('::', 'Kernel').$instance_method("respond_to?").$bind(self).$call(name, include_all) - }, TMP_Object_respond_to$q_33.$$arity = -2); + }; + return $$$('::', 'Kernel').$instance_method("respond_to?").$bind(self).$call(name, include_all); + }, $Object_respond_to$ques$34.$$arity = -2); - Opal.defn(self, '$respond_to_missing?', TMP_Object_respond_to_missing$q_34 = function(name, include_all) { + Opal.def(self, '$respond_to_missing?', $Object_respond_to_missing$ques$35 = function(name, include_all) { var self = this; + + if (include_all == null) { include_all = false; - } - return Opal.hasOwnProperty.call(self["native"], name) - }, TMP_Object_respond_to_missing$q_34.$$arity = -2); + }; + return Opal.hasOwnProperty.call(self["native"], name); + }, $Object_respond_to_missing$ques$35.$$arity = -2); - Opal.defn(self, '$method_missing', TMP_Object_method_missing_35 = function $$method_missing(mid, $a_rest) { - var self = this, args, $iter = TMP_Object_method_missing_35.$$p, block = $iter || nil, $writer = nil; + Opal.def(self, '$method_missing', $Object_method_missing$36 = function $$method_missing(mid, $a) { + var $iter = $Object_method_missing$36.$$p, block = $iter || nil, $post_args, args, self = this, $writer = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Object_method_missing_35.$$p = null; + if ($iter) $Object_method_missing$36.$$p = null; + + + if ($iter) $Object_method_missing$36.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; if (mid.charAt(mid.length - 1) === '=') { return (($writer = [mid.$slice(0, $rb_minus(mid.$length(), 1)), args['$[]'](0)]), $send(self, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); } else { - return $send(Opal.const_get_qualified('::', 'Native'), 'call', [self["native"], mid].concat(Opal.to_a(args)), block.$to_proc()); + return $send($$$('::', 'Native'), 'call', [self["native"], mid].concat(Opal.to_a(args)), block.$to_proc()); } + ; + }, $Object_method_missing$36.$$arity = -2); - }, TMP_Object_method_missing_35.$$arity = -2); - - Opal.defn(self, '$nil?', TMP_Object_nil$q_36 = function() { + Opal.def(self, '$nil?', $Object_nil$ques$37 = function() { var self = this; return false - }, TMP_Object_nil$q_36.$$arity = 0); + }, $Object_nil$ques$37.$$arity = 0); - Opal.defn(self, '$is_a?', TMP_Object_is_a$q_37 = function(klass) { + Opal.def(self, '$is_a?', $Object_is_a$ques$38 = function(klass) { var self = this; - return Opal.is_a(self, klass) - }, TMP_Object_is_a$q_37.$$arity = 1); + return Opal.is_a(self, klass); + }, $Object_is_a$ques$38.$$arity = 1); Opal.alias(self, "kind_of?", "is_a?"); - Opal.defn(self, '$instance_of?', TMP_Object_instance_of$q_38 = function(klass) { + Opal.def(self, '$instance_of?', $Object_instance_of$ques$39 = function(klass) { var self = this; - return self.$$class === klass - }, TMP_Object_instance_of$q_38.$$arity = 1); + return self.$$class === klass; + }, $Object_instance_of$ques$39.$$arity = 1); - Opal.defn(self, '$class', TMP_Object_class_39 = function() { + Opal.def(self, '$class', $Object_class$40 = function() { var self = this; - return self.$$class - }, TMP_Object_class_39.$$arity = 0); + return self.$$class; + }, $Object_class$40.$$arity = 0); - Opal.defn(self, '$to_a', TMP_Object_to_a_40 = function $$to_a(options) { - var self = this, $iter = TMP_Object_to_a_40.$$p, block = $iter || nil; + Opal.def(self, '$to_a', $Object_to_a$41 = function $$to_a(options) { + var $iter = $Object_to_a$41.$$p, block = $iter || nil, self = this; + if ($iter) $Object_to_a$41.$$p = null; + + + if ($iter) $Object_to_a$41.$$p = null;; + if (options == null) { options = $hash2([], {}); - } - if ($iter) TMP_Object_to_a_40.$$p = null; - return $send(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a() - }, TMP_Object_to_a_40.$$arity = -1); - return (Opal.defn(self, '$inspect', TMP_Object_inspect_41 = function $$inspect() { + }; + return $send($$$($$$('::', 'Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a(); + }, $Object_to_a$41.$$arity = -1); + return (Opal.def(self, '$inspect', $Object_inspect$42 = function $$inspect() { var self = this; return "" + "#" - }, TMP_Object_inspect_41.$$arity = 0), nil) && 'inspect'; - })(Opal.const_get_relative($nesting, 'Native'), Opal.const_get_relative($nesting, 'BasicObject'), $nesting); + }, $Object_inspect$42.$$arity = 0), nil) && 'inspect'; + })($$($nesting, 'Native'), $$($nesting, 'BasicObject'), $nesting); (function($base, $super, $parent_nesting) { - function $Array(){}; - var self = $Array = $klass($base, $super, 'Array', $Array); + var self = $klass($base, $super, 'Array'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_initialize_42, TMP_Array_each_43, TMP_Array_$$_44, TMP_Array_$$$eq_45, TMP_Array_last_46, TMP_Array_length_47, TMP_Array_inspect_48; + var $nesting = [self].concat($parent_nesting), $Array_initialize$43, $Array_each$44, $Array_$$$45, $Array_$$$eq$46, $Array_last$47, $Array_length$48, $Array_inspect$49; - def.named = def["native"] = def.get = def.block = def.set = def.length = nil; + self.$$prototype.named = self.$$prototype["native"] = self.$$prototype.get = self.$$prototype.block = self.$$prototype.set = self.$$prototype.length = nil; - self.$include(Opal.const_get_relative($nesting, 'Native')); - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); + self.$include($$$($$($nesting, 'Native'), 'Wrapper')); + self.$include($$($nesting, 'Enumerable')); - Opal.defn(self, '$initialize', TMP_Array_initialize_42 = function $$initialize(native$, options) { - var $a, self = this, $iter = TMP_Array_initialize_42.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Array_initialize$43 = function $$initialize(native$, options) { + var $iter = $Array_initialize$43.$$p, block = $iter || nil, $a, self = this; + if ($iter) $Array_initialize$43.$$p = null; + + + if ($iter) $Array_initialize$43.$$p = null;; + if (options == null) { options = $hash2([], {}); - } - if ($iter) TMP_Array_initialize_42.$$p = null; - - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Array_initialize_42, false), [native$], null); + }; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $Array_initialize$43, false), [native$], null); self.get = ($truthy($a = options['$[]']("get")) ? $a : options['$[]']("access")); self.named = options['$[]']("named"); self.set = ($truthy($a = options['$[]']("set")) ? $a : options['$[]']("access")); self.length = ($truthy($a = options['$[]']("length")) ? $a : "length"); self.block = block; if ($truthy(self.$length() == null)) { - return self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no length found on the array-like object") - } else { + return self.$raise($$($nesting, 'ArgumentError'), "no length found on the array-like object") + } else { return nil }; - }, TMP_Array_initialize_42.$$arity = -2); + }, $Array_initialize$43.$$arity = -2); - Opal.defn(self, '$each', TMP_Array_each_43 = function $$each() { - var self = this, $iter = TMP_Array_each_43.$$p, block = $iter || nil; + Opal.def(self, '$each', $Array_each$44 = function $$each() { + var $iter = $Array_each$44.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Array_each_43.$$p = null; + if ($iter) $Array_each$44.$$p = null; + + if ($iter) $Array_each$44.$$p = null;; if ($truthy(block)) { - } else { + } else { return self.$enum_for("each") }; @@ -22166,51 +23936,53 @@ if (o == null) o = nil; } ; return self; - }, TMP_Array_each_43.$$arity = 0); + }, $Array_each$44.$$arity = 0); - Opal.defn(self, '$[]', TMP_Array_$$_44 = function(index) { + Opal.def(self, '$[]', $Array_$$$45 = function(index) { var self = this, result = nil, $case = nil; result = (function() {$case = index; - if (Opal.const_get_relative($nesting, 'String')['$===']($case) || Opal.const_get_relative($nesting, 'Symbol')['$===']($case)) {if ($truthy(self.named)) { + if ($$($nesting, 'String')['$===']($case) || $$($nesting, 'Symbol')['$===']($case)) {if ($truthy(self.named)) { return self["native"][self.named](index) - } else { + } else { return self["native"][index] }} - else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {if ($truthy(self.get)) { + else if ($$($nesting, 'Integer')['$===']($case)) {if ($truthy(self.get)) { return self["native"][self.get](index) - } else { + } else { return self["native"][index] }} else { return nil }})(); if ($truthy(result)) { if ($truthy(self.block)) { return self.block.$call(result) - } else { + } else { return self.$Native(result) } - } else { + } else { return nil }; - }, TMP_Array_$$_44.$$arity = 1); + }, $Array_$$$45.$$arity = 1); - Opal.defn(self, '$[]=', TMP_Array_$$$eq_45 = function(index, value) { + Opal.def(self, '$[]=', $Array_$$$eq$46 = function(index, value) { var self = this; if ($truthy(self.set)) { - return self["native"][self.set](index, Opal.const_get_relative($nesting, 'Native').$convert(value)) - } else { - return self["native"][index] = Opal.const_get_relative($nesting, 'Native').$convert(value) + return self["native"][self.set](index, $$($nesting, 'Native').$convert(value)) + } else { + return self["native"][index] = $$($nesting, 'Native').$convert(value) } - }, TMP_Array_$$$eq_45.$$arity = 2); + }, $Array_$$$eq$46.$$arity = 2); - Opal.defn(self, '$last', TMP_Array_last_46 = function $$last(count) { + Opal.def(self, '$last', $Array_last$47 = function $$last(count) { var $a, self = this, index = nil, result = nil; + + if (count == null) { count = nil; - } + }; if ($truthy(count)) { index = $rb_minus(self.$length(), 1); @@ -22221,108 +23993,110 @@ if (o == null) o = nil; index = $rb_minus(index, 1); }; return result; - } else { + } else { return self['$[]']($rb_minus(self.$length(), 1)) - } - }, TMP_Array_last_46.$$arity = -1); + }; + }, $Array_last$47.$$arity = -1); - Opal.defn(self, '$length', TMP_Array_length_47 = function $$length() { + Opal.def(self, '$length', $Array_length$48 = function $$length() { var self = this; return self["native"][self.length] - }, TMP_Array_length_47.$$arity = 0); + }, $Array_length$48.$$arity = 0); Opal.alias(self, "to_ary", "to_a"); - return (Opal.defn(self, '$inspect', TMP_Array_inspect_48 = function $$inspect() { + return (Opal.def(self, '$inspect', $Array_inspect$49 = function $$inspect() { var self = this; return self.$to_a().$inspect() - }, TMP_Array_inspect_48.$$arity = 0), nil) && 'inspect'; - })(Opal.const_get_relative($nesting, 'Native'), null, $nesting); + }, $Array_inspect$49.$$arity = 0), nil) && 'inspect'; + })($$($nesting, 'Native'), null, $nesting); (function($base, $super, $parent_nesting) { - function $Numeric(){}; - var self = $Numeric = $klass($base, $super, 'Numeric', $Numeric); + var self = $klass($base, $super, 'Numeric'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Numeric_to_n_49; + var $nesting = [self].concat($parent_nesting), $Numeric_to_n$50; - return (Opal.defn(self, '$to_n', TMP_Numeric_to_n_49 = function $$to_n() { + return (Opal.def(self, '$to_n', $Numeric_to_n$50 = function $$to_n() { var self = this; - return self.valueOf() - }, TMP_Numeric_to_n_49.$$arity = 0), nil) && 'to_n' + return self.valueOf(); + }, $Numeric_to_n$50.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Proc(){}; - var self = $Proc = $klass($base, $super, 'Proc', $Proc); + var self = $klass($base, $super, 'Proc'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Proc_to_n_50; + var $nesting = [self].concat($parent_nesting), $Proc_to_n$51; - return (Opal.defn(self, '$to_n', TMP_Proc_to_n_50 = function $$to_n() { + return (Opal.def(self, '$to_n', $Proc_to_n$51 = function $$to_n() { var self = this; return self - }, TMP_Proc_to_n_50.$$arity = 0), nil) && 'to_n' + }, $Proc_to_n$51.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); + var self = $klass($base, $super, 'String'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_to_n_51; + var $nesting = [self].concat($parent_nesting), $String_to_n$52; - return (Opal.defn(self, '$to_n', TMP_String_to_n_51 = function $$to_n() { + return (Opal.def(self, '$to_n', $String_to_n$52 = function $$to_n() { var self = this; - return self.valueOf() - }, TMP_String_to_n_51.$$arity = 0), nil) && 'to_n' + return self.valueOf(); + }, $String_to_n$52.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Regexp(){}; - var self = $Regexp = $klass($base, $super, 'Regexp', $Regexp); + var self = $klass($base, $super, 'Regexp'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Regexp_to_n_52; + var $nesting = [self].concat($parent_nesting), $Regexp_to_n$53; - return (Opal.defn(self, '$to_n', TMP_Regexp_to_n_52 = function $$to_n() { + return (Opal.def(self, '$to_n', $Regexp_to_n$53 = function $$to_n() { var self = this; - return self.valueOf() - }, TMP_Regexp_to_n_52.$$arity = 0), nil) && 'to_n' + return self.valueOf(); + }, $Regexp_to_n$53.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $MatchData(){}; - var self = $MatchData = $klass($base, $super, 'MatchData', $MatchData); + var self = $klass($base, $super, 'MatchData'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchData_to_n_53; + var $nesting = [self].concat($parent_nesting), $MatchData_to_n$54; - def.matches = nil; - return (Opal.defn(self, '$to_n', TMP_MatchData_to_n_53 = function $$to_n() { + self.$$prototype.matches = nil; + return (Opal.def(self, '$to_n', $MatchData_to_n$54 = function $$to_n() { var self = this; return self.matches - }, TMP_MatchData_to_n_53.$$arity = 0), nil) && 'to_n' + }, $MatchData_to_n$54.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Struct(){}; - var self = $Struct = $klass($base, $super, 'Struct', $Struct); + var self = $klass($base, $super, 'Struct'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Struct_to_n_55; + var $nesting = [self].concat($parent_nesting), $Struct_to_n$55; - return (Opal.defn(self, '$to_n', TMP_Struct_to_n_55 = function $$to_n() { - var TMP_54, self = this, result = nil; + return (Opal.def(self, '$to_n', $Struct_to_n$55 = function $$to_n() { + var $$56, self = this, result = nil; result = {}; - $send(self, 'each_pair', [], (TMP_54 = function(name, value){var self = TMP_54.$$s || this; -if (name == null) name = nil;if (value == null) value = nil; - return result[name] = Opal.const_get_relative($nesting, 'Native').$try_convert(value, value)}, TMP_54.$$s = self, TMP_54.$$arity = 2, TMP_54)); + $send(self, 'each_pair', [], ($$56 = function(name, value){var self = $$56.$$s || this; + + + + if (name == null) { + name = nil; + }; + + if (value == null) { + value = nil; + }; + return result[name] = $$($nesting, 'Native').$try_convert(value, value);}, $$56.$$s = self, $$56.$$arity = 2, $$56)); return result; - }, TMP_Struct_to_n_55.$$arity = 0), nil) && 'to_n' + }, $Struct_to_n$55.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Array(){}; - var self = $Array = $klass($base, $super, 'Array', $Array); + var self = $klass($base, $super, 'Array'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_to_n_56; + var $nesting = [self].concat($parent_nesting), $Array_to_n$57; - return (Opal.defn(self, '$to_n', TMP_Array_to_n_56 = function $$to_n() { + return (Opal.def(self, '$to_n', $Array_to_n$57 = function $$to_n() { var self = this; @@ -22331,62 +24105,62 @@ if (name == null) name = nil;if (value == null) value = nil; for (var i = 0, length = self.length; i < length; i++) { var obj = self[i]; - result.push(Opal.const_get_relative($nesting, 'Native').$try_convert(obj, obj)); + result.push($$($nesting, 'Native').$try_convert(obj, obj)); } return result; - }, TMP_Array_to_n_56.$$arity = 0), nil) && 'to_n' + }, $Array_to_n$57.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Boolean(){}; - var self = $Boolean = $klass($base, $super, 'Boolean', $Boolean); + var self = $klass($base, $super, 'Boolean'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Boolean_to_n_57; + var $nesting = [self].concat($parent_nesting), $Boolean_to_n$58; - return (Opal.defn(self, '$to_n', TMP_Boolean_to_n_57 = function $$to_n() { + return (Opal.def(self, '$to_n', $Boolean_to_n$58 = function $$to_n() { var self = this; - return self.valueOf() - }, TMP_Boolean_to_n_57.$$arity = 0), nil) && 'to_n' + return self.valueOf(); + }, $Boolean_to_n$58.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Time(){}; - var self = $Time = $klass($base, $super, 'Time', $Time); + var self = $klass($base, $super, 'Time'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Time_to_n_58; + var $nesting = [self].concat($parent_nesting), $Time_to_n$59; - return (Opal.defn(self, '$to_n', TMP_Time_to_n_58 = function $$to_n() { + return (Opal.def(self, '$to_n', $Time_to_n$59 = function $$to_n() { var self = this; return self - }, TMP_Time_to_n_58.$$arity = 0), nil) && 'to_n' + }, $Time_to_n$59.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $NilClass(){}; - var self = $NilClass = $klass($base, $super, 'NilClass', $NilClass); + var self = $klass($base, $super, 'NilClass'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NilClass_to_n_59; + var $nesting = [self].concat($parent_nesting), $NilClass_to_n$60; - return (Opal.defn(self, '$to_n', TMP_NilClass_to_n_59 = function $$to_n() { + return (Opal.def(self, '$to_n', $NilClass_to_n$60 = function $$to_n() { var self = this; - return null - }, TMP_NilClass_to_n_59.$$arity = 0), nil) && 'to_n' + return null; + }, $NilClass_to_n$60.$$arity = 0), nil) && 'to_n' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Hash(){}; - var self = $Hash = $klass($base, $super, 'Hash', $Hash); + var self = $klass($base, $super, 'Hash'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Hash_initialize_60, TMP_Hash_to_n_61; + var $nesting = [self].concat($parent_nesting), $Hash_initialize$61, $Hash_to_n$62; - self.$alias_method("_initialize", "initialize"); + Opal.alias(self, "_initialize", "initialize"); - Opal.defn(self, '$initialize', TMP_Hash_initialize_60 = function $$initialize(defaults) { - var self = this, $iter = TMP_Hash_initialize_60.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Hash_initialize$61 = function $$initialize(defaults) { + var $iter = $Hash_initialize$61.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Hash_initialize_60.$$p = null; + if ($iter) $Hash_initialize$61.$$p = null; + + + if ($iter) $Hash_initialize$61.$$p = null;; + ; if (defaults != null && (defaults.constructor === undefined || @@ -22401,13 +24175,13 @@ if (name == null) name = nil;if (value == null) value = nil; if (value && (value.constructor === undefined || value.constructor === Object)) { - smap[key] = Opal.const_get_relative($nesting, 'Hash').$new(value); + smap[key] = $$($nesting, 'Hash').$new(value); } else if (value && value.$$is_array) { value = value.map(function(item) { if (item && (item.constructor === undefined || item.constructor === Object)) { - return Opal.const_get_relative($nesting, 'Hash').$new(item); + return $$($nesting, 'Hash').$new(item); } return self.$Native(item); @@ -22424,9 +24198,9 @@ if (name == null) name = nil;if (value == null) value = nil; } return $send(self, '_initialize', [defaults], block.$to_proc()); - - }, TMP_Hash_initialize_60.$$arity = -1); - return (Opal.defn(self, '$to_n', TMP_Hash_to_n_61 = function $$to_n() { + ; + }, $Hash_initialize$61.$$arity = -1); + return (Opal.def(self, '$to_n', $Hash_to_n$62 = function $$to_n() { var self = this; @@ -22445,194 +24219,189 @@ if (name == null) name = nil;if (value == null) value = nil; value = key.value; } - result[key] = Opal.const_get_relative($nesting, 'Native').$try_convert(value, value); + result[key] = $$($nesting, 'Native').$try_convert(value, value); } return result; - }, TMP_Hash_to_n_61.$$arity = 0), nil) && 'to_n'; + }, $Hash_to_n$62.$$arity = 0), nil) && 'to_n'; })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Module(){}; - var self = $Module = $klass($base, $super, 'Module', $Module); + var self = $klass($base, $super, 'Module'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_native_module_62; + var $nesting = [self].concat($parent_nesting), $Module_native_module$63; - return (Opal.defn(self, '$native_module', TMP_Module_native_module_62 = function $$native_module() { + return (Opal.def(self, '$native_module', $Module_native_module$63 = function $$native_module() { var self = this; return Opal.global[self.$name()] = self - }, TMP_Module_native_module_62.$$arity = 0), nil) && 'native_module' + }, $Module_native_module$63.$$arity = 0), nil) && 'native_module' })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { - function $Class(){}; - var self = $Class = $klass($base, $super, 'Class', $Class); + var self = $klass($base, $super, 'Class'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Class_native_alias_63, TMP_Class_native_class_64; + var $nesting = [self].concat($parent_nesting), $Class_native_alias$64, $Class_native_class$65; - Opal.defn(self, '$native_alias', TMP_Class_native_alias_63 = function $$native_alias(new_jsid, existing_mid) { + Opal.def(self, '$native_alias', $Class_native_alias$64 = function $$native_alias(new_jsid, existing_mid) { var self = this; - var aliased = self.$$proto['$' + existing_mid]; + var aliased = self.prototype['$' + existing_mid]; if (!aliased) { - self.$raise(Opal.const_get_relative($nesting, 'NameError').$new("" + "undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", self.$exiting_mid())); + self.$raise($$($nesting, 'NameError').$new("" + "undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", existing_mid)); } - self.$$proto[new_jsid] = aliased; + self.prototype[new_jsid] = aliased; - }, TMP_Class_native_alias_63.$$arity = 2); - return (Opal.defn(self, '$native_class', TMP_Class_native_class_64 = function $$native_class() { + }, $Class_native_alias$64.$$arity = 2); + return (Opal.def(self, '$native_class', $Class_native_class$65 = function $$native_class() { var self = this; self.$native_module(); return self["new"] = self.$new;; - }, TMP_Class_native_class_64.$$arity = 0), nil) && 'native_class'; + }, $Class_native_class$65.$$arity = 0), nil) && 'native_class'; })($nesting[0], null, $nesting); return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["console"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; - Opal.add_stubs(['$require', '$include', '$raise', '$==', '$arity', '$instance_exec', '$to_proc', '$call', '$new']); + Opal.add_stubs(['$require', '$include', '$raise', '$==', '$arity', '$instance_exec', '$to_proc', '$new']); self.$require("native"); (function($base, $super, $parent_nesting) { - function $Console(){}; - var self = $Console = $klass($base, $super, 'Console', $Console); + var self = $klass($base, $super, 'Console'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Console_clear_1, TMP_Console_trace_2, TMP_Console_log_3, TMP_Console_info_4, TMP_Console_warn_5, TMP_Console_error_6, TMP_Console_time_7, TMP_Console_group_8, TMP_Console_group$B_9; + var $nesting = [self].concat($parent_nesting), $Console_clear$1, $Console_trace$2, $Console_log$3, $Console_info$4, $Console_warn$5, $Console_error$6, $Console_time$7, $Console_group$8, $Console_group$excl$9; - def["native"] = nil; + self.$$prototype["native"] = nil; - self.$include(Opal.const_get_relative($nesting, 'Native')); + self.$include($$$($$($nesting, 'Native'), 'Wrapper')); - Opal.defn(self, '$clear', TMP_Console_clear_1 = function $$clear() { + Opal.def(self, '$clear', $Console_clear$1 = function $$clear() { var self = this; return self["native"].clear() - }, TMP_Console_clear_1.$$arity = 0); + }, $Console_clear$1.$$arity = 0); - Opal.defn(self, '$trace', TMP_Console_trace_2 = function $$trace() { + Opal.def(self, '$trace', $Console_trace$2 = function $$trace() { var self = this; return self["native"].trace() - }, TMP_Console_trace_2.$$arity = 0); + }, $Console_trace$2.$$arity = 0); - Opal.defn(self, '$log', TMP_Console_log_3 = function $$log($a_rest) { - var self = this, args; + Opal.def(self, '$log', $Console_log$3 = function $$log($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self["native"].log.apply(self["native"], args) - }, TMP_Console_log_3.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self["native"].log.apply(self["native"], args); + }, $Console_log$3.$$arity = -1); - Opal.defn(self, '$info', TMP_Console_info_4 = function $$info($a_rest) { - var self = this, args; + Opal.def(self, '$info', $Console_info$4 = function $$info($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self["native"].info.apply(self["native"], args) - }, TMP_Console_info_4.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self["native"].info.apply(self["native"], args); + }, $Console_info$4.$$arity = -1); - Opal.defn(self, '$warn', TMP_Console_warn_5 = function $$warn($a_rest) { - var self = this, args; + Opal.def(self, '$warn', $Console_warn$5 = function $$warn($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self["native"].warn.apply(self["native"], args) - }, TMP_Console_warn_5.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self["native"].warn.apply(self["native"], args); + }, $Console_warn$5.$$arity = -1); - Opal.defn(self, '$error', TMP_Console_error_6 = function $$error($a_rest) { - var self = this, args; + Opal.def(self, '$error', $Console_error$6 = function $$error($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self["native"].error.apply(self["native"], args) - }, TMP_Console_error_6.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self["native"].error.apply(self["native"], args); + }, $Console_error$6.$$arity = -1); - Opal.defn(self, '$time', TMP_Console_time_7 = function $$time(label) { - var self = this, $iter = TMP_Console_time_7.$$p, block = $iter || nil; + Opal.def(self, '$time', $Console_time$7 = function $$time(label) { + var $iter = $Console_time$7.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Console_time_7.$$p = null; + if ($iter) $Console_time$7.$$p = null; + + if ($iter) $Console_time$7.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no block given") + } else { + self.$raise($$($nesting, 'ArgumentError'), "no block given") }; self["native"].time(label); return (function() { try { if (block.$arity()['$=='](0)) { return $send(self, 'instance_exec', [], block.$to_proc()) - } else { - return block.$call(self) + } else { + return Opal.yield1(block, self); } } finally { self["native"].timeEnd() }; })();; - }, TMP_Console_time_7.$$arity = 1); + }, $Console_time$7.$$arity = 1); - Opal.defn(self, '$group', TMP_Console_group_8 = function $$group($a_rest) { - var self = this, args, $iter = TMP_Console_group_8.$$p, block = $iter || nil; + Opal.def(self, '$group', $Console_group$8 = function $$group($a) { + var $iter = $Console_group$8.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Console_group_8.$$p = null; + if ($iter) $Console_group$8.$$p = null; + + if ($iter) $Console_group$8.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no block given") + } else { + self.$raise($$($nesting, 'ArgumentError'), "no block given") }; self["native"].group.apply(self["native"], args); return (function() { try { if (block.$arity()['$=='](0)) { return $send(self, 'instance_exec', [], block.$to_proc()) - } else { - return block.$call(self) + } else { + return Opal.yield1(block, self); } } finally { self["native"].groupEnd() }; })();; - }, TMP_Console_group_8.$$arity = -1); - return (Opal.defn(self, '$group!', TMP_Console_group$B_9 = function($a_rest) { - var self = this, args, $iter = TMP_Console_group$B_9.$$p, block = $iter || nil; + }, $Console_group$8.$$arity = -1); + return (Opal.def(self, '$group!', $Console_group$excl$9 = function($a) { + var $iter = $Console_group$excl$9.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Console_group$B_9.$$p = null; + if ($iter) $Console_group$excl$9.$$p = null; + + if ($iter) $Console_group$excl$9.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ((block !== nil)) { - } else { + } else { return nil }; self["native"].groupCollapsed.apply(self["native"], args); @@ -22640,39 +24409,39 @@ Opal.modules["console"] = function(Opal) { return (function() { try { if (block.$arity()['$=='](0)) { return $send(self, 'instance_exec', [], block.$to_proc()) - } else { - return block.$call(self) + } else { + return Opal.yield1(block, self); } } finally { self["native"].groupEnd() }; })();; - }, TMP_Console_group$B_9.$$arity = -1), nil) && 'group!'; + }, $Console_group$excl$9.$$arity = -1), nil) && 'group!'; })($nesting[0], null, $nesting); if ($truthy((typeof(Opal.global.console) !== "undefined"))) { - return ($gvars.console = Opal.const_get_relative($nesting, 'Console').$new(Opal.global.console)) - } else { + return ($gvars.console = $$($nesting, 'Console').$new(Opal.global.console)) + } else { return nil }; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/constants/colors"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Constants, self = $Constants = $module($base, 'Constants'); + var self = $module($base, 'Constants'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Colors, self = $Colors = $module($base, 'Colors'); + var self = $module($base, 'Colors'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'C_BLACK', [255, 0, 0, 0]); @@ -22689,79 +24458,80 @@ Opal.modules["dxopal/constants/colors"] = function(Opal) { })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/font"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; Opal.add_stubs(['$new', '$Native', '$width', '$measureText', '$getContext']); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Font(){}; - var self = $Font = $klass($base, $super, 'Font', $Font); + var self = $klass($base, $super, 'Font'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Font_default_1, TMP_Font_default$eq_2, TMP_Font_initialize_3, TMP_Font_size_4, TMP_Font_fontname_5, TMP_Font_get_width_6, TMP_Font__spec_str_7; + var $nesting = [self].concat($parent_nesting), $Font_default$1, $Font_default$eq$2, $Font_initialize$3, $Font_size$4, $Font_fontname$5, $Font_get_width$6, $Font__spec_str$7; - def.size = def.orig_fontname = def.fontname = nil; + self.$$prototype.size = self.$$prototype.orig_fontname = self.$$prototype.fontname = nil; - Opal.defs(self, '$default', TMP_Font_default_1 = function() { + Opal.defs(self, '$default', $Font_default$1 = function() { var $a, $b, self = this; - return (Opal.class_variable_set($Font, '@@default', ($truthy($a = (($b = $Font.$$cvars['@@default']) == null ? nil : $b)) ? $a : Opal.const_get_relative($nesting, 'Font').$new(24)))) - }, TMP_Font_default_1.$$arity = 0); - Opal.defs(self, '$default=', TMP_Font_default$eq_2 = function(f) { + return (Opal.class_variable_set($nesting[0], '@@default', ($truthy($a = (($b = $nesting[0].$$cvars['@@default']) == null ? nil : $b)) ? $a : $$($nesting, 'Font').$new(24)))) + }, $Font_default$1.$$arity = 0); + Opal.defs(self, '$default=', $Font_default$eq$2 = function(f) { var self = this; - return (Opal.class_variable_set($Font, '@@default', f)) - }, TMP_Font_default$eq_2.$$arity = 1); + return (Opal.class_variable_set($nesting[0], '@@default', f)) + }, $Font_default$eq$2.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Font_initialize_3 = function $$initialize(size, fontname, option) { + Opal.def(self, '$initialize', $Font_initialize$3 = function $$initialize(size, fontname, option) { var $a, self = this; + + if (fontname == null) { fontname = nil; - } + }; + if (option == null) { option = $hash2([], {}); - } - + }; self.size = size; self.orig_fontname = fontname; return (self.fontname = ($truthy($a = fontname) ? $a : "sans-serif")); - }, TMP_Font_initialize_3.$$arity = -2); + }, $Font_initialize$3.$$arity = -2); - Opal.defn(self, '$size', TMP_Font_size_4 = function $$size() { + Opal.def(self, '$size', $Font_size$4 = function $$size() { var self = this; return self.size - }, TMP_Font_size_4.$$arity = 0); + }, $Font_size$4.$$arity = 0); - Opal.defn(self, '$fontname', TMP_Font_fontname_5 = function $$fontname() { + Opal.def(self, '$fontname', $Font_fontname$5 = function $$fontname() { var self = this; return self.orig_fontname - }, TMP_Font_fontname_5.$$arity = 0); + }, $Font_fontname$5.$$arity = 0); - Opal.defn(self, '$get_width', TMP_Font_get_width_6 = function $$get_width(string) { + Opal.def(self, '$get_width', $Font_get_width$6 = function $$get_width(string) { var self = this, canvas = nil; canvas = self.$Native(document.getElementById('dxopal-canvas')); return canvas.$getContext("2d").$measureText(string).$width(); - }, TMP_Font_get_width_6.$$arity = 1); - return (Opal.defn(self, '$_spec_str', TMP_Font__spec_str_7 = function $$_spec_str() { + }, $Font_get_width$6.$$arity = 1); + return (Opal.def(self, '$_spec_str', $Font__spec_str$7 = function $$_spec_str() { var self = this; return "" + (self.size) + "px " + (self.fontname) - }, TMP_Font__spec_str_7.$$arity = 0), nil) && '_spec_str'; + }, $Font__spec_str$7.$$arity = 0), nil) && '_spec_str'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/input"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -22772,24 +24542,24 @@ Opal.modules["dxopal/input"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $klass = Opal.klass; Opal.add_stubs(['$_init_mouse_events', '$_init_touch_events', '$keyevent_target', '$keyevent_target=', '$-', '$+', '$_update_touch_info', '$key_down?', '$_pressing_keys', '$raise', '$_move', '$[]', '$new', '$[]=', '$push', '$_released', '$delete_if', '$released?', '$<', '$_released_at', '$attr_reader', '$!', '$released_at', '$id', '$x', '$y', '$inspect', '$data', '$values']); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Input, self = $Input = $module($base, 'Input'); + var self = $module($base, 'Input'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Input__pressing_keys_1, TMP_Input__init_2, TMP_Input__on_tick_3, TMP_Input_x_4, TMP_Input_y_5, TMP_Input_key_down$q_6, TMP_Input_key_push$q_7, TMP_Input_key_release$q_8, $a, TMP_Input_keyevent_target$eq_9, TMP_Input_keyevent_target_10, TMP_Input__init_mouse_events_11, TMP_Input_mouse_x_12, TMP_Input_mouse_y_13, TMP_Input_mouse_down$q_14, TMP_Input_mouse_push$q_15, TMP_Input_mouse_release$q_16, TMP_Input__init_touch_events_17, TMP_Input__update_touch_info_19, TMP_Input_touch_x_20, TMP_Input_touch_y_21, TMP_Input_touch_down$q_22, TMP_Input_touch_push$q_23, TMP_Input_touch_release$q_24, TMP_Input_touches_30, TMP_Input_new_touches_31; + var $nesting = [self].concat($parent_nesting), $Input__pressing_keys$1, $Input__init$2, $Input__on_tick$3, $Input_x$4, $Input_y$5, $Input_key_down$ques$6, $Input_key_push$ques$7, $Input_key_release$ques$8, $a, $Input_keyevent_target$eq$9, $Input_keyevent_target$10, $Input__init_mouse_events$11, $Input_mouse_x$12, $Input_mouse_y$13, $Input_mouse_down$ques$14, $Input_mouse_push$ques$15, $Input_mouse_release$ques$16, $Input__init_touch_events$17, $Input__update_touch_info$18, $Input_touch_x$20, $Input_touch_y$21, $Input_touch_down$ques$22, $Input_touch_push$ques$23, $Input_touch_release$ques$24, $Input_touches$30, $Input_new_touches$31; (function($base, $parent_nesting) { - var $MouseCodes, self = $MouseCodes = $module($base, 'MouseCodes'); + var self = $module($base, 'MouseCodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'M_LBUTTON', 1); @@ -22798,292 +24568,304 @@ Opal.modules["dxopal/input"] = function(Opal) { Opal.const_set($nesting[0], 'M_4TH_BUTTON', 8); Opal.const_set($nesting[0], 'M_5TH_BUTTON', 16); })($nesting[0], $nesting); - Opal.defs(self, '$_pressing_keys', TMP_Input__pressing_keys_1 = function $$_pressing_keys() { + Opal.defs(self, '$_pressing_keys', $Input__pressing_keys$1 = function $$_pressing_keys() { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_keys']) == null ? nil : $a) - }, TMP_Input__pressing_keys_1.$$arity = 0); - Opal.defs(self, '$_init', TMP_Input__init_2 = function $$_init(canvas) { + return (($a = $nesting[0].$$cvars['@@pressing_keys']) == null ? nil : $a) + }, $Input__pressing_keys$1.$$arity = 0); + Opal.defs(self, '$_init', $Input__init$2 = function $$_init(canvas) { var self = this, rect = nil, $writer = nil; - (Opal.class_variable_set($Input, '@@tick', 0)); - (Opal.class_variable_set($Input, '@@pressing_keys', new Object())); - (Opal.class_variable_set($Input, '@@mouse_info', {x: 0, y: 0})); - (Opal.class_variable_set($Input, '@@pressing_mouse_buttons', new Object())); - (Opal.class_variable_set($Input, '@@touch_info', {x: 0, y: 0})); - (Opal.class_variable_set($Input, '@@pressing_touch', new Object())); - (Opal.class_variable_set($Input, '@@canvas', canvas)); + (Opal.class_variable_set($nesting[0], '@@tick', 0)); + (Opal.class_variable_set($nesting[0], '@@pressing_keys', new Object())); + (Opal.class_variable_set($nesting[0], '@@mouse_info', {x: 0, y: 0})); + (Opal.class_variable_set($nesting[0], '@@pressing_mouse_buttons', new Object())); + (Opal.class_variable_set($nesting[0], '@@touch_info', {x: 0, y: 0})); + (Opal.class_variable_set($nesting[0], '@@pressing_touch', new Object())); + (Opal.class_variable_set($nesting[0], '@@canvas', canvas)); rect = canvas.getBoundingClientRect(); - (Opal.class_variable_set($Input, '@@canvas_x', rect.left + window.pageXOffset)); - (Opal.class_variable_set($Input, '@@canvas_y', rect.top + window.pageYOffset)); + (Opal.class_variable_set($nesting[0], '@@canvas_x', rect.left + window.pageXOffset)); + (Opal.class_variable_set($nesting[0], '@@canvas_y', rect.top + window.pageYOffset)); self.$_init_mouse_events(); self.$_init_touch_events(); - if ($truthy(Opal.const_get_relative($nesting, 'Input').$keyevent_target())) { + if ($truthy($$($nesting, 'Input').$keyevent_target())) { return nil - } else { + } else { $writer = [window]; $send(self, 'keyevent_target=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; }; - }, TMP_Input__init_2.$$arity = 1); - Opal.defs(self, '$_on_tick', TMP_Input__on_tick_3 = function $$_on_tick() { + }, $Input__init$2.$$arity = 1); + Opal.defs(self, '$_on_tick', $Input__on_tick$3 = function $$_on_tick() { var $a, self = this; - (Opal.class_variable_set($Input, '@@tick', $rb_plus((($a = $Input.$$cvars['@@tick']) == null ? nil : $a), 1))); + (Opal.class_variable_set($nesting[0], '@@tick', $rb_plus((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a), 1))); return self.$_update_touch_info(); - }, TMP_Input__on_tick_3.$$arity = 0); - Opal.defs(self, '$x', TMP_Input_x_4 = function $$x(pad_number) { + }, $Input__on_tick$3.$$arity = 0); + Opal.defs(self, '$x', $Input_x$4 = function $$x(pad_number) { var self = this, ret = nil; + + if (pad_number == null) { pad_number = 0; - } - + }; ret = 0; - if ($truthy(self['$key_down?'](Opal.const_get_relative($nesting, 'K_RIGHT')))) { + if ($truthy(self['$key_down?']($$($nesting, 'K_RIGHT')))) { ret = $rb_plus(ret, 1)}; - if ($truthy(self['$key_down?'](Opal.const_get_relative($nesting, 'K_LEFT')))) { + if ($truthy(self['$key_down?']($$($nesting, 'K_LEFT')))) { ret = $rb_minus(ret, 1)}; return ret; - }, TMP_Input_x_4.$$arity = -1); - Opal.defs(self, '$y', TMP_Input_y_5 = function $$y(pad_number) { + }, $Input_x$4.$$arity = -1); + Opal.defs(self, '$y', $Input_y$5 = function $$y(pad_number) { var self = this, ret = nil; + + if (pad_number == null) { pad_number = 0; - } - + }; ret = 0; - if ($truthy(self['$key_down?'](Opal.const_get_relative($nesting, 'K_DOWN')))) { + if ($truthy(self['$key_down?']($$($nesting, 'K_DOWN')))) { ret = $rb_plus(ret, 1)}; - if ($truthy(self['$key_down?'](Opal.const_get_relative($nesting, 'K_UP')))) { + if ($truthy(self['$key_down?']($$($nesting, 'K_UP')))) { ret = $rb_minus(ret, 1)}; return ret; - }, TMP_Input_y_5.$$arity = -1); - Opal.defs(self, '$key_down?', TMP_Input_key_down$q_6 = function(code) { + }, $Input_y$5.$$arity = -1); + Opal.defs(self, '$key_down?', $Input_key_down$ques$6 = function(code) { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_keys']) == null ? nil : $a)[code] > 0 - }, TMP_Input_key_down$q_6.$$arity = 1); - Opal.defs(self, '$key_push?', TMP_Input_key_push$q_7 = function(code) { + return (($a = $nesting[0].$$cvars['@@pressing_keys']) == null ? nil : $a)[code] > 0 + }, $Input_key_down$ques$6.$$arity = 1); + Opal.defs(self, '$key_push?', $Input_key_push$ques$7 = function(code) { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_keys']) == null ? nil : $a)[code] == (($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1 - }, TMP_Input_key_push$q_7.$$arity = 1); - Opal.defs(self, '$key_release?', TMP_Input_key_release$q_8 = function(code) { + return (($a = $nesting[0].$$cvars['@@pressing_keys']) == null ? nil : $a)[code] == (($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1 + }, $Input_key_push$ques$7.$$arity = 1); + Opal.defs(self, '$key_release?', $Input_key_release$ques$8 = function(code) { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_keys']) == null ? nil : $a)[code] == -((($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1) - }, TMP_Input_key_release$q_8.$$arity = 1); + return (($a = $nesting[0].$$cvars['@@pressing_keys']) == null ? nil : $a)[code] == -((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1) + }, $Input_key_release$ques$8.$$arity = 1); Opal.const_set($nesting[0], 'ON_KEYDOWN_', function(ev){ - Opal.const_get_relative($nesting, 'Input').$_pressing_keys()[ev.code] = (($a = $Input.$$cvars['@@tick']) == null ? nil : $a); + $$($nesting, 'Input').$_pressing_keys()[ev.code] = (($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a); ev.preventDefault(); ev.stopPropagation(); } ); Opal.const_set($nesting[0], 'ON_KEYUP_', function(ev){ - Opal.const_get_relative($nesting, 'Input').$_pressing_keys()[ev.code] = -(($a = $Input.$$cvars['@@tick']) == null ? nil : $a); + $$($nesting, 'Input').$_pressing_keys()[ev.code] = -(($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a); ev.preventDefault(); ev.stopPropagation(); } ); - Opal.defs(self, '$keyevent_target=', TMP_Input_keyevent_target$eq_9 = function(target) { + Opal.defs(self, '$keyevent_target=', $Input_keyevent_target$eq$9 = function(target) { var $a, self = this; - if ($truthy((($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a))) { + if ($truthy((($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a))) { - (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).removeEventListener('keydown', Opal.const_get_relative($nesting, 'ON_KEYDOWN_')); - (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).removeEventListener('keyup', Opal.const_get_relative($nesting, 'ON_KEYUP_')); + (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).removeEventListener('keydown', $$($nesting, 'ON_KEYDOWN_')); + (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).removeEventListener('keyup', $$($nesting, 'ON_KEYUP_')); }; - (Opal.class_variable_set($Input, '@@keyevent_target', target)); + (Opal.class_variable_set($nesting[0], '@@keyevent_target', target)); - if ((($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).tagName == "CANVAS") { - (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).setAttribute('tabindex', 0); + if ((($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).tagName == "CANVAS") { + (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).setAttribute('tabindex', 0); } - (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).addEventListener('keydown', Opal.const_get_relative($nesting, 'ON_KEYDOWN_')); - (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a).addEventListener('keyup', Opal.const_get_relative($nesting, 'ON_KEYUP_')); + (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).addEventListener('keydown', $$($nesting, 'ON_KEYDOWN_')); + (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a).addEventListener('keyup', $$($nesting, 'ON_KEYUP_')); ; - }, TMP_Input_keyevent_target$eq_9.$$arity = 1); - Opal.defs(self, '$keyevent_target', TMP_Input_keyevent_target_10 = function $$keyevent_target() { + }, $Input_keyevent_target$eq$9.$$arity = 1); + Opal.defs(self, '$keyevent_target', $Input_keyevent_target$10 = function $$keyevent_target() { var $a, self = this; - return (($a = $Input.$$cvars['@@keyevent_target']) == null ? nil : $a) - }, TMP_Input_keyevent_target_10.$$arity = 0); - Opal.defs(self, '$_init_mouse_events', TMP_Input__init_mouse_events_11 = function $$_init_mouse_events() { + return (($a = $nesting[0].$$cvars['@@keyevent_target']) == null ? nil : $a) + }, $Input_keyevent_target$10.$$arity = 0); + Opal.defs(self, '$_init_mouse_events', $Input__init_mouse_events$11 = function $$_init_mouse_events() { var $a, self = this; document.addEventListener('mousemove', function(ev){ - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $Input.$$cvars['@@canvas_x']) == null ? nil : $a); - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $Input.$$cvars['@@canvas_y']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $a); }); document.addEventListener('mousedown', function(ev){ - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $Input.$$cvars['@@canvas_x']) == null ? nil : $a); - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $Input.$$cvars['@@canvas_y']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $a); for (var k=1; k<=16; k<<=1) { if (ev.buttons & k) { - (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[k] = (($a = $Input.$$cvars['@@tick']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[k] = (($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a); } } }); document.addEventListener('mouseup', function(ev){ - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $Input.$$cvars['@@canvas_x']) == null ? nil : $a); - (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $Input.$$cvars['@@canvas_y']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).x = ev.pageX - (($a = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).y = ev.pageY - (($a = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $a); + // ev.button => ev.buttons + table = { 0: 1, 1: 4, 2: 2, 3: 8, 4: 16 }; for (var k=1; k<=16; k<<=1) { - if ((ev.buttons & k) == 0 && (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[k]) { - (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[k] = -(($a = $Input.$$cvars['@@tick']) == null ? nil : $a); + if ((($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[k]) { + (($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[table[ev.button]] = -(($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a); } } }); - }, TMP_Input__init_mouse_events_11.$$arity = 0); - Opal.defs(self, '$mouse_x', TMP_Input_mouse_x_12 = function $$mouse_x() { + }, $Input__init_mouse_events$11.$$arity = 0); + Opal.defs(self, '$mouse_x', $Input_mouse_x$12 = function $$mouse_x() { var $a, self = this; - return (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).x - }, TMP_Input_mouse_x_12.$$arity = 0); - Opal.defs(self, '$mouse_y', TMP_Input_mouse_y_13 = function $$mouse_y() { + return (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).x + }, $Input_mouse_x$12.$$arity = 0); + Opal.defs(self, '$mouse_y', $Input_mouse_y$13 = function $$mouse_y() { var $a, self = this; - return (($a = $Input.$$cvars['@@mouse_info']) == null ? nil : $a).y - }, TMP_Input_mouse_y_13.$$arity = 0); + return (($a = $nesting[0].$$cvars['@@mouse_info']) == null ? nil : $a).y + }, $Input_mouse_y$13.$$arity = 0); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.alias(self, "mouse_pos_x", "mouse_x"); return Opal.alias(self, "mouse_pos_y", "mouse_y"); })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$mouse_down?', TMP_Input_mouse_down$q_14 = function(mouse_code) { + Opal.defs(self, '$mouse_down?', $Input_mouse_down$ques$14 = function(mouse_code) { var $a, self = this; if ($truthy(mouse_code)) { - } else { + } else { self.$raise("missing argument of `mouse_down?'") }; - return (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] > 0; - }, TMP_Input_mouse_down$q_14.$$arity = 1); - Opal.defs(self, '$mouse_push?', TMP_Input_mouse_push$q_15 = function(mouse_code) { + return (($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] > 0; + }, $Input_mouse_down$ques$14.$$arity = 1); + Opal.defs(self, '$mouse_push?', $Input_mouse_push$ques$15 = function(mouse_code) { var $a, self = this; if ($truthy(mouse_code)) { - } else { + } else { self.$raise("missing argument of `mouse_push?'") }; - return (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] == -((($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1); - }, TMP_Input_mouse_push$q_15.$$arity = 1); - Opal.defs(self, '$mouse_release?', TMP_Input_mouse_release$q_16 = function(mouse_code) { + return (($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] == -((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1); + }, $Input_mouse_push$ques$15.$$arity = 1); + Opal.defs(self, '$mouse_release?', $Input_mouse_release$ques$16 = function(mouse_code) { var $a, self = this; if ($truthy(mouse_code)) { - } else { + } else { self.$raise("missing argument of `mouse_release?'") }; - return (($a = $Input.$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] == -((($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1); - }, TMP_Input_mouse_release$q_16.$$arity = 1); - Opal.defs(self, '$_init_touch_events', TMP_Input__init_touch_events_17 = function $$_init_touch_events() { + return (($a = $nesting[0].$$cvars['@@pressing_mouse_buttons']) == null ? nil : $a)[mouse_code] == -((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1); + }, $Input_mouse_release$ques$16.$$arity = 1); + Opal.defs(self, '$_init_touch_events', $Input__init_touch_events$17 = function $$_init_touch_events() { var $a, $b, $c, self = this, new_touch = nil, $writer = nil; - (Opal.class_variable_set($Input, '@@touches', $hash2([], {}))); - (Opal.class_variable_set($Input, '@@new_touches', [])); + (Opal.class_variable_set($nesting[0], '@@touches', $hash2([], {}))); + (Opal.class_variable_set($nesting[0], '@@new_touches', [])); - (($a = $Input.$$cvars['@@canvas']) == null ? nil : $a).addEventListener('touchmove', function(ev){ + (($a = $nesting[0].$$cvars['@@canvas']) == null ? nil : $a).addEventListener('touchmove', function(ev){ ev.preventDefault(); ev.stopPropagation(); - (($a = $Input.$$cvars['@@touch_info']) == null ? nil : $a).x = ev.changedTouches[0].pageX - (($a = $Input.$$cvars['@@canvas_x']) == null ? nil : $a); - (($a = $Input.$$cvars['@@touch_info']) == null ? nil : $a).y = ev.changedTouches[0].pageY - (($a = $Input.$$cvars['@@canvas_y']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $a).x = ev.changedTouches[0].pageX - (($a = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $a); + (($a = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $a).y = ev.changedTouches[0].pageY - (($a = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $a); for (var touch of ev.changedTouches) { const id = touch.identifier; - const x = touch.pageX - (($a = $Input.$$cvars['@@canvas_x']) == null ? nil : $a); - const y = touch.pageY - (($a = $Input.$$cvars['@@canvas_y']) == null ? nil : $a); - ($a = (($a = $Input.$$cvars['@@touches']) == null ? nil : $a)['$[]'](id), ($a === nil || $a == null) ? nil : $send($a, '_move', [x, y])) + const x = touch.pageX - (($a = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $a); + const y = touch.pageY - (($a = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $a); + ($a = (($a = $nesting[0].$$cvars['@@touches']) == null ? nil : $a)['$[]'](id), ($a === nil || $a == null) ? nil : $send($a, '_move', [x, y])) } }); - (($b = $Input.$$cvars['@@canvas']) == null ? nil : $b).addEventListener('touchstart', function(ev){ + (($b = $nesting[0].$$cvars['@@canvas']) == null ? nil : $b).addEventListener('touchstart', function(ev){ ev.preventDefault(); ev.stopPropagation(); - (($b = $Input.$$cvars['@@touch_info']) == null ? nil : $b).x = ev.changedTouches[0].pageX - (($b = $Input.$$cvars['@@canvas_x']) == null ? nil : $b); - (($b = $Input.$$cvars['@@touch_info']) == null ? nil : $b).y = ev.changedTouches[0].pageY - (($b = $Input.$$cvars['@@canvas_y']) == null ? nil : $b); - (($b = $Input.$$cvars['@@pressing_touch']) == null ? nil : $b)[0] = (($b = $Input.$$cvars['@@tick']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $b).x = ev.changedTouches[0].pageX - (($b = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $b).y = ev.changedTouches[0].pageY - (($b = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@pressing_touch']) == null ? nil : $b)[0] = (($b = $nesting[0].$$cvars['@@tick']) == null ? nil : $b); for (var touch of ev.changedTouches) { const id = touch.identifier; - const x = touch.pageX - (($b = $Input.$$cvars['@@canvas_x']) == null ? nil : $b); - const y = touch.pageY - (($b = $Input.$$cvars['@@canvas_y']) == null ? nil : $b); - ((new_touch = Opal.const_get_relative($nesting, 'Touch').$new(id, x, y)), (($writer = [id, new_touch]), $send((($b = $Input.$$cvars['@@touches']) == null ? nil : $b), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]), (($b = $Input.$$cvars['@@new_touches']) == null ? nil : $b).$push(new_touch)) + const x = touch.pageX - (($b = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $b); + const y = touch.pageY - (($b = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $b); + ((new_touch = $$($nesting, 'Touch').$new(id, x, y)), (($writer = [id, new_touch]), $send((($b = $nesting[0].$$cvars['@@touches']) == null ? nil : $b), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]), (($b = $nesting[0].$$cvars['@@new_touches']) == null ? nil : $b).$push(new_touch)) } }); - (($b = $Input.$$cvars['@@canvas']) == null ? nil : $b).addEventListener('touchend', function(ev){ + (($b = $nesting[0].$$cvars['@@canvas']) == null ? nil : $b).addEventListener('touchend', function(ev){ ev.preventDefault(); ev.stopPropagation(); - (($b = $Input.$$cvars['@@touch_info']) == null ? nil : $b).x = ev.changedTouches[0].pageX - (($b = $Input.$$cvars['@@canvas_x']) == null ? nil : $b); - (($b = $Input.$$cvars['@@touch_info']) == null ? nil : $b).y = ev.changedTouches[0].pageY - (($b = $Input.$$cvars['@@canvas_y']) == null ? nil : $b); - (($b = $Input.$$cvars['@@pressing_touch']) == null ? nil : $b)[0] = -(($b = $Input.$$cvars['@@tick']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $b).x = ev.changedTouches[0].pageX - (($b = $nesting[0].$$cvars['@@canvas_x']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $b).y = ev.changedTouches[0].pageY - (($b = $nesting[0].$$cvars['@@canvas_y']) == null ? nil : $b); + (($b = $nesting[0].$$cvars['@@pressing_touch']) == null ? nil : $b)[0] = -(($b = $nesting[0].$$cvars['@@tick']) == null ? nil : $b); for (var touch of ev.changedTouches) { const id = touch.identifier; - ($b = (($b = $Input.$$cvars['@@touches']) == null ? nil : $b)['$[]'](id), ($b === nil || $b == null) ? nil : $send($b, '_released', [(($c = $Input.$$cvars['@@tick']) == null ? nil : $c)])) + ($b = (($b = $nesting[0].$$cvars['@@touches']) == null ? nil : $b)['$[]'](id), ($b === nil || $b == null) ? nil : $send($b, '_released', [(($c = $nesting[0].$$cvars['@@tick']) == null ? nil : $c)])) } }); ; - }, TMP_Input__init_touch_events_17.$$arity = 0); - Opal.defs(self, '$_update_touch_info', TMP_Input__update_touch_info_19 = function $$_update_touch_info() { - var $a, TMP_18, self = this; - - return $send((($a = $Input.$$cvars['@@touches']) == null ? nil : $a), 'delete_if', [], (TMP_18 = function(id, t){var self = TMP_18.$$s || this, $b, $c; -if (id == null) id = nil;if (t == null) t = nil; - return ($truthy($b = t['$released?']()) ? $rb_lt(t.$_released_at(), $rb_minus((($c = $Input.$$cvars['@@tick']) == null ? nil : $c), 1)) : $b)}, TMP_18.$$s = self, TMP_18.$$arity = 2, TMP_18)) - }, TMP_Input__update_touch_info_19.$$arity = 0); - Opal.defs(self, '$touch_x', TMP_Input_touch_x_20 = function $$touch_x() { + }, $Input__init_touch_events$17.$$arity = 0); + Opal.defs(self, '$_update_touch_info', $Input__update_touch_info$18 = function $$_update_touch_info() { + var $a, $$19, self = this; + + return $send((($a = $nesting[0].$$cvars['@@touches']) == null ? nil : $a), 'delete_if', [], ($$19 = function(id, t){var self = $$19.$$s || this, $b, $c; + + + + if (id == null) { + id = nil; + }; + + if (t == null) { + t = nil; + }; + return ($truthy($b = t['$released?']()) ? $rb_lt(t.$_released_at(), $rb_minus((($c = $nesting[0].$$cvars['@@tick']) == null ? nil : $c), 1)) : $b);}, $$19.$$s = self, $$19.$$arity = 2, $$19)) + }, $Input__update_touch_info$18.$$arity = 0); + Opal.defs(self, '$touch_x', $Input_touch_x$20 = function $$touch_x() { var $a, self = this; - return (($a = $Input.$$cvars['@@touch_info']) == null ? nil : $a).x - }, TMP_Input_touch_x_20.$$arity = 0); - Opal.defs(self, '$touch_y', TMP_Input_touch_y_21 = function $$touch_y() { + return (($a = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $a).x + }, $Input_touch_x$20.$$arity = 0); + Opal.defs(self, '$touch_y', $Input_touch_y$21 = function $$touch_y() { var $a, self = this; - return (($a = $Input.$$cvars['@@touch_info']) == null ? nil : $a).y - }, TMP_Input_touch_y_21.$$arity = 0); + return (($a = $nesting[0].$$cvars['@@touch_info']) == null ? nil : $a).y + }, $Input_touch_y$21.$$arity = 0); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.alias(self, "touch_pos_x", "touch_x"); return Opal.alias(self, "touch_pos_y", "touch_y"); })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$touch_down?', TMP_Input_touch_down$q_22 = function() { + Opal.defs(self, '$touch_down?', $Input_touch_down$ques$22 = function() { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_touch']) == null ? nil : $a)[0] > 0 - }, TMP_Input_touch_down$q_22.$$arity = 0); - Opal.defs(self, '$touch_push?', TMP_Input_touch_push$q_23 = function() { + return (($a = $nesting[0].$$cvars['@@pressing_touch']) == null ? nil : $a)[0] > 0 + }, $Input_touch_down$ques$22.$$arity = 0); + Opal.defs(self, '$touch_push?', $Input_touch_push$ques$23 = function() { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_touch']) == null ? nil : $a)[0] == -((($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1) - }, TMP_Input_touch_push$q_23.$$arity = 0); - Opal.defs(self, '$touch_release?', TMP_Input_touch_release$q_24 = function() { + return (($a = $nesting[0].$$cvars['@@pressing_touch']) == null ? nil : $a)[0] == -((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1) + }, $Input_touch_push$ques$23.$$arity = 0); + Opal.defs(self, '$touch_release?', $Input_touch_release$ques$24 = function() { var $a, self = this; - return (($a = $Input.$$cvars['@@pressing_touch']) == null ? nil : $a)[0] == -((($a = $Input.$$cvars['@@tick']) == null ? nil : $a)-1) - }, TMP_Input_touch_release$q_24.$$arity = 0); + return (($a = $nesting[0].$$cvars['@@pressing_touch']) == null ? nil : $a)[0] == -((($a = $nesting[0].$$cvars['@@tick']) == null ? nil : $a)-1) + }, $Input_touch_release$ques$24.$$arity = 0); (function($base, $super, $parent_nesting) { - function $Touch(){}; - var self = $Touch = $klass($base, $super, 'Touch', $Touch); + var self = $klass($base, $super, 'Touch'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Touch_initialize_25, TMP_Touch_released$q_26, TMP_Touch_inspect_27, TMP_Touch__move_28, TMP_Touch__released_29; + var $nesting = [self].concat($parent_nesting), $Touch_initialize$25, $Touch_released$ques$26, $Touch_inspect$27, $Touch__move$28, $Touch__released$29; - def._released_at = nil; + self.$$prototype._released_at = nil; - Opal.defn(self, '$initialize', TMP_Touch_initialize_25 = function $$initialize(id, x, y) { + Opal.def(self, '$initialize', $Touch_initialize$25 = function $$initialize(id, x, y) { var self = this; @@ -23091,75 +24873,75 @@ if (id == null) id = nil;if (t == null) t = nil; self.$_move(x, y); self._released_at = nil; return (self.data = $hash2([], {})); - }, TMP_Touch_initialize_25.$$arity = 3); + }, $Touch_initialize$25.$$arity = 3); self.$attr_reader("id", "x", "y", "data", "_released_at"); - Opal.defn(self, '$released?', TMP_Touch_released$q_26 = function() { + Opal.def(self, '$released?', $Touch_released$ques$26 = function() { var self = this; return self._released_at['$!']()['$!']() - }, TMP_Touch_released$q_26.$$arity = 0); + }, $Touch_released$ques$26.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Touch_inspect_27 = function $$inspect() { + Opal.def(self, '$inspect', $Touch_inspect$27 = function $$inspect() { var self = this, rel = nil; rel = (function() {if ($truthy(self.$released_at())) { return "" + " released_at=" + (self.$released_at()) - } else { + } else { return "" }; return nil; })(); return "" + "#"; - }, TMP_Touch_inspect_27.$$arity = 0); + }, $Touch_inspect$27.$$arity = 0); - Opal.defn(self, '$_move', TMP_Touch__move_28 = function $$_move(x, y) { + Opal.def(self, '$_move', $Touch__move$28 = function $$_move(x, y) { var self = this; self.x = x; return (self.y = y); - }, TMP_Touch__move_28.$$arity = 2); - return (Opal.defn(self, '$_released', TMP_Touch__released_29 = function $$_released(tick) { + }, $Touch__move$28.$$arity = 2); + return (Opal.def(self, '$_released', $Touch__released$29 = function $$_released(tick) { var self = this; return (self._released_at = tick) - }, TMP_Touch__released_29.$$arity = 1), nil) && '_released'; + }, $Touch__released$29.$$arity = 1), nil) && '_released'; })($nesting[0], null, $nesting); - Opal.defs(self, '$touches', TMP_Input_touches_30 = function $$touches() { + Opal.defs(self, '$touches', $Input_touches$30 = function $$touches() { var $a, self = this; - return (($a = $Input.$$cvars['@@touches']) == null ? nil : $a).$values() - }, TMP_Input_touches_30.$$arity = 0); - Opal.defs(self, '$new_touches', TMP_Input_new_touches_31 = function $$new_touches() { + return (($a = $nesting[0].$$cvars['@@touches']) == null ? nil : $a).$values() + }, $Input_touches$30.$$arity = 0); + Opal.defs(self, '$new_touches', $Input_new_touches$31 = function $$new_touches() { var $a, self = this, ret = nil; - ret = (($a = $Input.$$cvars['@@new_touches']) == null ? nil : $a); - (Opal.class_variable_set($Input, '@@new_touches', [])); + ret = (($a = $nesting[0].$$cvars['@@new_touches']) == null ? nil : $a); + (Opal.class_variable_set($nesting[0], '@@new_touches', [])); return ret; - }, TMP_Input_new_touches_31.$$arity = 0); + }, $Input_new_touches$31.$$arity = 0); })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/input/key_codes"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Input, self = $Input = $module($base, 'Input'); + var self = $module($base, 'Input'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $KeyCodes, self = $KeyCodes = $module($base, 'KeyCodes'); + var self = $module($base, 'KeyCodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'K_ESCAPE', "Escape"); @@ -23297,145 +25079,174 @@ Opal.modules["dxopal/input/key_codes"] = function(Opal) { })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/remote_resource"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; Opal.add_stubs(['$new', '$[]=', '$-', '$_klass_name', '$[]', '$raise', '$inspect', '$each', '$!', '$_load', '$to_proc', '$flat_map', '$values', '$call', '$last', '$split', '$name']); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $RemoteResource(){}; - var self = $RemoteResource = $klass($base, $super, 'RemoteResource', $RemoteResource); + var self = $klass($base, $super, 'RemoteResource'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RemoteResource_1, TMP_RemoteResource_2, TMP_RemoteResource_3, TMP_RemoteResource_add_class_4, TMP_RemoteResource_register_5, TMP_RemoteResource_$$_6, TMP_RemoteResource__load_resources_7, TMP_RemoteResource__load_10, TMP_RemoteResource__klass_name_11; + var $nesting = [self].concat($parent_nesting), $RemoteResource$1, $RemoteResource$2, $RemoteResource$3, $RemoteResource_add_class$4, $RemoteResource_register$5, $RemoteResource_$$$6, $RemoteResource__load_resources$7, $RemoteResource__load$10, $RemoteResource__klass_name$11; - (Opal.class_variable_set($RemoteResource, '@@resources', $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_RemoteResource_1 = function(h, k){var self = TMP_RemoteResource_1.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + (Opal.class_variable_set($nesting[0], '@@resources', $send($$($nesting, 'Hash'), 'new', [], ($RemoteResource$1 = function(h, k){var self = $RemoteResource$1.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, $hash2([], {})]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_RemoteResource_1.$$s = self, TMP_RemoteResource_1.$$arity = 2, TMP_RemoteResource_1)))); - (Opal.class_variable_set($RemoteResource, '@@promises', $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_RemoteResource_2 = function(h, k){var self = TMP_RemoteResource_2.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + return $writer[$rb_minus($writer["length"], 1)];}, $RemoteResource$1.$$s = self, $RemoteResource$1.$$arity = 2, $RemoteResource$1)))); + (Opal.class_variable_set($nesting[0], '@@promises', $send($$($nesting, 'Hash'), 'new', [], ($RemoteResource$2 = function(h, k){var self = $RemoteResource$2.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, $hash2([], {})]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_RemoteResource_2.$$s = self, TMP_RemoteResource_2.$$arity = 2, TMP_RemoteResource_2)))); - (Opal.class_variable_set($RemoteResource, '@@instances', $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_RemoteResource_3 = function(h, k){var self = TMP_RemoteResource_3.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + return $writer[$rb_minus($writer["length"], 1)];}, $RemoteResource$2.$$s = self, $RemoteResource$2.$$arity = 2, $RemoteResource$2)))); + (Opal.class_variable_set($nesting[0], '@@instances', $send($$($nesting, 'Hash'), 'new', [], ($RemoteResource$3 = function(h, k){var self = $RemoteResource$3.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, $hash2([], {})]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_RemoteResource_3.$$s = self, TMP_RemoteResource_3.$$arity = 2, TMP_RemoteResource_3)))); - (Opal.class_variable_set($RemoteResource, '@@klasses', $hash2([], {}))); - Opal.defs(self, '$add_class', TMP_RemoteResource_add_class_4 = function $$add_class(subklass) { + return $writer[$rb_minus($writer["length"], 1)];}, $RemoteResource$3.$$s = self, $RemoteResource$3.$$arity = 2, $RemoteResource$3)))); + (Opal.class_variable_set($nesting[0], '@@klasses', $hash2([], {}))); + Opal.defs(self, '$add_class', $RemoteResource_add_class$4 = function $$add_class(subklass) { var $a, self = this, $writer = nil; $writer = [subklass.$_klass_name(), subklass]; - $send((($a = $RemoteResource.$$cvars['@@klasses']) == null ? nil : $a), '[]=', Opal.to_a($writer)); + $send((($a = $nesting[0].$$cvars['@@klasses']) == null ? nil : $a), '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - }, TMP_RemoteResource_add_class_4.$$arity = 1); - Opal.defs(self, '$register', TMP_RemoteResource_register_5 = function $$register(name, $a_rest) { - var $b, $c, self = this, args, $iter = TMP_RemoteResource_register_5.$$p, block = $iter || nil, $writer = nil; + }, $RemoteResource_add_class$4.$$arity = 1); + Opal.defs(self, '$register', $RemoteResource_register$5 = function $$register(name, $a) { + var $iter = $RemoteResource_register$5.$$p, block = $iter || nil, $post_args, args, $b, $c, self = this, $writer = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_RemoteResource_register_5.$$p = null; + if ($iter) $RemoteResource_register$5.$$p = null; + + + if ($iter) $RemoteResource_register$5.$$p = null;; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); - ($truthy($b = (($c = $RemoteResource.$$cvars['@@resources']) == null ? nil : $c)['$[]'](self.$_klass_name())) ? $b : (($writer = [self.$_klass_name(), $hash2([], {})]), $send((($c = $RemoteResource.$$cvars['@@resources']) == null ? nil : $c), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); + args = $post_args;; + ($truthy($b = (($c = $nesting[0].$$cvars['@@resources']) == null ? nil : $c)['$[]'](self.$_klass_name())) ? $b : (($writer = [self.$_klass_name(), $hash2([], {})]), $send((($c = $nesting[0].$$cvars['@@resources']) == null ? nil : $c), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); $writer = [name, [block, args]]; - $send((($b = $RemoteResource.$$cvars['@@resources']) == null ? nil : $b)['$[]'](self.$_klass_name()), '[]=', Opal.to_a($writer)); + $send((($b = $nesting[0].$$cvars['@@resources']) == null ? nil : $b)['$[]'](self.$_klass_name()), '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_RemoteResource_register_5.$$arity = -2); - Opal.defs(self, '$[]', TMP_RemoteResource_$$_6 = function(name) { + }, $RemoteResource_register$5.$$arity = -2); + Opal.defs(self, '$[]', $RemoteResource_$$$6 = function(name) { var $a, self = this, ret = nil; - if ($truthy((ret = (($a = $RemoteResource.$$cvars['@@instances']) == null ? nil : $a)['$[]'](self.$_klass_name())['$[]'](name)))) { + if ($truthy((ret = (($a = $nesting[0].$$cvars['@@instances']) == null ? nil : $a)['$[]'](self.$_klass_name())['$[]'](name)))) { return ret - } else { + } else { return self.$raise("" + (self.$_klass_name()) + " " + (name.$inspect()) + " is not registered") } - }, TMP_RemoteResource_$$_6.$$arity = 1); - Opal.defs(self, '$_load_resources', TMP_RemoteResource__load_resources_7 = function $$_load_resources() { - var $a, TMP_8, self = this, $iter = TMP_RemoteResource__load_resources_7.$$p, block = $iter || nil, promises = nil; + }, $RemoteResource_$$$6.$$arity = 1); + Opal.defs(self, '$_load_resources', $RemoteResource__load_resources$7 = function $$_load_resources() { + var $iter = $RemoteResource__load_resources$7.$$p, block = $iter || nil, $a, $$8, self = this, promises = nil; - if ($iter) TMP_RemoteResource__load_resources_7.$$p = null; + if ($iter) $RemoteResource__load_resources$7.$$p = null; - $send((($a = $RemoteResource.$$cvars['@@resources']) == null ? nil : $a), 'each', [], (TMP_8 = function(klass_name, items){var self = TMP_8.$$s || this, $b, TMP_9, klass = nil; -if (klass_name == null) klass_name = nil;if (items == null) items = nil; - klass = (($b = $RemoteResource.$$cvars['@@klasses']) == null ? nil : $b)['$[]'](klass_name); - return $send(items, 'each', [], (TMP_9 = function(name, $c){var self = TMP_9.$$s || this, $c_args, block2, args, $d, $e, instance = nil, promise = nil, $writer = nil; + if ($iter) $RemoteResource__load_resources$7.$$p = null;; + $send((($a = $nesting[0].$$cvars['@@resources']) == null ? nil : $a), 'each', [], ($$8 = function(klass_name, items){var self = $$8.$$s || this, $b, $$9, klass = nil; - if ($c == null) { - $c = nil; - } - $c = Opal.to_ary($c); - $c_args = Opal.slice.call($c, 0, $c.length); - block2 = $c_args.splice(0,1)[0]; - if (block2 == null) { - block2 = nil; - } - args = $c_args.splice(0,1)[0]; - if (args == null) { - args = nil; - }if (name == null) name = nil; - if ($truthy((($d = $RemoteResource.$$cvars['@@promises']) == null ? nil : $d)['$[]'](klass_name)['$[]'](name)['$!']())) { + + + if (klass_name == null) { + klass_name = nil; + }; + + if (items == null) { + items = nil; + }; + klass = (($b = $nesting[0].$$cvars['@@klasses']) == null ? nil : $b)['$[]'](klass_name); + return $send(items, 'each', [], ($$9 = function(name, $mlhs_tmp1){var self = $$9.$$s || this, $c, $d, block2 = nil, args = nil, instance = nil, promise = nil, $writer = nil; + + + + if (name == null) { + name = nil; + }; + + if ($mlhs_tmp1 == null) { + $mlhs_tmp1 = nil; + }; + $d = $mlhs_tmp1, $c = Opal.to_ary($d), (block2 = ($c[0] == null ? nil : $c[0])), (args = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy((($c = $nesting[0].$$cvars['@@promises']) == null ? nil : $c)['$[]'](klass_name)['$[]'](name)['$!']())) { - $e = $send(klass, '_load', Opal.to_a(args), block2.$to_proc()), $d = Opal.to_ary($e), (instance = ($d[0] == null ? nil : $d[0])), (promise = ($d[1] == null ? nil : $d[1])), $e; + $d = $send(klass, '_load', Opal.to_a(args), block2.$to_proc()), $c = Opal.to_ary($d), (instance = ($c[0] == null ? nil : $c[0])), (promise = ($c[1] == null ? nil : $c[1])), $d; $writer = [name, instance]; - $send((($d = $RemoteResource.$$cvars['@@instances']) == null ? nil : $d)['$[]'](klass_name), '[]=', Opal.to_a($writer)); + $send((($c = $nesting[0].$$cvars['@@instances']) == null ? nil : $c)['$[]'](klass_name), '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; $writer = [name, promise]; - $send((($d = $RemoteResource.$$cvars['@@promises']) == null ? nil : $d)['$[]'](klass_name), '[]=', Opal.to_a($writer)); + $send((($c = $nesting[0].$$cvars['@@promises']) == null ? nil : $c)['$[]'](klass_name), '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)];; - } else { + } else { return nil - }}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9.$$has_top_level_mlhs_arg = true, TMP_9));}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8)); - promises = $send((($a = $RemoteResource.$$cvars['@@promises']) == null ? nil : $a).$values(), 'flat_map', [], "values".$to_proc()); + };}, $$9.$$s = self, $$9.$$arity = 2, $$9.$$has_top_level_mlhs_arg = true, $$9));}, $$8.$$s = self, $$8.$$arity = 2, $$8)); + promises = $send((($a = $nesting[0].$$cvars['@@promises']) == null ? nil : $a).$values(), 'flat_map', [], "values".$to_proc()); Promise.all(promises).then(function() { block.$call() }); ; - }, TMP_RemoteResource__load_resources_7.$$arity = 0); - Opal.defs(self, '$_load', TMP_RemoteResource__load_10 = function $$_load($a_rest) { - var self = this, args; + }, $RemoteResource__load_resources$7.$$arity = 0); + Opal.defs(self, '$_load', $RemoteResource__load$10 = function $$_load($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return self.$raise("override me") - }, TMP_RemoteResource__load_10.$$arity = -1); - return Opal.defs(self, '$_klass_name', TMP_RemoteResource__klass_name_11 = function $$_klass_name() { + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return self.$raise("override me"); + }, $RemoteResource__load$10.$$arity = -1); + return (Opal.defs(self, '$_klass_name', $RemoteResource__klass_name$11 = function $$_klass_name() { var self = this; return self.$name().$split(/::/).$last() - }, TMP_RemoteResource__klass_name_11.$$arity = 0); + }, $RemoteResource__klass_name$11.$$arity = 0), nil) && '_klass_name'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/image"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); @@ -23452,26 +25263,25 @@ Opal.modules["dxopal/image"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send; Opal.add_stubs(['$require', '$add_class', '$<', '$*', '$+', '$/', '$-', '$===', '$new', '$attr_accessor', '$loaded', '$load', '$call', '$_resize', '$box_fill', '$attr_reader', '$canvas', '$draw_ex', '$[]', '$width', '$height', '$_spec_str', '$_rgba', '$_rgba_ary', '$fill', '$_image_data', '$_put_image_data', '$flat_map', '$map', '$slice', '$length', '$raise', '$inspect', '$join']); self.$require("dxopal/remote_resource"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Image(){}; - var self = $Image = $klass($base, $super, 'Image', $Image); + var self = $klass($base, $super, 'Image'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Image_hsl2rgb_1, TMP_Image__load_2, TMP_Image_loaded$q_3, TMP_Image_load_4, TMP_Image_load_5, TMP_Image_onload_6, TMP_Image_initialize_7, TMP_Image__resize_8, TMP_Image_draw_9, TMP_Image_draw_scale_10, TMP_Image_draw_rot_11, TMP_Image_draw_ex_12, TMP_Image_draw_font_13, TMP_Image_$$_14, TMP_Image_$$$eq_15, TMP_Image_compare_16, TMP_Image_line_17, TMP_Image_box_18, TMP_Image_box_fill_19, TMP_Image_circle_20, TMP_Image_circle_fill_21, TMP_Image_triangle_22, TMP_Image_triangle_fill_23, TMP_Image_fill_24, TMP_Image_clear_25, TMP_Image_slice_26, TMP_Image_slice_tiles_29, TMP_Image_set_color_key_30, TMP_Image__draw_raw_image_31, TMP_Image__image_data_32, TMP_Image__put_image_data_33, TMP_Image__rgb_34, TMP_Image__rgba_35, TMP_Image__rgba_ary_36; + var $nesting = [self].concat($parent_nesting), $Image_hsl2rgb$1, $Image__load$2, $Image_loaded$ques$3, $Image_load$4, $Image_load$5, $Image_onload$6, $Image_initialize$7, $Image__resize$8, $Image_draw$9, $Image_draw_scale$10, $Image_draw_rot$11, $Image_draw_ex$12, $Image_draw_font$13, $Image_$$$14, $Image_$$$eq$15, $Image_compare$16, $Image_line$17, $Image_box$18, $Image_box_fill$19, $Image_circle$20, $Image_circle_fill$21, $Image_triangle$22, $Image_triangle_fill$23, $Image_fill$24, $Image_clear$25, $Image_slice$26, $Image_slice_tiles$27, $Image_set_color_key$30, $Image__draw_raw_image$31, $Image__image_data$32, $Image__put_image_data$33, $Image__rgb$34, $Image__rgba$35, $Image__rgba_ary$36; - def.promise = def.canvas = def.width = def.height = def.ctx = nil; + self.$$prototype.promise = self.$$prototype.canvas = self.$$prototype.width = self.$$prototype.height = self.$$prototype.ctx = nil; - Opal.const_get_relative($nesting, 'RemoteResource').$add_class(Opal.const_get_relative($nesting, 'Image')); - Opal.defs(self, '$hsl2rgb', TMP_Image_hsl2rgb_1 = function $$hsl2rgb(h, s, l) { + $$($nesting, 'RemoteResource').$add_class($$($nesting, 'Image')); + Opal.defs(self, '$hsl2rgb', $Image_hsl2rgb$1 = function $$hsl2rgb(h, s, l) { var self = this, max = nil, min = nil, $case = nil; @@ -23479,7 +25289,7 @@ Opal.modules["dxopal/image"] = function(Opal) { max = $rb_times(2.55, $rb_plus(l, $rb_times(l, $rb_divide(s, 100.0)))); min = $rb_times(2.55, $rb_minus(l, $rb_times(l, $rb_divide(s, 100.0)))); - } else { + } else { max = $rb_times(2.55, $rb_plus(l, $rb_times($rb_minus(100, l), $rb_divide(s, 100.0)))); min = $rb_times(2.55, $rb_minus(l, $rb_times($rb_minus(100, l), $rb_divide(s, 100.0)))); @@ -23491,8 +25301,8 @@ Opal.modules["dxopal/image"] = function(Opal) { else if ($range(180, 240, true)['$===']($case)) {return [min, $rb_plus($rb_times($rb_divide($rb_minus(240, h), 60.0), $rb_minus(max, min)), min), max]} else if ($range(240, 300, true)['$===']($case)) {return [$rb_plus($rb_times($rb_divide($rb_minus(h, 240), 60.0), $rb_minus(max, min)), min), min, max]} else {return [max, min, $rb_plus($rb_times($rb_divide($rb_minus(360, h), 60.0), $rb_minus(max, min)), min)]}})(); - }, TMP_Image_hsl2rgb_1.$$arity = 3); - Opal.defs(self, '$_load', TMP_Image__load_2 = function $$_load(path_or_url) { + }, $Image_hsl2rgb$1.$$arity = 3); + Opal.defs(self, '$_load', $Image__load$2 = function $$_load(path_or_url) { var self = this, raw_img = nil, img_promise = nil, img = nil; @@ -23513,21 +25323,21 @@ Opal.modules["dxopal/image"] = function(Opal) { }); ; return [img, img_promise]; - }, TMP_Image__load_2.$$arity = 1); + }, $Image__load$2.$$arity = 1); self.$attr_accessor("promise", "loaded"); - Opal.defn(self, '$loaded?', TMP_Image_loaded$q_3 = function() { + Opal.def(self, '$loaded?', $Image_loaded$ques$3 = function() { var self = this; return self.$loaded() - }, TMP_Image_loaded$q_3.$$arity = 0); - Opal.defs(self, '$load', TMP_Image_load_4 = function $$load(path_or_url) { + }, $Image_loaded$ques$3.$$arity = 0); + Opal.defs(self, '$load', $Image_load$4 = function $$load(path_or_url) { var self = this; return self.$new(1, 1).$load(path_or_url) - }, TMP_Image_load_4.$$arity = 1); + }, $Image_load$4.$$arity = 1); - Opal.defn(self, '$load', TMP_Image_load_5 = function $$load(path_or_url) { + Opal.def(self, '$load', $Image_load$5 = function $$load(path_or_url) { var self = this, raw_img = nil; @@ -23544,51 +25354,58 @@ Opal.modules["dxopal/image"] = function(Opal) { }); ; return self; - }, TMP_Image_load_5.$$arity = 1); + }, $Image_load$5.$$arity = 1); - Opal.defn(self, '$onload', TMP_Image_onload_6 = function $$onload() { - var self = this, $iter = TMP_Image_onload_6.$$p, block = $iter || nil; + Opal.def(self, '$onload', $Image_onload$6 = function $$onload() { + var $iter = $Image_onload$6.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Image_onload_6.$$p = null; + if ($iter) $Image_onload$6.$$p = null; + + + if ($iter) $Image_onload$6.$$p = null;; self.promise.then(function(response){ block.$call() }); + ; + }, $Image_onload$6.$$arity = 0); - }, TMP_Image_onload_6.$$arity = 0); - - Opal.defn(self, '$initialize', TMP_Image_initialize_7 = function $$initialize(width, height, $color, $kwargs) { - var $a, self = this, $post_args, canvas, color; + Opal.def(self, '$initialize', $Image_initialize$7 = function $$initialize(width, height, $a, $b) { + var $post_args, $kwargs, color, canvas, $c, self = this; + + $post_args = Opal.slice.call(arguments, 2, arguments.length); + $kwargs = Opal.extract_kwargs($post_args); - if ($kwargs == null || !$kwargs.$$is_hash) { - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else { - throw Opal.ArgumentError.$new('expected kwargs'); - } + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) { + color = $post_args[0]; + $post_args.splice(0, 1); } + if (color == null) { + color = $$($nesting, 'C_DEFAULT'); + }; + canvas = $kwargs.$$smap["canvas"]; if (canvas == null) { canvas = nil - } - if (0 < $post_args.length) { - color = $post_args.splice(0,1)[0]; - } - if (color == null) { - color = Opal.const_get_relative($nesting, 'C_DEFAULT'); - } - - $a = [width, height], (self.width = $a[0]), (self.height = $a[1]), $a; - self.canvas = ($truthy($a = canvas) ? $a : document.createElement("canvas")); + }; + $c = [width, height], (self.width = $c[0]), (self.height = $c[1]), $c; + self.canvas = ($truthy($c = canvas) ? $c : document.createElement("canvas")); self.ctx = self.canvas.getContext('2d'); self.$_resize(self.width, self.height); return self.$box_fill(0, 0, self.width, self.height, color); - }, TMP_Image_initialize_7.$$arity = -3); + }, $Image_initialize$7.$$arity = -3); self.$attr_reader("ctx", "canvas", "width", "height"); - Opal.defn(self, '$_resize', TMP_Image__resize_8 = function $$_resize(w, h) { + Opal.def(self, '$_resize', $Image__resize$8 = function $$_resize(w, h) { var $a, self = this; @@ -23597,9 +25414,9 @@ Opal.modules["dxopal/image"] = function(Opal) { self.canvas.width = w; self.canvas.height = h; ; - }, TMP_Image__resize_8.$$arity = 2); + }, $Image__resize$8.$$arity = 2); - Opal.defn(self, '$draw', TMP_Image_draw_9 = function $$draw(x, y, image) { + Opal.def(self, '$draw', $Image_draw$9 = function $$draw(x, y, image) { var self = this; @@ -23607,40 +25424,47 @@ Opal.modules["dxopal/image"] = function(Opal) { self.ctx.drawImage(image.$canvas(), x, y); ; return self; - }, TMP_Image_draw_9.$$arity = 3); + }, $Image_draw$9.$$arity = 3); - Opal.defn(self, '$draw_scale', TMP_Image_draw_scale_10 = function $$draw_scale(x, y, image, scale_x, scale_y, center_x, center_y) { + Opal.def(self, '$draw_scale', $Image_draw_scale$10 = function $$draw_scale(x, y, image, scale_x, scale_y, center_x, center_y) { var self = this; + + if (center_x == null) { center_x = nil; - } + }; + if (center_y == null) { center_y = nil; - } - return self.$draw_ex(x, y, image, $hash2(["scale_x", "scale_y", "center_x", "center_y"], {"scale_x": scale_x, "scale_y": scale_y, "center_x": center_x, "center_y": center_y})) - }, TMP_Image_draw_scale_10.$$arity = -6); + }; + return self.$draw_ex(x, y, image, $hash2(["scale_x", "scale_y", "center_x", "center_y"], {"scale_x": scale_x, "scale_y": scale_y, "center_x": center_x, "center_y": center_y})); + }, $Image_draw_scale$10.$$arity = -6); - Opal.defn(self, '$draw_rot', TMP_Image_draw_rot_11 = function $$draw_rot(x, y, image, angle, center_x, center_y) { + Opal.def(self, '$draw_rot', $Image_draw_rot$11 = function $$draw_rot(x, y, image, angle, center_x, center_y) { var self = this; + + if (center_x == null) { center_x = nil; - } + }; + if (center_y == null) { center_y = nil; - } - return self.$draw_ex(x, y, image, $hash2(["angle", "center_x", "center_y"], {"angle": angle, "center_x": center_x, "center_y": center_y})) - }, TMP_Image_draw_rot_11.$$arity = -5); + }; + return self.$draw_ex(x, y, image, $hash2(["angle", "center_x", "center_y"], {"angle": angle, "center_x": center_x, "center_y": center_y})); + }, $Image_draw_rot$11.$$arity = -5); Opal.const_set($nesting[0], 'BLEND_TYPES', $hash2(["alpha", "add"], {"alpha": "source-over", "add": "lighter"})); - Opal.defn(self, '$draw_ex', TMP_Image_draw_ex_12 = function $$draw_ex(x, y, image, options) { + Opal.def(self, '$draw_ex', $Image_draw_ex$12 = function $$draw_ex(x, y, image, options) { var $a, self = this, scale_x = nil, scale_y = nil, center_x = nil, center_y = nil, alpha = nil, blend = nil, angle = nil, cx = nil, cy = nil; + + if (options == null) { options = $hash2([], {}); - } - + }; scale_x = ($truthy($a = options['$[]']("scale_x")) ? $a : 1); scale_y = ($truthy($a = options['$[]']("scale_y")) ? $a : 1); center_x = ($truthy($a = options['$[]']("center_x")) ? $a : $rb_divide(image.$width(), 2)); @@ -23656,21 +25480,22 @@ Opal.modules["dxopal/image"] = function(Opal) { self.ctx.scale(scale_x, scale_y); self.ctx.save(); self.ctx.globalAlpha = alpha / 255; - self.ctx.globalCompositeOperation = Opal.const_get_relative($nesting, 'BLEND_TYPES')['$[]'](blend); + self.ctx.globalCompositeOperation = $$($nesting, 'BLEND_TYPES')['$[]'](blend); self.ctx.drawImage(image.$canvas(), x-cx, y-cy); self.ctx.restore(); self.ctx.setTransform(1, 0, 0, 1, 0, 0); // reset ; return self; - }, TMP_Image_draw_ex_12.$$arity = -4); + }, $Image_draw_ex$12.$$arity = -4); - Opal.defn(self, '$draw_font', TMP_Image_draw_font_13 = function $$draw_font(x, y, string, font, color) { + Opal.def(self, '$draw_font', $Image_draw_font$13 = function $$draw_font(x, y, string, font, color) { var self = this, ctx = nil; + + if (color == null) { color = [255, 255, 255]; - } - + }; ctx = self.ctx; ctx.font = font.$_spec_str(); @@ -23679,9 +25504,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.fillText(string, x, y); ; return self; - }, TMP_Image_draw_font_13.$$arity = -5); + }, $Image_draw_font$13.$$arity = -5); - Opal.defn(self, '$[]', TMP_Image_$$_14 = function(x, y) { + Opal.def(self, '$[]', $Image_$$$14 = function(x, y) { var self = this, ctx = nil, ret = nil; @@ -23693,15 +25518,15 @@ Opal.modules["dxopal/image"] = function(Opal) { ret = [rgba[3], rgba[0], rgba[1], rgba[2]]; ; return ret; - }, TMP_Image_$$_14.$$arity = 2); + }, $Image_$$$14.$$arity = 2); - Opal.defn(self, '$[]=', TMP_Image_$$$eq_15 = function(x, y, color) { + Opal.def(self, '$[]=', $Image_$$$eq$15 = function(x, y, color) { var self = this; return self.$box_fill(x, y, $rb_plus(x, 1), $rb_plus(y, 1), color) - }, TMP_Image_$$$eq_15.$$arity = 3); + }, $Image_$$$eq$15.$$arity = 3); - Opal.defn(self, '$compare', TMP_Image_compare_16 = function $$compare(x, y, color) { + Opal.def(self, '$compare', $Image_compare$16 = function $$compare(x, y, color) { var self = this, ctx = nil, rgba1 = nil, rgba2 = nil, ret = nil; @@ -23719,9 +25544,9 @@ Opal.modules["dxopal/image"] = function(Opal) { rgba1[3] == rgba2[3] ; return ret; - }, TMP_Image_compare_16.$$arity = 3); + }, $Image_compare$16.$$arity = 3); - Opal.defn(self, '$line', TMP_Image_line_17 = function $$line(x1, y1, x2, y2, color) { + Opal.def(self, '$line', $Image_line$17 = function $$line(x1, y1, x2, y2, color) { var self = this, ctx = nil; @@ -23734,9 +25559,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.stroke(); ; return self; - }, TMP_Image_line_17.$$arity = 5); + }, $Image_line$17.$$arity = 5); - Opal.defn(self, '$box', TMP_Image_box_18 = function $$box(x1, y1, x2, y2, color) { + Opal.def(self, '$box', $Image_box$18 = function $$box(x1, y1, x2, y2, color) { var self = this, ctx = nil; @@ -23748,9 +25573,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.stroke(); ; return self; - }, TMP_Image_box_18.$$arity = 5); + }, $Image_box$18.$$arity = 5); - Opal.defn(self, '$box_fill', TMP_Image_box_fill_19 = function $$box_fill(x1, y1, x2, y2, color) { + Opal.def(self, '$box_fill', $Image_box_fill$19 = function $$box_fill(x1, y1, x2, y2, color) { var self = this, ctx = nil; @@ -23761,9 +25586,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.fillRect(x1, y1, x2-x1, y2-y1); ; return self; - }, TMP_Image_box_fill_19.$$arity = 5); + }, $Image_box_fill$19.$$arity = 5); - Opal.defn(self, '$circle', TMP_Image_circle_20 = function $$circle(x, y, r, color) { + Opal.def(self, '$circle', $Image_circle$20 = function $$circle(x, y, r, color) { var self = this, ctx = nil; @@ -23775,9 +25600,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.stroke(); ; return self; - }, TMP_Image_circle_20.$$arity = 4); + }, $Image_circle$20.$$arity = 4); - Opal.defn(self, '$circle_fill', TMP_Image_circle_fill_21 = function $$circle_fill(x, y, r, color) { + Opal.def(self, '$circle_fill', $Image_circle_fill$21 = function $$circle_fill(x, y, r, color) { var self = this, ctx = nil; @@ -23789,9 +25614,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.fill(); ; return self; - }, TMP_Image_circle_fill_21.$$arity = 4); + }, $Image_circle_fill$21.$$arity = 4); - Opal.defn(self, '$triangle', TMP_Image_triangle_22 = function $$triangle(x1, y1, x2, y2, x3, y3, color) { + Opal.def(self, '$triangle', $Image_triangle$22 = function $$triangle(x1, y1, x2, y2, x3, y3, color) { var self = this, ctx = nil; @@ -23806,9 +25631,9 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.stroke(); ; return self; - }, TMP_Image_triangle_22.$$arity = 7); + }, $Image_triangle$22.$$arity = 7); - Opal.defn(self, '$triangle_fill', TMP_Image_triangle_fill_23 = function $$triangle_fill(x1, y1, x2, y2, x3, y3, color) { + Opal.def(self, '$triangle_fill', $Image_triangle_fill$23 = function $$triangle_fill(x1, y1, x2, y2, x3, y3, color) { var self = this, ctx = nil; @@ -23822,44 +25647,54 @@ Opal.modules["dxopal/image"] = function(Opal) { ctx.fill(); ; return self; - }, TMP_Image_triangle_fill_23.$$arity = 7); + }, $Image_triangle_fill$23.$$arity = 7); - Opal.defn(self, '$fill', TMP_Image_fill_24 = function $$fill(color) { + Opal.def(self, '$fill', $Image_fill$24 = function $$fill(color) { var self = this; return self.$box_fill(0, 0, $rb_minus(self.width, 1), $rb_minus(self.height, 1), color) - }, TMP_Image_fill_24.$$arity = 1); + }, $Image_fill$24.$$arity = 1); - Opal.defn(self, '$clear', TMP_Image_clear_25 = function $$clear() { + Opal.def(self, '$clear', $Image_clear$25 = function $$clear() { var self = this; return self.$fill([0, 0, 0, 0]) - }, TMP_Image_clear_25.$$arity = 0); + }, $Image_clear$25.$$arity = 0); - Opal.defn(self, '$slice', TMP_Image_slice_26 = function $$slice(x, y, width, height) { + Opal.def(self, '$slice', $Image_slice$26 = function $$slice(x, y, width, height) { var self = this, newimg = nil, data = nil; - newimg = Opal.const_get_relative($nesting, 'Image').$new(width, height); + newimg = $$($nesting, 'Image').$new(width, height); data = self.$_image_data(x, y, width, height); newimg.$_put_image_data(data); return newimg; - }, TMP_Image_slice_26.$$arity = 4); + }, $Image_slice$26.$$arity = 4); - Opal.defn(self, '$slice_tiles', TMP_Image_slice_tiles_29 = function $$slice_tiles(xcount, ycount) { - var TMP_27, self = this, tile_w = nil, tile_h = nil; + Opal.def(self, '$slice_tiles', $Image_slice_tiles$27 = function $$slice_tiles(xcount, ycount) { + var $$28, self = this, tile_w = nil, tile_h = nil; tile_w = $rb_divide(self.width, xcount); tile_h = $rb_divide(self.height, ycount); - return $send(Opal.Range.$new(0,ycount, true), 'flat_map', [], (TMP_27 = function(v){var self = TMP_27.$$s || this, TMP_28; -if (v == null) v = nil; - return $send(Opal.Range.$new(0,xcount, true), 'map', [], (TMP_28 = function(u){var self = TMP_28.$$s || this; -if (u == null) u = nil; - return self.$slice($rb_times(tile_w, u), $rb_times(tile_h, v), tile_w, tile_h)}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28))}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)); - }, TMP_Image_slice_tiles_29.$$arity = 2); - - Opal.defn(self, '$set_color_key', TMP_Image_set_color_key_30 = function $$set_color_key(color) { + return $send(Opal.Range.$new(0,ycount, true), 'flat_map', [], ($$28 = function(v){var self = $$28.$$s || this, $$29; + + + + if (v == null) { + v = nil; + }; + return $send(Opal.Range.$new(0,xcount, true), 'map', [], ($$29 = function(u){var self = $$29.$$s || this; + + + + if (u == null) { + u = nil; + }; + return self.$slice($rb_times(tile_w, u), $rb_times(tile_h, v), tile_w, tile_h);}, $$29.$$s = self, $$29.$$arity = 1, $$29));}, $$28.$$s = self, $$28.$$arity = 1, $$28)); + }, $Image_slice_tiles$27.$$arity = 2); + + Opal.def(self, '$set_color_key', $Image_set_color_key$30 = function $$set_color_key(color) { var $a, $b, self = this, r = nil, g = nil, b = nil, _ = nil, data = nil; @@ -23875,47 +25710,55 @@ if (u == null) u = nil; } ; return self.$_put_image_data(data); - }, TMP_Image_set_color_key_30.$$arity = 1); + }, $Image_set_color_key$30.$$arity = 1); - Opal.defn(self, '$_draw_raw_image', TMP_Image__draw_raw_image_31 = function $$_draw_raw_image(x, y, raw_img) { + Opal.def(self, '$_draw_raw_image', $Image__draw_raw_image$31 = function $$_draw_raw_image(x, y, raw_img) { var self = this; self.ctx.drawImage(raw_img, x, y); - }, TMP_Image__draw_raw_image_31.$$arity = 3); + }, $Image__draw_raw_image$31.$$arity = 3); - Opal.defn(self, '$_image_data', TMP_Image__image_data_32 = function $$_image_data(x, y, w, h) { + Opal.def(self, '$_image_data', $Image__image_data$32 = function $$_image_data(x, y, w, h) { var self = this; + + if (x == null) { x = 0; - } + }; + if (y == null) { y = 0; - } + }; + if (w == null) { w = self.width; - } + }; + if (h == null) { h = self.height; - } - return self.ctx.getImageData(x, y, w, h) - }, TMP_Image__image_data_32.$$arity = -1); + }; + return self.ctx.getImageData(x, y, w, h); + }, $Image__image_data$32.$$arity = -1); - Opal.defn(self, '$_put_image_data', TMP_Image__put_image_data_33 = function $$_put_image_data(image_data, x, y) { + Opal.def(self, '$_put_image_data', $Image__put_image_data$33 = function $$_put_image_data(image_data, x, y) { var self = this; + + if (x == null) { x = 0; - } + }; + if (y == null) { y = 0; - } - return self.ctx.putImageData(image_data, x, y) - }, TMP_Image__put_image_data_33.$$arity = -2); + }; + return self.ctx.putImageData(image_data, x, y); + }, $Image__put_image_data$33.$$arity = -2); - Opal.defn(self, '$_rgb', TMP_Image__rgb_34 = function $$_rgb(color) { + Opal.def(self, '$_rgb', $Image__rgb$34 = function $$_rgb(color) { var self = this, $case = nil, rgb = nil; @@ -23924,54 +25767,51 @@ if (u == null) u = nil; else if ((3)['$===']($case)) {rgb = color} else {self.$raise("" + "invalid color: " + (color.$inspect()))}; return $rb_plus($rb_plus("rgb(", rgb.$join(", ")), ")"); - }, TMP_Image__rgb_34.$$arity = 1); + }, $Image__rgb$34.$$arity = 1); - Opal.defn(self, '$_rgba', TMP_Image__rgba_35 = function $$_rgba(color) { + Opal.def(self, '$_rgba', $Image__rgba$35 = function $$_rgba(color) { var self = this; return $rb_plus($rb_plus("rgba(", self.$_rgba_ary(color).$join(", ")), ")") - }, TMP_Image__rgba_35.$$arity = 1); - return (Opal.defn(self, '$_rgba_ary', TMP_Image__rgba_ary_36 = function $$_rgba_ary(color) { + }, $Image__rgba$35.$$arity = 1); + return (Opal.def(self, '$_rgba_ary', $Image__rgba_ary$36 = function $$_rgba_ary(color) { var self = this, $case = nil; return (function() {$case = color.$length(); if ((4)['$===']($case)) {return $rb_plus(color['$[]'](1, 3), [$rb_divide(color['$[]'](0), 255.0)])} else if ((3)['$===']($case)) {return $rb_plus(color, [1.0])} else {return self.$raise("" + "invalid color: " + (color.$inspect()))}})() - }, TMP_Image__rgba_ary_36.$$arity = 1), nil) && '_rgba_ary'; - })($nesting[0], Opal.const_get_relative($nesting, 'RemoteResource'), $nesting) + }, $Image__rgba_ary$36.$$arity = 1), nil) && '_rgba_ary'; + })($nesting[0], $$($nesting, 'RemoteResource'), $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sound"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$add_class', '$new', '$audio_context', '$attr_accessor', '$raise', '$path_or_url']); self.$require("dxopal/remote_resource"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Sound(){}; - var self = $Sound = $klass($base, $super, 'Sound', $Sound); + var self = $klass($base, $super, 'Sound'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Sound_audio_context_1, TMP_Sound__load_2, TMP_Sound_initialize_3, TMP_Sound_play_4, TMP_Sound_stop_5; + var $nesting = [self].concat($parent_nesting), $Sound_audio_context$1, $Sound__load$2, $Sound_initialize$3, $Sound_play$4, $Sound_stop$5; - def.decoded = def.source = nil; + self.$$prototype.decoded = self.$$prototype.source = nil; - Opal.const_get_relative($nesting, 'RemoteResource').$add_class(Opal.const_get_relative($nesting, 'Sound')); - Opal.defs(self, '$audio_context', TMP_Sound_audio_context_1 = function $$audio_context() { + $$($nesting, 'RemoteResource').$add_class($$($nesting, 'Sound')); + Opal.defs(self, '$audio_context', $Sound_audio_context$1 = function $$audio_context() { var $a, $b, self = this; - return (Opal.class_variable_set($Sound, '@@audio_context', ($truthy($a = (($b = $Sound.$$cvars['@@audio_context']) == null ? nil : $b)) ? $a : - new (window.AudioContext||window.webkitAudioContext) - ))) - }, TMP_Sound_audio_context_1.$$arity = 0); - Opal.defs(self, '$_load', TMP_Sound__load_2 = function $$_load(path_or_url) { + return (Opal.class_variable_set($nesting[0], '@@audio_context', ($truthy($a = (($b = $nesting[0].$$cvars['@@audio_context']) == null ? nil : $b)) ? $a : new (window.AudioContext||window.webkitAudioContext)))) + }, $Sound_audio_context$1.$$arity = 0); + Opal.defs(self, '$_load', $Sound__load$2 = function $$_load(path_or_url) { var self = this, snd = nil, snd_promise = nil; @@ -23983,7 +25823,7 @@ Opal.modules["dxopal/sound"] = function(Opal) { request.responseType = 'arraybuffer'; request.onload = function() { var audioData = request.response; - var context = Opal.const_get_relative($nesting, 'Sound').$audio_context(); + var context = $$($nesting, 'Sound').$audio_context(); context.decodeAudioData(audioData, function(decoded) { snd['$decoded='](decoded); resolve(); @@ -23993,52 +25833,52 @@ Opal.modules["dxopal/sound"] = function(Opal) { }); ; return [snd, snd_promise]; - }, TMP_Sound__load_2.$$arity = 1); + }, $Sound__load$2.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Sound_initialize_3 = function $$initialize(path_or_url) { + Opal.def(self, '$initialize', $Sound_initialize$3 = function $$initialize(path_or_url) { var self = this; return (self.path_or_url = path_or_url) - }, TMP_Sound_initialize_3.$$arity = 1); + }, $Sound_initialize$3.$$arity = 1); self.$attr_accessor("decoded"); - Opal.defn(self, '$play', TMP_Sound_play_4 = function $$play() { + Opal.def(self, '$play', $Sound_play$4 = function $$play() { var self = this, source = nil; if ($truthy(self.decoded)) { - } else { + } else { self.$raise("" + "Sound " + (self.$path_or_url()) + " is not loaded yet") }; source = nil; - var context = Opal.const_get_relative($nesting, 'Sound').$audio_context(); + var context = $$($nesting, 'Sound').$audio_context(); source = context.createBufferSource(); source.buffer = self.decoded; source.connect(context.destination); source.start(0); ; return (self.source = source); - }, TMP_Sound_play_4.$$arity = 0); - return (Opal.defn(self, '$stop', TMP_Sound_stop_5 = function $$stop() { + }, $Sound_play$4.$$arity = 0); + return (Opal.def(self, '$stop', $Sound_stop$5 = function $$stop() { var self = this; if ($truthy(self.decoded)) { - } else { + } else { return nil }; if ($truthy(self.source)) { - } else { + } else { return nil }; return self.source.stop(); - }, TMP_Sound_stop_5.$$arity = 0), nil) && 'stop'; - })($nesting[0], Opal.const_get_relative($nesting, 'RemoteResource'), $nesting) + }, $Sound_stop$5.$$arity = 0), nil) && 'stop'; + })($nesting[0], $$($nesting, 'RemoteResource'), $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sound_effect"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); @@ -24046,26 +25886,25 @@ Opal.modules["dxopal/sound_effect"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs(['$add_class', '$new', '$audio_context', '$/', '$call', '$raise', '$+', '$inspect']); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $SoundEffect(){}; - var self = $SoundEffect = $klass($base, $super, 'SoundEffect', $SoundEffect); + var self = $klass($base, $super, 'SoundEffect'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SoundEffect__load_1, TMP_SoundEffect_add_2; + var $nesting = [self].concat($parent_nesting), $SoundEffect__load$1, $SoundEffect_add$2; - Opal.const_get_relative($nesting, 'RemoteResource').$add_class(Opal.const_get_relative($nesting, 'SoundEffect')); + $$($nesting, 'RemoteResource').$add_class($$($nesting, 'SoundEffect')); (function($base, $parent_nesting) { - var $WaveTypes, self = $WaveTypes = $module($base, 'WaveTypes'); + var self = $module($base, 'WaveTypes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'WAVE_SIN', "sine"); @@ -24073,22 +25912,26 @@ Opal.modules["dxopal/sound_effect"] = function(Opal) { Opal.const_set($nesting[0], 'WAVE_TRI', "triangle"); Opal.const_set($nesting[0], 'WAVE_RECT', "square"); })($nesting[0], $nesting); - Opal.defs(self, '$_load', TMP_SoundEffect__load_1 = function $$_load(time, wave_type, resolution) { - var self = this, $iter = TMP_SoundEffect__load_1.$$p, block = $iter || nil, snd = nil, snd_promise = nil; + Opal.defs(self, '$_load', $SoundEffect__load$1 = function $$_load(time, wave_type, resolution) { + var $iter = $SoundEffect__load$1.$$p, block = $iter || nil, self = this, snd = nil, snd_promise = nil; + if ($iter) $SoundEffect__load$1.$$p = null; + + + if ($iter) $SoundEffect__load$1.$$p = null;; + if (wave_type == null) { - wave_type = Opal.const_get_relative($nesting, 'WAVE_RECT'); - } + wave_type = $$($nesting, 'WAVE_RECT'); + }; + if (resolution == null) { resolution = 1000; - } - if ($iter) TMP_SoundEffect__load_1.$$p = null; - + }; snd = self.$new("(soundeffect)"); snd_promise = new Promise(function(resolve, reject){ var n_channels = 1; - var context = Opal.const_get_relative($nesting, 'Sound').$audio_context(); + var context = $$($nesting, 'Sound').$audio_context(); var n_ticks = time; var totalSeconds = $rb_divide(time, resolution); var valuesPerSecond = context.sampleRate; @@ -24136,25 +25979,28 @@ Opal.modules["dxopal/sound_effect"] = function(Opal) { }); ; return [snd, snd_promise]; - }, TMP_SoundEffect__load_1.$$arity = -2); - return (Opal.defn(self, '$add', TMP_SoundEffect_add_2 = function $$add(wave_type, resolution) { + }, $SoundEffect__load$1.$$arity = -2); + return (Opal.def(self, '$add', $SoundEffect_add$2 = function $$add(wave_type, resolution) { var self = this; + + if (wave_type == null) { - wave_type = Opal.const_get_relative($nesting, 'WAVE_RECT'); - } + wave_type = $$($nesting, 'WAVE_RECT'); + }; + if (resolution == null) { resolution = 1000; - } - return Opal.const_get_relative($nesting, 'TODO') - }, TMP_SoundEffect_add_2.$$arity = -1), nil) && 'add'; - })($nesting[0], Opal.const_get_relative($nesting, 'Sound'), $nesting) + }; + return $$($nesting, 'TODO'); + }, $SoundEffect_add$2.$$arity = -1), nil) && 'add'; + })($nesting[0], $$($nesting, 'Sound'), $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sprite/collision_checker"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; (function(){ @@ -24326,7 +26172,7 @@ Opal.DXOpal.CCk = CCk; // Alias })(); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -24337,67 +26183,58 @@ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { function $rb_times(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$attr_reader', '$raise', '$x', '$y', '$!', '$collision_sync', '$map', '$+', '$angle', '$center_x', '$center_y', '$scale_x', '$scale_y', '$first', '$absolute', '$transback', '$-@', '$type', '$===', '$==', '$absolute_pos', '$transback1', '$sprite', '$absolute_norot_pos', '$r', '$absolute_norot_poss', '$absolute_poss', '$absolute1', '$collides?', '$collides_circle?', '$private', '$circle?', '$/', '$*', '$aabb']); self.$require("dxopal/sprite/collision_checker"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Sprite(){}; - var self = $Sprite = $klass($base, $super, 'Sprite', $Sprite); + var self = $klass($base, $super, 'Sprite'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return (function($base, $parent_nesting) { - var $CollisionArea, self = $CollisionArea = $module($base, 'CollisionArea'); + var self = $module($base, 'CollisionArea'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Base(){}; - var self = $Base = $klass($base, $super, 'Base', $Base); + var self = $klass($base, $super, 'Base'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Base_type_1, TMP_Base_absolute_3, TMP_Base_absolute1_4, TMP_Base_transback_5, TMP_Base_transback1_6, TMP_Base_aabb_7; + var $nesting = [self].concat($parent_nesting), $Base_type$1, $Base_absolute$2, $Base_absolute1$4, $Base_transback$5, $Base_transback1$6, $Base_aabb$7; - def.sprite = nil; + self.$$prototype.sprite = nil; self.$attr_reader("sprite"); - Opal.defn(self, '$type', TMP_Base_type_1 = function $$type() { + Opal.def(self, '$type', $Base_type$1 = function $$type() { var self = this; return self.$raise("override me") - }, TMP_Base_type_1.$$arity = 0); + }, $Base_type$1.$$arity = 0); - Opal.defn(self, '$absolute', TMP_Base_absolute_3 = function $$absolute(poss) { - var TMP_2, self = this, ox = nil, oy = nil, angle = nil, cx = nil, cy = nil, sx = nil, sy = nil, ret = nil; + Opal.def(self, '$absolute', $Base_absolute$2 = function $$absolute(poss) { + var $$3, self = this, ox = nil, oy = nil, angle = nil, cx = nil, cy = nil, sx = nil, sy = nil, ret = nil; ox = self.sprite.$x(); oy = self.sprite.$y(); if ($truthy(self.sprite.$collision_sync()['$!']())) { - return $send(poss, 'map', [], (TMP_2 = function($a){var self = TMP_2.$$s || this, $a_args, x, y; + return $send(poss, 'map', [], ($$3 = function($mlhs_tmp1){var self = $$3.$$s || this, $a, $b, x = nil, y = nil; - if ($a == null) { - $a = nil; - } - $a = Opal.to_ary($a); - $a_args = Opal.slice.call($a, 0, $a.length); - x = $a_args.splice(0,1)[0]; - if (x == null) { - x = nil; - } - y = $a_args.splice(0,1)[0]; - if (y == null) { - y = nil; - } - return [$rb_plus(x, ox), $rb_plus(y, oy)]}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2.$$has_top_level_mlhs_arg = true, TMP_2))}; + + + if ($mlhs_tmp1 == null) { + $mlhs_tmp1 = nil; + }; + $b = $mlhs_tmp1, $a = Opal.to_ary($b), (x = ($a[0] == null ? nil : $a[0])), (y = ($a[1] == null ? nil : $a[1])), $b; + return [$rb_plus(x, ox), $rb_plus(y, oy)];}, $$3.$$s = self, $$3.$$arity = 1, $$3.$$has_top_level_mlhs_arg = true, $$3))}; angle = self.sprite.$angle(); cx = self.sprite.$center_x(); cy = self.sprite.$center_y(); @@ -24416,15 +26253,15 @@ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { }); ; return ret; - }, TMP_Base_absolute_3.$$arity = 1); + }, $Base_absolute$2.$$arity = 1); - Opal.defn(self, '$absolute1', TMP_Base_absolute1_4 = function $$absolute1(pos) { + Opal.def(self, '$absolute1', $Base_absolute1$4 = function $$absolute1(pos) { var self = this; return self.$absolute([pos]).$first() - }, TMP_Base_absolute1_4.$$arity = 1); + }, $Base_absolute1$4.$$arity = 1); - Opal.defn(self, '$transback', TMP_Base_transback_5 = function $$transback(poss, sprite) { + Opal.def(self, '$transback', $Base_transback$5 = function $$transback(poss, sprite) { var self = this, angle = nil, cx = nil, cy = nil, sx = nil, sy = nil, ret = nil; @@ -24448,19 +26285,19 @@ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { }); ; return ret; - }, TMP_Base_transback_5.$$arity = 2); + }, $Base_transback$5.$$arity = 2); - Opal.defn(self, '$transback1', TMP_Base_transback1_6 = function $$transback1(pos, sprite) { + Opal.def(self, '$transback1', $Base_transback1$6 = function $$transback1(pos, sprite) { var self = this; return self.$transback([pos], sprite).$first() - }, TMP_Base_transback1_6.$$arity = 2); - return (Opal.defn(self, '$aabb', TMP_Base_aabb_7 = function $$aabb(poss) { + }, $Base_transback1$6.$$arity = 2); + return (Opal.def(self, '$aabb', $Base_aabb$7 = function $$aabb(poss) { var self = this, x1 = nil, y1 = nil, x2 = nil, y2 = nil; - x1 = (y1 = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY')); - x2 = (y2 = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY')['$-@']()); + x1 = (y1 = $$$($$($nesting, 'Float'), 'INFINITY')); + x2 = (y2 = $$$($$($nesting, 'Float'), 'INFINITY')['$-@']()); for(var i=0; i" - }, TMP_Rect_inspect_21.$$arity = 0); + }, $Rect_inspect$21.$$arity = 0); - Opal.defn(self, '$collides?', TMP_Rect_collides$q_22 = function(other) { + Opal.def(self, '$collides?', $Rect_collides$ques$22 = function(other) { var $a, $b, $c, self = this, $case = nil, ox1 = nil, oy1 = nil, ox2 = nil, oy2 = nil, dx1 = nil, dy1 = nil, dx2 = nil, dy2 = nil, ox3 = nil, oy3 = nil, ox4 = nil, oy4 = nil, dx3 = nil, dy3 = nil; return (function() {$case = other.$type(); @@ -24677,61 +26511,60 @@ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { $b = self.$absolute_norot_poss(), $a = Opal.to_ary($b), ($c = Opal.to_ary(($a[0] == null ? nil : $a[0])), (ox1 = ($c[0] == null ? nil : $c[0])), (oy1 = ($c[1] == null ? nil : $c[1]))), ($c = Opal.to_ary(($a[1] == null ? nil : $a[1])), (ox2 = ($c[0] == null ? nil : $c[0])), (oy2 = ($c[1] == null ? nil : $c[1]))), $b; $b = self.$aabb(self.$transback(other.$absolute_poss(), self.sprite)), $a = Opal.to_ary($b), ($c = Opal.to_ary(($a[0] == null ? nil : $a[0])), (dx1 = ($c[0] == null ? nil : $c[0])), (dy1 = ($c[1] == null ? nil : $c[1]))), ($c = Opal.to_ary(($a[1] == null ? nil : $a[1])), (dx2 = ($c[0] == null ? nil : $c[0])), (dy2 = ($c[1] == null ? nil : $c[1]))), $b; if ($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1, oy1, ox2, oy2, dx1, dy1, dx2, dy2))) { - } else { + } else { return false }; $b = other.$absolute_norot_poss(), $a = Opal.to_ary($b), ($c = Opal.to_ary(($a[0] == null ? nil : $a[0])), (ox1 = ($c[0] == null ? nil : $c[0])), (oy1 = ($c[1] == null ? nil : $c[1]))), ($c = Opal.to_ary(($a[1] == null ? nil : $a[1])), (ox2 = ($c[0] == null ? nil : $c[0])), (oy2 = ($c[1] == null ? nil : $c[1]))), $b; $b = self.$aabb(self.$transback(self.$absolute_poss(), other.$sprite())), $a = Opal.to_ary($b), ($c = Opal.to_ary(($a[0] == null ? nil : $a[0])), (dx1 = ($c[0] == null ? nil : $c[0])), (dy1 = ($c[1] == null ? nil : $c[1]))), ($c = Opal.to_ary(($a[1] == null ? nil : $a[1])), (dx2 = ($c[0] == null ? nil : $c[0])), (dy2 = ($c[1] == null ? nil : $c[1]))), $b; if ($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1, oy1, ox2, oy2, dx1, dy1, dx2, dy2))) { - } else { + } else { return false }; return true;} else if ("Triangle"['$===']($case)) { $a = [].concat(Opal.to_a(self.$absolute_poss())), ($b = Opal.to_ary(($a[0] == null ? nil : $a[0])), (ox1 = ($b[0] == null ? nil : $b[0])), (oy1 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[1] == null ? nil : $a[1])), (ox2 = ($b[0] == null ? nil : $b[0])), (oy2 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[2] == null ? nil : $a[2])), (ox3 = ($b[0] == null ? nil : $b[0])), (oy3 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[3] == null ? nil : $a[3])), (ox4 = ($b[0] == null ? nil : $b[0])), (oy4 = ($b[1] == null ? nil : $b[1]))), $a; $a = [].concat(Opal.to_a(other.$absolute_poss())), ($b = Opal.to_ary(($a[0] == null ? nil : $a[0])), (dx1 = ($b[0] == null ? nil : $b[0])), (dy1 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[1] == null ? nil : $a[1])), (dx2 = ($b[0] == null ? nil : $b[0])), (dy2 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[2] == null ? nil : $a[2])), (dx3 = ($b[0] == null ? nil : $b[0])), (dy3 = ($b[1] == null ? nil : $b[1]))), $a; - return Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1, oy1, ox2, oy2, ox3, oy3, ox4, oy4, + Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1, oy1, ox2, oy2, ox3, oy3, ox4, oy4, dx1, dy1, dx2, dy2, dx3, dy3);} else {return self.$raise()}})() - }, TMP_Rect_collides$q_22.$$arity = 1); + }, $Rect_collides$ques$22.$$arity = 1); - Opal.defn(self, '$absolute_poss', TMP_Rect_absolute_poss_23 = function $$absolute_poss() { + Opal.def(self, '$absolute_poss', $Rect_absolute_poss$23 = function $$absolute_poss() { var self = this; return self.$absolute(self.poss) - }, TMP_Rect_absolute_poss_23.$$arity = 0); - return (Opal.defn(self, '$absolute_norot_poss', TMP_Rect_absolute_norot_poss_24 = function $$absolute_norot_poss() { + }, $Rect_absolute_poss$23.$$arity = 0); + return (Opal.def(self, '$absolute_norot_poss', $Rect_absolute_norot_poss$24 = function $$absolute_norot_poss() { var self = this; return [[$rb_plus(self.x1, self.sprite.$x()), $rb_plus(self.y1, self.sprite.$y())], [$rb_plus(self.x2, self.sprite.$x()), $rb_plus(self.y2, self.sprite.$y())]] - }, TMP_Rect_absolute_norot_poss_24.$$arity = 0), nil) && 'absolute_norot_poss'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $Rect_absolute_norot_poss$24.$$arity = 0), nil) && 'absolute_norot_poss'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $Triangle(){}; - var self = $Triangle = $klass($base, $super, 'Triangle', $Triangle); + var self = $klass($base, $super, 'Triangle'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Triangle_initialize_25, TMP_Triangle_type_26, TMP_Triangle_collides$q_27, TMP_Triangle_absolute_poss_28; + var $nesting = [self].concat($parent_nesting), $Triangle_initialize$25, $Triangle_type$26, $Triangle_collides$ques$27, $Triangle_absolute_poss$28; - def.poss = nil; + self.$$prototype.poss = nil; - Opal.defn(self, '$initialize', TMP_Triangle_initialize_25 = function $$initialize(sprite, x1, y1, x2, y2, x3, y3) { - var self = this, $iter = TMP_Triangle_initialize_25.$$p, $yield = $iter || nil; + Opal.def(self, '$initialize', $Triangle_initialize$25 = function $$initialize(sprite, x1, y1, x2, y2, x3, y3) { + var $iter = $Triangle_initialize$25.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Triangle_initialize_25.$$p = null; + if ($iter) $Triangle_initialize$25.$$p = null; self.sprite = sprite; self.poss = [[x1, y1], [x2, y2], [x3, y3]]; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Triangle_initialize_25, false), [], null); - }, TMP_Triangle_initialize_25.$$arity = 7); + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Triangle_initialize$25, false), [], null); + }, $Triangle_initialize$25.$$arity = 7); - Opal.defn(self, '$type', TMP_Triangle_type_26 = function $$type() { + Opal.def(self, '$type', $Triangle_type$26 = function $$type() { var self = this; return "Triangle" - }, TMP_Triangle_type_26.$$arity = 0); + }, $Triangle_type$26.$$arity = 0); - Opal.defn(self, '$collides?', TMP_Triangle_collides$q_27 = function(other) { + Opal.def(self, '$collides?', $Triangle_collides$ques$27 = function(other) { var $a, $b, self = this, $case = nil, ox1 = nil, oy1 = nil, ox2 = nil, oy2 = nil, ox3 = nil, oy3 = nil, dx1 = nil, dy1 = nil, dx2 = nil, dy2 = nil, dx3 = nil, dy3 = nil; return (function() {$case = other.$type(); @@ -24739,69 +26572,75 @@ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { else if ("Triangle"['$===']($case)) { $a = [].concat(Opal.to_a(self.$absolute_poss())), ($b = Opal.to_ary(($a[0] == null ? nil : $a[0])), (ox1 = ($b[0] == null ? nil : $b[0])), (oy1 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[1] == null ? nil : $a[1])), (ox2 = ($b[0] == null ? nil : $b[0])), (oy2 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[2] == null ? nil : $a[2])), (ox3 = ($b[0] == null ? nil : $b[0])), (oy3 = ($b[1] == null ? nil : $b[1]))), $a; $a = [].concat(Opal.to_a(other.$absolute_poss())), ($b = Opal.to_ary(($a[0] == null ? nil : $a[0])), (dx1 = ($b[0] == null ? nil : $b[0])), (dy1 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[1] == null ? nil : $a[1])), (dx2 = ($b[0] == null ? nil : $b[0])), (dy2 = ($b[1] == null ? nil : $b[1]))), ($b = Opal.to_ary(($a[2] == null ? nil : $a[2])), (dx3 = ($b[0] == null ? nil : $b[0])), (dy3 = ($b[1] == null ? nil : $b[1]))), $a; - return Opal.DXOpal.CCk.check_triangle_triangle(ox1, oy1, ox2, oy2, ox3, oy3, + Opal.DXOpal.CCk.check_triangle_triangle(ox1, oy1, ox2, oy2, ox3, oy3, dx1, dy1, dx2, dy2, dx3, dy3);} else {return self.$raise()}})() - }, TMP_Triangle_collides$q_27.$$arity = 1); - return (Opal.defn(self, '$absolute_poss', TMP_Triangle_absolute_poss_28 = function $$absolute_poss() { + }, $Triangle_collides$ques$27.$$arity = 1); + return (Opal.def(self, '$absolute_poss', $Triangle_absolute_poss$28 = function $$absolute_poss() { var self = this; return self.$absolute(self.poss) - }, TMP_Triangle_absolute_poss_28.$$arity = 0), nil) && 'absolute_poss'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $Triangle_absolute_poss$28.$$arity = 0), nil) && 'absolute_poss'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], null, $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sprite/collision_check"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$Array', '$equal?', '$select', '$is_a?', '$length', '$===', '$[]', '$__send__', '$nil?', '$new', '$width', '$height', '$attr_accessor', '$attr_reader', '$raise', '$inspect', '$x', '$any?', '$check', '$_collides?', '$_collision_area', '$!', '$_collidable?', '$collides?']); self.$require("dxopal/sprite/collision_area"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Sprite(){}; - var self = $Sprite = $klass($base, $super, 'Sprite', $Sprite); + var self = $klass($base, $super, 'Sprite'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return (function($base, $parent_nesting) { - var $CollisionCheck, self = $CollisionCheck = $module($base, 'CollisionCheck'); + var self = $module($base, 'CollisionCheck'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CollisionCheck_shot_3, TMP_CollisionCheck_hit_4, TMP_CollisionCheck__init_collision_info_5, TMP_CollisionCheck_collision$eq_6, TMP_CollisionCheck_$eq$eq$eq_7, TMP_CollisionCheck_check_9, TMP_CollisionCheck__collides$q_10, TMP_CollisionCheck__collidable$q_11; + var $nesting = [self].concat($parent_nesting), $CollisionCheck_shot$3, $CollisionCheck_hit$4, $CollisionCheck__init_collision_info$5, $CollisionCheck_collision$eq$6, $CollisionCheck_$eq_eq_eq$7, $CollisionCheck_check$8, $CollisionCheck__collides$ques$10, $CollisionCheck__collidable$ques$11; (function($base, $parent_nesting) { - var $ClassMethods, self = $ClassMethods = $module($base, 'ClassMethods'); + var self = $module($base, 'ClassMethods'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ClassMethods_check_2; + var $nesting = [self].concat($parent_nesting), $ClassMethods_check$1; - Opal.defn(self, '$check', TMP_ClassMethods_check_2 = function $$check(offences, defences, shot, hit) { - var TMP_1, self = this, i = nil, j = nil, sprites = nil, n = nil; + Opal.def(self, '$check', $ClassMethods_check$1 = function $$check(offences, defences, shot, hit) { + var $$2, self = this, i = nil, j = nil, sprites = nil, n = nil; + + if (shot == null) { shot = "shot"; - } + }; + if (hit == null) { hit = "hit"; - } - + }; offences = self.$Array(offences); defences = self.$Array(defences); i = (j = 0); if ($truthy(offences['$equal?'](defences))) { - sprites = $send(offences, 'select', [], (TMP_1 = function(x){var self = TMP_1.$$s || this; -if (x == null) x = nil; - return x['$is_a?'](Opal.const_get_relative($nesting, 'Sprite'))}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); + sprites = $send(offences, 'select', [], ($$2 = function(x){var self = $$2.$$s || this; + + + + if (x == null) { + x = nil; + }; + return x['$is_a?']($$($nesting, 'Sprite'));}, $$2.$$s = self, $$2.$$arity = 1, $$2)); n = sprites.$length(); for (var i=0; i { - var [type, sprite, info] = Opal.const_get_relative($nesting, 'Sprite').$_matter_sprites()['$[]'](body.id); + Matter.Runner.tick($$($nesting, 'Sprite').$_matter_runner(), $$($nesting, 'Sprite').$_matter_engine(), time); + Matter.Composite.allBodies($$($nesting, 'Sprite').$_matter_engine().world).forEach((body) => { + var [type, sprite, info] = $$($nesting, 'Sprite').$_matter_sprites()['$[]'](body.id); switch(type) { case "rectangle": var [width, height] = info; @@ -25052,12 +26895,12 @@ Opal.modules["dxopal/sprite/physics"] = function(Opal) { } }); - }, TMP_Sprite_matter_tick_9.$$arity = 1); + }, $Sprite_matter_tick$9.$$arity = 1), nil) && 'matter_tick'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/sprite"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); @@ -25065,71 +26908,86 @@ Opal.modules["dxopal/sprite"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; Opal.add_stubs(['$require', '$extend', '$include', '$each', '$!', '$respond_to?', '$vanished?', '$update', '$reject!', '$nil?', '$sort_by', '$flatten', '$to_proc', '$draw', '$/', '$width', '$height', '$_init_collision_info', '$attr_accessor', '$attr_reader', '$_move_matter_body', '$-', '$collision=', '$raise', '$draw_ex']); self.$require("dxopal/sprite/collision_check"); self.$require("dxopal/sprite/physics"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Sprite(){}; - var self = $Sprite = $klass($base, $super, 'Sprite', $Sprite); + var self = $klass($base, $super, 'Sprite'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Sprite_update_2, TMP_Sprite_clean_4, TMP_Sprite_draw_6, TMP_Sprite_initialize_7, TMP_Sprite_x$eq_8, TMP_Sprite_y$eq_9, TMP_Sprite_image_10, TMP_Sprite_image$eq_11, TMP_Sprite_vanish_12, TMP_Sprite_vanished$q_13, TMP_Sprite_draw_14; + var $nesting = [self].concat($parent_nesting), $Sprite_update$1, $Sprite_clean$3, $Sprite_draw$5, $Sprite_initialize$7, $Sprite_x$eq$8, $Sprite_y$eq$9, $Sprite_image$10, $Sprite_image$eq$11, $Sprite_vanish$12, $Sprite_vanished$ques$13, $Sprite_draw$14; - def.image = def._matter_body = def.collision = def.center_x = def.vanished = def.visible = def.x = def.y = def.scale_x = def.scale_y = def.alpha = def.blend = def.angle = def.center_y = nil; + self.$$prototype.image = self.$$prototype._matter_body = self.$$prototype.collision = self.$$prototype.center_x = self.$$prototype.vanished = self.$$prototype.visible = self.$$prototype.x = self.$$prototype.y = self.$$prototype.scale_x = self.$$prototype.scale_y = self.$$prototype.alpha = self.$$prototype.blend = self.$$prototype.angle = self.$$prototype.center_y = nil; - self.$extend(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Sprite'), 'CollisionCheck'), 'ClassMethods')); - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Sprite'), 'CollisionCheck')); - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Sprite'), 'Physics')); - Opal.defs(self, '$update', TMP_Sprite_update_2 = function $$update(sprites) { - var TMP_1, self = this; + self.$extend($$$($$$($$$($$($nesting, 'DXOpal'), 'Sprite'), 'CollisionCheck'), 'ClassMethods')); + self.$include($$$($$$($$($nesting, 'DXOpal'), 'Sprite'), 'CollisionCheck')); + self.$include($$$($$$($$($nesting, 'DXOpal'), 'Sprite'), 'Physics')); + Opal.defs(self, '$update', $Sprite_update$1 = function $$update(sprites) { + var $$2, self = this; + + return $send(sprites, 'each', [], ($$2 = function(sprite){var self = $$2.$$s || this, $a; - return $send(sprites, 'each', [], (TMP_1 = function(sprite){var self = TMP_1.$$s || this, $a; -if (sprite == null) sprite = nil; + + if (sprite == null) { + sprite = nil; + }; if ($truthy(sprite['$respond_to?']("update")['$!']())) { return nil;}; if ($truthy(($truthy($a = sprite['$respond_to?']("vanished?")) ? sprite['$vanished?']() : $a))) { return nil;}; - return sprite.$update();}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)) - }, TMP_Sprite_update_2.$$arity = 1); - Opal.defs(self, '$clean', TMP_Sprite_clean_4 = function $$clean(sprites) { - var TMP_3, self = this; + return sprite.$update();}, $$2.$$s = self, $$2.$$arity = 1, $$2)) + }, $Sprite_update$1.$$arity = 1); + Opal.defs(self, '$clean', $Sprite_clean$3 = function $$clean(sprites) { + var $$4, self = this; + + return $send(sprites, 'reject!', [], ($$4 = function(sprite){var self = $$4.$$s || this, $a; + + + + if (sprite == null) { + sprite = nil; + }; + return ($truthy($a = sprite['$nil?']()) ? $a : sprite['$vanished?']());}, $$4.$$s = self, $$4.$$arity = 1, $$4)) + }, $Sprite_clean$3.$$arity = 1); + Opal.defs(self, '$draw', $Sprite_draw$5 = function $$draw(sprites) { + var $$6, self = this; - return $send(sprites, 'reject!', [], (TMP_3 = function(sprite){var self = TMP_3.$$s || this, $a; -if (sprite == null) sprite = nil; - return ($truthy($a = sprite['$nil?']()) ? $a : sprite['$vanished?']())}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)) - }, TMP_Sprite_clean_4.$$arity = 1); - Opal.defs(self, '$draw', TMP_Sprite_draw_6 = function $$draw(sprites) { - var TMP_5, self = this; + return $send($send(sprites.$flatten(), 'sort_by', [], "z".$to_proc()), 'each', [], ($$6 = function(sprite){var self = $$6.$$s || this, $a; - return $send($send(sprites.$flatten(), 'sort_by', [], "z".$to_proc()), 'each', [], (TMP_5 = function(sprite){var self = TMP_5.$$s || this, $a; -if (sprite == null) sprite = nil; + + if (sprite == null) { + sprite = nil; + }; if ($truthy(($truthy($a = sprite['$respond_to?']("vanished?")) ? sprite['$vanished?']() : $a))) { return nil;}; - return sprite.$draw();}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)) - }, TMP_Sprite_draw_6.$$arity = 1); + return sprite.$draw();}, $$6.$$s = self, $$6.$$arity = 1, $$6)) + }, $Sprite_draw$5.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Sprite_initialize_7 = function $$initialize(x, y, image) { + Opal.def(self, '$initialize', $Sprite_initialize$7 = function $$initialize(x, y, image) { var $a, self = this; + + if (x == null) { x = 0; - } + }; + if (y == null) { y = 0; - } + }; + if (image == null) { image = nil; - } - + }; $a = [x, y, image], (self.x = $a[0]), (self.y = $a[1]), (self.image = $a[2]), $a; self.z = 0; self.angle = 0; @@ -25141,7 +26999,7 @@ if (sprite == null) sprite = nil; self.visible = true; self.vanished = false; return self.$_init_collision_info(self.image); - }, TMP_Sprite_initialize_7.$$arity = -1); + }, $Sprite_initialize$7.$$arity = -1); self.$attr_accessor("z", "visible"); self.$attr_accessor("angle"); self.$attr_accessor("scale_x", "scale_y"); @@ -25150,37 +27008,37 @@ if (sprite == null) sprite = nil; self.$attr_accessor("blend"); self.$attr_reader("x", "y"); - Opal.defn(self, '$x=', TMP_Sprite_x$eq_8 = function(newx) { + Opal.def(self, '$x=', $Sprite_x$eq$8 = function(newx) { var self = this; self.x = newx; if ($truthy(self._matter_body)) { return self.$_move_matter_body() - } else { + } else { return nil }; - }, TMP_Sprite_x$eq_8.$$arity = 1); + }, $Sprite_x$eq$8.$$arity = 1); - Opal.defn(self, '$y=', TMP_Sprite_y$eq_9 = function(newy) { + Opal.def(self, '$y=', $Sprite_y$eq$9 = function(newy) { var self = this; self.y = newy; if ($truthy(self._matter_body)) { return self.$_move_matter_body() - } else { + } else { return nil }; - }, TMP_Sprite_y$eq_9.$$arity = 1); + }, $Sprite_y$eq$9.$$arity = 1); - Opal.defn(self, '$image', TMP_Sprite_image_10 = function $$image() { + Opal.def(self, '$image', $Sprite_image$10 = function $$image() { var self = this; return self.image - }, TMP_Sprite_image_10.$$arity = 0); + }, $Sprite_image$10.$$arity = 0); - Opal.defn(self, '$image=', TMP_Sprite_image$eq_11 = function(img) { + Opal.def(self, '$image=', $Sprite_image$eq$11 = function(img) { var self = this, $writer = nil; @@ -25194,23 +27052,23 @@ if (sprite == null) sprite = nil; self.center_x = $rb_divide(img.$width(), 2); return (self.center_y = $rb_divide(img.$height(), 2)); - } else { + } else { return nil }; - }, TMP_Sprite_image$eq_11.$$arity = 1); + }, $Sprite_image$eq$11.$$arity = 1); - Opal.defn(self, '$vanish', TMP_Sprite_vanish_12 = function $$vanish() { + Opal.def(self, '$vanish', $Sprite_vanish$12 = function $$vanish() { var self = this; return (self.vanished = true) - }, TMP_Sprite_vanish_12.$$arity = 0); + }, $Sprite_vanish$12.$$arity = 0); - Opal.defn(self, '$vanished?', TMP_Sprite_vanished$q_13 = function() { + Opal.def(self, '$vanished?', $Sprite_vanished$ques$13 = function() { var self = this; return self.vanished - }, TMP_Sprite_vanished$q_13.$$arity = 0); - return (Opal.defn(self, '$draw', TMP_Sprite_draw_14 = function $$draw() { + }, $Sprite_vanished$ques$13.$$arity = 0); + return (Opal.def(self, '$draw', $Sprite_draw$14 = function $$draw() { var self = this; @@ -25218,13 +27076,13 @@ if (sprite == null) sprite = nil; self.$raise("image not set to Sprite")}; if ($truthy(self.visible['$!']())) { return nil}; - return Opal.const_get_relative($nesting, 'Window').$draw_ex(self.x, self.y, self.image, $hash2(["scale_x", "scale_y", "alpha", "blend", "angle", "center_x", "center_y"], {"scale_x": self.scale_x, "scale_y": self.scale_y, "alpha": self.alpha, "blend": self.blend, "angle": self.angle, "center_x": self.center_x, "center_y": self.center_y})); - }, TMP_Sprite_draw_14.$$arity = 0), nil) && 'draw'; + return $$($nesting, 'Window').$draw_ex(self.x, self.y, self.image, $hash2(["scale_x", "scale_y", "alpha", "blend", "angle", "center_x", "center_y"], {"scale_x": self.scale_x, "scale_y": self.scale_y, "alpha": self.alpha, "blend": self.blend, "angle": self.angle, "center_x": self.center_x, "center_y": self.center_y})); + }, $Sprite_draw$14.$$arity = 0), nil) && 'draw'; })($nesting[0], null, $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/window"] = function(Opal) { function $rb_divide(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); @@ -25238,375 +27096,1387 @@ Opal.modules["dxopal/window"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; Opal.add_stubs(['$require', '$now', '$_load_resources', '$dump_error', '$to_proc', '$!', '$_loop', '$clear', '$draw_pause_screen', '$nil?', '$raise', '$loop', '$draw_box_fill', '$width', '$height', '$draw_font', '$default', '$_init', '$/', '$-', '$+', '$>=', '$matter_enabled?', '$matter_tick', '$_on_tick', '$box_fill', '$sort', '$==', '$[]', '$<=>', '$each', '$===', '$draw', '$drop', '$draw_rot', '$draw_scale', '$draw_ex', '$[]=', '$line', '$box', '$circle', '$circle_fill', '$triangle', '$triangle_fill', '$width=', '$height=', '$new', '$enqueue_draw', '$push', '$length']); self.$require("dxopal/constants/colors"); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Window, self = $Window = $module($base, 'Window'); + var self = $module($base, 'Window'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Window_load_resources_1, TMP_Window_loop_3, TMP_Window_pause_5, TMP_Window_paused$q_6, TMP_Window_resume_7, TMP_Window_draw_pause_screen_8, TMP_Window__loop_13, TMP_Window__init_14, TMP_Window__img_15, TMP_Window_fps_16, TMP_Window_fps$eq_17, TMP_Window_real_fps_18, TMP_Window_width_19, TMP_Window_width$eq_20, TMP_Window_height_21, TMP_Window_height$eq_22, TMP_Window_bgcolor_23, TMP_Window_bgcolor$eq_24, TMP_Window_draw_25, TMP_Window_draw_scale_26, TMP_Window_draw_rot_27, TMP_Window_draw_ex_28, TMP_Window_draw_font_29, TMP_Window_draw_pixel_30, TMP_Window_draw_line_31, TMP_Window_draw_box_32, TMP_Window_draw_box_fill_33, TMP_Window_draw_circle_34, TMP_Window_draw_circle_fill_35, TMP_Window_draw_triangle_36, TMP_Window_draw_triangle_fill_37, TMP_Window_enqueue_draw_38; + var $nesting = [self].concat($parent_nesting), $Window_load_resources$1, $Window_loop$3, $Window_pause$5, $Window_paused$ques$6, $Window_resume$7, $Window_draw_pause_screen$8, $Window__loop$9, $Window__init$14, $Window__img$15, $Window_fps$16, $Window_fps$eq$17, $Window_real_fps$18, $Window_width$19, $Window_width$eq$20, $Window_height$21, $Window_height$eq$22, $Window_bgcolor$23, $Window_bgcolor$eq$24, $Window_draw$25, $Window_draw_scale$26, $Window_draw_rot$27, $Window_draw_ex$28, $Window_draw_font$29, $Window_draw_pixel$30, $Window_draw_line$31, $Window_draw_box$32, $Window_draw_box_fill$33, $Window_draw_circle$34, $Window_draw_circle_fill$35, $Window_draw_triangle$36, $Window_draw_triangle_fill$37, $Window_enqueue_draw$38; - (Opal.class_variable_set($Window, '@@fps', 60)); - (Opal.class_variable_set($Window, '@@fps_ts', nil)); - (Opal.class_variable_set($Window, '@@fps_ct', 0)); - (Opal.class_variable_set($Window, '@@real_fps', 0)); - (Opal.class_variable_set($Window, '@@real_fps_ct', 1)); - (Opal.class_variable_set($Window, '@@real_fps_t', Opal.const_get_relative($nesting, 'Time').$now())); - (Opal.class_variable_set($Window, '@@width', 640)); - (Opal.class_variable_set($Window, '@@height', 480)); - (Opal.class_variable_set($Window, '@@block', nil)); - (Opal.class_variable_set($Window, '@@paused', false)); - Opal.defs(self, '$load_resources', TMP_Window_load_resources_1 = function $$load_resources() { - var TMP_2, self = this, $iter = TMP_Window_load_resources_1.$$p, block = $iter || nil; + (Opal.class_variable_set($nesting[0], '@@fps', 60)); + (Opal.class_variable_set($nesting[0], '@@fps_ts', nil)); + (Opal.class_variable_set($nesting[0], '@@fps_ct', 0)); + (Opal.class_variable_set($nesting[0], '@@real_fps', 0)); + (Opal.class_variable_set($nesting[0], '@@real_fps_ct', 1)); + (Opal.class_variable_set($nesting[0], '@@real_fps_t', $$($nesting, 'Time').$now())); + (Opal.class_variable_set($nesting[0], '@@width', 640)); + (Opal.class_variable_set($nesting[0], '@@height', 480)); + (Opal.class_variable_set($nesting[0], '@@block', nil)); + (Opal.class_variable_set($nesting[0], '@@paused', false)); + Opal.defs(self, '$load_resources', $Window_load_resources$1 = function $$load_resources() { + var $iter = $Window_load_resources$1.$$p, block = $iter || nil, $$2, self = this; - if ($iter) TMP_Window_load_resources_1.$$p = null; - return $send(Opal.const_get_relative($nesting, 'RemoteResource'), '_load_resources', [], (TMP_2 = function(){var self = TMP_2.$$s || this; + if ($iter) $Window_load_resources$1.$$p = null; + + + if ($iter) $Window_load_resources$1.$$p = null;; + return $send($$($nesting, 'RemoteResource'), '_load_resources', [], ($$2 = function(){var self = $$2.$$s || this; - return $send(Opal.const_get_relative($nesting, 'DXOpal'), 'dump_error', [], block.$to_proc())}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)) - }, TMP_Window_load_resources_1.$$arity = 0); - Opal.defs(self, '$loop', TMP_Window_loop_3 = function $$loop() { - var $a, TMP_4, self = this, $iter = TMP_Window_loop_3.$$p, block = $iter || nil, already_running = nil; + return $send($$($nesting, 'DXOpal'), 'dump_error', [], block.$to_proc())}, $$2.$$s = self, $$2.$$arity = 0, $$2)); + }, $Window_load_resources$1.$$arity = 0); + Opal.defs(self, '$loop', $Window_loop$3 = function $$loop() { + var $iter = $Window_loop$3.$$p, block = $iter || nil, $a, $$4, self = this, already_running = nil; - if ($iter) TMP_Window_loop_3.$$p = null; + if ($iter) $Window_loop$3.$$p = null; + - already_running = (($a = $Window.$$cvars['@@block']) == null ? nil : $a)['$!']()['$!'](); - (Opal.class_variable_set($Window, '@@block', block)); + if ($iter) $Window_loop$3.$$p = null;; + already_running = (($a = $nesting[0].$$cvars['@@block']) == null ? nil : $a)['$!']()['$!'](); + (Opal.class_variable_set($nesting[0], '@@block', block)); if ($truthy(already_running)) { return nil}; - return (window).requestAnimationFrame((TMP_4 = function(time){var self = TMP_4.$$s || this; -if (time == null) time = nil; - return self.$_loop(time)}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); - }, TMP_Window_loop_3.$$arity = 0); - Opal.defs(self, '$pause', TMP_Window_pause_5 = function $$pause() { + return (window).requestAnimationFrame(($$4 = function(time){var self = $$4.$$s || this; + + + + if (time == null) { + time = nil; + }; + return self.$_loop(time);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); + }, $Window_loop$3.$$arity = 0); + Opal.defs(self, '$pause', $Window_pause$5 = function $$pause() { var $a, self = this; - (Opal.class_variable_set($Window, '@@paused', true)); - (($a = $Window.$$cvars['@@draw_queue']) == null ? nil : $a).$clear(); + (Opal.class_variable_set($nesting[0], '@@paused', true)); + (($a = $nesting[0].$$cvars['@@draw_queue']) == null ? nil : $a).$clear(); return self.$draw_pause_screen(); - }, TMP_Window_pause_5.$$arity = 0); - Opal.defs(self, '$paused?', TMP_Window_paused$q_6 = function() { + }, $Window_pause$5.$$arity = 0); + Opal.defs(self, '$paused?', $Window_paused$ques$6 = function() { var $a, self = this; - return (($a = $Window.$$cvars['@@paused']) == null ? nil : $a) - }, TMP_Window_paused$q_6.$$arity = 0); - Opal.defs(self, '$resume', TMP_Window_resume_7 = function $$resume() { + return (($a = $nesting[0].$$cvars['@@paused']) == null ? nil : $a) + }, $Window_paused$ques$6.$$arity = 0); + Opal.defs(self, '$resume', $Window_resume$7 = function $$resume() { var $a, self = this; - if ($truthy((($a = $Window.$$cvars['@@block']) == null ? nil : $a)['$nil?']())) { + if ($truthy((($a = $nesting[0].$$cvars['@@block']) == null ? nil : $a)['$nil?']())) { self.$raise("Window.resume is called before Window.loop")}; - (Opal.class_variable_set($Window, '@@paused', false)); - return $send(Opal.const_get_relative($nesting, 'Window'), 'loop', [], (($a = $Window.$$cvars['@@block']) == null ? nil : $a).$to_proc()); - }, TMP_Window_resume_7.$$arity = 0); - Opal.defs(self, '$draw_pause_screen', TMP_Window_draw_pause_screen_8 = function $$draw_pause_screen() { + (Opal.class_variable_set($nesting[0], '@@paused', false)); + return $send($$($nesting, 'Window'), 'loop', [], (($a = $nesting[0].$$cvars['@@block']) == null ? nil : $a).$to_proc()); + }, $Window_resume$7.$$arity = 0); + Opal.defs(self, '$draw_pause_screen', $Window_draw_pause_screen$8 = function $$draw_pause_screen() { var self = this; - Opal.const_get_relative($nesting, 'Window').$draw_box_fill(0, 0, Opal.const_get_relative($nesting, 'Window').$width(), Opal.const_get_relative($nesting, 'Window').$height(), Opal.const_get_relative($nesting, 'C_BLACK')); - return Opal.const_get_relative($nesting, 'Window').$draw_font(0, 0, "...PAUSE...", Opal.const_get_relative($nesting, 'Font').$default(), $hash2(["color"], {"color": Opal.const_get_relative($nesting, 'C_WHITE')})); - }, TMP_Window_draw_pause_screen_8.$$arity = 0); - Opal.defs(self, '$_loop', TMP_Window__loop_13 = function $$_loop(timestamp) { - var $a, $b, TMP_9, TMP_10, TMP_11, TMP_12, self = this, frame_msec = nil, passed_msec = nil, t = nil, sorted = nil; + $$($nesting, 'Window').$draw_box_fill(0, 0, $$($nesting, 'Window').$width(), $$($nesting, 'Window').$height(), $$($nesting, 'C_BLACK')); + return $$($nesting, 'Window').$draw_font(0, 0, "...PAUSE...", $$($nesting, 'Font').$default(), $hash2(["color"], {"color": $$($nesting, 'C_WHITE')})); + }, $Window_draw_pause_screen$8.$$arity = 0); + Opal.defs(self, '$_loop', $Window__loop$9 = function $$_loop(timestamp) { + var $a, $b, $$10, $$11, $$12, $$13, self = this, frame_msec = nil, passed_msec = nil, t = nil, sorted = nil; - (Opal.class_variable_set($Window, '@@img', ($truthy($a = (($b = $Window.$$cvars['@@img']) == null ? nil : $b)) ? $a : self.$_init()))); - frame_msec = $rb_divide(1000.0, (($a = $Window.$$cvars['@@fps']) == null ? nil : $a)); - (Opal.class_variable_set($Window, '@@fps_ts', ($truthy($a = (($b = $Window.$$cvars['@@fps_ts']) == null ? nil : $b)) ? $a : timestamp))); - passed_msec = $rb_minus(timestamp, (($a = $Window.$$cvars['@@fps_ts']) == null ? nil : $a)); - (Opal.class_variable_set($Window, '@@fps_ts', timestamp)); - (Opal.class_variable_set($Window, '@@fps_ct', $rb_plus((($a = $Window.$$cvars['@@fps_ct']) == null ? nil : $a), passed_msec))); - if ($truthy($rb_ge((($a = $Window.$$cvars['@@fps_ct']) == null ? nil : $a), frame_msec))) { - (Opal.class_variable_set($Window, '@@fps_ct', $rb_minus((($a = $Window.$$cvars['@@fps_ct']) == null ? nil : $a), frame_msec))) - } else { + (Opal.class_variable_set($nesting[0], '@@img', ($truthy($a = (($b = $nesting[0].$$cvars['@@img']) == null ? nil : $b)) ? $a : self.$_init()))); + frame_msec = $rb_divide(1000.0, (($a = $nesting[0].$$cvars['@@fps']) == null ? nil : $a)); + (Opal.class_variable_set($nesting[0], '@@fps_ts', ($truthy($a = (($b = $nesting[0].$$cvars['@@fps_ts']) == null ? nil : $b)) ? $a : timestamp))); + passed_msec = $rb_minus(timestamp, (($a = $nesting[0].$$cvars['@@fps_ts']) == null ? nil : $a)); + (Opal.class_variable_set($nesting[0], '@@fps_ts', timestamp)); + (Opal.class_variable_set($nesting[0], '@@fps_ct', $rb_plus((($a = $nesting[0].$$cvars['@@fps_ct']) == null ? nil : $a), passed_msec))); + if ($truthy($rb_ge((($a = $nesting[0].$$cvars['@@fps_ct']) == null ? nil : $a), frame_msec))) { + (Opal.class_variable_set($nesting[0], '@@fps_ct', $rb_minus((($a = $nesting[0].$$cvars['@@fps_ct']) == null ? nil : $a), frame_msec))) + } else { + + (window).requestAnimationFrame(($$10 = function(time){var self = $$10.$$s || this; + - (window).requestAnimationFrame((TMP_9 = function(time){var self = TMP_9.$$s || this; -if (time == null) time = nil; - return self.$_loop(time)}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); + + if (time == null) { + time = nil; + }; + return self.$_loop(time);}, $$10.$$s = self, $$10.$$arity = 1, $$10)); return nil; }; - t = Opal.const_get_relative($nesting, 'Time').$now(); - if ($truthy($rb_ge($rb_minus(t, (($a = $Window.$$cvars['@@real_fps_t']) == null ? nil : $a)), 1.0))) { + t = $$($nesting, 'Time').$now(); + if ($truthy($rb_ge($rb_minus(t, (($a = $nesting[0].$$cvars['@@real_fps_t']) == null ? nil : $a)), 1.0))) { - (Opal.class_variable_set($Window, '@@real_fps', (($a = $Window.$$cvars['@@real_fps_ct']) == null ? nil : $a))); - (Opal.class_variable_set($Window, '@@real_fps_ct', 1)); - (Opal.class_variable_set($Window, '@@real_fps_t', t)); - } else { - (Opal.class_variable_set($Window, '@@real_fps_ct', $rb_plus((($a = $Window.$$cvars['@@real_fps_ct']) == null ? nil : $a), 1))) + (Opal.class_variable_set($nesting[0], '@@real_fps', (($a = $nesting[0].$$cvars['@@real_fps_ct']) == null ? nil : $a))); + (Opal.class_variable_set($nesting[0], '@@real_fps_ct', 1)); + (Opal.class_variable_set($nesting[0], '@@real_fps_t', t)); + } else { + (Opal.class_variable_set($nesting[0], '@@real_fps_ct', $rb_plus((($a = $nesting[0].$$cvars['@@real_fps_ct']) == null ? nil : $a), 1))) }; - if ($truthy(Opal.const_get_relative($nesting, 'Sprite')['$matter_enabled?']())) { - Opal.const_get_relative($nesting, 'Sprite').$matter_tick(timestamp)}; - Opal.const_get_relative($nesting, 'Input').$_on_tick(); - (Opal.class_variable_set($Window, '@@draw_queue', [])); - if ($truthy((($a = $Window.$$cvars['@@paused']) == null ? nil : $a))) { - Opal.const_get_relative($nesting, 'Window').$draw_pause_screen() - } else { - $send(Opal.const_get_relative($nesting, 'DXOpal'), 'dump_error', [], (($a = $Window.$$cvars['@@block']) == null ? nil : $a).$to_proc()) + if ($truthy($$($nesting, 'Sprite')['$matter_enabled?']())) { + $$($nesting, 'Sprite').$matter_tick(timestamp)}; + $$($nesting, 'Input').$_on_tick(); + (Opal.class_variable_set($nesting[0], '@@draw_queue', [])); + if ($truthy((($a = $nesting[0].$$cvars['@@paused']) == null ? nil : $a))) { + $$($nesting, 'Window').$draw_pause_screen() + } else { + $send($$($nesting, 'DXOpal'), 'dump_error', [], (($a = $nesting[0].$$cvars['@@block']) == null ? nil : $a).$to_proc()) }; - (($a = $Window.$$cvars['@@img']) == null ? nil : $a).$box_fill(0, 0, (($a = $Window.$$cvars['@@width']) == null ? nil : $a), (($a = $Window.$$cvars['@@height']) == null ? nil : $a), (($a = $Window.$$cvars['@@bgcolor']) == null ? nil : $a)); - sorted = $send((($a = $Window.$$cvars['@@draw_queue']) == null ? nil : $a), 'sort', [], (TMP_10 = function(a, b){var self = TMP_10.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - if (a['$[]'](0)['$=='](b['$[]'](0))) { + (($a = $nesting[0].$$cvars['@@img']) == null ? nil : $a).$box_fill(0, 0, (($a = $nesting[0].$$cvars['@@width']) == null ? nil : $a), (($a = $nesting[0].$$cvars['@@height']) == null ? nil : $a), (($a = $nesting[0].$$cvars['@@bgcolor']) == null ? nil : $a)); + sorted = $send((($a = $nesting[0].$$cvars['@@draw_queue']) == null ? nil : $a), 'sort', [], ($$11 = function(a, b){var self = $$11.$$s || this; + + + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + if (a['$[]'](0)['$=='](b['$[]'](0))) { return a['$[]'](1)['$<=>'](b['$[]'](1)) - } else { + } else { return a['$[]'](0)['$<=>'](b['$[]'](0)) - }}, TMP_10.$$s = self, TMP_10.$$arity = 2, TMP_10)); - $send(sorted, 'each', [], (TMP_11 = function(item){var self = TMP_11.$$s || this, $c, $case = nil, $writer = nil; -if (item == null) item = nil; - return (function() {$case = item['$[]'](2); - if ("image"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'draw', Opal.to_a(item.$drop(3)))} - else if ("image_rot"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'draw_rot', Opal.to_a(item.$drop(3)))} - else if ("image_scale"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'draw_scale', Opal.to_a(item.$drop(3)))} - else if ("draw_ex"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'draw_ex', Opal.to_a(item.$drop(3)))} - else if ("font"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'draw_font', Opal.to_a(item.$drop(3)))} + };}, $$11.$$s = self, $$11.$$arity = 2, $$11)); + $send(sorted, 'each', [], ($$12 = function(item){var self = $$12.$$s || this, $c, $case = nil, $writer = nil; + + + + if (item == null) { + item = nil; + }; + return (function() {$case = item['$[]'](2); + if ("image"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'draw', Opal.to_a(item.$drop(3)))} + else if ("image_rot"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'draw_rot', Opal.to_a(item.$drop(3)))} + else if ("image_scale"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'draw_scale', Opal.to_a(item.$drop(3)))} + else if ("draw_ex"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'draw_ex', Opal.to_a(item.$drop(3)))} + else if ("font"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'draw_font', Opal.to_a(item.$drop(3)))} else if ("pixel"['$===']($case)) { $writer = [].concat(Opal.to_a(item.$drop(3))); - $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), '[]=', Opal.to_a($writer)); + $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)];} - else if ("line"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'line', Opal.to_a(item.$drop(3)))} - else if ("box"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'box', Opal.to_a(item.$drop(3)))} - else if ("box_fill"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'box_fill', Opal.to_a(item.$drop(3)))} - else if ("circle"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'circle', Opal.to_a(item.$drop(3)))} - else if ("circle_fill"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'circle_fill', Opal.to_a(item.$drop(3)))} - else if ("triangle"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'triangle', Opal.to_a(item.$drop(3)))} - else if ("triangle_fill"['$===']($case)) {return $send((($c = $Window.$$cvars['@@img']) == null ? nil : $c), 'triangle_fill', Opal.to_a(item.$drop(3)))} - else { return nil }})()}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11)); - return (window).requestAnimationFrame((TMP_12 = function(time){var self = TMP_12.$$s || this; -if (time == null) time = nil; - return self.$_loop(time)}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)); - }, TMP_Window__loop_13.$$arity = 1); - Opal.defs(self, '$_init', TMP_Window__init_14 = function $$_init() { + else if ("line"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'line', Opal.to_a(item.$drop(3)))} + else if ("box"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'box', Opal.to_a(item.$drop(3)))} + else if ("box_fill"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'box_fill', Opal.to_a(item.$drop(3)))} + else if ("circle"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'circle', Opal.to_a(item.$drop(3)))} + else if ("circle_fill"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'circle_fill', Opal.to_a(item.$drop(3)))} + else if ("triangle"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'triangle', Opal.to_a(item.$drop(3)))} + else if ("triangle_fill"['$===']($case)) {return $send((($c = $nesting[0].$$cvars['@@img']) == null ? nil : $c), 'triangle_fill', Opal.to_a(item.$drop(3)))} + else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); + return (window).requestAnimationFrame(($$13 = function(time){var self = $$13.$$s || this; + + + + if (time == null) { + time = nil; + }; + return self.$_loop(time);}, $$13.$$s = self, $$13.$$arity = 1, $$13)); + }, $Window__loop$9.$$arity = 1); + Opal.defs(self, '$_init', $Window__init$14 = function $$_init() { var $a, self = this, canvas = nil, $writer = nil, img = nil; canvas = document.getElementById("dxopal-canvas"); - $writer = [(($a = $Window.$$cvars['@@width']) == null ? nil : $a)]; + $writer = [(($a = $nesting[0].$$cvars['@@width']) == null ? nil : $a)]; $send(self, 'width=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - $writer = [(($a = $Window.$$cvars['@@height']) == null ? nil : $a)]; + $writer = [(($a = $nesting[0].$$cvars['@@height']) == null ? nil : $a)]; $send(self, 'height=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - img = Opal.const_get_relative($nesting, 'Image').$new(self.$width(), self.$height(), $hash2(["canvas"], {"canvas": canvas})); - Opal.const_get_relative($nesting, 'Input').$_init(canvas); + img = $$($nesting, 'Image').$new(self.$width(), self.$height(), $hash2(["canvas"], {"canvas": canvas})); + $$($nesting, 'Input').$_init(canvas); return img; - }, TMP_Window__init_14.$$arity = 0); - Opal.defs(self, '$_img', TMP_Window__img_15 = function $$_img() { + }, $Window__init$14.$$arity = 0); + Opal.defs(self, '$_img', $Window__img$15 = function $$_img() { var $a, self = this; - return (($a = $Window.$$cvars['@@img']) == null ? nil : $a) - }, TMP_Window__img_15.$$arity = 0); - Opal.defs(self, '$fps', TMP_Window_fps_16 = function $$fps() { + return (($a = $nesting[0].$$cvars['@@img']) == null ? nil : $a) + }, $Window__img$15.$$arity = 0); + Opal.defs(self, '$fps', $Window_fps$16 = function $$fps() { var $a, self = this; - return (($a = $Window.$$cvars['@@fps']) == null ? nil : $a) - }, TMP_Window_fps_16.$$arity = 0); - Opal.defs(self, '$fps=', TMP_Window_fps$eq_17 = function(w) { + return (($a = $nesting[0].$$cvars['@@fps']) == null ? nil : $a) + }, $Window_fps$16.$$arity = 0); + Opal.defs(self, '$fps=', $Window_fps$eq$17 = function(w) { var self = this; - return (Opal.class_variable_set($Window, '@@fps', w)) - }, TMP_Window_fps$eq_17.$$arity = 1); - Opal.defs(self, '$real_fps', TMP_Window_real_fps_18 = function $$real_fps() { + return (Opal.class_variable_set($nesting[0], '@@fps', w)) + }, $Window_fps$eq$17.$$arity = 1); + Opal.defs(self, '$real_fps', $Window_real_fps$18 = function $$real_fps() { var $a, self = this; - return (($a = $Window.$$cvars['@@real_fps']) == null ? nil : $a) - }, TMP_Window_real_fps_18.$$arity = 0); - Opal.defs(self, '$width', TMP_Window_width_19 = function $$width() { + return (($a = $nesting[0].$$cvars['@@real_fps']) == null ? nil : $a) + }, $Window_real_fps$18.$$arity = 0); + Opal.defs(self, '$width', $Window_width$19 = function $$width() { var $a, self = this; - return (($a = $Window.$$cvars['@@width']) == null ? nil : $a) - }, TMP_Window_width_19.$$arity = 0); - Opal.defs(self, '$width=', TMP_Window_width$eq_20 = function(w) { + return (($a = $nesting[0].$$cvars['@@width']) == null ? nil : $a) + }, $Window_width$19.$$arity = 0); + Opal.defs(self, '$width=', $Window_width$eq$20 = function(w) { var $a, self = this, canvas = nil; canvas = document.getElementById("dxopal-canvas"); - (Opal.class_variable_set($Window, '@@width', ($truthy($a = w) ? $a : window.innerWidth))); - canvas.width = (($a = $Window.$$cvars['@@width']) == null ? nil : $a); - return canvas.style.width = (($a = $Window.$$cvars['@@width']) == null ? nil : $a); - }, TMP_Window_width$eq_20.$$arity = 1); - Opal.defs(self, '$height', TMP_Window_height_21 = function $$height() { + (Opal.class_variable_set($nesting[0], '@@width', ($truthy($a = w) ? $a : window.innerWidth))); + canvas.width = (($a = $nesting[0].$$cvars['@@width']) == null ? nil : $a); + return canvas.style.width = (($a = $nesting[0].$$cvars['@@width']) == null ? nil : $a); + }, $Window_width$eq$20.$$arity = 1); + Opal.defs(self, '$height', $Window_height$21 = function $$height() { var $a, self = this; - return (($a = $Window.$$cvars['@@height']) == null ? nil : $a) - }, TMP_Window_height_21.$$arity = 0); - Opal.defs(self, '$height=', TMP_Window_height$eq_22 = function(h) { + return (($a = $nesting[0].$$cvars['@@height']) == null ? nil : $a) + }, $Window_height$21.$$arity = 0); + Opal.defs(self, '$height=', $Window_height$eq$22 = function(h) { var $a, self = this, canvas = nil; canvas = document.getElementById("dxopal-canvas"); - (Opal.class_variable_set($Window, '@@height', ($truthy($a = h) ? $a : window.innerHeight))); - canvas.height = (($a = $Window.$$cvars['@@height']) == null ? nil : $a); - return canvas.style.height = (($a = $Window.$$cvars['@@height']) == null ? nil : $a); - }, TMP_Window_height$eq_22.$$arity = 1); - (Opal.class_variable_set($Window, '@@bgcolor', Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Constants'), 'Colors'), 'C_BLACK'))); - Opal.defs(self, '$bgcolor', TMP_Window_bgcolor_23 = function $$bgcolor() { + (Opal.class_variable_set($nesting[0], '@@height', ($truthy($a = h) ? $a : window.innerHeight))); + canvas.height = (($a = $nesting[0].$$cvars['@@height']) == null ? nil : $a); + return canvas.style.height = (($a = $nesting[0].$$cvars['@@height']) == null ? nil : $a); + }, $Window_height$eq$22.$$arity = 1); + (Opal.class_variable_set($nesting[0], '@@bgcolor', $$$($$$($$($nesting, 'Constants'), 'Colors'), 'C_BLACK'))); + Opal.defs(self, '$bgcolor', $Window_bgcolor$23 = function $$bgcolor() { var $a, self = this; - return (($a = $Window.$$cvars['@@bgcolor']) == null ? nil : $a) - }, TMP_Window_bgcolor_23.$$arity = 0); - Opal.defs(self, '$bgcolor=', TMP_Window_bgcolor$eq_24 = function(col) { + return (($a = $nesting[0].$$cvars['@@bgcolor']) == null ? nil : $a) + }, $Window_bgcolor$23.$$arity = 0); + Opal.defs(self, '$bgcolor=', $Window_bgcolor$eq$24 = function(col) { var self = this; - return (Opal.class_variable_set($Window, '@@bgcolor', col)) - }, TMP_Window_bgcolor$eq_24.$$arity = 1); - Opal.defs(self, '$draw', TMP_Window_draw_25 = function $$draw(x, y, image, z) { + return (Opal.class_variable_set($nesting[0], '@@bgcolor', col)) + }, $Window_bgcolor$eq$24.$$arity = 1); + Opal.defs(self, '$draw', $Window_draw$25 = function $$draw(x, y, image, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "image", x, y, image) - }, TMP_Window_draw_25.$$arity = -4); - Opal.defs(self, '$draw_scale', TMP_Window_draw_scale_26 = function $$draw_scale(x, y, image, scale_x, scale_y, center_x, center_y, z) { + }; + return self.$enqueue_draw(z, "image", x, y, image); + }, $Window_draw$25.$$arity = -4); + Opal.defs(self, '$draw_scale', $Window_draw_scale$26 = function $$draw_scale(x, y, image, scale_x, scale_y, center_x, center_y, z) { var self = this; + + if (center_x == null) { center_x = nil; - } + }; + if (center_y == null) { center_y = nil; - } + }; + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "image_scale", x, y, image, scale_x, scale_y, center_x, center_y) - }, TMP_Window_draw_scale_26.$$arity = -6); - Opal.defs(self, '$draw_rot', TMP_Window_draw_rot_27 = function $$draw_rot(x, y, image, angle, center_x, center_y, z) { + }; + return self.$enqueue_draw(z, "image_scale", x, y, image, scale_x, scale_y, center_x, center_y); + }, $Window_draw_scale$26.$$arity = -6); + Opal.defs(self, '$draw_rot', $Window_draw_rot$27 = function $$draw_rot(x, y, image, angle, center_x, center_y, z) { var self = this; + + if (center_x == null) { center_x = nil; - } + }; + if (center_y == null) { center_y = nil; - } + }; + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "image_rot", x, y, image, angle, center_x, center_y) - }, TMP_Window_draw_rot_27.$$arity = -5); - Opal.defs(self, '$draw_ex', TMP_Window_draw_ex_28 = function $$draw_ex(x, y, image, options) { + }; + return self.$enqueue_draw(z, "image_rot", x, y, image, angle, center_x, center_y); + }, $Window_draw_rot$27.$$arity = -5); + Opal.defs(self, '$draw_ex', $Window_draw_ex$28 = function $$draw_ex(x, y, image, options) { var $a, self = this; + + if (options == null) { options = $hash2([], {}); - } - return self.$enqueue_draw(($truthy($a = options['$[]']("z")) ? $a : 0), "draw_ex", x, y, image, options) - }, TMP_Window_draw_ex_28.$$arity = -4); - Opal.defs(self, '$draw_font', TMP_Window_draw_font_29 = function $$draw_font(x, y, string, font, option) { + }; + return self.$enqueue_draw(($truthy($a = options['$[]']("z")) ? $a : 0), "draw_ex", x, y, image, options); + }, $Window_draw_ex$28.$$arity = -4); + Opal.defs(self, '$draw_font', $Window_draw_font$29 = function $$draw_font(x, y, string, font, option) { var $a, self = this, z = nil, color = nil; + + if (option == null) { option = $hash2([], {}); - } - + }; z = ($truthy($a = option['$[]']("z")) ? $a : 0); color = ($truthy($a = option['$[]']("color")) ? $a : [255, 255, 255]); return self.$enqueue_draw(z, "font", x, y, string, font, color); - }, TMP_Window_draw_font_29.$$arity = -5); - Opal.defs(self, '$draw_pixel', TMP_Window_draw_pixel_30 = function $$draw_pixel(x, y, color, z) { + }, $Window_draw_font$29.$$arity = -5); + Opal.defs(self, '$draw_pixel', $Window_draw_pixel$30 = function $$draw_pixel(x, y, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "pixel", x, y, color) - }, TMP_Window_draw_pixel_30.$$arity = -4); - Opal.defs(self, '$draw_line', TMP_Window_draw_line_31 = function $$draw_line(x1, y1, x2, y2, color, z) { + }; + return self.$enqueue_draw(z, "pixel", x, y, color); + }, $Window_draw_pixel$30.$$arity = -4); + Opal.defs(self, '$draw_line', $Window_draw_line$31 = function $$draw_line(x1, y1, x2, y2, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "line", x1, y1, x2, y2, color) - }, TMP_Window_draw_line_31.$$arity = -6); - Opal.defs(self, '$draw_box', TMP_Window_draw_box_32 = function $$draw_box(x1, y1, x2, y2, color, z) { + }; + return self.$enqueue_draw(z, "line", x1, y1, x2, y2, color); + }, $Window_draw_line$31.$$arity = -6); + Opal.defs(self, '$draw_box', $Window_draw_box$32 = function $$draw_box(x1, y1, x2, y2, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "box", x1, y1, x2, y2, color) - }, TMP_Window_draw_box_32.$$arity = -6); - Opal.defs(self, '$draw_box_fill', TMP_Window_draw_box_fill_33 = function $$draw_box_fill(x1, y1, x2, y2, color, z) { + }; + return self.$enqueue_draw(z, "box", x1, y1, x2, y2, color); + }, $Window_draw_box$32.$$arity = -6); + Opal.defs(self, '$draw_box_fill', $Window_draw_box_fill$33 = function $$draw_box_fill(x1, y1, x2, y2, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "box_fill", x1, y1, x2, y2, color) - }, TMP_Window_draw_box_fill_33.$$arity = -6); - Opal.defs(self, '$draw_circle', TMP_Window_draw_circle_34 = function $$draw_circle(x, y, r, color, z) { + }; + return self.$enqueue_draw(z, "box_fill", x1, y1, x2, y2, color); + }, $Window_draw_box_fill$33.$$arity = -6); + Opal.defs(self, '$draw_circle', $Window_draw_circle$34 = function $$draw_circle(x, y, r, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "circle", x, y, r, color) - }, TMP_Window_draw_circle_34.$$arity = -5); - Opal.defs(self, '$draw_circle_fill', TMP_Window_draw_circle_fill_35 = function $$draw_circle_fill(x, y, r, color, z) { + }; + return self.$enqueue_draw(z, "circle", x, y, r, color); + }, $Window_draw_circle$34.$$arity = -5); + Opal.defs(self, '$draw_circle_fill', $Window_draw_circle_fill$35 = function $$draw_circle_fill(x, y, r, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "circle_fill", x, y, r, color) - }, TMP_Window_draw_circle_fill_35.$$arity = -5); - Opal.defs(self, '$draw_triangle', TMP_Window_draw_triangle_36 = function $$draw_triangle(x1, y1, x2, y2, x3, y3, color, z) { + }; + return self.$enqueue_draw(z, "circle_fill", x, y, r, color); + }, $Window_draw_circle_fill$35.$$arity = -5); + Opal.defs(self, '$draw_triangle', $Window_draw_triangle$36 = function $$draw_triangle(x1, y1, x2, y2, x3, y3, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "triangle", x1, y1, x2, y2, x3, y3, color) - }, TMP_Window_draw_triangle_36.$$arity = -8); - Opal.defs(self, '$draw_triangle_fill', TMP_Window_draw_triangle_fill_37 = function $$draw_triangle_fill(x1, y1, x2, y2, x3, y3, color, z) { + }; + return self.$enqueue_draw(z, "triangle", x1, y1, x2, y2, x3, y3, color); + }, $Window_draw_triangle$36.$$arity = -8); + Opal.defs(self, '$draw_triangle_fill', $Window_draw_triangle_fill$37 = function $$draw_triangle_fill(x1, y1, x2, y2, x3, y3, color, z) { var self = this; + + if (z == null) { z = 0; - } - return self.$enqueue_draw(z, "triangle_fill", x1, y1, x2, y2, x3, y3, color) - }, TMP_Window_draw_triangle_fill_37.$$arity = -8); - Opal.defs(self, '$enqueue_draw', TMP_Window_enqueue_draw_38 = function $$enqueue_draw(z, $a_rest) { - var $b, self = this, args; + }; + return self.$enqueue_draw(z, "triangle_fill", x1, y1, x2, y2, x3, y3, color); + }, $Window_draw_triangle_fill$37.$$arity = -8); + Opal.defs(self, '$enqueue_draw', $Window_enqueue_draw$38 = function $$enqueue_draw(z, $a) { + var $post_args, args, $b, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - return (($b = $Window.$$cvars['@@draw_queue']) == null ? nil : $b).$push([z, (($b = $Window.$$cvars['@@draw_queue']) == null ? nil : $b).$length()].concat(Opal.to_a(args))) - }, TMP_Window_enqueue_draw_38.$$arity = -2); + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; + return (($b = $nesting[0].$$cvars['@@draw_queue']) == null ? nil : $b).$push([z, (($b = $nesting[0].$$cvars['@@draw_queue']) == null ? nil : $b).$length()].concat(Opal.to_a(args))); + }, $Window_enqueue_draw$38.$$arity = -2); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/version"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + + return (function($base, $parent_nesting) { + var self = $module($base, 'DXOpal'); + + var $nesting = [self].concat($parent_nesting); + + Opal.const_set($nesting[0], 'VERSION', "1.5.2") + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + Opal.add_stubs(['$raise']); return (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'PackUnpack'); + + var $nesting = [self].concat($parent_nesting); + + + var directives = [ + // Integer + 'C', + 'S', + 'L', + 'Q', + 'J', + + 'c', + 's', + 'l', + 'q', + 'j', + + 'n', + 'N', + 'v', + 'V', + + 'U', + 'w', + + // Float + 'D', + 'd', + 'F', + 'f', + 'E', + 'e', + 'G', + 'g', + + // String + 'A', + 'a', + 'Z', + 'B', + 'b', + 'H', + 'h', + 'u', + 'M', + 'm', + + 'P', + 'p', + + // Misc + '@', + 'X', + 'x' + ]; + + var modifiers = [ + '!', // ignored + '_', // ignored + '>', // big endian + '<' // little endian + ]; + + self.eachDirectiveAndCount = function(format, callback) { + var currentDirective, + currentCount, + currentModifiers, + countSpecified; + + function reset() { + currentDirective = null; + currentCount = 0; + currentModifiers = []; + countSpecified = false; + } + + reset(); + + function yieldAndReset() { + if (currentDirective == null) { + reset(); + return; + } + + var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective); + + if (!directiveSupportsModifiers && currentModifiers.length > 0) { + self.$raise($$($nesting, 'ArgumentError'), "" + "'" + (currentModifiers[0]) + "' allowed only after types sSiIlLqQjJ") + } + + if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) { + self.$raise($$($nesting, 'RangeError'), "Can't use both '<' and '>'") + } + + if (!countSpecified) { + currentCount = 1; + } + + if (currentModifiers.indexOf('>') !== -1) { + currentDirective = currentDirective + '>'; + } + + callback(currentDirective, currentCount); + + reset(); + } - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + for (var i = 0; i < format.length; i++) { + var currentChar = format[i]; + + if (directives.indexOf(currentChar) !== -1) { + // Directive char always resets current state + yieldAndReset(); + currentDirective = currentChar; + } else if (currentDirective) { + if (/\d/.test(currentChar)) { + // Count can be represented as a sequence of digits + currentCount = currentCount * 10 + parseInt(currentChar, 10); + countSpecified = true; + } else if (currentChar === '*' && countSpecified === false) { + // Count can be represented by a star character + currentCount = Infinity; + countSpecified = true; + } else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) { + // Directives can be specified only after directive and before count + currentModifiers.push(currentChar); + } else { + yieldAndReset(); + } + } + } - Opal.const_set($nesting[0], 'VERSION', "1.5.1") + yieldAndReset(); + } + })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["corelib/string/unpack"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$flatten', '$decode64', '$raise', '$delete', '$gsub', '$coerce_to!', '$inspect', '$[]', '$unpack']); + + self.$require("corelib/pack_unpack/format_string_parser"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $a, $String_unpack$1, $String_unpack1$2, expected = nil, given = nil; + + + + // Format Parser + var eachDirectiveAndCount = Opal.PackUnpack.eachDirectiveAndCount; + + function flattenArray(callback) { + return function(data) { + var array = callback(data); + return (array).$flatten(); + } + } + + function mapChunksToWords(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse().reduce(function(result, singleByte) { + return result * 256 + singleByte; + }, 0); + }); + } + } + + function chunkBy(chunkSize, callback) { + return function(data) { + var array = callback(data), + chunks = [], + chunksCount = (array.length / chunkSize); + + for (var i = 0; i < chunksCount; i++) { + var chunk = array.splice(0, chunkSize); + if (chunk.length === chunkSize) { + chunks.push(chunk); + } + } + + return chunks; + } + } + + function utf16LEToBytes(string) { + var utf8 = []; + for (var i=0; i < string.length; i++) { + var charcode = string.charCodeAt(i); + if (charcode < 0x100) utf8.push(charcode); + else if (charcode < 0x800) { + utf8.push(0xc0 | (charcode >> 6), + 0x80 | (charcode & 0x3f)); + } + else if (charcode < 0xd800 || charcode >= 0xe000) { + utf8.push(0xe0 | (charcode >> 12), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + // surrogate pair + else { + i++; + // UTF-16 encodes 0x10000-0x10FFFF by + // subtracting 0x10000 and splitting the + // 20 bits of 0x0-0xFFFFF into two halves + charcode = 0x10000 + (((charcode & 0x3ff)<<10) + | (string.charCodeAt(i) & 0x3ff)) + utf8.push(0xf0 | (charcode >>18), + 0x80 | ((charcode>>12) & 0x3f), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + } + + return utf8; + } + + function toNByteSigned(bytesCount, callback) { + return function(data) { + var unsignedBits = callback(data), + bitsCount = bytesCount * 8, + limit = Math.pow(2, bitsCount); + + return unsignedBits.map(function(n) { + if (n >= limit / 2) { + n -= limit; + } + + return n; + }); + } + } + + function bytesToAsciiChars(callback) { + return function(data) { + var bytes = callback(data); + + return bytes.map(function(singleByte) { + return String.fromCharCode(singleByte); + }); + } + } + + function joinChars(callback) { + return function(data) { + var chars = callback(data); + return chars.join(''); + } + } + + function wrapIntoArray(callback) { + return function(data) { + var object = callback(data); + return [object]; + } + } + + function filterTrailingChars(chars) { + var charCodesToFilter = chars.map(function(s) { return s.charCodeAt(0); }); + + return function(callback) { + return function(data) { + var charCodes = callback(data); + + while (charCodesToFilter.indexOf(charCodes[charCodes.length - 1]) !== -1) { + charCodes = charCodes.slice(0, charCodes.length - 1); + } + + return charCodes; + } + } + } + + var filterTrailingZerosAndSpaces = filterTrailingChars(["\u0000", " "]); + + function invertChunks(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse(); + }); + } + } + + function uudecode(callback) { + return function(data) { + var bytes = callback(data); + + var stop = false; + var i = 0, length = 0; + + var result = []; + + do { + if (i < bytes.length) { + var n = bytes[i] - 32 & 0x3F; + + ++i; + + if (bytes[i] === 10) { + continue; + } + + if (n > 45) { + return ''; + } + + length += n; + + while (n > 0) { + var c1 = bytes[i]; + var c2 = bytes[i + 1]; + var c3 = bytes[i + 2]; + var c4 = bytes[i + 3]; + + var b1 = (c1 - 32 & 0x3F) << 2 | (c2 - 32 & 0x3F) >> 4; + var b2 = (c2 - 32 & 0x3F) << 4 | (c3 - 32 & 0x3F) >> 2; + var b3 = (c3 - 32 & 0x3F) << 6 | c4 - 32 & 0x3F; + + result.push(b1 & 0xFF); + result.push(b2 & 0xFF); + result.push(b3 & 0xFF); + + i += 4; + n -= 3; + } + + ++i; + } else { + break; + } + } while (true); + + return result.slice(0, length); + } + } + + function toBits(callback) { + return function(data) { + var bytes = callback(data); + + var bits = bytes.map(function(singleByte) { + return singleByte.toString(2); + }); + + return bits; + } + } + + function decodeBERCompressedIntegers(callback) { + return function(data) { + var bytes = callback(data), result = [], buffer = ''; + + for (var i = 0; i < bytes.length; i++) { + var singleByte = bytes[i], + bits = singleByte.toString(2); + + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + var firstBit = bits[0]; + bits = bits.slice(1, bits.length); + + buffer = buffer.concat(bits); + + if (firstBit === '0') { + var decoded = parseInt(buffer, 2); + result.push(decoded); + buffer = '' + } + } + + return result; + } + } + + function base64Decode(callback) { + return function(data) { + var string = callback(data); + if (typeof(atob) === 'function') { + // Browser + return atob(string); + } else if (typeof(Buffer) === 'function') { + // Node + if (typeof(Buffer.from) === 'function') { + // Node 5.10+ + return Buffer.from(string, 'base64').toString(); + } else { + return new Buffer(string, 'base64').toString(); + } + } else if ((($a = $$($nesting, 'Base64', 'skip_raise')) ? 'constant' : nil)) { + return $$($nesting, 'Base64').$decode64(string); + } else { + self.$raise("To use String#unpack('m'), you must first require 'base64'.") + } + } + } + + // quoted-printable decode + function qpdecode(callback) { + return function(data) { + var string = callback(data); + + return string + .replace(/[\t\x20]$/gm, '') + .replace(/=(?:\r\n?|\n|$)/g, '') + .replace(/=([a-fA-F0-9]{2})/g, function($0, $1) { + var codePoint = parseInt($1, 16); + return String.fromCharCode(codePoint); + }); + } + } + + function identityFunction(value) { return value; } + + var handlers = { + // Integer + 'C': identityFunction, + 'S': mapChunksToWords(chunkBy(2, identityFunction)), + 'L': mapChunksToWords(chunkBy(4, identityFunction)), + 'Q': mapChunksToWords(chunkBy(8, identityFunction)), + 'J': null, + + 'S>': mapChunksToWords(invertChunks(chunkBy(2, identityFunction))), + 'L>': mapChunksToWords(invertChunks(chunkBy(4, identityFunction))), + 'Q>': mapChunksToWords(invertChunks(chunkBy(8, identityFunction))), + + 'c': toNByteSigned(1, identityFunction), + 's': toNByteSigned(2, mapChunksToWords(chunkBy(2, identityFunction))), + 'l': toNByteSigned(4, mapChunksToWords(chunkBy(4, identityFunction))), + 'q': toNByteSigned(8, mapChunksToWords(chunkBy(8, identityFunction))), + 'j': null, + + 's>': toNByteSigned(2, mapChunksToWords(invertChunks(chunkBy(2, identityFunction)))), + 'l>': toNByteSigned(4, mapChunksToWords(invertChunks(chunkBy(4, identityFunction)))), + 'q>': toNByteSigned(8, mapChunksToWords(invertChunks(chunkBy(8, identityFunction)))), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': identityFunction, + 'w': decodeBERCompressedIntegers(identityFunction), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': wrapIntoArray(joinChars(bytesToAsciiChars(filterTrailingZerosAndSpaces(identityFunction)))), + 'a': wrapIntoArray(joinChars(bytesToAsciiChars(identityFunction))), + 'Z': joinChars(bytesToAsciiChars(identityFunction)), + 'B': joinChars(identityFunction), + 'b': joinChars(identityFunction), + 'H': joinChars(identityFunction), + 'h': joinChars(identityFunction), + 'u': joinChars(bytesToAsciiChars(uudecode(identityFunction))), + 'M': qpdecode(joinChars(bytesToAsciiChars(identityFunction))), + 'm': base64Decode(joinChars(bytesToAsciiChars(identityFunction))), + + 'P': null, + 'p': null + }; + + function readBytes(n) { + return function(bytes) { + var chunk = bytes.slice(0, n); + bytes = bytes.slice(n, bytes.length); + return { chunk: chunk, rest: bytes }; + } + } + + function readUnicodeCharChunk(bytes) { + function readByte() { + var result = bytes[0]; + bytes = bytes.slice(1, bytes.length); + return result; + } + + var c = readByte(), extraLength; + + if (c >> 7 == 0) { + // 0xxx xxxx + return { chunk: [c], rest: bytes }; + } + + if (c >> 6 == 0x02) { + self.$raise($$($nesting, 'ArgumentError'), "malformed UTF-8 character") + } + + if (c >> 5 == 0x06) { + // 110x xxxx (two bytes) + extraLength = 1; + } else if (c >> 4 == 0x0e) { + // 1110 xxxx (three bytes) + extraLength = 2; + } else if (c >> 3 == 0x1e) { + // 1111 0xxx (four bytes) + extraLength = 3; + } else if (c >> 2 == 0x3e) { + // 1111 10xx (five bytes) + extraLength = 4; + } else if (c >> 1 == 0x7e) { + // 1111 110x (six bytes) + extraLength = 5; + } else { + self.$raise("malformed UTF-8 character") + } + + if (extraLength > bytes.length) { + ((expected = extraLength + 1), (given = bytes.length + 1), self.$raise($$($nesting, 'ArgumentError'), "" + "malformed UTF-8 character (expected " + (expected) + " bytes, given " + (given) + " bytes)")) + } + + // Remove the UTF-8 prefix from the char + var mask = (1 << (8 - extraLength - 1)) - 1, + result = c & mask; + + for (var i = 0; i < extraLength; i++) { + c = readByte(); + + if (c >> 6 != 0x02) { + self.$raise("Invalid multibyte sequence") + } + + result = (result << 6) | (c & 0x3f); + } + + if (result <= 0xffff) { + return { chunk: [result], rest: bytes }; + } else { + result -= 0x10000; + var high = ((result >> 10) & 0x3ff) + 0xd800, + low = (result & 0x3ff) + 0xdc00; + return { chunk: [high, low], rest: bytes }; + } + } + + function readUuencodingChunk(buffer) { + var length = buffer.indexOf(32); // 32 = space + + if (length === -1) { + return { chunk: buffer, rest: [] }; + } else { + return { chunk: buffer.slice(0, length), rest: buffer.slice(length, buffer.length) }; + } + } + + function readNBitsLSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits).split('').reverse().join(''); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readNBitsMSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readWhileFirstBitIsOne(buffer) { + var result = []; + + for (var i = 0; i < buffer.length; i++) { + var singleByte = buffer[i]; + + result.push(singleByte); + + if ((singleByte & 128) === 0) { + break; + } + } + + return { chunk: result, rest: buffer.slice(result.length, buffer.length) }; + } + + function readTillNullCharacter(buffer, count) { + var result = []; + + for (var i = 0; i < count && i < buffer.length; i++) { + var singleByte = buffer[i]; + + if (singleByte === 0) { + break; + } else { + result.push(singleByte); + } + } + + if (count === Infinity) { + count = result.length; + } + + if (buffer[count] === 0) { + count++; + } + + buffer = buffer.slice(count, buffer.length); + + return { chunk: result, rest: buffer }; + } + + function readHexCharsHighNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[0]); + count--; + } else { + result.push(hex[0], hex[1]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readHexCharsLowNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[1]); + count--; + } else { + result.push(hex[1], hex[0]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readNTimesAndMerge(callback) { + return function(buffer, count) { + var chunk = [], chunkData; + + if (count === Infinity) { + while (buffer.length > 0) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } else { + for (var i = 0; i < count; i++) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } + + return { chunk: chunk, rest: buffer }; + } + } + + function readAll(buffer, count) { + return { chunk: buffer, rest: [] }; + } + + var readChunk = { + // Integer + 'C': readNTimesAndMerge(readBytes(1)), + 'S': readNTimesAndMerge(readBytes(2)), + 'L': readNTimesAndMerge(readBytes(4)), + 'Q': readNTimesAndMerge(readBytes(8)), + 'J': null, + + 'S>': readNTimesAndMerge(readBytes(2)), + 'L>': readNTimesAndMerge(readBytes(4)), + 'Q>': readNTimesAndMerge(readBytes(8)), + + 'c': readNTimesAndMerge(readBytes(1)), + 's': readNTimesAndMerge(readBytes(2)), + 'l': readNTimesAndMerge(readBytes(4)), + 'q': readNTimesAndMerge(readBytes(8)), + 'j': null, + + 's>': readNTimesAndMerge(readBytes(2)), + 'l>': readNTimesAndMerge(readBytes(4)), + 'q>': readNTimesAndMerge(readBytes(8)), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': readNTimesAndMerge(readUnicodeCharChunk), + 'w': readNTimesAndMerge(readWhileFirstBitIsOne), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': readNTimesAndMerge(readBytes(1)), + 'a': readNTimesAndMerge(readBytes(1)), + 'Z': readTillNullCharacter, + 'B': readNBitsMSBFirst, + 'b': readNBitsLSBFirst, + 'H': readHexCharsHighNibbleFirst, + 'h': readHexCharsLowNibbleFirst, + 'u': readNTimesAndMerge(readUuencodingChunk), + 'M': readAll, + 'm': readAll, + + 'P': null, + 'p': null + } + + var autocompletion = { + // Integer + 'C': true, + 'S': true, + 'L': true, + 'Q': true, + 'J': null, + + 'S>': true, + 'L>': true, + 'Q>': true, + + 'c': true, + 's': true, + 'l': true, + 'q': true, + 'j': null, + + 's>': true, + 'l>': true, + 'q>': true, + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': false, + 'w': false, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': false, + 'a': false, + 'Z': false, + 'B': false, + 'b': false, + 'H': false, + 'h': false, + 'u': false, + 'M': false, + 'm': false, + + 'P': null, + 'p': null + } + + var optimized = { + 'C*': handlers['C'], + 'c*': handlers['c'], + 'A*': handlers['A'], + 'a*': handlers['a'], + 'M*': wrapIntoArray(handlers['M']), + 'm*': wrapIntoArray(handlers['m']), + 'S*': handlers['S'], + 's*': handlers['s'], + 'L*': handlers['L'], + 'l*': handlers['l'], + 'Q*': handlers['Q'], + 'q*': handlers['q'], + 'S>*': handlers['S>'], + 's>*': handlers['s>'], + 'L>*': handlers['L>'], + 'l>*': handlers['l>'], + 'Q>*': handlers['Q>'], + 'q>*': handlers['q>'] + } + + function alias(existingDirective, newDirective) { + readChunk[newDirective] = readChunk[existingDirective]; + handlers[newDirective] = handlers[existingDirective]; + autocompletion[newDirective] = autocompletion[existingDirective]; + } + + alias('S>', 'n'); + alias('L>', 'N'); + + alias('S', 'v'); + alias('L', 'V'); + ; + + Opal.def(self, '$unpack', $String_unpack$1 = function $$unpack(format) { + var self = this; + + + format = $$($nesting, 'Opal')['$coerce_to!'](format, $$($nesting, 'String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + + var output = []; + + var buffer = utf16LEToBytes(self); + + // optimization + var optimizedHandler = optimized[format]; + if (optimizedHandler) { + return optimizedHandler(buffer); + } + + function autocomplete(array, size) { + while (array.length < size) { + array.push(nil); + } + + return array; + } + + function processChunk(directive, count) { + var chunk, + chunkReader = readChunk[directive]; + + if (chunkReader == null) { + self.$raise("" + "Unsupported unpack directive " + ((directive).$inspect()) + " (no chunk reader defined)") + } + + var chunkData = chunkReader(buffer, count); + chunk = chunkData.chunk; + buffer = chunkData.rest; + + var handler = handlers[directive]; + + if (handler == null) { + self.$raise("" + "Unsupported unpack directive " + ((directive).$inspect()) + " (no handler defined)") + } + + return handler(chunk); + } + + eachDirectiveAndCount(format, function(directive, count) { + var part = processChunk(directive, count); + + if (count !== Infinity) { + var shouldAutocomplete = autocompletion[directive]; + + if (shouldAutocomplete == null) { + self.$raise("" + "Unsupported unpack directive " + ((directive).$inspect()) + " (no autocompletion rule defined)") + } + + if (shouldAutocomplete) { + autocomplete(part, count); + } + } + + output = output.concat(part); + }); + + return output; + ; + }, $String_unpack$1.$$arity = 1); + return (Opal.def(self, '$unpack1', $String_unpack1$2 = function $$unpack1(format) { + var self = this; + + + format = $$($nesting, 'Opal')['$coerce_to!'](format, $$($nesting, 'String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + return self.$unpack(format['$[]'](0))['$[]'](0); + }, $String_unpack1$2.$$arity = 1), nil) && 'unpack1'; + })($nesting[0], null, $nesting); +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["set"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -25617,99 +28487,110 @@ Opal.modules["set"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $module = Opal.module; - Opal.add_stubs(['$include', '$new', '$nil?', '$===', '$raise', '$each', '$add', '$call', '$merge', '$class', '$respond_to?', '$subtract', '$dup', '$join', '$to_a', '$equal?', '$instance_of?', '$==', '$instance_variable_get', '$is_a?', '$size', '$all?', '$include?', '$[]=', '$-', '$enum_for', '$[]', '$<<', '$replace', '$delete', '$select', '$each_key', '$to_proc', '$empty?', '$eql?', '$instance_eval', '$clear', '$<', '$<=', '$keys']); + Opal.add_stubs(['$include', '$new', '$nil?', '$===', '$raise', '$each', '$add', '$merge', '$class', '$respond_to?', '$subtract', '$dup', '$join', '$to_a', '$equal?', '$instance_of?', '$==', '$instance_variable_get', '$is_a?', '$size', '$all?', '$include?', '$[]=', '$-', '$enum_for', '$[]', '$<<', '$replace', '$delete', '$select', '$each_key', '$to_proc', '$empty?', '$eql?', '$instance_eval', '$clear', '$<', '$<=', '$keys']); (function($base, $super, $parent_nesting) { - function $Set(){}; - var self = $Set = $klass($base, $super, 'Set', $Set); + var self = $klass($base, $super, 'Set'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Set_$$_1, TMP_Set_initialize_2, TMP_Set_dup_4, TMP_Set_$_5, TMP_Set_inspect_6, TMP_Set_$eq$eq_8, TMP_Set_add_9, TMP_Set_classify_10, TMP_Set_collect$B_13, TMP_Set_delete_15, TMP_Set_delete$q_16, TMP_Set_delete_if_17, TMP_Set_add$q_20, TMP_Set_each_21, TMP_Set_empty$q_22, TMP_Set_eql$q_24, TMP_Set_clear_25, TMP_Set_include$q_26, TMP_Set_merge_28, TMP_Set_replace_29, TMP_Set_size_30, TMP_Set_subtract_32, TMP_Set_$_33, TMP_Set_superset$q_35, TMP_Set_proper_superset$q_37, TMP_Set_subset$q_39, TMP_Set_proper_subset$q_41, TMP_Set_to_a_42; + var $nesting = [self].concat($parent_nesting), $Set_$$$1, $Set_initialize$2, $Set_dup$4, $Set_$minus$5, $Set_inspect$6, $Set_$eq_eq$7, $Set_add$9, $Set_classify$10, $Set_collect$excl$13, $Set_delete$15, $Set_delete$ques$16, $Set_delete_if$17, $Set_add$ques$20, $Set_each$21, $Set_empty$ques$22, $Set_eql$ques$23, $Set_clear$25, $Set_include$ques$26, $Set_merge$27, $Set_replace$29, $Set_size$30, $Set_subtract$31, $Set_$$33, $Set_superset$ques$34, $Set_proper_superset$ques$36, $Set_subset$ques$38, $Set_proper_subset$ques$40, $Set_to_a$42; - def.hash = nil; + self.$$prototype.hash = nil; - self.$include(Opal.const_get_relative($nesting, 'Enumerable')); - Opal.defs(self, '$[]', TMP_Set_$$_1 = function($a_rest) { - var self = this, ary; + self.$include($$($nesting, 'Enumerable')); + Opal.defs(self, '$[]', $Set_$$$1 = function($a) { + var $post_args, ary, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - ary = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - ary[$arg_idx - 0] = arguments[$arg_idx]; - } - return self.$new(ary) - }, TMP_Set_$$_1.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + ary = $post_args;; + return self.$new(ary); + }, $Set_$$$1.$$arity = -1); - Opal.defn(self, '$initialize', TMP_Set_initialize_2 = function $$initialize(enum$) { - var TMP_3, self = this, $iter = TMP_Set_initialize_2.$$p, block = $iter || nil; + Opal.def(self, '$initialize', $Set_initialize$2 = function $$initialize(enum$) { + var $iter = $Set_initialize$2.$$p, block = $iter || nil, $$3, self = this; + if ($iter) $Set_initialize$2.$$p = null; + + + if ($iter) $Set_initialize$2.$$p = null;; + if (enum$ == null) { enum$ = nil; - } - if ($iter) TMP_Set_initialize_2.$$p = null; - - self.hash = Opal.const_get_relative($nesting, 'Hash').$new(); + }; + self.hash = $hash2([], {}); if ($truthy(enum$['$nil?']())) { return nil}; - if ($truthy(Opal.const_get_relative($nesting, 'Enumerable')['$==='](enum$))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be enumerable") + if ($truthy($$($nesting, 'Enumerable')['$==='](enum$))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "value must be enumerable") }; if ($truthy(block)) { - return $send(enum$, 'each', [], (TMP_3 = function(item){var self = TMP_3.$$s || this; -if (item == null) item = nil; - return self.$add(block.$call(item))}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)) - } else { + return $send(enum$, 'each', [], ($$3 = function(item){var self = $$3.$$s || this; + + + + if (item == null) { + item = nil; + }; + return self.$add(Opal.yield1(block, item));}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + } else { return self.$merge(enum$) }; - }, TMP_Set_initialize_2.$$arity = -1); + }, $Set_initialize$2.$$arity = -1); - Opal.defn(self, '$dup', TMP_Set_dup_4 = function $$dup() { + Opal.def(self, '$dup', $Set_dup$4 = function $$dup() { var self = this, result = nil; result = self.$class().$new(); return result.$merge(self); - }, TMP_Set_dup_4.$$arity = 0); + }, $Set_dup$4.$$arity = 0); - Opal.defn(self, '$-', TMP_Set_$_5 = function(enum$) { + Opal.def(self, '$-', $Set_$minus$5 = function(enum$) { var self = this; if ($truthy(enum$['$respond_to?']("each"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be enumerable") + } else { + self.$raise($$($nesting, 'ArgumentError'), "value must be enumerable") }; return self.$dup().$subtract(enum$); - }, TMP_Set_$_5.$$arity = 1); + }, $Set_$minus$5.$$arity = 1); Opal.alias(self, "difference", "-"); - Opal.defn(self, '$inspect', TMP_Set_inspect_6 = function $$inspect() { + Opal.def(self, '$inspect', $Set_inspect$6 = function $$inspect() { var self = this; return "" + "#" - }, TMP_Set_inspect_6.$$arity = 0); + }, $Set_inspect$6.$$arity = 0); - Opal.defn(self, '$==', TMP_Set_$eq$eq_8 = function(other) { - var $a, TMP_7, self = this; + Opal.def(self, '$==', $Set_$eq_eq$7 = function(other) { + var $a, $$8, self = this; if ($truthy(self['$equal?'](other))) { return true } else if ($truthy(other['$instance_of?'](self.$class()))) { return self.hash['$=='](other.$instance_variable_get("@hash")) - } else if ($truthy(($truthy($a = other['$is_a?'](Opal.const_get_relative($nesting, 'Set'))) ? self.$size()['$=='](other.$size()) : $a))) { - return $send(other, 'all?', [], (TMP_7 = function(o){var self = TMP_7.$$s || this; + } else if ($truthy(($truthy($a = other['$is_a?']($$($nesting, 'Set'))) ? self.$size()['$=='](other.$size()) : $a))) { + return $send(other, 'all?', [], ($$8 = function(o){var self = $$8.$$s || this; if (self.hash == null) self.hash = nil; -if (o == null) o = nil; - return self.hash['$include?'](o)}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)) - } else { + + + + if (o == null) { + o = nil; + }; + return self.hash['$include?'](o);}, $$8.$$s = self, $$8.$$arity = 1, $$8)) + } else { return false } - }, TMP_Set_$eq$eq_8.$$arity = 1); + }, $Set_$eq_eq$7.$$arity = 1); - Opal.defn(self, '$add', TMP_Set_add_9 = function $$add(o) { + Opal.def(self, '$add', $Set_add$9 = function $$add(o) { var self = this, $writer = nil; @@ -25718,268 +28599,339 @@ if (o == null) o = nil; $send(self.hash, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return self; - }, TMP_Set_add_9.$$arity = 1); + }, $Set_add$9.$$arity = 1); Opal.alias(self, "<<", "add"); - Opal.defn(self, '$classify', TMP_Set_classify_10 = function $$classify() { - var TMP_11, TMP_12, self = this, $iter = TMP_Set_classify_10.$$p, block = $iter || nil, result = nil; + Opal.def(self, '$classify', $Set_classify$10 = function $$classify() { + var $iter = $Set_classify$10.$$p, block = $iter || nil, $$11, $$12, self = this, result = nil; - if ($iter) TMP_Set_classify_10.$$p = null; + if ($iter) $Set_classify$10.$$p = null; + + if ($iter) $Set_classify$10.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("classify") }; - result = $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_11 = function(h, k){var self = TMP_11.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + result = $send($$($nesting, 'Hash'), 'new', [], ($$11 = function(h, k){var self = $$11.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, self.$class().$new()]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_11.$$s = self, TMP_11.$$arity = 2, TMP_11)); - $send(self, 'each', [], (TMP_12 = function(item){var self = TMP_12.$$s || this; -if (item == null) item = nil; - return result['$[]'](Opal.yield1(block, item)).$add(item)}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)); + return $writer[$rb_minus($writer["length"], 1)];}, $$11.$$s = self, $$11.$$arity = 2, $$11)); + $send(self, 'each', [], ($$12 = function(item){var self = $$12.$$s || this; + + + + if (item == null) { + item = nil; + }; + return result['$[]'](Opal.yield1(block, item)).$add(item);}, $$12.$$s = self, $$12.$$arity = 1, $$12)); return result; - }, TMP_Set_classify_10.$$arity = 0); + }, $Set_classify$10.$$arity = 0); - Opal.defn(self, '$collect!', TMP_Set_collect$B_13 = function() { - var TMP_14, self = this, $iter = TMP_Set_collect$B_13.$$p, block = $iter || nil, result = nil; + Opal.def(self, '$collect!', $Set_collect$excl$13 = function() { + var $iter = $Set_collect$excl$13.$$p, block = $iter || nil, $$14, self = this, result = nil; - if ($iter) TMP_Set_collect$B_13.$$p = null; + if ($iter) $Set_collect$excl$13.$$p = null; + + if ($iter) $Set_collect$excl$13.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("collect!") }; result = self.$class().$new(); - $send(self, 'each', [], (TMP_14 = function(item){var self = TMP_14.$$s || this; -if (item == null) item = nil; - return result['$<<'](Opal.yield1(block, item))}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)); + $send(self, 'each', [], ($$14 = function(item){var self = $$14.$$s || this; + + + + if (item == null) { + item = nil; + }; + return result['$<<'](Opal.yield1(block, item));}, $$14.$$s = self, $$14.$$arity = 1, $$14)); return self.$replace(result); - }, TMP_Set_collect$B_13.$$arity = 0); + }, $Set_collect$excl$13.$$arity = 0); Opal.alias(self, "map!", "collect!"); - Opal.defn(self, '$delete', TMP_Set_delete_15 = function(o) { + Opal.def(self, '$delete', $Set_delete$15 = function(o) { var self = this; self.hash.$delete(o); return self; - }, TMP_Set_delete_15.$$arity = 1); + }, $Set_delete$15.$$arity = 1); - Opal.defn(self, '$delete?', TMP_Set_delete$q_16 = function(o) { + Opal.def(self, '$delete?', $Set_delete$ques$16 = function(o) { var self = this; if ($truthy(self['$include?'](o))) { self.$delete(o); return self; - } else { + } else { return nil } - }, TMP_Set_delete$q_16.$$arity = 1); + }, $Set_delete$ques$16.$$arity = 1); - Opal.defn(self, '$delete_if', TMP_Set_delete_if_17 = function $$delete_if() {try { + Opal.def(self, '$delete_if', $Set_delete_if$17 = function $$delete_if() { + var $$18, $$19, $iter = $Set_delete_if$17.$$p, $yield = $iter || nil, self = this; - var $a, TMP_18, TMP_19, self = this, $iter = TMP_Set_delete_if_17.$$p, $yield = $iter || nil; + if ($iter) $Set_delete_if$17.$$p = null; + + if (($yield !== nil)) { + } else { + return self.$enum_for("delete_if") + }; + $send($send(self, 'select', [], ($$18 = function(o){var self = $$18.$$s || this; - if ($iter) TMP_Set_delete_if_17.$$p = null; - ($truthy($a = ($yield !== nil)) ? $a : Opal.ret(self.$enum_for("delete_if"))); - $send($send(self, 'select', [], (TMP_18 = function(o){var self = TMP_18.$$s || this; -if (o == null) o = nil; - return Opal.yield1($yield, o);}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18)), 'each', [], (TMP_19 = function(o){var self = TMP_19.$$s || this; + + if (o == null) { + o = nil; + }; + return Opal.yield1($yield, o);;}, $$18.$$s = self, $$18.$$arity = 1, $$18)), 'each', [], ($$19 = function(o){var self = $$19.$$s || this; if (self.hash == null) self.hash = nil; -if (o == null) o = nil; - return self.hash.$delete(o)}, TMP_19.$$s = self, TMP_19.$$arity = 1, TMP_19)); + + + + if (o == null) { + o = nil; + }; + return self.hash.$delete(o);}, $$19.$$s = self, $$19.$$arity = 1, $$19)); return self; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Set_delete_if_17.$$arity = 0); + }, $Set_delete_if$17.$$arity = 0); - Opal.defn(self, '$add?', TMP_Set_add$q_20 = function(o) { + Opal.def(self, '$add?', $Set_add$ques$20 = function(o) { var self = this; if ($truthy(self['$include?'](o))) { return nil - } else { + } else { return self.$add(o) } - }, TMP_Set_add$q_20.$$arity = 1); + }, $Set_add$ques$20.$$arity = 1); - Opal.defn(self, '$each', TMP_Set_each_21 = function $$each() { - var self = this, $iter = TMP_Set_each_21.$$p, block = $iter || nil; + Opal.def(self, '$each', $Set_each$21 = function $$each() { + var $iter = $Set_each$21.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Set_each_21.$$p = null; + if ($iter) $Set_each$21.$$p = null; + + if ($iter) $Set_each$21.$$p = null;; if ((block !== nil)) { - } else { + } else { return self.$enum_for("each") }; $send(self.hash, 'each_key', [], block.$to_proc()); return self; - }, TMP_Set_each_21.$$arity = 0); + }, $Set_each$21.$$arity = 0); - Opal.defn(self, '$empty?', TMP_Set_empty$q_22 = function() { + Opal.def(self, '$empty?', $Set_empty$ques$22 = function() { var self = this; return self.hash['$empty?']() - }, TMP_Set_empty$q_22.$$arity = 0); + }, $Set_empty$ques$22.$$arity = 0); - Opal.defn(self, '$eql?', TMP_Set_eql$q_24 = function(other) { - var TMP_23, self = this; + Opal.def(self, '$eql?', $Set_eql$ques$23 = function(other) { + var $$24, self = this; - return self.hash['$eql?']($send(other, 'instance_eval', [], (TMP_23 = function(){var self = TMP_23.$$s || this; + return self.hash['$eql?']($send(other, 'instance_eval', [], ($$24 = function(){var self = $$24.$$s || this; if (self.hash == null) self.hash = nil; - return self.hash}, TMP_23.$$s = self, TMP_23.$$arity = 0, TMP_23))) - }, TMP_Set_eql$q_24.$$arity = 1); + return self.hash}, $$24.$$s = self, $$24.$$arity = 0, $$24))) + }, $Set_eql$ques$23.$$arity = 1); - Opal.defn(self, '$clear', TMP_Set_clear_25 = function $$clear() { + Opal.def(self, '$clear', $Set_clear$25 = function $$clear() { var self = this; self.hash.$clear(); return self; - }, TMP_Set_clear_25.$$arity = 0); + }, $Set_clear$25.$$arity = 0); - Opal.defn(self, '$include?', TMP_Set_include$q_26 = function(o) { + Opal.def(self, '$include?', $Set_include$ques$26 = function(o) { var self = this; return self.hash['$include?'](o) - }, TMP_Set_include$q_26.$$arity = 1); + }, $Set_include$ques$26.$$arity = 1); Opal.alias(self, "member?", "include?"); - Opal.defn(self, '$merge', TMP_Set_merge_28 = function $$merge(enum$) { - var TMP_27, self = this; + Opal.def(self, '$merge', $Set_merge$27 = function $$merge(enum$) { + var $$28, self = this; + + + $send(enum$, 'each', [], ($$28 = function(item){var self = $$28.$$s || this; - $send(enum$, 'each', [], (TMP_27 = function(item){var self = TMP_27.$$s || this; -if (item == null) item = nil; - return self.$add(item)}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)); + + if (item == null) { + item = nil; + }; + return self.$add(item);}, $$28.$$s = self, $$28.$$arity = 1, $$28)); return self; - }, TMP_Set_merge_28.$$arity = 1); + }, $Set_merge$27.$$arity = 1); - Opal.defn(self, '$replace', TMP_Set_replace_29 = function $$replace(enum$) { + Opal.def(self, '$replace', $Set_replace$29 = function $$replace(enum$) { var self = this; self.$clear(); self.$merge(enum$); return self; - }, TMP_Set_replace_29.$$arity = 1); + }, $Set_replace$29.$$arity = 1); - Opal.defn(self, '$size', TMP_Set_size_30 = function $$size() { + Opal.def(self, '$size', $Set_size$30 = function $$size() { var self = this; return self.hash.$size() - }, TMP_Set_size_30.$$arity = 0); + }, $Set_size$30.$$arity = 0); Opal.alias(self, "length", "size"); - Opal.defn(self, '$subtract', TMP_Set_subtract_32 = function $$subtract(enum$) { - var TMP_31, self = this; + Opal.def(self, '$subtract', $Set_subtract$31 = function $$subtract(enum$) { + var $$32, self = this; + + + $send(enum$, 'each', [], ($$32 = function(item){var self = $$32.$$s || this; - $send(enum$, 'each', [], (TMP_31 = function(item){var self = TMP_31.$$s || this; -if (item == null) item = nil; - return self.$delete(item)}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31)); + + if (item == null) { + item = nil; + }; + return self.$delete(item);}, $$32.$$s = self, $$32.$$arity = 1, $$32)); return self; - }, TMP_Set_subtract_32.$$arity = 1); + }, $Set_subtract$31.$$arity = 1); - Opal.defn(self, '$|', TMP_Set_$_33 = function(enum$) { + Opal.def(self, '$|', $Set_$$33 = function(enum$) { var self = this; if ($truthy(enum$['$respond_to?']("each"))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be enumerable") + } else { + self.$raise($$($nesting, 'ArgumentError'), "value must be enumerable") }; return self.$dup().$merge(enum$); - }, TMP_Set_$_33.$$arity = 1); + }, $Set_$$33.$$arity = 1); - Opal.defn(self, '$superset?', TMP_Set_superset$q_35 = function(set) { - var $a, TMP_34, self = this; + Opal.def(self, '$superset?', $Set_superset$ques$34 = function(set) { + var $a, $$35, self = this; - ($truthy($a = set['$is_a?'](Opal.const_get_relative($nesting, 'Set'))) ? $a : self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be a set")); + ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), "value must be a set")); if ($truthy($rb_lt(self.$size(), set.$size()))) { return false}; - return $send(set, 'all?', [], (TMP_34 = function(o){var self = TMP_34.$$s || this; -if (o == null) o = nil; - return self['$include?'](o)}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34)); - }, TMP_Set_superset$q_35.$$arity = 1); + return $send(set, 'all?', [], ($$35 = function(o){var self = $$35.$$s || this; + + + + if (o == null) { + o = nil; + }; + return self['$include?'](o);}, $$35.$$s = self, $$35.$$arity = 1, $$35)); + }, $Set_superset$ques$34.$$arity = 1); Opal.alias(self, ">=", "superset?"); - Opal.defn(self, '$proper_superset?', TMP_Set_proper_superset$q_37 = function(set) { - var $a, TMP_36, self = this; + Opal.def(self, '$proper_superset?', $Set_proper_superset$ques$36 = function(set) { + var $a, $$37, self = this; - ($truthy($a = set['$is_a?'](Opal.const_get_relative($nesting, 'Set'))) ? $a : self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be a set")); + ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), "value must be a set")); if ($truthy($rb_le(self.$size(), set.$size()))) { return false}; - return $send(set, 'all?', [], (TMP_36 = function(o){var self = TMP_36.$$s || this; -if (o == null) o = nil; - return self['$include?'](o)}, TMP_36.$$s = self, TMP_36.$$arity = 1, TMP_36)); - }, TMP_Set_proper_superset$q_37.$$arity = 1); + return $send(set, 'all?', [], ($$37 = function(o){var self = $$37.$$s || this; + + + + if (o == null) { + o = nil; + }; + return self['$include?'](o);}, $$37.$$s = self, $$37.$$arity = 1, $$37)); + }, $Set_proper_superset$ques$36.$$arity = 1); Opal.alias(self, ">", "proper_superset?"); - Opal.defn(self, '$subset?', TMP_Set_subset$q_39 = function(set) { - var $a, TMP_38, self = this; + Opal.def(self, '$subset?', $Set_subset$ques$38 = function(set) { + var $a, $$39, self = this; - ($truthy($a = set['$is_a?'](Opal.const_get_relative($nesting, 'Set'))) ? $a : self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be a set")); + ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), "value must be a set")); if ($truthy($rb_lt(set.$size(), self.$size()))) { return false}; - return $send(self, 'all?', [], (TMP_38 = function(o){var self = TMP_38.$$s || this; -if (o == null) o = nil; - return set['$include?'](o)}, TMP_38.$$s = self, TMP_38.$$arity = 1, TMP_38)); - }, TMP_Set_subset$q_39.$$arity = 1); + return $send(self, 'all?', [], ($$39 = function(o){var self = $$39.$$s || this; + + + + if (o == null) { + o = nil; + }; + return set['$include?'](o);}, $$39.$$s = self, $$39.$$arity = 1, $$39)); + }, $Set_subset$ques$38.$$arity = 1); Opal.alias(self, "<=", "subset?"); - Opal.defn(self, '$proper_subset?', TMP_Set_proper_subset$q_41 = function(set) { - var $a, TMP_40, self = this; + Opal.def(self, '$proper_subset?', $Set_proper_subset$ques$40 = function(set) { + var $a, $$41, self = this; - ($truthy($a = set['$is_a?'](Opal.const_get_relative($nesting, 'Set'))) ? $a : self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "value must be a set")); + ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), "value must be a set")); if ($truthy($rb_le(set.$size(), self.$size()))) { return false}; - return $send(self, 'all?', [], (TMP_40 = function(o){var self = TMP_40.$$s || this; -if (o == null) o = nil; - return set['$include?'](o)}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40)); - }, TMP_Set_proper_subset$q_41.$$arity = 1); + return $send(self, 'all?', [], ($$41 = function(o){var self = $$41.$$s || this; + + + + if (o == null) { + o = nil; + }; + return set['$include?'](o);}, $$41.$$s = self, $$41.$$arity = 1, $$41)); + }, $Set_proper_subset$ques$40.$$arity = 1); Opal.alias(self, "<", "proper_subset?"); Opal.alias(self, "+", "|"); Opal.alias(self, "union", "|"); - return (Opal.defn(self, '$to_a', TMP_Set_to_a_42 = function $$to_a() { + return (Opal.def(self, '$to_a', $Set_to_a$42 = function $$to_a() { var self = this; return self.hash.$keys() - }, TMP_Set_to_a_42.$$arity = 0), nil) && 'to_a'; + }, $Set_to_a$42.$$arity = 0), nil) && 'to_a'; })($nesting[0], null, $nesting); return (function($base, $parent_nesting) { - var $Enumerable, self = $Enumerable = $module($base, 'Enumerable'); + var self = $module($base, 'Enumerable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerable_to_set_43; + var $nesting = [self].concat($parent_nesting), $Enumerable_to_set$43; - Opal.defn(self, '$to_set', TMP_Enumerable_to_set_43 = function $$to_set(klass, $a_rest) { - var self = this, args, $iter = TMP_Enumerable_to_set_43.$$p, block = $iter || nil; + Opal.def(self, '$to_set', $Enumerable_to_set$43 = function $$to_set($a, $b) { + var $iter = $Enumerable_to_set$43.$$p, block = $iter || nil, $post_args, klass, args, self = this; - if (klass == null) { - klass = Opal.const_get_relative($nesting, 'Set'); - } - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; + if ($iter) $Enumerable_to_set$43.$$p = null; + + + if ($iter) $Enumerable_to_set$43.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + if ($post_args.length > 0) { + klass = $post_args[0]; + $post_args.splice(0, 1); } - if ($iter) TMP_Enumerable_to_set_43.$$p = null; - return $send(klass, 'new', [self].concat(Opal.to_a(args)), block.$to_proc()) - }, TMP_Enumerable_to_set_43.$$arity = -1) + if (klass == null) { + klass = $$($nesting, 'Set'); + }; + + args = $post_args;; + return $send(klass, 'new', [self].concat(Opal.to_a(args)), block.$to_proc()); + }, $Enumerable_to_set$43.$$arity = -1) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["ast/node"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -25987,93 +28939,109 @@ Opal.modules["ast/node"] = function(Opal) { function $rb_times(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$attr_reader', '$to_sym', '$freeze', '$to_a', '$assign_properties', '$hash', '$class', '$eql?', '$type', '$children', '$each', '$instance_variable_set', '$protected', '$private', '$==', '$nil?', '$send', '$original_dup', '$equal?', '$respond_to?', '$to_ast', '$updated', '$+', '$*', '$fancy_type', '$is_a?', '$to_sexp', '$inspect', '$map', '$to_sexp_array', '$gsub', '$to_s']); + Opal.add_stubs(['$attr_reader', '$to_sym', '$freeze', '$to_a', '$assign_properties', '$hash', '$class', '$eql?', '$type', '$children', '$each', '$instance_variable_set', '$protected', '$private', '$==', '$nil?', '$original_dup', '$send', '$equal?', '$respond_to?', '$to_ast', '$updated', '$+', '$*', '$fancy_type', '$is_a?', '$to_sexp', '$inspect', '$map', '$to_sexp_array', '$gsub', '$to_s']); return (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Node(){}; - var self = $Node = $klass($base, $super, 'Node', $Node); + var self = $klass($base, $super, 'Node'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Node_initialize_1, TMP_Node_eql$q_2, TMP_Node_assign_properties_4, TMP_Node_dup_5, TMP_Node_updated_6, TMP_Node_$eq$eq_7, TMP_Node_concat_8, TMP_Node_append_9, TMP_Node_to_sexp_11, TMP_Node_inspect_13, TMP_Node_to_ast_14, TMP_Node_to_sexp_array_16, TMP_Node_fancy_type_17; + var $nesting = [self].concat($parent_nesting), $Node_initialize$1, $Node_eql$ques$2, $Node_assign_properties$3, $Node_dup$5, $Node_updated$6, $Node_$eq_eq$7, $Node_concat$8, $Node_append$9, $Node_to_sexp$10, $Node_inspect$12, $Node_to_ast$14, $Node_to_sexp_array$15, $Node_fancy_type$17; - def.type = def.children = nil; + self.$$prototype.type = self.$$prototype.children = nil; self.$attr_reader("type"); self.$attr_reader("children"); Opal.alias(self, "to_a", "children"); self.$attr_reader("hash"); - Opal.defn(self, '$initialize', TMP_Node_initialize_1 = function $$initialize(type, children, properties) { + Opal.def(self, '$initialize', $Node_initialize$1 = function $$initialize(type, children, properties) { var $a, self = this; + + if (children == null) { children = []; - } + }; + if (properties == null) { properties = $hash2([], {}); - } - + }; $a = [type.$to_sym(), children.$to_a().$freeze()], (self.type = $a[0]), (self.children = $a[1]), $a; self.$assign_properties(properties); self.hash = [self.type, self.children, self.$class()].$hash(); return self.$freeze(); - }, TMP_Node_initialize_1.$$arity = -2); + }, $Node_initialize$1.$$arity = -2); - Opal.defn(self, '$eql?', TMP_Node_eql$q_2 = function(other) { + Opal.def(self, '$eql?', $Node_eql$ques$2 = function(other) { var $a, $b, self = this; return ($truthy($a = ($truthy($b = self.$class()['$eql?'](other.$class())) ? self.type['$eql?'](other.$type()) : $b)) ? self.children['$eql?'](other.$children()) : $a) - }, TMP_Node_eql$q_2.$$arity = 1); + }, $Node_eql$ques$2.$$arity = 1); - Opal.defn(self, '$assign_properties', TMP_Node_assign_properties_4 = function $$assign_properties(properties) { - var TMP_3, self = this; + Opal.def(self, '$assign_properties', $Node_assign_properties$3 = function $$assign_properties(properties) { + var $$4, self = this; + + + $send(properties, 'each', [], ($$4 = function(name, value){var self = $$4.$$s || this; - $send(properties, 'each', [], (TMP_3 = function(name, value){var self = TMP_3.$$s || this; -if (name == null) name = nil;if (value == null) value = nil; - return self.$instance_variable_set("" + "@" + (name), value)}, TMP_3.$$s = self, TMP_3.$$arity = 2, TMP_3)); + + if (name == null) { + name = nil; + }; + + if (value == null) { + value = nil; + }; + return self.$instance_variable_set("" + "@" + (name), value);}, $$4.$$s = self, $$4.$$arity = 2, $$4)); return nil; - }, TMP_Node_assign_properties_4.$$arity = 1); + }, $Node_assign_properties$3.$$arity = 1); self.$protected("assign_properties"); Opal.alias(self, "original_dup", "dup"); self.$private("original_dup"); - Opal.defn(self, '$dup', TMP_Node_dup_5 = function $$dup() { + Opal.def(self, '$dup', $Node_dup$5 = function $$dup() { var self = this; return self - }, TMP_Node_dup_5.$$arity = 0); + }, $Node_dup$5.$$arity = 0); Opal.alias(self, "clone", "dup"); - Opal.defn(self, '$updated', TMP_Node_updated_6 = function $$updated(type, children, properties) { - var $a, $b, self = this, new_type = nil, new_children = nil, new_properties = nil; + Opal.def(self, '$updated', $Node_updated$6 = function $$updated(type, children, properties) { + var $a, $b, self = this, new_type = nil, new_children = nil, new_properties = nil, copy = nil; + + if (type == null) { type = nil; - } + }; + if (children == null) { children = nil; - } + }; + if (properties == null) { properties = nil; - } - + }; new_type = ($truthy($a = type) ? $a : self.type); new_children = ($truthy($a = children) ? $a : self.children); new_properties = ($truthy($a = properties) ? $a : $hash2([], {})); if ($truthy(($truthy($a = (($b = self.type['$=='](new_type)) ? self.children['$=='](new_children) : self.type['$=='](new_type))) ? properties['$nil?']() : $a))) { return self - } else { - return self.$original_dup().$send("initialize", new_type, new_children, new_properties) + } else { + + copy = self.$original_dup(); + copy.$send("initialize", new_type, new_children, new_properties); + return copy; }; - }, TMP_Node_updated_6.$$arity = -1); + }, $Node_updated$6.$$arity = -1); - Opal.defn(self, '$==', TMP_Node_$eq$eq_7 = function(other) { + Opal.def(self, '$==', $Node_$eq_eq$7 = function(other) { var $a, self = this; if ($truthy(self['$equal?'](other))) { @@ -26082,119 +29050,135 @@ if (name == null) name = nil;if (value == null) value = nil; other = other.$to_ast(); return (($a = other.$type()['$=='](self.$type())) ? other.$children()['$=='](self.$children()) : other.$type()['$=='](self.$type())); - } else { + } else { return false } - }, TMP_Node_$eq$eq_7.$$arity = 1); + }, $Node_$eq_eq$7.$$arity = 1); - Opal.defn(self, '$concat', TMP_Node_concat_8 = function $$concat(array) { + Opal.def(self, '$concat', $Node_concat$8 = function $$concat(array) { var self = this; return self.$updated(nil, $rb_plus(self.children, array.$to_a())) - }, TMP_Node_concat_8.$$arity = 1); + }, $Node_concat$8.$$arity = 1); Opal.alias(self, "+", "concat"); - Opal.defn(self, '$append', TMP_Node_append_9 = function $$append(element) { + Opal.def(self, '$append', $Node_append$9 = function $$append(element) { var self = this; return self.$updated(nil, $rb_plus(self.children, [element])) - }, TMP_Node_append_9.$$arity = 1); + }, $Node_append$9.$$arity = 1); Opal.alias(self, "<<", "append"); - Opal.defn(self, '$to_sexp', TMP_Node_to_sexp_11 = function $$to_sexp(indent) { - var TMP_10, self = this, indented = nil, sexp = nil; + Opal.def(self, '$to_sexp', $Node_to_sexp$10 = function $$to_sexp(indent) { + var $$11, self = this, indented = nil, sexp = nil; + + if (indent == null) { indent = 0; - } - + }; indented = $rb_times(" ", indent); sexp = "" + (indented) + "(" + (self.$fancy_type()); - $send(self.$children(), 'each', [], (TMP_10 = function(child){var self = TMP_10.$$s || this; -if (child == null) child = nil; - if ($truthy(child['$is_a?'](Opal.const_get_relative($nesting, 'Node')))) { + $send(self.$children(), 'each', [], ($$11 = function(child){var self = $$11.$$s || this; + + + + if (child == null) { + child = nil; + }; + if ($truthy(child['$is_a?']($$($nesting, 'Node')))) { return (sexp = $rb_plus(sexp, "" + "\n" + (child.$to_sexp($rb_plus(indent, 1))))) - } else { + } else { return (sexp = $rb_plus(sexp, "" + " " + (child.$inspect()))) - }}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10)); + };}, $$11.$$s = self, $$11.$$arity = 1, $$11)); sexp = $rb_plus(sexp, ")"); return sexp; - }, TMP_Node_to_sexp_11.$$arity = -1); + }, $Node_to_sexp$10.$$arity = -1); Opal.alias(self, "to_s", "to_sexp"); - Opal.defn(self, '$inspect', TMP_Node_inspect_13 = function $$inspect(indent) { - var TMP_12, self = this, indented = nil, sexp = nil; + Opal.def(self, '$inspect', $Node_inspect$12 = function $$inspect(indent) { + var $$13, self = this, indented = nil, sexp = nil; + + if (indent == null) { indent = 0; - } - + }; indented = $rb_times(" ", indent); sexp = "" + (indented) + "s(:" + (self.type); - $send(self.$children(), 'each', [], (TMP_12 = function(child){var self = TMP_12.$$s || this; -if (child == null) child = nil; - if ($truthy(child['$is_a?'](Opal.const_get_relative($nesting, 'Node')))) { + $send(self.$children(), 'each', [], ($$13 = function(child){var self = $$13.$$s || this; + + + + if (child == null) { + child = nil; + }; + if ($truthy(child['$is_a?']($$($nesting, 'Node')))) { return (sexp = $rb_plus(sexp, "" + ",\n" + (child.$inspect($rb_plus(indent, 1))))) - } else { + } else { return (sexp = $rb_plus(sexp, "" + ", " + (child.$inspect()))) - }}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)); + };}, $$13.$$s = self, $$13.$$arity = 1, $$13)); sexp = $rb_plus(sexp, ")"); return sexp; - }, TMP_Node_inspect_13.$$arity = -1); + }, $Node_inspect$12.$$arity = -1); - Opal.defn(self, '$to_ast', TMP_Node_to_ast_14 = function $$to_ast() { + Opal.def(self, '$to_ast', $Node_to_ast$14 = function $$to_ast() { var self = this; return self - }, TMP_Node_to_ast_14.$$arity = 0); + }, $Node_to_ast$14.$$arity = 0); - Opal.defn(self, '$to_sexp_array', TMP_Node_to_sexp_array_16 = function $$to_sexp_array() { - var TMP_15, self = this, children_sexp_arrs = nil; + Opal.def(self, '$to_sexp_array', $Node_to_sexp_array$15 = function $$to_sexp_array() { + var $$16, self = this, children_sexp_arrs = nil; + + + children_sexp_arrs = $send(self.$children(), 'map', [], ($$16 = function(child){var self = $$16.$$s || this; - children_sexp_arrs = $send(self.$children(), 'map', [], (TMP_15 = function(child){var self = TMP_15.$$s || this; -if (child == null) child = nil; - if ($truthy(child['$is_a?'](Opal.const_get_relative($nesting, 'Node')))) { + + if (child == null) { + child = nil; + }; + if ($truthy(child['$is_a?']($$($nesting, 'Node')))) { return child.$to_sexp_array() - } else { + } else { return child - }}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)); + };}, $$16.$$s = self, $$16.$$arity = 1, $$16)); return [self.$type()].concat(Opal.to_a(children_sexp_arrs)); - }, TMP_Node_to_sexp_array_16.$$arity = 0); + }, $Node_to_sexp_array$15.$$arity = 0); self.$protected(); - return (Opal.defn(self, '$fancy_type', TMP_Node_fancy_type_17 = function $$fancy_type() { + return (Opal.def(self, '$fancy_type', $Node_fancy_type$17 = function $$fancy_type() { var self = this; return self.type.$to_s().$gsub("_", "-") - }, TMP_Node_fancy_type_17.$$arity = 0), nil) && 'fancy_type'; + }, $Node_fancy_type$17.$$arity = 0), nil) && 'fancy_type'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["ast/processor/mixin"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$nil?', '$to_ast', '$type', '$respond_to?', '$send', '$handler_missing', '$map', '$to_a', '$process']); return (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Processor(){}; - var self = $Processor = $klass($base, $super, 'Processor', $Processor); + var self = $klass($base, $super, 'Processor'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return (function($base, $parent_nesting) { - var $Mixin, self = $Mixin = $module($base, 'Mixin'); + var self = $module($base, 'Mixin'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Mixin_process_1, TMP_Mixin_process_all_3, TMP_Mixin_handler_missing_4; + var $nesting = [self].concat($parent_nesting), $Mixin_process$1, $Mixin_process_all$2, $Mixin_handler_missing$4; - Opal.defn(self, '$process', TMP_Mixin_process_1 = function $$process(node) { + Opal.def(self, '$process', $Mixin_process$1 = function $$process(node) { var self = this, on_handler = nil, new_node = nil; @@ -26204,95 +29188,98 @@ Opal.modules["ast/processor/mixin"] = function(Opal) { on_handler = "" + "on_" + (node.$type()); if ($truthy(self['$respond_to?'](on_handler))) { new_node = self.$send(on_handler, node) - } else { + } else { new_node = self.$handler_missing(node) }; if ($truthy(new_node)) { node = new_node}; return node; - }, TMP_Mixin_process_1.$$arity = 1); + }, $Mixin_process$1.$$arity = 1); - Opal.defn(self, '$process_all', TMP_Mixin_process_all_3 = function $$process_all(nodes) { - var TMP_2, self = this; + Opal.def(self, '$process_all', $Mixin_process_all$2 = function $$process_all(nodes) { + var $$3, self = this; + + return $send(nodes.$to_a(), 'map', [], ($$3 = function(node){var self = $$3.$$s || this; - return $send(nodes.$to_a(), 'map', [], (TMP_2 = function(node){var self = TMP_2.$$s || this; -if (node == null) node = nil; - return self.$process(node)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)) - }, TMP_Mixin_process_all_3.$$arity = 1); + + + if (node == null) { + node = nil; + }; + return self.$process(node);}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + }, $Mixin_process_all$2.$$arity = 1); - Opal.defn(self, '$handler_missing', TMP_Mixin_handler_missing_4 = function $$handler_missing(node) { + Opal.def(self, '$handler_missing', $Mixin_handler_missing$4 = function $$handler_missing(node) { var self = this; return nil - }, TMP_Mixin_handler_missing_4.$$arity = 1); + }, $Mixin_handler_missing$4.$$arity = 1); })($nesting[0], $nesting) })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["ast/processor"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs(['$require', '$include']); return (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Processor(){}; - var self = $Processor = $klass($base, $super, 'Processor', $Processor); + var self = $klass($base, $super, 'Processor'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$require("ast/processor/mixin"); - return self.$include(Opal.const_get_relative($nesting, 'Mixin')); + return self.$include($$($nesting, 'Mixin')); })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["ast/sexp"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; Opal.add_stubs(['$new']); return (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Sexp, self = $Sexp = $module($base, 'Sexp'); + var self = $module($base, 'Sexp'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Sexp_s_1; + var $nesting = [self].concat($parent_nesting), $Sexp_s$1; - Opal.defn(self, '$s', TMP_Sexp_s_1 = function $$s(type, $a_rest) { - var self = this, children; + Opal.def(self, '$s', $Sexp_s$1 = function $$s(type, $a) { + var $post_args, children, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - children = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - children[$arg_idx - 1] = arguments[$arg_idx]; - } - return Opal.const_get_relative($nesting, 'Node').$new(type, children) - }, TMP_Sexp_s_1.$$arity = -2) + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + children = $post_args;; + return $$($nesting, 'Node').$new(type, children); + }, $Sexp_s$1.$$arity = -2) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["ast"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; Opal.add_stubs(['$require']); return (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$require("ast/node"); @@ -26301,34 +29288,33 @@ Opal.modules["ast"] = function(Opal) { })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/ast/node"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$[]', '$frozen?', '$dup', '$node=', '$-']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Node(){}; - var self = $Node = $klass($base, $super, 'Node', $Node); + var self = $klass($base, $super, 'Node'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Node_assign_properties_1; + var $nesting = [self].concat($parent_nesting), $Node_assign_properties$1; self.$attr_reader("location"); Opal.alias(self, "loc", "location"); - return (Opal.defn(self, '$assign_properties', TMP_Node_assign_properties_1 = function $$assign_properties(properties) { + return (Opal.def(self, '$assign_properties', $Node_assign_properties$1 = function $$assign_properties(properties) { var self = this, location = nil, $writer = nil; if ($truthy((location = properties['$[]']("location")))) { @@ -26340,47 +29326,46 @@ Opal.modules["parser/ast/node"] = function(Opal) { $send(location, 'node=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return (self.location = location); - } else { + } else { return nil } - }, TMP_Node_assign_properties_1.$$arity = 1), nil) && 'assign_properties'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified('::', 'AST'), 'Node'), $nesting) + }, $Node_assign_properties$1.$$arity = 1), nil) && 'assign_properties'; + })($nesting[0], $$$($$$('::', 'AST'), 'Node'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/ast/node"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; Opal.add_stubs(['$require', '$attr_reader', '$[]', '$frozen?', '$dup', '$merge!', '$loc', '$line', '$column']); self.$require("ast"); self.$require("parser/ast/node"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Node(){}; - var self = $Node = $klass($base, $super, 'Node', $Node); + var self = $klass($base, $super, 'Node'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Node_assign_properties_1, TMP_Node_line_2, TMP_Node_column_3; + var $nesting = [self].concat($parent_nesting), $Node_assign_properties$1, $Node_line$2, $Node_column$3; - def.meta = nil; + self.$$prototype.meta = nil; self.$attr_reader("meta"); - Opal.defn(self, '$assign_properties', TMP_Node_assign_properties_1 = function $$assign_properties(properties) { - var $a, self = this, $iter = TMP_Node_assign_properties_1.$$p, $yield = $iter || nil, meta = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$assign_properties', $Node_assign_properties$1 = function $$assign_properties(properties) { + var $a, $iter = $Node_assign_properties$1.$$p, $yield = $iter || nil, self = this, meta = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Node_assign_properties_1.$$p = null; + if ($iter) $Node_assign_properties$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; @@ -26391,36 +29376,36 @@ Opal.modules["opal/ast/node"] = function(Opal) { if ($truthy(meta['$frozen?']())) { meta = meta.$dup()}; self.meta['$merge!'](meta); - } else { + } else { self.meta = ($truthy($a = self.meta) ? $a : $hash2([], {})) }; - return $send(self, Opal.find_super_dispatcher(self, 'assign_properties', TMP_Node_assign_properties_1, false), $zuper, $iter); - }, TMP_Node_assign_properties_1.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'assign_properties', $Node_assign_properties$1, false), $zuper, $iter); + }, $Node_assign_properties$1.$$arity = 1); - Opal.defn(self, '$line', TMP_Node_line_2 = function $$line() { + Opal.def(self, '$line', $Node_line$2 = function $$line() { var self = this; if ($truthy(self.$loc())) { return self.$loc().$line() - } else { + } else { return nil } - }, TMP_Node_line_2.$$arity = 0); - return (Opal.defn(self, '$column', TMP_Node_column_3 = function $$column() { + }, $Node_line$2.$$arity = 0); + return (Opal.def(self, '$column', $Node_column$3 = function $$column() { var self = this; if ($truthy(self.$loc())) { return self.$loc().$column() - } else { + } else { return nil } - }, TMP_Node_column_3.$$arity = 0), nil) && 'column'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'AST'), 'Node'), $nesting) + }, $Node_column$3.$$arity = 0), nil) && 'column'; + })($nesting[0], $$$($$$($$$('::', 'Parser'), 'AST'), 'Node'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["racc/parser"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); @@ -26443,45 +29428,43 @@ Opal.modules["racc/parser"] = function(Opal) { function $rb_times(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); } - var $a, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $send = Opal.send; + var $a, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $send = Opal.send; Opal.add_stubs(['$[]', '$class', '$<', '$size', '$[]=', '$-', '$__send__', '$_racc_setup', '$raise', '$_racc_init_sysvars', '$catch', '$!=', '$next_token', '$racc_read_token', '$+', '$>=', '$==', '$_racc_evalact', '$!', '$>', '$push', '$racc_shift', '$-@', '$_racc_do_reduce', '$===', '$racc_accept', '$throw', '$on_error', '$<=', '$pop', '$racc_e_pop', '$inspect', '$racc_next_state', '$*', '$racc_reduce', '$sprintf', '$token_to_str', '$print', '$racc_token2str', '$puts', '$racc_print_stacks', '$empty?', '$each', '$racc_print_states', '$each_index']); (function($base, $parent_nesting) { - var $Racc, self = $Racc = $module($base, 'Racc'); + var self = $module($base, 'Racc'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ParseError(){}; - var self = $ParseError = $klass($base, $super, 'ParseError', $ParseError); + var self = $klass($base, $super, 'ParseError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting) + })($nesting[0], $$($nesting, 'StandardError'), $nesting) })($nesting[0], $nesting); - if ($truthy((($a = Opal.const_get_qualified('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { - } else { - Opal.const_set($nesting[0], 'ParseError', Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Racc'), 'ParseError')) + if ($truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + } else { + Opal.const_set($nesting[0], 'ParseError', $$$($$($nesting, 'Racc'), 'ParseError')) }; return (function($base, $parent_nesting) { - var $Racc, self = $Racc = $module($base, 'Racc'); + var self = $module($base, 'Racc'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), $a; + var $nesting = [self].concat($parent_nesting), $a; - if ($truthy((($a = Opal.const_get_relative($nesting, 'Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { - } else { + if ($truthy((($a = $$($nesting, 'Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + } else { Opal.const_set($nesting[0], 'Racc_No_Extensions', false) }; (function($base, $super, $parent_nesting) { - function $Parser(){}; - var self = $Parser = $klass($base, $super, 'Parser', $Parser); + var self = $klass($base, $super, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Parser_racc_runtime_type_1, TMP_Parser__racc_setup_2, TMP_Parser__racc_init_sysvars_3, TMP_Parser_do_parse_4, TMP_Parser_next_token_5, TMP_Parser__racc_do_parse_rb_7, TMP_Parser_yyparse_8, TMP_Parser__racc_yyparse_rb_11, TMP_Parser__racc_evalact_13, TMP_Parser__racc_do_reduce_14, TMP_Parser_on_error_15, TMP_Parser_yyerror_16, TMP_Parser_yyaccept_17, TMP_Parser_yyerrok_18, TMP_Parser_racc_read_token_19, TMP_Parser_racc_shift_20, TMP_Parser_racc_reduce_22, TMP_Parser_racc_accept_23, TMP_Parser_racc_e_pop_24, TMP_Parser_racc_next_state_25, TMP_Parser_racc_print_stacks_27, TMP_Parser_racc_print_states_29, TMP_Parser_racc_token2str_30, TMP_Parser_token_to_str_31; + var $nesting = [self].concat($parent_nesting), $Parser_racc_runtime_type$1, $Parser__racc_setup$2, $Parser__racc_init_sysvars$3, $Parser_do_parse$4, $Parser_next_token$5, $Parser__racc_do_parse_rb$6, $Parser_yyparse$8, $Parser__racc_yyparse_rb$9, $Parser__racc_evalact$12, $Parser__racc_do_reduce$14, $Parser_on_error$15, $Parser_yyerror$16, $Parser_yyaccept$17, $Parser_yyerrok$18, $Parser_racc_read_token$19, $Parser_racc_shift$20, $Parser_racc_reduce$21, $Parser_racc_accept$23, $Parser_racc_e_pop$24, $Parser_racc_next_state$25, $Parser_racc_print_stacks$26, $Parser_racc_print_states$28, $Parser_racc_token2str$30, $Parser_token_to_str$31; - def.yydebug = def.racc_debug_out = def.racc_error_status = def.racc_t = def.racc_vstack = def.racc_val = def.racc_state = def.racc_tstack = nil; + self.$$prototype.yydebug = self.$$prototype.racc_debug_out = self.$$prototype.racc_error_status = self.$$prototype.racc_t = self.$$prototype.racc_vstack = self.$$prototype.racc_val = self.$$prototype.racc_state = self.$$prototype.racc_tstack = nil; Opal.const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); Opal.const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); @@ -26489,45 +29472,45 @@ Opal.modules["racc/parser"] = function(Opal) { Opal.const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); Opal.const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); Opal.const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); - Opal.const_set($nesting[0], 'Racc_Runtime_Core_Version', Opal.const_get_relative($nesting, 'Racc_Runtime_Core_Version_R')); - Opal.const_set($nesting[0], 'Racc_Runtime_Core_Revision', Opal.const_get_relative($nesting, 'Racc_Runtime_Core_Revision_R')); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Version', $$($nesting, 'Racc_Runtime_Core_Version_R')); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$($nesting, 'Racc_Runtime_Core_Revision_R')); Opal.const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); - Opal.defs(Opal.const_get_relative($nesting, 'Parser'), '$racc_runtime_type', TMP_Parser_racc_runtime_type_1 = function $$racc_runtime_type() { + Opal.defs($$($nesting, 'Parser'), '$racc_runtime_type', $Parser_racc_runtime_type$1 = function $$racc_runtime_type() { var self = this; - return Opal.const_get_relative($nesting, 'Racc_Runtime_Type') - }, TMP_Parser_racc_runtime_type_1.$$arity = 0); + return $$($nesting, 'Racc_Runtime_Type') + }, $Parser_racc_runtime_type$1.$$arity = 0); - Opal.defn(self, '$_racc_setup', TMP_Parser__racc_setup_2 = function $$_racc_setup() { + Opal.def(self, '$_racc_setup', $Parser__racc_setup$2 = function $$_racc_setup() { var $a, $b, $c, self = this, arg = nil, $writer = nil; if ($gvars.stderr == null) $gvars.stderr = nil; - if ($truthy(Opal.const_get_qualified(self.$class(), 'Racc_debug_parser'))) { - } else { + if ($truthy($$$(self.$class(), 'Racc_debug_parser'))) { + } else { self.yydebug = false }; if ($truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { - } else { + } else { self.yydebug = false }; if ($truthy(self.yydebug)) { if ($truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { - } else { + } else { self.racc_debug_out = $gvars.stderr }; self.racc_debug_out = ($truthy($c = self.racc_debug_out) ? $c : $gvars.stderr);}; - arg = Opal.const_get_qualified(self.$class(), 'Racc_arg'); + arg = $$$(self.$class(), 'Racc_arg'); if ($truthy($rb_lt(arg.$size(), 14))) { $writer = [13, true]; $send(arg, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];}; return arg; - }, TMP_Parser__racc_setup_2.$$arity = 0); + }, $Parser__racc_setup$2.$$arity = 0); - Opal.defn(self, '$_racc_init_sysvars', TMP_Parser__racc_init_sysvars_3 = function $$_racc_init_sysvars() { + Opal.def(self, '$_racc_init_sysvars', $Parser__racc_init_sysvars$3 = function $$_racc_init_sysvars() { var self = this; @@ -26539,28 +29522,28 @@ Opal.modules["racc/parser"] = function(Opal) { self.racc_read_next = true; self.racc_user_yyerror = false; return (self.racc_error_status = 0); - }, TMP_Parser__racc_init_sysvars_3.$$arity = 0); + }, $Parser__racc_init_sysvars$3.$$arity = 0); - Opal.defn(self, '$do_parse', TMP_Parser_do_parse_4 = function $$do_parse() { + Opal.def(self, '$do_parse', $Parser_do_parse$4 = function $$do_parse() { var self = this; - return self.$__send__(Opal.const_get_relative($nesting, 'Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) - }, TMP_Parser_do_parse_4.$$arity = 0); + return self.$__send__($$($nesting, 'Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, $Parser_do_parse$4.$$arity = 0); - Opal.defn(self, '$next_token', TMP_Parser_next_token_5 = function $$next_token() { + Opal.def(self, '$next_token', $Parser_next_token$5 = function $$next_token() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") - }, TMP_Parser_next_token_5.$$arity = 0); + return self.$raise($$($nesting, 'NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, $Parser_next_token$5.$$arity = 0); - Opal.defn(self, '$_racc_do_parse_rb', TMP_Parser__racc_do_parse_rb_7 = function $$_racc_do_parse_rb(arg, in_debug) { - var $a, $b, TMP_6, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + Opal.def(self, '$_racc_do_parse_rb', $Parser__racc_do_parse_rb$6 = function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, $$7, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; self.$_racc_init_sysvars(); tok = (act = (i = nil)); - return $send(self, 'catch', ["racc_end_parse"], (TMP_6 = function(){var self = TMP_6.$$s || this, $c, $d, $e; + return $send(self, 'catch', ["racc_end_parse"], ($$7 = function(){var self = $$7.$$s || this, $c, $d, $e; if (self.racc_state == null) self.racc_state = nil; if (self.racc_read_next == null) self.racc_read_next = nil; if (self.racc_t == null) self.racc_t = nil; @@ -26577,7 +29560,7 @@ Opal.modules["racc/parser"] = function(Opal) { $e = self.$next_token(), $d = Opal.to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; if ($truthy(tok)) { self.racc_t = ($truthy($d = token_table['$[]'](tok)) ? $d : 1) - } else { + } else { self.racc_t = 0 }; if ($truthy(self.yydebug)) { @@ -26585,33 +29568,33 @@ Opal.modules["racc/parser"] = function(Opal) { self.racc_read_next = false;}}; i = $rb_plus(i, self.racc_t); if ($truthy(($truthy($d = ($truthy($e = $rb_ge(i, 0)) ? (act = action_table['$[]'](i)) : $e)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $d))) { - } else { + } else { act = action_default['$[]'](self.racc_state['$[]'](-1)) }; - } else { + } else { act = action_default['$[]'](self.racc_state['$[]'](-1)) }; while ($truthy((act = self.$_racc_evalact(act, arg)))) { }; - }}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6)); - }, TMP_Parser__racc_do_parse_rb_7.$$arity = 2); + }}, $$7.$$s = self, $$7.$$arity = 0, $$7)); + }, $Parser__racc_do_parse_rb$6.$$arity = 2); - Opal.defn(self, '$yyparse', TMP_Parser_yyparse_8 = function $$yyparse(recv, mid) { + Opal.def(self, '$yyparse', $Parser_yyparse$8 = function $$yyparse(recv, mid) { var self = this; - return self.$__send__(Opal.const_get_relative($nesting, 'Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) - }, TMP_Parser_yyparse_8.$$arity = 2); + return self.$__send__($$($nesting, 'Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, $Parser_yyparse$8.$$arity = 2); - Opal.defn(self, '$_racc_yyparse_rb', TMP_Parser__racc_yyparse_rb_11 = function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { - var $a, $b, TMP_9, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + Opal.def(self, '$_racc_yyparse_rb', $Parser__racc_yyparse_rb$9 = function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, $$10, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; self.$_racc_init_sysvars(); act = nil; i = nil; - return $send(self, 'catch', ["racc_end_parse"], (TMP_9 = function(){var self = TMP_9.$$s || this, $c, $d, TMP_10; + return $send(self, 'catch', ["racc_end_parse"], ($$10 = function(){var self = $$10.$$s || this, $c, $d, $$11; if (self.racc_state == null) self.racc_state = nil; @@ -26620,22 +29603,30 @@ Opal.modules["racc/parser"] = function(Opal) { } }; - return $send(recv, '__send__', [mid], (TMP_10 = function(tok, val){var self = TMP_10.$$s || this, $e, $f, $g, $h, $i; + return $send(recv, '__send__', [mid], ($$11 = function(tok, val){var self = $$11.$$s || this, $e, $f, $g, $h, $i; if (self.racc_t == null) self.racc_t = nil; if (self.racc_state == null) self.racc_state = nil; if (self.racc_read_next == null) self.racc_read_next = nil; -if (tok == null) tok = nil;if (val == null) val = nil; + + + if (tok == null) { + tok = nil; + }; + + if (val == null) { + val = nil; + }; if ($truthy(tok)) { self.racc_t = ($truthy($e = token_table['$[]'](tok)) ? $e : 1) - } else { + } else { self.racc_t = 0 }; self.racc_val = val; self.racc_read_next = false; i = $rb_plus(i, self.racc_t); if ($truthy(($truthy($e = ($truthy($f = $rb_ge(i, 0)) ? (act = action_table['$[]'](i)) : $f)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $e))) { - } else { + } else { act = action_default['$[]'](self.racc_state['$[]'](-1)) }; while ($truthy((act = self.$_racc_evalact(act, arg)))) { @@ -26644,17 +29635,17 @@ if (tok == null) tok = nil;if (val == null) val = nil; while ($truthy(($truthy($f = ($truthy($g = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']()) ? $g : self.racc_read_next['$!']())) ? $f : self.racc_t['$=='](0)))) { if ($truthy(($truthy($f = ($truthy($g = ($truthy($h = ($truthy($i = i) ? (i = $rb_plus(i, self.racc_t)) : $i)) ? $rb_ge(i, 0) : $h)) ? (act = action_table['$[]'](i)) : $g)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $f))) { - } else { + } else { act = action_default['$[]'](self.racc_state['$[]'](-1)) }; while ($truthy((act = self.$_racc_evalact(act, arg)))) { }; - };}, TMP_10.$$s = self, TMP_10.$$arity = 2, TMP_10));}, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9)); - }, TMP_Parser__racc_yyparse_rb_11.$$arity = 4); + };}, $$11.$$s = self, $$11.$$arity = 2, $$11));}, $$10.$$s = self, $$10.$$arity = 0, $$10)); + }, $Parser__racc_yyparse_rb$9.$$arity = 4); - Opal.defn(self, '$_racc_evalact', TMP_Parser__racc_evalact_13 = function $$_racc_evalact(act, arg) { - var $a, $b, TMP_12, $c, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $case = nil, i = nil; + Opal.def(self, '$_racc_evalact', $Parser__racc_evalact$12 = function $$_racc_evalact(act, arg) { + var $a, $b, $$13, $c, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $case = nil, i = nil; $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; @@ -26662,7 +29653,7 @@ if (tok == null) tok = nil;if (val == null) val = nil; if ($truthy($rb_gt(self.racc_error_status, 0))) { if (self.racc_t['$=='](1)) { - } else { + } else { self.racc_error_status = $rb_minus(self.racc_error_status, 1) }}; self.racc_vstack.$push(self.racc_val); @@ -26674,12 +29665,12 @@ if (tok == null) tok = nil;if (val == null) val = nil; self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack);}; } else if ($truthy(($truthy($a = $rb_lt(act, 0)) ? $rb_gt(act, reduce_n['$-@']()) : $a))) { - code = $send(self, 'catch', ["racc_jump"], (TMP_12 = function(){var self = TMP_12.$$s || this; + code = $send(self, 'catch', ["racc_jump"], ($$13 = function(){var self = $$13.$$s || this; if (self.racc_state == null) self.racc_state = nil; self.racc_state.$push(self.$_racc_do_reduce(arg, act)); - return false;}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12)); + return false;}, $$13.$$s = self, $$13.$$arity = 0, $$13)); if ($truthy(code)) { $case = code; if ((1)['$===']($case)) { @@ -26696,7 +29687,7 @@ if (tok == null) tok = nil;if (val == null) val = nil; $case = self.racc_error_status; if ((0)['$===']($case)) {if ($truthy(arg['$[]'](21))) { - } else { + } else { self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) }} else if ((3)['$===']($case)) { @@ -26722,15 +29713,15 @@ if (tok == null) tok = nil;if (val == null) val = nil; self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack);}; }; return act; - } else { + } else { self.$raise("" + "[Racc Bug] unknown action " + (act.$inspect())) }; if ($truthy(self.yydebug)) { self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state)}; return nil; - }, TMP_Parser__racc_evalact_13.$$arity = 2); + }, $Parser__racc_evalact$12.$$arity = 2); - Opal.defn(self, '$_racc_do_reduce', TMP_Parser__racc_do_reduce_14 = function $$_racc_do_reduce(arg, act) { + Opal.def(self, '$_racc_do_reduce', $Parser__racc_do_reduce$14 = function $$_racc_do_reduce(arg, act) { var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; @@ -26761,7 +29752,7 @@ if (tok == null) tok = nil;if (val == null) val = nil; $writer[$rb_minus($writer["length"], 1)];; if ($truthy(use_result)) { vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) - } else { + } else { vstack.$push(self.$__send__(method_id, tmp_v, vstack)) }; tstack.$push(reduce_to); @@ -26774,33 +29765,33 @@ if (tok == null) tok = nil;if (val == null) val = nil; if ($truthy(($truthy($a = ($truthy($b = $rb_ge(i, 0)) ? (curstate = goto_table['$[]'](i)) : $b)) ? goto_check['$[]'](i)['$=='](k1) : $a))) { return curstate};}; return goto_default['$[]'](k1); - }, TMP_Parser__racc_do_reduce_14.$$arity = 2); + }, $Parser__racc_do_reduce$14.$$arity = 2); - Opal.defn(self, '$on_error', TMP_Parser_on_error_15 = function $$on_error(t, val, vstack) { + Opal.def(self, '$on_error', $Parser_on_error$15 = function $$on_error(t, val, vstack) { var $a, self = this; - return self.$raise(Opal.const_get_relative($nesting, 'ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy($a = self.$token_to_str(t)) ? $a : "?"))) - }, TMP_Parser_on_error_15.$$arity = 3); + return self.$raise($$($nesting, 'ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy($a = self.$token_to_str(t)) ? $a : "?"))) + }, $Parser_on_error$15.$$arity = 3); - Opal.defn(self, '$yyerror', TMP_Parser_yyerror_16 = function $$yyerror() { + Opal.def(self, '$yyerror', $Parser_yyerror$16 = function $$yyerror() { var self = this; return self.$throw("racc_jump", 1) - }, TMP_Parser_yyerror_16.$$arity = 0); + }, $Parser_yyerror$16.$$arity = 0); - Opal.defn(self, '$yyaccept', TMP_Parser_yyaccept_17 = function $$yyaccept() { + Opal.def(self, '$yyaccept', $Parser_yyaccept$17 = function $$yyaccept() { var self = this; return self.$throw("racc_jump", 2) - }, TMP_Parser_yyaccept_17.$$arity = 0); + }, $Parser_yyaccept$17.$$arity = 0); - Opal.defn(self, '$yyerrok', TMP_Parser_yyerrok_18 = function $$yyerrok() { + Opal.def(self, '$yyerrok', $Parser_yyerrok$18 = function $$yyerrok() { var self = this; return (self.racc_error_status = 0) - }, TMP_Parser_yyerrok_18.$$arity = 0); + }, $Parser_yyerrok$18.$$arity = 0); - Opal.defn(self, '$racc_read_token', TMP_Parser_racc_read_token_19 = function $$racc_read_token(t, tok, val) { + Opal.def(self, '$racc_read_token', $Parser_racc_read_token$19 = function $$racc_read_token(t, tok, val) { var self = this; @@ -26808,44 +29799,565 @@ if (tok == null) tok = nil;if (val == null) val = nil; self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); self.racc_debug_out.$puts(val.$inspect()); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_read_token_19.$$arity = 3); + }, $Parser_racc_read_token$19.$$arity = 3); - Opal.defn(self, '$racc_shift', TMP_Parser_racc_shift_20 = function $$racc_shift(tok, tstack, vstack) { + Opal.def(self, '$racc_shift', $Parser_racc_shift$20 = function $$racc_shift(tok, tstack, vstack) { var self = this; self.racc_debug_out.$puts("" + "shift " + (self.$racc_token2str(tok))); self.$racc_print_stacks(tstack, vstack); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_shift_20.$$arity = 3); + }, $Parser_racc_shift$20.$$arity = 3); - Opal.defn(self, '$racc_reduce', TMP_Parser_racc_reduce_22 = function $$racc_reduce(toks, sim, tstack, vstack) { - var TMP_21, self = this, out = nil; + Opal.def(self, '$racc_reduce', $Parser_racc_reduce$21 = function $$racc_reduce(toks, sim, tstack, vstack) { + var $$22, self = this, out = nil; out = self.racc_debug_out; out.$print("reduce "); if ($truthy(toks['$empty?']())) { out.$print(" ") + } else { + $send(toks, 'each', [], ($$22 = function(t){var self = $$22.$$s || this; + + + + if (t == null) { + t = nil; + }; + return out.$print(" ", self.$racc_token2str(t));}, $$22.$$s = self, $$22.$$arity = 1, $$22)) + }; + out.$puts("" + " --> " + (self.$racc_token2str(sim))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, $Parser_racc_reduce$21.$$arity = 4); + + Opal.def(self, '$racc_accept', $Parser_racc_accept$23 = function $$racc_accept() { + var self = this; + + + self.racc_debug_out.$puts("accept"); + return self.racc_debug_out.$puts(); + }, $Parser_racc_accept$23.$$arity = 0); + + Opal.def(self, '$racc_e_pop', $Parser_racc_e_pop$24 = function $$racc_e_pop(state, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("error recovering mode: pop token"); + self.$racc_print_states(state); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, $Parser_racc_e_pop$24.$$arity = 3); + + Opal.def(self, '$racc_next_state', $Parser_racc_next_state$25 = function $$racc_next_state(curstate, state) { + var self = this; + + + self.racc_debug_out.$puts("" + "goto " + (curstate)); + self.$racc_print_states(state); + return self.racc_debug_out.$puts(); + }, $Parser_racc_next_state$25.$$arity = 2); + + Opal.def(self, '$racc_print_stacks', $Parser_racc_print_stacks$26 = function $$racc_print_stacks(t, v) { + var $$27, self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(t, 'each_index', [], ($$27 = function(i){var self = $$27.$$s || this; + + + + if (i == null) { + i = nil; + }; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, $$27.$$s = self, $$27.$$arity = 1, $$27)); + return out.$puts(" ]"); + }, $Parser_racc_print_stacks$26.$$arity = 2); + + Opal.def(self, '$racc_print_states', $Parser_racc_print_states$28 = function $$racc_print_states(s) { + var $$29, self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(s, 'each', [], ($$29 = function(st){var self = $$29.$$s || this; + + + + if (st == null) { + st = nil; + }; + return out.$print(" ", st);}, $$29.$$s = self, $$29.$$arity = 1, $$29)); + return out.$puts(" ]"); + }, $Parser_racc_print_states$28.$$arity = 1); + + Opal.def(self, '$racc_token2str', $Parser_racc_token2str$30 = function $$racc_token2str(tok) { + var $a, self = this; + + return ($truthy($a = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)) ? $a : self.$raise("" + "[Racc Bug] can't convert token " + (tok) + " to string")) + }, $Parser_racc_token2str$30.$$arity = 1); + return (Opal.def(self, '$token_to_str', $Parser_token_to_str$31 = function $$token_to_str(t) { + var self = this; + + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, $Parser_token_to_str$31.$$arity = 1), nil) && 'token_to_str'; + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/version"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + Opal.const_set($nesting[0], 'VERSION', "2.6.4.1") + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["racc/parser"] = function(Opal) { + function $rb_lt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); + } + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + function $rb_ge(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); + } + function $rb_gt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); + } + function $rb_le(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); + } + function $rb_times(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); + } + var $a, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $send = Opal.send; + + Opal.add_stubs(['$[]', '$class', '$<', '$size', '$[]=', '$-', '$__send__', '$_racc_setup', '$raise', '$_racc_init_sysvars', '$catch', '$!=', '$next_token', '$racc_read_token', '$+', '$>=', '$==', '$_racc_evalact', '$!', '$>', '$push', '$racc_shift', '$-@', '$_racc_do_reduce', '$===', '$racc_accept', '$throw', '$on_error', '$<=', '$pop', '$racc_e_pop', '$inspect', '$racc_next_state', '$*', '$racc_reduce', '$sprintf', '$token_to_str', '$print', '$racc_token2str', '$puts', '$racc_print_stacks', '$empty?', '$each', '$racc_print_states', '$each_index']); + + (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ParseError'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'StandardError'), $nesting) + })($nesting[0], $nesting); + if ($truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + } else { + Opal.const_set($nesting[0], 'ParseError', $$$($$($nesting, 'Racc'), 'ParseError')) + }; + return (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting), $a; + + + if ($truthy((($a = $$($nesting, 'Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + } else { + Opal.const_set($nesting[0], 'Racc_No_Extensions', false) + }; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $Parser_racc_runtime_type$1, $Parser__racc_setup$2, $Parser__racc_init_sysvars$3, $Parser_do_parse$4, $Parser_next_token$5, $Parser__racc_do_parse_rb$6, $Parser_yyparse$8, $Parser__racc_yyparse_rb$9, $Parser__racc_evalact$12, $Parser__racc_do_reduce$14, $Parser_on_error$15, $Parser_yyerror$16, $Parser_yyaccept$17, $Parser_yyerrok$18, $Parser_racc_read_token$19, $Parser_racc_shift$20, $Parser_racc_reduce$21, $Parser_racc_accept$23, $Parser_racc_e_pop$24, $Parser_racc_next_state$25, $Parser_racc_print_stacks$26, $Parser_racc_print_states$28, $Parser_racc_token2str$30, $Parser_token_to_str$31; + + self.$$prototype.yydebug = self.$$prototype.racc_debug_out = self.$$prototype.racc_error_status = self.$$prototype.racc_t = self.$$prototype.racc_vstack = self.$$prototype.racc_val = self.$$prototype.racc_state = self.$$prototype.racc_tstack = nil; + + Opal.const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); + Opal.const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Version_R', "1.4.6"); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); + Opal.const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); + Opal.const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Version', $$($nesting, 'Racc_Runtime_Core_Version_R')); + Opal.const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$($nesting, 'Racc_Runtime_Core_Revision_R')); + Opal.const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); + Opal.defs($$($nesting, 'Parser'), '$racc_runtime_type', $Parser_racc_runtime_type$1 = function $$racc_runtime_type() { + var self = this; + + return $$($nesting, 'Racc_Runtime_Type') + }, $Parser_racc_runtime_type$1.$$arity = 0); + + Opal.def(self, '$_racc_setup', $Parser__racc_setup$2 = function $$_racc_setup() { + var $a, $b, $c, self = this, arg = nil, $writer = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + if ($truthy($$$(self.$class(), 'Racc_debug_parser'))) { + } else { + self.yydebug = false + }; + if ($truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + } else { + self.yydebug = false + }; + if ($truthy(self.yydebug)) { + + if ($truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { + } else { + self.racc_debug_out = $gvars.stderr + }; + self.racc_debug_out = ($truthy($c = self.racc_debug_out) ? $c : $gvars.stderr);}; + arg = $$$(self.$class(), 'Racc_arg'); + if ($truthy($rb_lt(arg.$size(), 14))) { + + $writer = [13, true]; + $send(arg, '[]=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];}; + return arg; + }, $Parser__racc_setup$2.$$arity = 0); + + Opal.def(self, '$_racc_init_sysvars', $Parser__racc_init_sysvars$3 = function $$_racc_init_sysvars() { + var self = this; + + + self.racc_state = [0]; + self.racc_tstack = []; + self.racc_vstack = []; + self.racc_t = nil; + self.racc_val = nil; + self.racc_read_next = true; + self.racc_user_yyerror = false; + return (self.racc_error_status = 0); + }, $Parser__racc_init_sysvars$3.$$arity = 0); + + Opal.def(self, '$do_parse', $Parser_do_parse$4 = function $$do_parse() { + var self = this; + + return self.$__send__($$($nesting, 'Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, $Parser_do_parse$4.$$arity = 0); + + Opal.def(self, '$next_token', $Parser_next_token$5 = function $$next_token() { + var self = this; + + return self.$raise($$($nesting, 'NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, $Parser_next_token$5.$$arity = 0); + + Opal.def(self, '$_racc_do_parse_rb', $Parser__racc_do_parse_rb$6 = function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, $$7, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + + + $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + tok = (act = (i = nil)); + return $send(self, 'catch', ["racc_end_parse"], ($$7 = function(){var self = $$7.$$s || this, $c, $d, $e; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.yydebug == null) self.yydebug = nil; + if (self.racc_val == null) self.racc_val = nil; + + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + if ($truthy(self.racc_read_next)) { + if ($truthy(self.racc_t['$!='](0))) { + + $e = self.$next_token(), $d = Opal.to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(tok)) { + self.racc_t = ($truthy($d = token_table['$[]'](tok)) ? $d : 1) + } else { + self.racc_t = 0 + }; + if ($truthy(self.yydebug)) { + self.$racc_read_token(self.racc_t, tok, self.racc_val)}; + self.racc_read_next = false;}}; + i = $rb_plus(i, self.racc_t); + if ($truthy(($truthy($d = ($truthy($e = $rb_ge(i, 0)) ? (act = action_table['$[]'](i)) : $e)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $d))) { + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + }}, $$7.$$s = self, $$7.$$arity = 0, $$7)); + }, $Parser__racc_do_parse_rb$6.$$arity = 2); + + Opal.def(self, '$yyparse', $Parser_yyparse$8 = function $$yyparse(recv, mid) { + var self = this; + + return self.$__send__($$($nesting, 'Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, $Parser_yyparse$8.$$arity = 2); + + Opal.def(self, '$_racc_yyparse_rb', $Parser__racc_yyparse_rb$9 = function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, $$10, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + + + $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + act = nil; + i = nil; + return $send(self, 'catch', ["racc_end_parse"], ($$10 = function(){var self = $$10.$$s || this, $c, $d, $$11; + if (self.racc_state == null) self.racc_state = nil; + + + while (!($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1)))))) { + while ($truthy((act = self.$_racc_evalact(action_default['$[]'](self.racc_state['$[]'](-1)), arg)))) { + + } + }; + return $send(recv, '__send__', [mid], ($$11 = function(tok, val){var self = $$11.$$s || this, $e, $f, $g, $h, $i; + if (self.racc_t == null) self.racc_t = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + + + + if (tok == null) { + tok = nil; + }; + + if (val == null) { + val = nil; + }; + if ($truthy(tok)) { + self.racc_t = ($truthy($e = token_table['$[]'](tok)) ? $e : 1) + } else { + self.racc_t = 0 + }; + self.racc_val = val; + self.racc_read_next = false; + i = $rb_plus(i, self.racc_t); + if ($truthy(($truthy($e = ($truthy($f = $rb_ge(i, 0)) ? (act = action_table['$[]'](i)) : $f)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $e))) { + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + while ($truthy(($truthy($f = ($truthy($g = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']()) ? $g : self.racc_read_next['$!']())) ? $f : self.racc_t['$=='](0)))) { + + if ($truthy(($truthy($f = ($truthy($g = ($truthy($h = ($truthy($i = i) ? (i = $rb_plus(i, self.racc_t)) : $i)) ? $rb_ge(i, 0) : $h)) ? (act = action_table['$[]'](i)) : $g)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $f))) { + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + };}, $$11.$$s = self, $$11.$$arity = 2, $$11));}, $$10.$$s = self, $$10.$$arity = 0, $$10)); + }, $Parser__racc_yyparse_rb$9.$$arity = 4); + + Opal.def(self, '$_racc_evalact', $Parser__racc_evalact$12 = function $$_racc_evalact(act, arg) { + var $a, $b, $$13, $c, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $case = nil, i = nil; + + + $b = arg, $a = Opal.to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; + if ($truthy(($truthy($a = $rb_gt(act, 0)) ? $rb_lt(act, shift_n) : $a))) { + + if ($truthy($rb_gt(self.racc_error_status, 0))) { + if (self.racc_t['$=='](1)) { + } else { + self.racc_error_status = $rb_minus(self.racc_error_status, 1) + }}; + self.racc_vstack.$push(self.racc_val); + self.racc_state.$push(act); + self.racc_read_next = true; + if ($truthy(self.yydebug)) { + + self.racc_tstack.$push(self.racc_t); + self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack);}; + } else if ($truthy(($truthy($a = $rb_lt(act, 0)) ? $rb_gt(act, reduce_n['$-@']()) : $a))) { + + code = $send(self, 'catch', ["racc_jump"], ($$13 = function(){var self = $$13.$$s || this; + if (self.racc_state == null) self.racc_state = nil; + + + self.racc_state.$push(self.$_racc_do_reduce(arg, act)); + return false;}, $$13.$$s = self, $$13.$$arity = 0, $$13)); + if ($truthy(code)) { + $case = code; + if ((1)['$===']($case)) { + self.racc_user_yyerror = true; + return reduce_n['$-@']();} + else if ((2)['$===']($case)) {return shift_n} + else {self.$raise("[Racc Bug] unknown jump code")}}; + } else if (act['$=='](shift_n)) { + + if ($truthy(self.yydebug)) { + self.$racc_accept()}; + self.$throw("racc_end_parse", self.racc_vstack['$[]'](0)); + } else if (act['$=='](reduce_n['$-@']())) { + + $case = self.racc_error_status; + if ((0)['$===']($case)) {if ($truthy(arg['$[]'](21))) { } else { - $send(toks, 'each', [], (TMP_21 = function(t){var self = TMP_21.$$s || this; -if (t == null) t = nil; - return out.$print(" ", self.$racc_token2str(t))}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21)) + self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) + }} + else if ((3)['$===']($case)) { + if (self.racc_t['$=='](0)) { + self.$throw("racc_end_parse", nil)}; + self.racc_read_next = true;}; + self.racc_user_yyerror = false; + self.racc_error_status = 3; + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + i = $rb_plus(i, 1); + if ($truthy(($truthy($b = ($truthy($c = $rb_ge(i, 0)) ? (act = action_table['$[]'](i)) : $c)) ? action_check['$[]'](i)['$=='](self.racc_state['$[]'](-1)) : $b))) { + break;};}; + if ($truthy($rb_le(self.racc_state.$size(), 1))) { + self.$throw("racc_end_parse", nil)}; + self.racc_state.$pop(); + self.racc_vstack.$pop(); + if ($truthy(self.yydebug)) { + + self.racc_tstack.$pop(); + self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack);}; + }; + return act; + } else { + self.$raise("" + "[Racc Bug] unknown action " + (act.$inspect())) + }; + if ($truthy(self.yydebug)) { + self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state)}; + return nil; + }, $Parser__racc_evalact$12.$$arity = 2); + + Opal.def(self, '$_racc_do_reduce', $Parser__racc_do_reduce$14 = function $$_racc_do_reduce(arg, act) { + var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; + + + $b = arg, $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (goto_table = ($a[4] == null ? nil : $a[4])), (goto_check = ($a[5] == null ? nil : $a[5])), (goto_default = ($a[6] == null ? nil : $a[6])), (goto_pointer = ($a[7] == null ? nil : $a[7])), (nt_base = ($a[8] == null ? nil : $a[8])), (reduce_table = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (use_result = ($a[13] == null ? nil : $a[13])), $b; + state = self.racc_state; + vstack = self.racc_vstack; + tstack = self.racc_tstack; + i = $rb_times(act, -3); + len = reduce_table['$[]'](i); + reduce_to = reduce_table['$[]']($rb_plus(i, 1)); + method_id = reduce_table['$[]']($rb_plus(i, 2)); + void_array = []; + if ($truthy(self.yydebug)) { + tmp_t = tstack['$[]'](len['$-@'](), len)}; + tmp_v = vstack['$[]'](len['$-@'](), len); + if ($truthy(self.yydebug)) { + + $writer = [len['$-@'](), len, void_array]; + $send(tstack, '[]=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];}; + + $writer = [len['$-@'](), len, void_array]; + $send(vstack, '[]=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [len['$-@'](), len, void_array]; + $send(state, '[]=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(use_result)) { + vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) + } else { + vstack.$push(self.$__send__(method_id, tmp_v, vstack)) + }; + tstack.$push(reduce_to); + if ($truthy(self.yydebug)) { + self.$racc_reduce(tmp_t, reduce_to, tstack, vstack)}; + k1 = $rb_minus(reduce_to, nt_base); + if ($truthy((i = goto_pointer['$[]'](k1)))) { + + i = $rb_plus(i, state['$[]'](-1)); + if ($truthy(($truthy($a = ($truthy($b = $rb_ge(i, 0)) ? (curstate = goto_table['$[]'](i)) : $b)) ? goto_check['$[]'](i)['$=='](k1) : $a))) { + return curstate};}; + return goto_default['$[]'](k1); + }, $Parser__racc_do_reduce$14.$$arity = 2); + + Opal.def(self, '$on_error', $Parser_on_error$15 = function $$on_error(t, val, vstack) { + var $a, self = this; + + return self.$raise($$($nesting, 'ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy($a = self.$token_to_str(t)) ? $a : "?"))) + }, $Parser_on_error$15.$$arity = 3); + + Opal.def(self, '$yyerror', $Parser_yyerror$16 = function $$yyerror() { + var self = this; + + return self.$throw("racc_jump", 1) + }, $Parser_yyerror$16.$$arity = 0); + + Opal.def(self, '$yyaccept', $Parser_yyaccept$17 = function $$yyaccept() { + var self = this; + + return self.$throw("racc_jump", 2) + }, $Parser_yyaccept$17.$$arity = 0); + + Opal.def(self, '$yyerrok', $Parser_yyerrok$18 = function $$yyerrok() { + var self = this; + + return (self.racc_error_status = 0) + }, $Parser_yyerrok$18.$$arity = 0); + + Opal.def(self, '$racc_read_token', $Parser_racc_read_token$19 = function $$racc_read_token(t, tok, val) { + var self = this; + + + self.racc_debug_out.$print("read "); + self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); + self.racc_debug_out.$puts(val.$inspect()); + return self.racc_debug_out.$puts(); + }, $Parser_racc_read_token$19.$$arity = 3); + + Opal.def(self, '$racc_shift', $Parser_racc_shift$20 = function $$racc_shift(tok, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("" + "shift " + (self.$racc_token2str(tok))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, $Parser_racc_shift$20.$$arity = 3); + + Opal.def(self, '$racc_reduce', $Parser_racc_reduce$21 = function $$racc_reduce(toks, sim, tstack, vstack) { + var $$22, self = this, out = nil; + + + out = self.racc_debug_out; + out.$print("reduce "); + if ($truthy(toks['$empty?']())) { + out.$print(" ") + } else { + $send(toks, 'each', [], ($$22 = function(t){var self = $$22.$$s || this; + + + + if (t == null) { + t = nil; + }; + return out.$print(" ", self.$racc_token2str(t));}, $$22.$$s = self, $$22.$$arity = 1, $$22)) }; out.$puts("" + " --> " + (self.$racc_token2str(sim))); self.$racc_print_stacks(tstack, vstack); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_reduce_22.$$arity = 4); + }, $Parser_racc_reduce$21.$$arity = 4); - Opal.defn(self, '$racc_accept', TMP_Parser_racc_accept_23 = function $$racc_accept() { + Opal.def(self, '$racc_accept', $Parser_racc_accept$23 = function $$racc_accept() { var self = this; self.racc_debug_out.$puts("accept"); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_accept_23.$$arity = 0); + }, $Parser_racc_accept$23.$$arity = 0); - Opal.defn(self, '$racc_e_pop', TMP_Parser_racc_e_pop_24 = function $$racc_e_pop(state, tstack, vstack) { + Opal.def(self, '$racc_e_pop', $Parser_racc_e_pop$24 = function $$racc_e_pop(state, tstack, vstack) { var self = this; @@ -26853,227 +30365,157 @@ if (t == null) t = nil; self.$racc_print_states(state); self.$racc_print_stacks(tstack, vstack); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_e_pop_24.$$arity = 3); + }, $Parser_racc_e_pop$24.$$arity = 3); - Opal.defn(self, '$racc_next_state', TMP_Parser_racc_next_state_25 = function $$racc_next_state(curstate, state) { + Opal.def(self, '$racc_next_state', $Parser_racc_next_state$25 = function $$racc_next_state(curstate, state) { var self = this; self.racc_debug_out.$puts("" + "goto " + (curstate)); self.$racc_print_states(state); return self.racc_debug_out.$puts(); - }, TMP_Parser_racc_next_state_25.$$arity = 2); + }, $Parser_racc_next_state$25.$$arity = 2); - Opal.defn(self, '$racc_print_stacks', TMP_Parser_racc_print_stacks_27 = function $$racc_print_stacks(t, v) { - var TMP_26, self = this, out = nil; + Opal.def(self, '$racc_print_stacks', $Parser_racc_print_stacks$26 = function $$racc_print_stacks(t, v) { + var $$27, self = this, out = nil; out = self.racc_debug_out; out.$print(" ["); - $send(t, 'each_index', [], (TMP_26 = function(i){var self = TMP_26.$$s || this; -if (i == null) i = nil; - return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")")}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26)); + $send(t, 'each_index', [], ($$27 = function(i){var self = $$27.$$s || this; + + + + if (i == null) { + i = nil; + }; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, $$27.$$s = self, $$27.$$arity = 1, $$27)); return out.$puts(" ]"); - }, TMP_Parser_racc_print_stacks_27.$$arity = 2); + }, $Parser_racc_print_stacks$26.$$arity = 2); - Opal.defn(self, '$racc_print_states', TMP_Parser_racc_print_states_29 = function $$racc_print_states(s) { - var TMP_28, self = this, out = nil; + Opal.def(self, '$racc_print_states', $Parser_racc_print_states$28 = function $$racc_print_states(s) { + var $$29, self = this, out = nil; out = self.racc_debug_out; out.$print(" ["); - $send(s, 'each', [], (TMP_28 = function(st){var self = TMP_28.$$s || this; -if (st == null) st = nil; - return out.$print(" ", st)}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28)); + $send(s, 'each', [], ($$29 = function(st){var self = $$29.$$s || this; + + + + if (st == null) { + st = nil; + }; + return out.$print(" ", st);}, $$29.$$s = self, $$29.$$arity = 1, $$29)); return out.$puts(" ]"); - }, TMP_Parser_racc_print_states_29.$$arity = 1); + }, $Parser_racc_print_states$28.$$arity = 1); - Opal.defn(self, '$racc_token2str', TMP_Parser_racc_token2str_30 = function $$racc_token2str(tok) { + Opal.def(self, '$racc_token2str', $Parser_racc_token2str$30 = function $$racc_token2str(tok) { var $a, self = this; - return ($truthy($a = Opal.const_get_qualified(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)) ? $a : self.$raise("" + "[Racc Bug] can't convert token " + (tok) + " to string")) - }, TMP_Parser_racc_token2str_30.$$arity = 1); - return (Opal.defn(self, '$token_to_str', TMP_Parser_token_to_str_31 = function $$token_to_str(t) { + return ($truthy($a = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)) ? $a : self.$raise("" + "[Racc Bug] can't convert token " + (tok) + " to string")) + }, $Parser_racc_token2str$30.$$arity = 1); + return (Opal.def(self, '$token_to_str', $Parser_token_to_str$31 = function $$token_to_str(t) { var self = this; - return Opal.const_get_qualified(self.$class(), 'Racc_token_to_s_table')['$[]'](t) - }, TMP_Parser_token_to_str_31.$$arity = 1), nil) && 'token_to_str'; + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, $Parser_token_to_str$31.$$arity = 1), nil) && 'token_to_str'; })($nesting[0], null, $nesting); })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["parser/compatibility/ruby1_8"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; - - Opal.add_stubs(['$is_a?', '$gsub', '$[]', '$to_sym', '$original_percent']); - return (function($base, $super, $parent_nesting) { - function $String(){}; - var self = $String = $klass($base, $super, 'String', $String); - - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_$_2; - - - Opal.alias(self, "original_percent", "%"); - return (Opal.defn(self, '$%', TMP_String_$_2 = function(arg, $a_rest) { - var TMP_1, self = this, args; - - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($truthy(arg['$is_a?'](Opal.const_get_relative($nesting, 'Hash')))) { - return $send(self, 'gsub', [/%\{(\w+)\}/], (TMP_1 = function(){var self = TMP_1.$$s || this, $a; - - return arg['$[]']((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$to_sym())}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)) - } else { - return $send(self, 'original_percent', [arg].concat(Opal.to_a(args))) - } - }, TMP_String_$_2.$$arity = -2), nil) && '%'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 0.11.4 */ -Opal.modules["parser/compatibility/ruby1_9"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $klass = Opal.klass; - - Opal.add_stubs(['$method_defined?', '$to_enum', '$-', '$size', '$<=', '$div', '$+', '$[]', '$===', '$==', '$<', '$fail', '$class']); - if ($truthy(Opal.const_get_relative($nesting, 'Array')['$method_defined?']("bsearch"))) { - return nil - } else { - return (function($base, $super, $parent_nesting) { - function $Array(){}; - var self = $Array = $klass($base, $super, 'Array', $Array); +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/messages"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2; - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_bsearch_1; + Opal.add_stubs(['$freeze']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); - return (Opal.defn(self, '$bsearch', TMP_Array_bsearch_1 = function $$bsearch() { - var $a, self = this, $iter = TMP_Array_bsearch_1.$$p, $yield = $iter || nil, from = nil, to = nil, satisfied = nil, midpoint = nil, result = nil, cur = nil, $case = nil; + var $nesting = [self].concat($parent_nesting); - if ($iter) TMP_Array_bsearch_1.$$p = null; - - if (($yield !== nil)) { - } else { - return self.$to_enum("bsearch") - }; - from = 0; - to = $rb_minus(self.$size(), 1); - satisfied = nil; - while ($truthy($rb_le(from, to))) { - - midpoint = $rb_plus(from, to).$div(2); - result = Opal.yield1($yield, (cur = self['$[]'](midpoint))); - $case = result; - if (Opal.const_get_relative($nesting, 'Numeric')['$===']($case)) { - if (result['$=='](0)) { - return cur}; - result = $rb_lt(result, 0);} - else if (true['$===']($case)) {satisfied = cur} - else if (nil['$===']($case) || false['$===']($case)) {nil} - else {self.$fail(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + (result.$class()) + " (must be numeric, true, false or nil)")}; - if ($truthy(result)) { - to = $rb_minus(midpoint, 1) - } else { - from = $rb_plus(midpoint, 1) - }; - }; - return satisfied; - }, TMP_Array_bsearch_1.$$arity = 0), nil) && 'bsearch' - })($nesting[0], null, $nesting) - } + Opal.const_set($nesting[0], 'MESSAGES', $hash2(["unicode_point_too_large", "invalid_escape", "incomplete_escape", "invalid_hex_escape", "invalid_unicode_escape", "unterminated_unicode", "escape_eof", "string_eof", "regexp_options", "cvar_name", "ivar_name", "trailing_in_number", "empty_numeric", "invalid_octal", "no_dot_digit_literal", "bare_backslash", "unexpected", "embedded_document", "heredoc_id_has_newline", "heredoc_id_ends_with_nl", "unterminated_heredoc_id", "leading_zero_in_numparam", "numparam_outside_block", "too_large_numparam", "ordinary_param_defined", "invalid_escape_use", "ambiguous_literal", "ambiguous_prefix", "nth_ref_alias", "begin_in_method", "backref_assignment", "invalid_assignment", "module_name_const", "unexpected_token", "argument_const", "argument_ivar", "argument_gvar", "argument_cvar", "duplicate_argument", "empty_symbol", "odd_hash", "singleton_literal", "dynamic_const", "const_reassignment", "module_in_def", "class_in_def", "unexpected_percent_str", "block_and_blockarg", "masgn_as_condition", "block_given_to_yield", "invalid_regexp", "invalid_return", "csend_in_lhs_of_masgn", "useless_else", "invalid_encoding", "invalid_action", "clobbered", "different_replacements", "swallowed_insertions", "swallowed_insertions_conflict", "crossing_deletions", "crossing_deletions_conflict", "crossing_insertions", "crossing_insertions_conflict"], {"unicode_point_too_large": "invalid Unicode codepoint (too large)", "invalid_escape": "invalid escape character syntax", "incomplete_escape": "incomplete character syntax", "invalid_hex_escape": "invalid hex escape", "invalid_unicode_escape": "invalid Unicode escape", "unterminated_unicode": "unterminated Unicode escape", "escape_eof": "escape sequence meets end of file", "string_eof": "unterminated string meets end of file", "regexp_options": "unknown regexp options: %{options}", "cvar_name": "`%{name}' is not allowed as a class variable name", "ivar_name": "`%{name}' is not allowed as an instance variable name", "trailing_in_number": "trailing `%{character}' in number", "empty_numeric": "numeric literal without digits", "invalid_octal": "invalid octal digit", "no_dot_digit_literal": "no . floating literal anymore; put 0 before dot", "bare_backslash": "bare backslash only allowed before newline", "unexpected": "unexpected `%{character}'", "embedded_document": "embedded document meets end of file (and they embark on a romantic journey)", "heredoc_id_has_newline": "here document identifier across newlines, never match", "heredoc_id_ends_with_nl": "here document identifier ends with a newline", "unterminated_heredoc_id": "unterminated heredoc id", "leading_zero_in_numparam": "leading zero is not allowed as a numbered parameter", "numparam_outside_block": "numbered parameter outside block", "too_large_numparam": "too large numbered parameter", "ordinary_param_defined": "ordinary parameter is defined", "invalid_escape_use": "invalid character syntax; use ?%{escape}", "ambiguous_literal": "ambiguous first argument; put parentheses or a space even after the operator", "ambiguous_prefix": "`%{prefix}' interpreted as argument prefix", "nth_ref_alias": "cannot define an alias for a back-reference variable", "begin_in_method": "BEGIN in method", "backref_assignment": "cannot assign to a back-reference variable", "invalid_assignment": "cannot assign to a keyword", "module_name_const": "class or module name must be a constant literal", "unexpected_token": "unexpected token %{token}", "argument_const": "formal argument cannot be a constant", "argument_ivar": "formal argument cannot be an instance variable", "argument_gvar": "formal argument cannot be a global variable", "argument_cvar": "formal argument cannot be a class variable", "duplicate_argument": "duplicate argument name", "empty_symbol": "empty symbol literal", "odd_hash": "odd number of entries for a hash", "singleton_literal": "cannot define a singleton method for a literal", "dynamic_const": "dynamic constant assignment", "const_reassignment": "constant re-assignment", "module_in_def": "module definition in method body", "class_in_def": "class definition in method body", "unexpected_percent_str": "%{type}: unknown type of percent-literal", "block_and_blockarg": "both block argument and literal block are passed", "masgn_as_condition": "multiple assignment in conditional context", "block_given_to_yield": "block given to yield", "invalid_regexp": "%{message}", "invalid_return": "Invalid return in class/module body", "csend_in_lhs_of_masgn": "&. inside multiple assignment destination", "useless_else": "else without rescue is useless", "invalid_encoding": "literal contains escape sequences incompatible with UTF-8", "invalid_action": "cannot %{action}", "clobbered": "clobbered by: %{action}", "different_replacements": "different replacements: %{replacement} vs %{other_replacement}", "swallowed_insertions": "this replacement:", "swallowed_insertions_conflict": "swallows some inner rewriting actions:", "crossing_deletions": "the deletion of:", "crossing_deletions_conflict": "is crossing:", "crossing_insertions": "the rewriting action on:", "crossing_insertions_conflict": "is crossing that on:"}).$freeze()) + })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ -Opal.modules["parser/version"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/deprecation"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; + Opal.add_stubs(['$attr_writer', '$warn']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - Opal.const_set($nesting[0], 'VERSION', "2.3.3.1") - })($nesting[0], $nesting) -}; - -/* Generated by Opal 0.11.4 */ -Opal.modules["parser/messages"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2; + (function($base, $parent_nesting) { + var self = $module($base, 'Deprecation'); - Opal.add_stubs(['$freeze']); - return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var $nesting = [self].concat($parent_nesting), $Deprecation_warn_of_deprecation$1; - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + + self.$attr_writer("warned_of_deprecation"); + + Opal.def(self, '$warn_of_deprecation', $Deprecation_warn_of_deprecation$1 = function $$warn_of_deprecation() { + var $a, $b, self = this; + if (self.warned_of_deprecation == null) self.warned_of_deprecation = nil; - Opal.const_set($nesting[0], 'MESSAGES', $hash2(["unicode_point_too_large", "invalid_escape", "incomplete_escape", "invalid_hex_escape", "invalid_unicode_escape", "unterminated_unicode", "escape_eof", "string_eof", "regexp_options", "cvar_name", "ivar_name", "trailing_in_number", "empty_numeric", "invalid_octal", "no_dot_digit_literal", "bare_backslash", "unexpected", "embedded_document", "invalid_escape_use", "ambiguous_literal", "ambiguous_prefix", "nth_ref_alias", "begin_in_method", "backref_assignment", "invalid_assignment", "module_name_const", "unexpected_token", "argument_const", "argument_ivar", "argument_gvar", "argument_cvar", "duplicate_argument", "empty_symbol", "odd_hash", "singleton_literal", "dynamic_const", "const_reassignment", "module_in_def", "class_in_def", "unexpected_percent_str", "block_and_blockarg", "masgn_as_condition", "block_given_to_yield", "invalid_regexp", "useless_else", "invalid_encoding", "invalid_action", "clobbered"], {"unicode_point_too_large": "invalid Unicode codepoint (too large)", "invalid_escape": "invalid escape character syntax", "incomplete_escape": "incomplete character syntax", "invalid_hex_escape": "invalid hex escape", "invalid_unicode_escape": "invalid Unicode escape", "unterminated_unicode": "unterminated Unicode escape", "escape_eof": "escape sequence meets end of file", "string_eof": "unterminated string meets end of file", "regexp_options": "unknown regexp options: %{options}", "cvar_name": "`%{name}' is not allowed as a class variable name", "ivar_name": "`%{name}' is not allowed as an instance variable name", "trailing_in_number": "trailing `%{character}' in number", "empty_numeric": "numeric literal without digits", "invalid_octal": "invalid octal digit", "no_dot_digit_literal": "no . floating literal anymore; put 0 before dot", "bare_backslash": "bare backslash only allowed before newline", "unexpected": "unexpected `%{character}'", "embedded_document": "embedded document meets end of file (and they embark on a romantic journey)", "invalid_escape_use": "invalid character syntax; use ?%{escape}", "ambiguous_literal": "ambiguous first argument; put parentheses or a space even after the operator", "ambiguous_prefix": "`%{prefix}' interpreted as argument prefix", "nth_ref_alias": "cannot define an alias for a back-reference variable", "begin_in_method": "BEGIN in method", "backref_assignment": "cannot assign to a back-reference variable", "invalid_assignment": "cannot assign to a keyword", "module_name_const": "class or module name must be a constant literal", "unexpected_token": "unexpected token %{token}", "argument_const": "formal argument cannot be a constant", "argument_ivar": "formal argument cannot be an instance variable", "argument_gvar": "formal argument cannot be a global variable", "argument_cvar": "formal argument cannot be a class variable", "duplicate_argument": "duplicate argument name", "empty_symbol": "empty symbol literal", "odd_hash": "odd number of entries for a hash", "singleton_literal": "cannot define a singleton method for a literal", "dynamic_const": "dynamic constant assignment", "const_reassignment": "constant re-assignment", "module_in_def": "module definition in method body", "class_in_def": "class definition in method body", "unexpected_percent_str": "%{type}: unknown type of percent-literal", "block_and_blockarg": "both block argument and literal block are passed", "masgn_as_condition": "multiple assignment in conditional context", "block_given_to_yield": "block given to yield", "invalid_regexp": "%{message}", "useless_else": "else without rescue is useless", "invalid_encoding": "literal contains escape sequences incompatible with UTF-8", "invalid_action": "cannot %{action}", "clobbered": "clobbered by: %{action}"}).$freeze()) + return (self.warned_of_deprecation = ($truthy($a = self.warned_of_deprecation) ? $a : ($truthy($b = self.$warn($$$(self, 'DEPRECATION_WARNING'))) ? $b : true))) + }, $Deprecation_warn_of_deprecation$1.$$arity = 0); + })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/ast/processor"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$updated', '$process_all', '$on_var', '$!', '$nil?', '$process', '$on_vasgn', '$on_argument', '$warn']); + Opal.add_stubs(['$updated', '$process_all', '$on_var', '$!', '$nil?', '$process', '$on_vasgn', '$on_argument', '$is_a?', '$[]', '$children', '$process_regular_node', '$warn']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Processor(){}; - var self = $Processor = $klass($base, $super, 'Processor', $Processor); + var self = $klass($base, $super, 'Processor'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Processor_process_regular_node_1, TMP_Processor_on_var_2, TMP_Processor_process_variable_node_3, TMP_Processor_on_vasgn_4, TMP_Processor_process_var_asgn_node_5, TMP_Processor_on_op_asgn_6, TMP_Processor_on_const_7, TMP_Processor_on_casgn_8, TMP_Processor_on_argument_9, TMP_Processor_process_argument_node_10, TMP_Processor_on_def_11, TMP_Processor_on_defs_12, TMP_Processor_on_send_13, TMP_Processor_process_variable_node_14, TMP_Processor_process_var_asgn_node_15, TMP_Processor_process_argument_node_16; + var $nesting = [self].concat($parent_nesting), $Processor_process_regular_node$1, $Processor_on_var$2, $Processor_process_variable_node$3, $Processor_on_vasgn$4, $Processor_process_var_asgn_node$5, $Processor_on_op_asgn$6, $Processor_on_const$7, $Processor_on_casgn$8, $Processor_on_argument$9, $Processor_process_argument_node$10, $Processor_on_procarg0$11, $Processor_on_def$12, $Processor_on_defs$13, $Processor_on_send$14, $Processor_on_numblock$15, $Processor_process_variable_node$16, $Processor_process_var_asgn_node$17, $Processor_process_argument_node$18; - Opal.defn(self, '$process_regular_node', TMP_Processor_process_regular_node_1 = function $$process_regular_node(node) { + Opal.def(self, '$process_regular_node', $Processor_process_regular_node$1 = function $$process_regular_node(node) { var self = this; return node.$updated(nil, self.$process_all(node)) - }, TMP_Processor_process_regular_node_1.$$arity = 1); + }, $Processor_process_regular_node$1.$$arity = 1); Opal.alias(self, "on_dstr", "process_regular_node"); Opal.alias(self, "on_dsym", "process_regular_node"); Opal.alias(self, "on_regexp", "process_regular_node"); Opal.alias(self, "on_xstr", "process_regular_node"); Opal.alias(self, "on_splat", "process_regular_node"); + Opal.alias(self, "on_kwsplat", "process_regular_node"); Opal.alias(self, "on_array", "process_regular_node"); Opal.alias(self, "on_pair", "process_regular_node"); Opal.alias(self, "on_hash", "process_regular_node"); Opal.alias(self, "on_irange", "process_regular_node"); Opal.alias(self, "on_erange", "process_regular_node"); - Opal.defn(self, '$on_var', TMP_Processor_on_var_2 = function $$on_var(node) { + Opal.def(self, '$on_var', $Processor_on_var$2 = function $$on_var(node) { var self = this; return node - }, TMP_Processor_on_var_2.$$arity = 1); + }, $Processor_on_var$2.$$arity = 1); - Opal.defn(self, '$process_variable_node', TMP_Processor_process_variable_node_3 = function $$process_variable_node(node) { + Opal.def(self, '$process_variable_node', $Processor_process_variable_node$3 = function $$process_variable_node(node) { var self = this; return self.$on_var(node) - }, TMP_Processor_process_variable_node_3.$$arity = 1); + }, $Processor_process_variable_node$3.$$arity = 1); Opal.alias(self, "on_lvar", "process_variable_node"); Opal.alias(self, "on_ivar", "process_variable_node"); Opal.alias(self, "on_gvar", "process_variable_node"); @@ -27081,23 +30523,23 @@ Opal.modules["parser/ast/processor"] = function(Opal) { Opal.alias(self, "on_back_ref", "process_variable_node"); Opal.alias(self, "on_nth_ref", "process_variable_node"); - Opal.defn(self, '$on_vasgn', TMP_Processor_on_vasgn_4 = function $$on_vasgn(node) { + Opal.def(self, '$on_vasgn', $Processor_on_vasgn$4 = function $$on_vasgn(node) { var $a, self = this, name = nil, value_node = nil; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; if ($truthy(value_node['$nil?']()['$!']())) { return node.$updated(nil, [name, self.$process(value_node)]) - } else { + } else { return node }; - }, TMP_Processor_on_vasgn_4.$$arity = 1); + }, $Processor_on_vasgn$4.$$arity = 1); - Opal.defn(self, '$process_var_asgn_node', TMP_Processor_process_var_asgn_node_5 = function $$process_var_asgn_node(node) { + Opal.def(self, '$process_var_asgn_node', $Processor_process_var_asgn_node$5 = function $$process_var_asgn_node(node) { var self = this; return self.$on_vasgn(node) - }, TMP_Processor_process_var_asgn_node_5.$$arity = 1); + }, $Processor_process_var_asgn_node$5.$$arity = 1); Opal.alias(self, "on_lvasgn", "process_var_asgn_node"); Opal.alias(self, "on_ivasgn", "process_var_asgn_node"); Opal.alias(self, "on_gvasgn", "process_var_asgn_node"); @@ -27105,54 +30547,54 @@ Opal.modules["parser/ast/processor"] = function(Opal) { Opal.alias(self, "on_and_asgn", "process_regular_node"); Opal.alias(self, "on_or_asgn", "process_regular_node"); - Opal.defn(self, '$on_op_asgn', TMP_Processor_on_op_asgn_6 = function $$on_op_asgn(node) { + Opal.def(self, '$on_op_asgn', $Processor_on_op_asgn$6 = function $$on_op_asgn(node) { var $a, self = this, var_node = nil, method_name = nil, value_node = nil; $a = [].concat(Opal.to_a(node)), (var_node = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; return node.$updated(nil, [self.$process(var_node), method_name, self.$process(value_node)]); - }, TMP_Processor_on_op_asgn_6.$$arity = 1); + }, $Processor_on_op_asgn$6.$$arity = 1); Opal.alias(self, "on_mlhs", "process_regular_node"); Opal.alias(self, "on_masgn", "process_regular_node"); - Opal.defn(self, '$on_const', TMP_Processor_on_const_7 = function $$on_const(node) { + Opal.def(self, '$on_const', $Processor_on_const$7 = function $$on_const(node) { var $a, self = this, scope_node = nil, name = nil; $a = [].concat(Opal.to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $a; return node.$updated(nil, [self.$process(scope_node), name]); - }, TMP_Processor_on_const_7.$$arity = 1); + }, $Processor_on_const$7.$$arity = 1); - Opal.defn(self, '$on_casgn', TMP_Processor_on_casgn_8 = function $$on_casgn(node) { + Opal.def(self, '$on_casgn', $Processor_on_casgn$8 = function $$on_casgn(node) { var $a, self = this, scope_node = nil, name = nil, value_node = nil; $a = [].concat(Opal.to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; if ($truthy(value_node['$nil?']()['$!']())) { return node.$updated(nil, [self.$process(scope_node), name, self.$process(value_node)]) - } else { + } else { return node.$updated(nil, [self.$process(scope_node), name]) }; - }, TMP_Processor_on_casgn_8.$$arity = 1); + }, $Processor_on_casgn$8.$$arity = 1); Opal.alias(self, "on_args", "process_regular_node"); - Opal.defn(self, '$on_argument', TMP_Processor_on_argument_9 = function $$on_argument(node) { + Opal.def(self, '$on_argument', $Processor_on_argument$9 = function $$on_argument(node) { var $a, self = this, arg_name = nil, value_node = nil; $a = [].concat(Opal.to_a(node)), (arg_name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; if ($truthy(value_node['$nil?']()['$!']())) { return node.$updated(nil, [arg_name, self.$process(value_node)]) - } else { + } else { return node }; - }, TMP_Processor_on_argument_9.$$arity = 1); + }, $Processor_on_argument$9.$$arity = 1); - Opal.defn(self, '$process_argument_node', TMP_Processor_process_argument_node_10 = function $$process_argument_node(node) { + Opal.def(self, '$process_argument_node', $Processor_process_argument_node$10 = function $$process_argument_node(node) { var self = this; return self.$on_argument(node) - }, TMP_Processor_process_argument_node_10.$$arity = 1); + }, $Processor_process_argument_node$10.$$arity = 1); Opal.alias(self, "on_arg", "process_argument_node"); Opal.alias(self, "on_optarg", "process_argument_node"); Opal.alias(self, "on_restarg", "process_argument_node"); @@ -27161,7 +30603,16 @@ Opal.modules["parser/ast/processor"] = function(Opal) { Opal.alias(self, "on_kwarg", "process_argument_node"); Opal.alias(self, "on_kwoptarg", "process_argument_node"); Opal.alias(self, "on_kwrestarg", "process_argument_node"); - Opal.alias(self, "on_procarg0", "process_argument_node"); + + Opal.def(self, '$on_procarg0', $Processor_on_procarg0$11 = function $$on_procarg0(node) { + var self = this; + + if ($truthy(node.$children()['$[]'](0)['$is_a?']($$($nesting, 'Symbol')))) { + return self.$on_argument(node) + } else { + return self.$process_regular_node(node) + } + }, $Processor_on_procarg0$11.$$arity = 1); Opal.alias(self, "on_arg_expr", "process_regular_node"); Opal.alias(self, "on_restarg_expr", "process_regular_node"); Opal.alias(self, "on_blockarg_expr", "process_regular_node"); @@ -27170,25 +30621,25 @@ Opal.modules["parser/ast/processor"] = function(Opal) { Opal.alias(self, "on_class", "process_regular_node"); Opal.alias(self, "on_sclass", "process_regular_node"); - Opal.defn(self, '$on_def', TMP_Processor_on_def_11 = function $$on_def(node) { + Opal.def(self, '$on_def', $Processor_on_def$12 = function $$on_def(node) { var $a, self = this, name = nil, args_node = nil, body_node = nil; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (args_node = ($a[1] == null ? nil : $a[1])), (body_node = ($a[2] == null ? nil : $a[2])), $a; return node.$updated(nil, [name, self.$process(args_node), self.$process(body_node)]); - }, TMP_Processor_on_def_11.$$arity = 1); + }, $Processor_on_def$12.$$arity = 1); - Opal.defn(self, '$on_defs', TMP_Processor_on_defs_12 = function $$on_defs(node) { + Opal.def(self, '$on_defs', $Processor_on_defs$13 = function $$on_defs(node) { var $a, self = this, definee_node = nil, name = nil, args_node = nil, body_node = nil; $a = [].concat(Opal.to_a(node)), (definee_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (args_node = ($a[2] == null ? nil : $a[2])), (body_node = ($a[3] == null ? nil : $a[3])), $a; return node.$updated(nil, [self.$process(definee_node), name, self.$process(args_node), self.$process(body_node)]); - }, TMP_Processor_on_defs_12.$$arity = 1); + }, $Processor_on_defs$13.$$arity = 1); Opal.alias(self, "on_undef", "process_regular_node"); Opal.alias(self, "on_alias", "process_regular_node"); - Opal.defn(self, '$on_send', TMP_Processor_on_send_13 = function $$on_send(node) { + Opal.def(self, '$on_send', $Processor_on_send$14 = function $$on_send(node) { var $a, self = this, receiver_node = nil, method_name = nil, arg_nodes = nil; @@ -27196,9 +30647,20 @@ Opal.modules["parser/ast/processor"] = function(Opal) { if ($truthy(receiver_node)) { receiver_node = self.$process(receiver_node)}; return node.$updated(nil, [receiver_node, method_name].concat(Opal.to_a(self.$process_all(arg_nodes)))); - }, TMP_Processor_on_send_13.$$arity = 1); + }, $Processor_on_send$14.$$arity = 1); Opal.alias(self, "on_csend", "on_send"); + Opal.alias(self, "on_index", "process_regular_node"); + Opal.alias(self, "on_indexasgn", "process_regular_node"); Opal.alias(self, "on_block", "process_regular_node"); + Opal.alias(self, "on_lambda", "process_regular_node"); + + Opal.def(self, '$on_numblock', $Processor_on_numblock$15 = function $$on_numblock(node) { + var $a, self = this, method_call = nil, max_numparam = nil, body = nil; + + + $a = [].concat(Opal.to_a(node)), (method_call = ($a[0] == null ? nil : $a[0])), (max_numparam = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [self.$process(method_call), max_numparam, self.$process(body)]); + }, $Processor_on_numblock$15.$$arity = 1); Opal.alias(self, "on_while", "process_regular_node"); Opal.alias(self, "on_while_post", "process_regular_node"); Opal.alias(self, "on_until", "process_regular_node"); @@ -27230,54 +30692,54 @@ Opal.modules["parser/ast/processor"] = function(Opal) { Opal.alias(self, "on_preexe", "process_regular_node"); Opal.alias(self, "on_postexe", "process_regular_node"); - Opal.defn(self, '$process_variable_node', TMP_Processor_process_variable_node_14 = function $$process_variable_node(node) { + Opal.def(self, '$process_variable_node', $Processor_process_variable_node$16 = function $$process_variable_node(node) { var self = this; self.$warn("" + "Parser::AST::Processor#process_variable_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_var instead."); return self.$on_var(node); - }, TMP_Processor_process_variable_node_14.$$arity = 1); + }, $Processor_process_variable_node$16.$$arity = 1); - Opal.defn(self, '$process_var_asgn_node', TMP_Processor_process_var_asgn_node_15 = function $$process_var_asgn_node(node) { + Opal.def(self, '$process_var_asgn_node', $Processor_process_var_asgn_node$17 = function $$process_var_asgn_node(node) { var self = this; self.$warn("" + "Parser::AST::Processor#process_var_asgn_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_vasgn instead."); return self.$on_vasgn(node); - }, TMP_Processor_process_var_asgn_node_15.$$arity = 1); - return (Opal.defn(self, '$process_argument_node', TMP_Processor_process_argument_node_16 = function $$process_argument_node(node) { + }, $Processor_process_var_asgn_node$17.$$arity = 1); + return (Opal.def(self, '$process_argument_node', $Processor_process_argument_node$18 = function $$process_argument_node(node) { var self = this; self.$warn("" + "Parser::AST::Processor#process_argument_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_argument instead."); return self.$on_argument(node); - }, TMP_Processor_process_argument_node_16.$$arity = 1), nil) && 'process_argument_node'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified('::', 'AST'), 'Processor'), $nesting) + }, $Processor_process_argument_node$18.$$arity = 1), nil) && 'process_argument_node'; + })($nesting[0], $$$($$$('::', 'AST'), 'Processor'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/meta"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send; Opal.add_stubs(['$freeze', '$to_set', '$map', '$to_proc']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Meta, self = $Meta = $module($base, 'Meta'); + var self = $module($base, 'Meta'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - Opal.const_set($nesting[0], 'NODE_TYPES', $send(["true", "false", "nil", "int", "float", "str", "dstr", "sym", "dsym", "xstr", "regopt", "regexp", "array", "splat", "array", "pair", "kwsplat", "hash", "irange", "erange", "self", "lvar", "ivar", "cvar", "gvar", "const", "defined?", "lvasgn", "ivasgn", "cvasgn", "gvasgn", "casgn", "mlhs", "masgn", "op_asgn", "op_asgn", "and_asgn", "ensure", "rescue", "arg_expr", "or_asgn", "and_asgn", "or_asgn", "back_ref", "nth_ref", "match_with_lvasgn", "match_current_line", "module", "class", "sclass", "def", "defs", "undef", "alias", "args", "cbase", "arg", "optarg", "restarg", "blockarg", "block_pass", "args", "def", "kwarg", "kwoptarg", "kwrestarg", "send", "csend", "super", "zsuper", "yield", "block", "and", "not", "or", "if", "when", "case", "while", "until", "while_post", "until_post", "for", "break", "next", "redo", "return", "resbody", "kwbegin", "begin", "retry", "preexe", "postexe", "iflipflop", "eflipflop", "shadowarg", "complex", "rational", "__FILE__", "__LINE__"], 'map', [], "to_sym".$to_proc()).$to_set().$freeze()) + Opal.const_set($nesting[0], 'NODE_TYPES', $send(["true", "false", "nil", "int", "float", "str", "dstr", "sym", "dsym", "xstr", "regopt", "regexp", "array", "splat", "pair", "kwsplat", "hash", "irange", "erange", "self", "lvar", "ivar", "cvar", "gvar", "const", "defined?", "lvasgn", "ivasgn", "cvasgn", "gvasgn", "casgn", "mlhs", "masgn", "op_asgn", "and_asgn", "ensure", "rescue", "arg_expr", "or_asgn", "back_ref", "nth_ref", "match_with_lvasgn", "match_current_line", "module", "class", "sclass", "def", "defs", "undef", "alias", "args", "cbase", "arg", "optarg", "restarg", "blockarg", "block_pass", "kwarg", "kwoptarg", "kwrestarg", "kwnilarg", "send", "csend", "super", "zsuper", "yield", "block", "and", "not", "or", "if", "when", "case", "while", "until", "while_post", "until_post", "for", "break", "next", "redo", "return", "resbody", "kwbegin", "begin", "retry", "preexe", "postexe", "iflipflop", "eflipflop", "shadowarg", "complex", "rational", "__FILE__", "__LINE__", "__ENCODING__", "ident", "root", "lambda", "indexasgn", "index", "procarg0", "meth_ref", "restarg_expr", "blockarg_expr", "objc_kwarg", "objc_restarg", "objc_varargs", "numargs", "numblock", "numparam"], 'map', [], "to_sym".$to_proc()).$to_set().$freeze()) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/buffer"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -27291,30 +30753,29 @@ Opal.modules["parser/source/buffer"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$attr_reader', '$empty?', '$=~', '$==', '$[]', '$freeze', '$match', '$find', '$encoding', '$recognize_encoding', '$force_encoding', '$nil?', '$encode', '$open', '$read', '$source=', '$-', '$raise', '$frozen?', '$dup', '$reencode_string', '$class', '$valid_encoding?', '$name', '$raw_source=', '$gsub', '$!', '$ascii_only?', '$!=', '$line_for', '$+', '$[]=', '$to_a', '$lines', '$end_with?', '$<<', '$each', '$chomp!', '$fetch', '$source_lines', '$<=', '$>', '$size', '$line_begins', '$new', '$-@', '$private', '$index', '$unshift', '$length', '$respond_to?', '$bsearch']); + Opal.add_stubs(['$attr_reader', '$empty?', '$=~', '$start_with?', '$freeze', '$==', '$[]', '$nil?', '$!=', '$match', '$find', '$encoding', '$recognize_encoding', '$force_encoding', '$encode', '$to_s', '$open', '$read', '$source=', '$-', '$raise', '$frozen?', '$dup', '$reencode_string', '$class', '$valid_encoding?', '$name', '$raw_source=', '$gsub', '$!', '$ascii_only?', '$line_for', '$+', '$[]=', '$to_a', '$lines', '$end_with?', '$<<', '$each', '$chomp!', '$fetch', '$source_lines', '$<=', '$>', '$size', '$line_begins', '$new', '$-@', '$source', '$private', '$index', '$unshift', '$length', '$bsearch']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Buffer(){}; - var self = $Buffer = $klass($base, $super, 'Buffer', $Buffer); + var self = $klass($base, $super, 'Buffer'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Buffer_recognize_encoding_1, TMP_Buffer_reencode_string_2, TMP_Buffer_initialize_3, TMP_Buffer_read_5, TMP_Buffer_source_6, TMP_Buffer_source$eq_7, TMP_Buffer_raw_source$eq_8, TMP_Buffer_slice_9, TMP_Buffer_decompose_position_10, TMP_Buffer_line_for_position_11, TMP_Buffer_column_for_position_12, TMP_Buffer_source_lines_14, TMP_Buffer_source_line_15, TMP_Buffer_line_range_16, TMP_Buffer_last_line_17, TMP_Buffer_line_begins_18, TMP_Buffer_line_for_20, TMP_Buffer_line_for_22; + var $nesting = [self].concat($parent_nesting), $Buffer_recognize_encoding$1, $Buffer_reencode_string$2, $Buffer_initialize$3, $Buffer_read$4, $Buffer_source$6, $Buffer_source$eq$7, $Buffer_raw_source$eq$8, $Buffer_slice$9, $Buffer_decompose_position$10, $Buffer_line_for_position$11, $Buffer_column_for_position$12, $Buffer_source_lines$13, $Buffer_source_line$15, $Buffer_line_range$16, $Buffer_source_range$17, $Buffer_last_line$18, $Buffer_line_begins$19, $Buffer_line_for$20; - def.name = def.source = def.slice_source = def.first_line = def.line_for_position = def.column_for_position = def.lines = def.line_begins = nil; + self.$$prototype.name = self.$$prototype.source = self.$$prototype.slice_source = self.$$prototype.first_line = self.$$prototype.line_for_position = self.$$prototype.column_for_position = self.$$prototype.lines = self.$$prototype.source_range = self.$$prototype.line_begins = nil; self.$attr_reader("name", "first_line"); - Opal.const_set($nesting[0], 'ENCODING_RE', new RegExp("" + "\\#.*coding\\s*[:=]\\s*" + "(" + "" + "(utf8-mac)" + "|" + "" + "([A-Za-z0-9_-]+?)(-unix|-dos|-mac)" + "|" + "([A-Za-z0-9_-]+)" + ")" + "")); - Opal.defs(self, '$recognize_encoding', TMP_Buffer_recognize_encoding_1 = function $$recognize_encoding(string) { + Opal.const_set($nesting[0], 'ENCODING_RE', new RegExp("" + "[\\s#](en)?coding\\s*[:=]\\s*" + "(" + "" + "(utf8-mac)" + "|" + "" + "([A-Za-z0-9_-]+?)(-unix|-dos|-mac)" + "|" + "([A-Za-z0-9_-]+)" + ")" + "")); + Opal.defs(self, '$recognize_encoding', $Buffer_recognize_encoding$1 = function $$recognize_encoding(string) { var $a, $b, self = this, first_line = nil, second_line = nil, encoding_line = nil, result = nil; @@ -27322,42 +30783,45 @@ Opal.modules["parser/source/buffer"] = function(Opal) { return nil}; string['$=~'](/^(.*)\n?(.*\n)?/); $a = [(($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))], (first_line = $a[0]), (second_line = $a[1]), $a; - if ($truthy(first_line['$=~'](/^\xef\xbb\xbf/))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8') + if ($truthy(first_line['$start_with?']("\xEF\xBB\xBF".$force_encoding("ASCII-8BIT").$freeze()))) { + return $$$($$($nesting, 'Encoding'), 'UTF_8') } else if (first_line['$[]'](0, 2)['$==']("#!".$force_encoding("ASCII-8BIT").$freeze())) { encoding_line = second_line - } else { + } else { encoding_line = first_line }; - if ($truthy((result = Opal.const_get_relative($nesting, 'ENCODING_RE').$match(encoding_line)))) { - return Opal.const_get_relative($nesting, 'Encoding').$find(($truthy($a = ($truthy($b = result['$[]'](2)) ? $b : result['$[]'](3))) ? $a : result['$[]'](5))) - } else { + if ($truthy(($truthy($a = encoding_line['$nil?']()) ? $a : encoding_line['$[]'](0)['$!=']("#".$force_encoding("ASCII-8BIT"))))) { + return nil}; + if ($truthy((result = $$($nesting, 'ENCODING_RE').$match(encoding_line)))) { + return $$($nesting, 'Encoding').$find(($truthy($a = ($truthy($b = result['$[]'](3)) ? $b : result['$[]'](4))) ? $a : result['$[]'](6))) + } else { return nil }; - }, TMP_Buffer_recognize_encoding_1.$$arity = 1); - Opal.defs(self, '$reencode_string', TMP_Buffer_reencode_string_2 = function $$reencode_string(input) { + }, $Buffer_recognize_encoding$1.$$arity = 1); + Opal.defs(self, '$reencode_string', $Buffer_reencode_string$2 = function $$reencode_string(input) { var self = this, original_encoding = nil, detected_encoding = nil; original_encoding = input.$encoding(); - detected_encoding = self.$recognize_encoding(input.$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))); + detected_encoding = self.$recognize_encoding(input.$force_encoding($$$($$($nesting, 'Encoding'), 'BINARY'))); if ($truthy(detected_encoding['$nil?']())) { return input.$force_encoding(original_encoding) - } else if (detected_encoding['$=='](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))) { + } else if (detected_encoding['$==']($$$($$($nesting, 'Encoding'), 'BINARY'))) { return input - } else { - return input.$force_encoding(detected_encoding).$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8')) + } else { + return input.$force_encoding(detected_encoding).$encode($$$($$($nesting, 'Encoding'), 'UTF_8')) }; - }, TMP_Buffer_reencode_string_2.$$arity = 1); + }, $Buffer_reencode_string$2.$$arity = 1); - Opal.defn(self, '$initialize', TMP_Buffer_initialize_3 = function $$initialize(name, first_line) { + Opal.def(self, '$initialize', $Buffer_initialize$3 = function $$initialize(name, first_line) { var self = this; + + if (first_line == null) { first_line = 1; - } - - self.name = name; + }; + self.name = name.$to_s(); self.source = nil; self.first_line = first_line; self.lines = nil; @@ -27365,140 +30829,152 @@ Opal.modules["parser/source/buffer"] = function(Opal) { self.slice_source = nil; self.line_for_position = $hash2([], {}); return (self.column_for_position = $hash2([], {})); - }, TMP_Buffer_initialize_3.$$arity = -2); + }, $Buffer_initialize$3.$$arity = -2); - Opal.defn(self, '$read', TMP_Buffer_read_5 = function $$read() { - var TMP_4, self = this; + Opal.def(self, '$read', $Buffer_read$4 = function $$read() { + var $$5, self = this; - $send(Opal.const_get_relative($nesting, 'File'), 'open', [self.name, "rb".$force_encoding("ASCII-8BIT")], (TMP_4 = function(io){var self = TMP_4.$$s || this, $writer = nil; -if (io == null) io = nil; + $send($$($nesting, 'File'), 'open', [self.name, "rb".$force_encoding("ASCII-8BIT")], ($$5 = function(io){var self = $$5.$$s || this, $writer = nil; + + + if (io == null) { + io = nil; + }; $writer = [io.$read()]; $send(self, 'source=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); + return $writer[$rb_minus($writer["length"], 1)];}, $$5.$$s = self, $$5.$$arity = 1, $$5)); return self; - }, TMP_Buffer_read_5.$$arity = 0); + }, $Buffer_read$4.$$arity = 0); - Opal.defn(self, '$source', TMP_Buffer_source_6 = function $$source() { + Opal.def(self, '$source', $Buffer_source$6 = function $$source() { var self = this; if ($truthy(self.source['$nil?']())) { - self.$raise(Opal.const_get_relative($nesting, 'RuntimeError'), "Cannot extract source from uninitialized Source::Buffer".$force_encoding("ASCII-8BIT"))}; + self.$raise($$($nesting, 'RuntimeError'), "Cannot extract source from uninitialized Source::Buffer".$force_encoding("ASCII-8BIT"))}; return self.source; - }, TMP_Buffer_source_6.$$arity = 0); + }, $Buffer_source$6.$$arity = 0); - Opal.defn(self, '$source=', TMP_Buffer_source$eq_7 = function(input) { - var $a, self = this, $writer = nil; + Opal.def(self, '$source=', $Buffer_source$eq$7 = function(input) { + var self = this, $writer = nil; - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - - if ($truthy(input['$frozen?']())) { - input = input.$dup()}; - input = self.$class().$reencode_string(input); - if ($truthy(input['$valid_encoding?']())) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'EncodingError'), "" + "invalid byte sequence in " + (input.$encoding().$name())) - };}; + if ($truthy(input['$frozen?']())) { + input = input.$dup()}; + input = self.$class().$reencode_string(input); + if ($truthy(input['$valid_encoding?']())) { + } else { + self.$raise($$($nesting, 'EncodingError'), "" + "invalid byte sequence in " + (input.$encoding().$name())) + }; $writer = [input]; $send(self, 'raw_source=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_Buffer_source$eq_7.$$arity = 1); + }, $Buffer_source$eq$7.$$arity = 1); - Opal.defn(self, '$raw_source=', TMP_Buffer_raw_source$eq_8 = function(input) { - var $a, $b, $c, $d, self = this; + Opal.def(self, '$raw_source=', $Buffer_raw_source$eq$8 = function(input) { + var $a, $b, self = this; if ($truthy(self.source)) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Source::Buffer is immutable".$force_encoding("ASCII-8BIT"))}; + self.$raise($$($nesting, 'ArgumentError'), "Source::Buffer is immutable".$force_encoding("ASCII-8BIT"))}; self.source = input.$gsub("\r\n".$force_encoding("ASCII-8BIT").$freeze(), "\n".$force_encoding("ASCII-8BIT").$freeze()).$freeze(); - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = (($d = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil)) ? self.source['$ascii_only?']()['$!']() : $c)) ? self.source.$encoding()['$!='](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_32LE')) : $b)) ? self.source.$encoding()['$!='](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY')) : $a))) { - return (self.slice_source = self.source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_32LE'))) - } else { + if ($truthy(($truthy($a = ($truthy($b = self.source['$ascii_only?']()['$!']()) ? self.source.$encoding()['$!=']($$$($$($nesting, 'Encoding'), 'UTF_32LE')) : $b)) ? self.source.$encoding()['$!=']($$$($$($nesting, 'Encoding'), 'BINARY')) : $a))) { + return (self.slice_source = self.source.$encode($$$($$($nesting, 'Encoding'), 'UTF_32LE'))) + } else { return nil }; - }, TMP_Buffer_raw_source$eq_8.$$arity = 1); + }, $Buffer_raw_source$eq$8.$$arity = 1); - Opal.defn(self, '$slice', TMP_Buffer_slice_9 = function $$slice(range) { + Opal.def(self, '$slice', $Buffer_slice$9 = function $$slice(range) { var self = this; if ($truthy(self.slice_source['$nil?']())) { return self.source['$[]'](range) - } else { + } else { return self.slice_source['$[]'](range).$encode(self.source.$encoding()) } - }, TMP_Buffer_slice_9.$$arity = 1); + }, $Buffer_slice$9.$$arity = 1); - Opal.defn(self, '$decompose_position', TMP_Buffer_decompose_position_10 = function $$decompose_position(position) { + Opal.def(self, '$decompose_position', $Buffer_decompose_position$10 = function $$decompose_position(position) { var $a, $b, self = this, line_no = nil, line_begin = nil; $b = self.$line_for(position), $a = Opal.to_ary($b), (line_no = ($a[0] == null ? nil : $a[0])), (line_begin = ($a[1] == null ? nil : $a[1])), $b; return [$rb_plus(self.first_line, line_no), $rb_minus(position, line_begin)]; - }, TMP_Buffer_decompose_position_10.$$arity = 1); + }, $Buffer_decompose_position$10.$$arity = 1); - Opal.defn(self, '$line_for_position', TMP_Buffer_line_for_position_11 = function $$line_for_position(position) { + Opal.def(self, '$line_for_position', $Buffer_line_for_position$11 = function $$line_for_position(position) { var $a, $b, $c, self = this, $writer = nil, line_no = nil, _ = nil; return ($truthy($a = self.line_for_position['$[]'](position)) ? $a : (($writer = [position, ($c = self.$line_for(position), $b = Opal.to_ary($c), (line_no = ($b[0] == null ? nil : $b[0])), (_ = ($b[1] == null ? nil : $b[1])), $c, $rb_plus(self.first_line, line_no))]), $send(self.line_for_position, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) - }, TMP_Buffer_line_for_position_11.$$arity = 1); + }, $Buffer_line_for_position$11.$$arity = 1); - Opal.defn(self, '$column_for_position', TMP_Buffer_column_for_position_12 = function $$column_for_position(position) { + Opal.def(self, '$column_for_position', $Buffer_column_for_position$12 = function $$column_for_position(position) { var $a, $b, $c, self = this, $writer = nil, _ = nil, line_begin = nil; return ($truthy($a = self.column_for_position['$[]'](position)) ? $a : (($writer = [position, ($c = self.$line_for(position), $b = Opal.to_ary($c), (_ = ($b[0] == null ? nil : $b[0])), (line_begin = ($b[1] == null ? nil : $b[1])), $c, $rb_minus(position, line_begin))]), $send(self.column_for_position, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) - }, TMP_Buffer_column_for_position_12.$$arity = 1); + }, $Buffer_column_for_position$12.$$arity = 1); - Opal.defn(self, '$source_lines', TMP_Buffer_source_lines_14 = function $$source_lines() { - var $a, TMP_13, self = this, lines = nil; + Opal.def(self, '$source_lines', $Buffer_source_lines$13 = function $$source_lines() { + var $a, $$14, self = this, lines = nil; return (self.lines = ($truthy($a = self.lines) ? $a : ((lines = self.source.$lines().$to_a()), (function() {if ($truthy(self.source['$end_with?']("\n".$force_encoding("ASCII-8BIT").$freeze()))) { - return lines['$<<']("".$force_encoding("ASCII-8BIT")) - } else { + return lines['$<<']("".$force_encoding("ASCII-8BIT").$dup()) + } else { return nil - }; return nil; })(), $send(lines, 'each', [], (TMP_13 = function(line){var self = TMP_13.$$s || this; -if (line == null) line = nil; + }; return nil; })(), $send(lines, 'each', [], ($$14 = function(line){var self = $$14.$$s || this; + + + if (line == null) { + line = nil; + }; line['$chomp!']("\n".$force_encoding("ASCII-8BIT").$freeze()); - return line.$freeze();}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13)), lines.$freeze()))) - }, TMP_Buffer_source_lines_14.$$arity = 0); + return line.$freeze();}, $$14.$$s = self, $$14.$$arity = 1, $$14)), lines.$freeze()))) + }, $Buffer_source_lines$13.$$arity = 0); - Opal.defn(self, '$source_line', TMP_Buffer_source_line_15 = function $$source_line(lineno) { + Opal.def(self, '$source_line', $Buffer_source_line$15 = function $$source_line(lineno) { var self = this; return self.$source_lines().$fetch($rb_minus(lineno, self.first_line)).$dup() - }, TMP_Buffer_source_line_15.$$arity = 1); + }, $Buffer_source_line$15.$$arity = 1); - Opal.defn(self, '$line_range', TMP_Buffer_line_range_16 = function $$line_range(lineno) { + Opal.def(self, '$line_range', $Buffer_line_range$16 = function $$line_range(lineno) { var $a, self = this, index = nil; index = $rb_plus($rb_minus(lineno, self.first_line), 1); if ($truthy(($truthy($a = $rb_le(index, 0)) ? $a : $rb_gt(index, self.$line_begins().$size())))) { - return self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "Parser::Source::Buffer: range for line " + ("" + (lineno) + " requested, valid line numbers are " + (self.first_line) + "..") + ("" + ($rb_minus($rb_plus(self.first_line, self.$line_begins().$size()), 1)))) + return self.$raise($$($nesting, 'IndexError'), "" + "Parser::Source::Buffer: range for line " + ("" + (lineno) + " requested, valid line numbers are " + (self.first_line) + "..") + ("" + ($rb_minus($rb_plus(self.first_line, self.$line_begins().$size()), 1)))) } else if (index['$=='](self.$line_begins().$size())) { - return Opal.const_get_relative($nesting, 'Range').$new(self, self.$line_begins()['$[]'](index['$-@']())['$[]'](1), self.source.$size()) - } else { - return Opal.const_get_relative($nesting, 'Range').$new(self, self.$line_begins()['$[]'](index['$-@']())['$[]'](1), $rb_minus(self.$line_begins()['$[]']($rb_minus(index['$-@'](), 1))['$[]'](1), 1)) + return $$($nesting, 'Range').$new(self, self.$line_begins()['$[]'](index['$-@']())['$[]'](1), self.source.$size()) + } else { + return $$($nesting, 'Range').$new(self, self.$line_begins()['$[]'](index['$-@']())['$[]'](1), $rb_minus(self.$line_begins()['$[]']($rb_minus(index['$-@'](), 1))['$[]'](1), 1)) }; - }, TMP_Buffer_line_range_16.$$arity = 1); + }, $Buffer_line_range$16.$$arity = 1); - Opal.defn(self, '$last_line', TMP_Buffer_last_line_17 = function $$last_line() { + Opal.def(self, '$source_range', $Buffer_source_range$17 = function $$source_range() { + var $a, self = this; + + return (self.source_range = ($truthy($a = self.source_range) ? $a : $$($nesting, 'Range').$new(self, 0, self.$source().$size()))) + }, $Buffer_source_range$17.$$arity = 0); + + Opal.def(self, '$last_line', $Buffer_last_line$18 = function $$last_line() { var self = this; return $rb_minus($rb_plus(self.$line_begins().$size(), self.first_line), 1) - }, TMP_Buffer_last_line_17.$$arity = 0); + }, $Buffer_last_line$18.$$arity = 0); self.$private(); - Opal.defn(self, '$line_begins', TMP_Buffer_line_begins_18 = function $$line_begins() { + Opal.def(self, '$line_begins', $Buffer_line_begins$19 = function $$line_begins() { var $a, self = this, index = nil; if ($truthy(self.line_begins)) { - } else { + } else { $a = [[[0, 0]], 0], (self.line_begins = $a[0]), (index = $a[1]), $a; while ($truthy((index = self.source.$index("\n".$force_encoding("ASCII-8BIT").$freeze(), index)))) { @@ -27508,30 +30984,29 @@ if (line == null) line = nil; }; }; return self.line_begins; - }, TMP_Buffer_line_begins_18.$$arity = 0); - if ($truthy([]['$respond_to?']("bsearch"))) { - return (Opal.defn(self, '$line_for', TMP_Buffer_line_for_20 = function $$line_for(position) { - var TMP_19, self = this; + }, $Buffer_line_begins$19.$$arity = 0); + return (Opal.def(self, '$line_for', $Buffer_line_for$20 = function $$line_for(position) { + var $$21, self = this; - return $send(self.$line_begins(), 'bsearch', [], (TMP_19 = function(line, line_begin){var self = TMP_19.$$s || this; -if (line == null) line = nil;if (line_begin == null) line_begin = nil; - return $rb_le(line_begin, position)}, TMP_19.$$s = self, TMP_19.$$arity = 2, TMP_19)) - }, TMP_Buffer_line_for_20.$$arity = 1), nil) && 'line_for' - } else { - return (Opal.defn(self, '$line_for', TMP_Buffer_line_for_22 = function $$line_for(position) { - var TMP_21, self = this; + return $send(self.$line_begins(), 'bsearch', [], ($$21 = function(line, line_begin){var self = $$21.$$s || this; - return $send(self.$line_begins(), 'find', [], (TMP_21 = function(line, line_begin){var self = TMP_21.$$s || this; -if (line == null) line = nil;if (line_begin == null) line_begin = nil; - return $rb_le(line_begin, position)}, TMP_21.$$s = self, TMP_21.$$arity = 2, TMP_21)) - }, TMP_Buffer_line_for_22.$$arity = 1), nil) && 'line_for' - }; + + + if (line == null) { + line = nil; + }; + + if (line_begin == null) { + line_begin = nil; + }; + return $rb_le(line_begin, position);}, $$21.$$s = self, $$21.$$arity = 2, $$21)) + }, $Buffer_line_for$20.$$arity = 1), nil) && 'line_for'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/range"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); @@ -27545,276 +31020,362 @@ Opal.modules["parser/source/range"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + function $rb_times(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - Opal.add_stubs(['$attr_reader', '$<', '$raise', '$nil?', '$freeze', '$new', '$-', '$line_for_position', '$alias_method', '$column_for_position', '$!=', '$line', '$begin', '$end', '$inspect', '$column', '$source_line', '$slice', '$begin_pos', '$end_pos', '$include?', '$source', '$to_a', '$decompose_position', '$join', '$name', '$+', '$min', '$max', '$disjoint?', '$>=', '$==', '$is_a?', '$source_buffer']); + Opal.add_stubs(['$include', '$attr_reader', '$<', '$raise', '$nil?', '$freeze', '$with', '$-', '$line_for_position', '$alias_method', '$column_for_position', '$!=', '$line', '$begin', '$end', '$inspect', '$column', '$source_line', '$slice', '$begin_pos', '$end_pos', '$include?', '$source', '$to_a', '$decompose_position', '$join', '$name', '$+', '$new', '$min', '$max', '$disjoint?', '$empty?', '$>=', '$!', '$<=>', '$contains?', '$overlaps?', '$==', '$*', '$is_a?', '$source_buffer', '$nonzero?']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Range(){}; - var self = $Range = $klass($base, $super, 'Range', $Range); + var self = $klass($base, $super, 'Range'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Range_initialize_1, TMP_Range_begin_2, TMP_Range_end_3, TMP_Range_size_4, TMP_Range_line_5, TMP_Range_column_6, TMP_Range_last_line_7, TMP_Range_last_column_8, TMP_Range_column_range_9, TMP_Range_source_line_10, TMP_Range_source_11, TMP_Range_is$q_12, TMP_Range_to_a_13, TMP_Range_to_s_14, TMP_Range_resize_15, TMP_Range_join_16, TMP_Range_intersect_17, TMP_Range_disjoint$q_18, TMP_Range_overlaps$q_19, TMP_Range_empty$q_20, TMP_Range_$eq$eq_21, TMP_Range_inspect_22; + var $nesting = [self].concat($parent_nesting), $Range_initialize$1, $Range_begin$2, $Range_end$3, $Range_size$4, $Range_line$5, $Range_column$6, $Range_last_line$7, $Range_last_column$8, $Range_column_range$9, $Range_source_line$10, $Range_source$11, $Range_is$ques$12, $Range_to_a$13, $Range_to_s$14, $Range_with$15, $Range_adjust$16, $Range_resize$17, $Range_join$18, $Range_intersect$19, $Range_disjoint$ques$20, $Range_overlaps$ques$21, $Range_contains$ques$22, $Range_contained$ques$23, $Range_crossing$ques$24, $Range_empty$ques$25, $Range_$lt_eq_gt$26, $Range_inspect$27; - def.source_buffer = def.begin_pos = def.end_pos = nil; + self.$$prototype.begin_pos = self.$$prototype.end_pos = self.$$prototype.source_buffer = nil; + self.$include($$($nesting, 'Comparable')); self.$attr_reader("source_buffer"); self.$attr_reader("begin_pos", "end_pos"); - Opal.defn(self, '$initialize', TMP_Range_initialize_1 = function $$initialize(source_buffer, begin_pos, end_pos) { + Opal.def(self, '$initialize', $Range_initialize$1 = function $$initialize(source_buffer, begin_pos, end_pos) { var $a, self = this; if ($truthy($rb_lt(end_pos, begin_pos))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Parser::Source::Range: end_pos must not be less than begin_pos")}; + self.$raise($$($nesting, 'ArgumentError'), "Parser::Source::Range: end_pos must not be less than begin_pos")}; if ($truthy(source_buffer['$nil?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Parser::Source::Range: source_buffer must not be nil")}; + self.$raise($$($nesting, 'ArgumentError'), "Parser::Source::Range: source_buffer must not be nil")}; self.source_buffer = source_buffer; $a = [begin_pos, end_pos], (self.begin_pos = $a[0]), (self.end_pos = $a[1]), $a; return self.$freeze(); - }, TMP_Range_initialize_1.$$arity = 3); + }, $Range_initialize$1.$$arity = 3); - Opal.defn(self, '$begin', TMP_Range_begin_2 = function $$begin() { + Opal.def(self, '$begin', $Range_begin$2 = function $$begin() { var self = this; - return Opal.const_get_relative($nesting, 'Range').$new(self.source_buffer, self.begin_pos, self.begin_pos) - }, TMP_Range_begin_2.$$arity = 0); + return self.$with($hash2(["end_pos"], {"end_pos": self.begin_pos})) + }, $Range_begin$2.$$arity = 0); - Opal.defn(self, '$end', TMP_Range_end_3 = function $$end() { + Opal.def(self, '$end', $Range_end$3 = function $$end() { var self = this; - return Opal.const_get_relative($nesting, 'Range').$new(self.source_buffer, self.end_pos, self.end_pos) - }, TMP_Range_end_3.$$arity = 0); + return self.$with($hash2(["begin_pos"], {"begin_pos": self.end_pos})) + }, $Range_end$3.$$arity = 0); - Opal.defn(self, '$size', TMP_Range_size_4 = function $$size() { + Opal.def(self, '$size', $Range_size$4 = function $$size() { var self = this; return $rb_minus(self.end_pos, self.begin_pos) - }, TMP_Range_size_4.$$arity = 0); + }, $Range_size$4.$$arity = 0); Opal.alias(self, "length", "size"); - Opal.defn(self, '$line', TMP_Range_line_5 = function $$line() { + Opal.def(self, '$line', $Range_line$5 = function $$line() { var self = this; return self.source_buffer.$line_for_position(self.begin_pos) - }, TMP_Range_line_5.$$arity = 0); + }, $Range_line$5.$$arity = 0); self.$alias_method("first_line", "line"); - Opal.defn(self, '$column', TMP_Range_column_6 = function $$column() { + Opal.def(self, '$column', $Range_column$6 = function $$column() { var self = this; return self.source_buffer.$column_for_position(self.begin_pos) - }, TMP_Range_column_6.$$arity = 0); + }, $Range_column$6.$$arity = 0); - Opal.defn(self, '$last_line', TMP_Range_last_line_7 = function $$last_line() { + Opal.def(self, '$last_line', $Range_last_line$7 = function $$last_line() { var self = this; return self.source_buffer.$line_for_position(self.end_pos) - }, TMP_Range_last_line_7.$$arity = 0); + }, $Range_last_line$7.$$arity = 0); - Opal.defn(self, '$last_column', TMP_Range_last_column_8 = function $$last_column() { + Opal.def(self, '$last_column', $Range_last_column$8 = function $$last_column() { var self = this; return self.source_buffer.$column_for_position(self.end_pos) - }, TMP_Range_last_column_8.$$arity = 0); + }, $Range_last_column$8.$$arity = 0); - Opal.defn(self, '$column_range', TMP_Range_column_range_9 = function $$column_range() { + Opal.def(self, '$column_range', $Range_column_range$9 = function $$column_range() { var self = this; if ($truthy(self.$begin().$line()['$!='](self.$end().$line()))) { - self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + (self.$inspect()) + " spans more than one line")}; + self.$raise($$($nesting, 'RangeError'), "" + (self.$inspect()) + " spans more than one line")}; return Opal.Range.$new(self.$begin().$column(),self.$end().$column(), true); - }, TMP_Range_column_range_9.$$arity = 0); + }, $Range_column_range$9.$$arity = 0); - Opal.defn(self, '$source_line', TMP_Range_source_line_10 = function $$source_line() { + Opal.def(self, '$source_line', $Range_source_line$10 = function $$source_line() { var self = this; return self.source_buffer.$source_line(self.$line()) - }, TMP_Range_source_line_10.$$arity = 0); + }, $Range_source_line$10.$$arity = 0); - Opal.defn(self, '$source', TMP_Range_source_11 = function $$source() { + Opal.def(self, '$source', $Range_source$11 = function $$source() { var self = this; return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(), true)) - }, TMP_Range_source_11.$$arity = 0); + }, $Range_source$11.$$arity = 0); - Opal.defn(self, '$is?', TMP_Range_is$q_12 = function($a_rest) { - var self = this, what; + Opal.def(self, '$is?', $Range_is$ques$12 = function($a) { + var $post_args, what, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - what = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - what[$arg_idx - 0] = arguments[$arg_idx]; - } - return what['$include?'](self.$source()) - }, TMP_Range_is$q_12.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + what = $post_args;; + return what['$include?'](self.$source()); + }, $Range_is$ques$12.$$arity = -1); - Opal.defn(self, '$to_a', TMP_Range_to_a_13 = function $$to_a() { + Opal.def(self, '$to_a', $Range_to_a$13 = function $$to_a() { var self = this; return Opal.Range.$new(self.begin_pos,self.end_pos, true).$to_a() - }, TMP_Range_to_a_13.$$arity = 0); + }, $Range_to_a$13.$$arity = 0); - Opal.defn(self, '$to_s', TMP_Range_to_s_14 = function $$to_s() { + Opal.def(self, '$to_s', $Range_to_s$14 = function $$to_s() { var $a, $b, self = this, line = nil, column = nil; $b = self.source_buffer.$decompose_position(self.begin_pos), $a = Opal.to_ary($b), (line = ($a[0] == null ? nil : $a[0])), (column = ($a[1] == null ? nil : $a[1])), $b; return [self.source_buffer.$name(), line, $rb_plus(column, 1)].$join(":"); - }, TMP_Range_to_s_14.$$arity = 0); + }, $Range_to_s$14.$$arity = 0); + + Opal.def(self, '$with', $Range_with$15 = function($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) { + begin_pos = self.begin_pos + }; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) { + end_pos = self.end_pos + }; + return $$($nesting, 'Range').$new(self.source_buffer, begin_pos, end_pos); + }, $Range_with$15.$$arity = -1); + + Opal.def(self, '$adjust', $Range_adjust$16 = function $$adjust($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) { + begin_pos = 0 + }; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) { + end_pos = 0 + }; + return $$($nesting, 'Range').$new(self.source_buffer, $rb_plus(self.begin_pos, begin_pos), $rb_plus(self.end_pos, end_pos)); + }, $Range_adjust$16.$$arity = -1); - Opal.defn(self, '$resize', TMP_Range_resize_15 = function $$resize(new_size) { + Opal.def(self, '$resize', $Range_resize$17 = function $$resize(new_size) { var self = this; - return Opal.const_get_relative($nesting, 'Range').$new(self.source_buffer, self.begin_pos, $rb_plus(self.begin_pos, new_size)) - }, TMP_Range_resize_15.$$arity = 1); + return self.$with($hash2(["end_pos"], {"end_pos": $rb_plus(self.begin_pos, new_size)})) + }, $Range_resize$17.$$arity = 1); - Opal.defn(self, '$join', TMP_Range_join_16 = function $$join(other) { + Opal.def(self, '$join', $Range_join$18 = function $$join(other) { var self = this; - return Opal.const_get_relative($nesting, 'Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$min(), [self.end_pos, other.$end_pos()].$max()) - }, TMP_Range_join_16.$$arity = 1); + return $$($nesting, 'Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$min(), [self.end_pos, other.$end_pos()].$max()) + }, $Range_join$18.$$arity = 1); - Opal.defn(self, '$intersect', TMP_Range_intersect_17 = function $$intersect(other) { + Opal.def(self, '$intersect', $Range_intersect$19 = function $$intersect(other) { var self = this; if ($truthy(self['$disjoint?'](other))) { return nil - } else { - return Opal.const_get_relative($nesting, 'Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$max(), [self.end_pos, other.$end_pos()].$min()) + } else { + return $$($nesting, 'Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$max(), [self.end_pos, other.$end_pos()].$min()) } - }, TMP_Range_intersect_17.$$arity = 1); + }, $Range_intersect$19.$$arity = 1); - Opal.defn(self, '$disjoint?', TMP_Range_disjoint$q_18 = function(other) { + Opal.def(self, '$disjoint?', $Range_disjoint$ques$20 = function(other) { var $a, self = this; - return ($truthy($a = $rb_ge(self.begin_pos, other.$end_pos())) ? $a : $rb_ge(other.$begin_pos(), self.end_pos)) - }, TMP_Range_disjoint$q_18.$$arity = 1); + if ($truthy(($truthy($a = self['$empty?']()) ? other['$empty?']() : $a))) { + return self.begin_pos['$!='](other.$begin_pos()) + } else { + return ($truthy($a = $rb_ge(self.begin_pos, other.$end_pos())) ? $a : $rb_ge(other.$begin_pos(), self.end_pos)) + } + }, $Range_disjoint$ques$20.$$arity = 1); - Opal.defn(self, '$overlaps?', TMP_Range_overlaps$q_19 = function(other) { - var $a, self = this; + Opal.def(self, '$overlaps?', $Range_overlaps$ques$21 = function(other) { + var self = this; + + return self['$disjoint?'](other)['$!']() + }, $Range_overlaps$ques$21.$$arity = 1); + + Opal.def(self, '$contains?', $Range_contains$ques$22 = function(other) { + var self = this; + + return $rb_ge($rb_plus(other.$begin_pos()['$<=>'](self.begin_pos), self.end_pos['$<=>'](other.$end_pos())), (function() {if ($truthy(other['$empty?']())) { + return 2 + } else { + return 1 + }; return nil; })()) + }, $Range_contains$ques$22.$$arity = 1); + + Opal.def(self, '$contained?', $Range_contained$ques$23 = function(other) { + var self = this; - return ($truthy($a = $rb_lt(self.begin_pos, other.$end_pos())) ? $rb_lt(other.$begin_pos(), self.end_pos) : $a) - }, TMP_Range_overlaps$q_19.$$arity = 1); + return other['$contains?'](self) + }, $Range_contained$ques$23.$$arity = 1); - Opal.defn(self, '$empty?', TMP_Range_empty$q_20 = function() { + Opal.def(self, '$crossing?', $Range_crossing$ques$24 = function(other) { + var self = this; + + + if ($truthy(self['$overlaps?'](other))) { + } else { + return false + }; + return $rb_times(self.begin_pos['$<=>'](other.$begin_pos()), self.end_pos['$<=>'](other.$end_pos()))['$=='](1); + }, $Range_crossing$ques$24.$$arity = 1); + + Opal.def(self, '$empty?', $Range_empty$ques$25 = function() { var self = this; return self.begin_pos['$=='](self.end_pos) - }, TMP_Range_empty$q_20.$$arity = 0); + }, $Range_empty$ques$25.$$arity = 0); - Opal.defn(self, '$==', TMP_Range_$eq$eq_21 = function(other) { - var $a, $b, $c, self = this; + Opal.def(self, '$<=>', $Range_$lt_eq_gt$26 = function(other) { + var $a, self = this; - return ($truthy($a = ($truthy($b = ($truthy($c = other['$is_a?'](Opal.const_get_relative($nesting, 'Range'))) ? self.source_buffer['$=='](other.$source_buffer()) : $c)) ? self.begin_pos['$=='](other.$begin_pos()) : $b)) ? self.end_pos['$=='](other.$end_pos()) : $a) - }, TMP_Range_$eq$eq_21.$$arity = 1); - return (Opal.defn(self, '$inspect', TMP_Range_inspect_22 = function $$inspect() { + + if ($truthy(($truthy($a = other['$is_a?']($$$($$$($$$('::', 'Parser'), 'Source'), 'Range'))) ? self.source_buffer['$=='](other.$source_buffer()) : $a))) { + } else { + return nil + }; + return ($truthy($a = self.begin_pos['$<=>'](other.$begin_pos())['$nonzero?']()) ? $a : self.end_pos['$<=>'](other.$end_pos())); + }, $Range_$lt_eq_gt$26.$$arity = 1); + return (Opal.def(self, '$inspect', $Range_inspect$27 = function $$inspect() { var self = this; return "" + "#" - }, TMP_Range_inspect_22.$$arity = 0), nil) && 'inspect'; + }, $Range_inspect$27.$$arity = 0), nil) && 'inspect'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/comment"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$attr_reader', '$alias_method', '$new', '$associate', '$associate_locations', '$freeze', '$source', '$text', '$===', '$==', '$type', '$is_a?', '$location', '$to_s', '$expression', '$inspect']); + Opal.add_stubs(['$attr_reader', '$alias_method', '$new', '$associate', '$associate_locations', '$freeze', '$source', '$start_with?', '$text', '$==', '$type', '$is_a?', '$location', '$to_s', '$expression', '$inspect']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Comment(){}; - var self = $Comment = $klass($base, $super, 'Comment', $Comment); + var self = $klass($base, $super, 'Comment'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Comment_associate_1, TMP_Comment_associate_locations_2, TMP_Comment_initialize_3, TMP_Comment_type_4, TMP_Comment_inline$q_5, TMP_Comment_document$q_6, TMP_Comment_$eq$eq_7, TMP_Comment_inspect_8; + var $nesting = [self].concat($parent_nesting), $Comment_associate$1, $Comment_associate_locations$2, $Comment_initialize$3, $Comment_type$4, $Comment_inline$ques$5, $Comment_document$ques$6, $Comment_$eq_eq$7, $Comment_inspect$8; - def.location = nil; + self.$$prototype.location = nil; self.$attr_reader("text"); self.$attr_reader("location"); self.$alias_method("loc", "location"); - Opal.defs(self, '$associate', TMP_Comment_associate_1 = function $$associate(ast, comments) { + Opal.defs(self, '$associate', $Comment_associate$1 = function $$associate(ast, comments) { var self = this, associator = nil; - associator = Opal.const_get_relative($nesting, 'Associator').$new(ast, comments); + associator = $$($nesting, 'Associator').$new(ast, comments); return associator.$associate(); - }, TMP_Comment_associate_1.$$arity = 2); - Opal.defs(self, '$associate_locations', TMP_Comment_associate_locations_2 = function $$associate_locations(ast, comments) { + }, $Comment_associate$1.$$arity = 2); + Opal.defs(self, '$associate_locations', $Comment_associate_locations$2 = function $$associate_locations(ast, comments) { var self = this, associator = nil; - associator = Opal.const_get_relative($nesting, 'Associator').$new(ast, comments); + associator = $$($nesting, 'Associator').$new(ast, comments); return associator.$associate_locations(); - }, TMP_Comment_associate_locations_2.$$arity = 2); + }, $Comment_associate_locations$2.$$arity = 2); - Opal.defn(self, '$initialize', TMP_Comment_initialize_3 = function $$initialize(range) { + Opal.def(self, '$initialize', $Comment_initialize$3 = function $$initialize(range) { var self = this; - self.location = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Source'), 'Map').$new(range); + self.location = $$$($$$($$($nesting, 'Parser'), 'Source'), 'Map').$new(range); self.text = range.$source().$freeze(); return self.$freeze(); - }, TMP_Comment_initialize_3.$$arity = 1); + }, $Comment_initialize$3.$$arity = 1); - Opal.defn(self, '$type', TMP_Comment_type_4 = function $$type() { - var self = this, $case = nil; + Opal.def(self, '$type', $Comment_type$4 = function $$type() { + var self = this; - return (function() {$case = self.$text(); - if (/^#/['$===']($case)) {return "inline"} - else if (/^=begin/['$===']($case)) {return "document"} - else { return nil }})() - }, TMP_Comment_type_4.$$arity = 0); + if ($truthy(self.$text()['$start_with?']("#".$freeze()))) { + return "inline" + } else if ($truthy(self.$text()['$start_with?']("=begin".$freeze()))) { + return "document" + } else { + return nil + } + }, $Comment_type$4.$$arity = 0); - Opal.defn(self, '$inline?', TMP_Comment_inline$q_5 = function() { + Opal.def(self, '$inline?', $Comment_inline$ques$5 = function() { var self = this; return self.$type()['$==']("inline") - }, TMP_Comment_inline$q_5.$$arity = 0); + }, $Comment_inline$ques$5.$$arity = 0); - Opal.defn(self, '$document?', TMP_Comment_document$q_6 = function() { + Opal.def(self, '$document?', $Comment_document$ques$6 = function() { var self = this; return self.$type()['$==']("document") - }, TMP_Comment_document$q_6.$$arity = 0); + }, $Comment_document$ques$6.$$arity = 0); - Opal.defn(self, '$==', TMP_Comment_$eq$eq_7 = function(other) { + Opal.def(self, '$==', $Comment_$eq_eq$7 = function(other) { var $a, self = this; - return ($truthy($a = other['$is_a?'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Comment'))) ? self.location['$=='](other.$location()) : $a) - }, TMP_Comment_$eq$eq_7.$$arity = 1); - return (Opal.defn(self, '$inspect', TMP_Comment_inspect_8 = function $$inspect() { + return ($truthy($a = other['$is_a?']($$$($$($nesting, 'Source'), 'Comment'))) ? self.location['$=='](other.$location()) : $a) + }, $Comment_$eq_eq$7.$$arity = 1); + return (Opal.def(self, '$inspect', $Comment_inspect$8 = function $$inspect() { var self = this; return "" + "#" - }, TMP_Comment_inspect_8.$$arity = 0), nil) && 'inspect'; + }, $Comment_inspect$8.$$arity = 0), nil) && 'inspect'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/comment/associator"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -27825,65 +31386,72 @@ Opal.modules["parser/source/comment/associator"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$attr_accessor', '$do_associate', '$private', '$new', '$[]=', '$-', '$advance_comment', '$advance_through_directives', '$visit', '$process_leading_comments', '$location', '$<=', '$line', '$last_line', '$is_a?', '$each', '$children', '$loc', '$expression', '$process_trailing_comments', '$==', '$type', '$current_comment_before?', '$associate_and_advance_comment', '$current_comment_before_end?', '$current_comment_decorates?', '$+', '$[]', '$!', '$end_pos', '$begin_pos', '$<<', '$=~', '$text']); + Opal.add_stubs(['$attr_accessor', '$do_associate', '$private', '$new', '$[]=', '$-', '$advance_comment', '$advance_through_directives', '$visit', '$process_leading_comments', '$location', '$<=', '$line', '$last_line', '$is_a?', '$each', '$children', '$loc', '$expression', '$process_trailing_comments', '$==', '$type', '$current_comment_before?', '$associate_and_advance_comment', '$current_comment_before_end?', '$current_comment_decorates?', '$+', '$[]', '$!', '$end_pos', '$begin_pos', '$<<', '$start_with?', '$text', '$freeze', '$=~']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Associator(){}; - var self = $Associator = $klass($base, $super, 'Associator', $Associator); + var self = $klass($base, $super, 'Associator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Associator_initialize_1, TMP_Associator_associate_2, TMP_Associator_associate_locations_3, TMP_Associator_do_associate_5, TMP_Associator_visit_7, TMP_Associator_process_leading_comments_8, TMP_Associator_process_trailing_comments_9, TMP_Associator_advance_comment_10, TMP_Associator_current_comment_before$q_11, TMP_Associator_current_comment_before_end$q_12, TMP_Associator_current_comment_decorates$q_13, TMP_Associator_associate_and_advance_comment_14, TMP_Associator_advance_through_directives_15; + var $nesting = [self].concat($parent_nesting), $Associator_initialize$1, $Associator_associate$2, $Associator_associate_locations$3, $Associator_do_associate$4, $Associator_visit$6, $Associator_process_leading_comments$8, $Associator_process_trailing_comments$9, $Associator_advance_comment$10, $Associator_current_comment_before$ques$11, $Associator_current_comment_before_end$ques$12, $Associator_current_comment_decorates$ques$13, $Associator_associate_and_advance_comment$14, $Associator_advance_through_directives$15; - def.skip_directives = def.ast = def.mapping = def.current_comment = def.comment_num = def.comments = def.map_using_locations = nil; + self.$$prototype.skip_directives = self.$$prototype.ast = self.$$prototype.mapping = self.$$prototype.current_comment = self.$$prototype.comment_num = self.$$prototype.comments = self.$$prototype.map_using_locations = nil; self.$attr_accessor("skip_directives"); - Opal.defn(self, '$initialize', TMP_Associator_initialize_1 = function $$initialize(ast, comments) { + Opal.def(self, '$initialize', $Associator_initialize$1 = function $$initialize(ast, comments) { var self = this; self.ast = ast; self.comments = comments; return (self.skip_directives = true); - }, TMP_Associator_initialize_1.$$arity = 2); + }, $Associator_initialize$1.$$arity = 2); - Opal.defn(self, '$associate', TMP_Associator_associate_2 = function $$associate() { + Opal.def(self, '$associate', $Associator_associate$2 = function $$associate() { var self = this; self.map_using_locations = false; return self.$do_associate(); - }, TMP_Associator_associate_2.$$arity = 0); + }, $Associator_associate$2.$$arity = 0); - Opal.defn(self, '$associate_locations', TMP_Associator_associate_locations_3 = function $$associate_locations() { + Opal.def(self, '$associate_locations', $Associator_associate_locations$3 = function $$associate_locations() { var self = this; self.map_using_locations = true; return self.$do_associate(); - }, TMP_Associator_associate_locations_3.$$arity = 0); + }, $Associator_associate_locations$3.$$arity = 0); self.$private(); - Opal.defn(self, '$do_associate', TMP_Associator_do_associate_5 = function $$do_associate() { - var TMP_4, self = this; + Opal.def(self, '$do_associate', $Associator_do_associate$4 = function $$do_associate() { + var $$5, self = this; - self.mapping = $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_4 = function(h, k){var self = TMP_4.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + self.mapping = $send($$($nesting, 'Hash'), 'new', [], ($$5 = function(h, k){var self = $$5.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, []]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_4.$$s = self, TMP_4.$$arity = 2, TMP_4)); + return $writer[$rb_minus($writer["length"], 1)];}, $$5.$$s = self, $$5.$$arity = 2, $$5)); self.comment_num = -1; self.$advance_comment(); if ($truthy(self.skip_directives)) { @@ -27891,35 +31459,39 @@ if (h == null) h = nil;if (k == null) k = nil; if ($truthy(self.ast)) { self.$visit(self.ast)}; return self.mapping; - }, TMP_Associator_do_associate_5.$$arity = 0); + }, $Associator_do_associate$4.$$arity = 0); - Opal.defn(self, '$visit', TMP_Associator_visit_7 = function $$visit(node) { - var $a, TMP_6, self = this, node_loc = nil; + Opal.def(self, '$visit', $Associator_visit$6 = function $$visit(node) { + var $a, $$7, self = this, node_loc = nil; self.$process_leading_comments(node); if ($truthy(self.current_comment)) { - } else { + } else { return nil }; node_loc = node.$location(); - if ($truthy(($truthy($a = $rb_le(self.current_comment.$location().$line(), node_loc.$last_line())) ? $a : node_loc['$is_a?'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Map'), 'Heredoc'))))) { + if ($truthy(($truthy($a = $rb_le(self.current_comment.$location().$line(), node_loc.$last_line())) ? $a : node_loc['$is_a?']($$$($$($nesting, 'Map'), 'Heredoc'))))) { - $send(node.$children(), 'each', [], (TMP_6 = function(child){var self = TMP_6.$$s || this, $b, $c; -if (child == null) child = nil; + $send(node.$children(), 'each', [], ($$7 = function(child){var self = $$7.$$s || this, $b, $c; + - if ($truthy(($truthy($b = ($truthy($c = child['$is_a?'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'AST'), 'Node'))) ? child.$loc() : $c)) ? child.$loc().$expression() : $b))) { - } else { + + if (child == null) { + child = nil; + }; + if ($truthy(($truthy($b = ($truthy($c = child['$is_a?']($$$($$($nesting, 'AST'), 'Node'))) ? child.$loc() : $c)) ? child.$loc().$expression() : $b))) { + } else { return nil; }; - return self.$visit(child);}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)); + return self.$visit(child);}, $$7.$$s = self, $$7.$$arity = 1, $$7)); return self.$process_trailing_comments(node); - } else { + } else { return nil }; - }, TMP_Associator_visit_7.$$arity = 1); + }, $Associator_visit$6.$$arity = 1); - Opal.defn(self, '$process_leading_comments', TMP_Associator_process_leading_comments_8 = function $$process_leading_comments(node) { + Opal.def(self, '$process_leading_comments', $Associator_process_leading_comments$8 = function $$process_leading_comments(node) { var $a, self = this; @@ -27928,9 +31500,9 @@ if (child == null) child = nil; while ($truthy(self['$current_comment_before?'](node))) { self.$associate_and_advance_comment(node) }; - }, TMP_Associator_process_leading_comments_8.$$arity = 1); + }, $Associator_process_leading_comments$8.$$arity = 1); - Opal.defn(self, '$process_trailing_comments', TMP_Associator_process_trailing_comments_9 = function $$process_trailing_comments(node) { + Opal.def(self, '$process_trailing_comments', $Associator_process_trailing_comments$9 = function $$process_trailing_comments(node) { var $a, self = this; @@ -27940,17 +31512,17 @@ if (child == null) child = nil; while ($truthy(self['$current_comment_decorates?'](node))) { self.$associate_and_advance_comment(node) }; - }, TMP_Associator_process_trailing_comments_9.$$arity = 1); + }, $Associator_process_trailing_comments$9.$$arity = 1); - Opal.defn(self, '$advance_comment', TMP_Associator_advance_comment_10 = function $$advance_comment() { + Opal.def(self, '$advance_comment', $Associator_advance_comment$10 = function $$advance_comment() { var self = this; self.comment_num = $rb_plus(self.comment_num, 1); return (self.current_comment = self.comments['$[]'](self.comment_num)); - }, TMP_Associator_advance_comment_10.$$arity = 0); + }, $Associator_advance_comment$10.$$arity = 0); - Opal.defn(self, '$current_comment_before?', TMP_Associator_current_comment_before$q_11 = function(node) { + Opal.def(self, '$current_comment_before?', $Associator_current_comment_before$ques$11 = function(node) { var self = this, comment_loc = nil, node_loc = nil; @@ -27959,9 +31531,9 @@ if (child == null) child = nil; comment_loc = self.current_comment.$location().$expression(); node_loc = node.$location().$expression(); return $rb_le(comment_loc.$end_pos(), node_loc.$begin_pos()); - }, TMP_Associator_current_comment_before$q_11.$$arity = 1); + }, $Associator_current_comment_before$ques$11.$$arity = 1); - Opal.defn(self, '$current_comment_before_end?', TMP_Associator_current_comment_before_end$q_12 = function(node) { + Opal.def(self, '$current_comment_before_end?', $Associator_current_comment_before_end$ques$12 = function(node) { var self = this, comment_loc = nil, node_loc = nil; @@ -27970,47 +31542,50 @@ if (child == null) child = nil; comment_loc = self.current_comment.$location().$expression(); node_loc = node.$location().$expression(); return $rb_le(comment_loc.$end_pos(), node_loc.$end_pos()); - }, TMP_Associator_current_comment_before_end$q_12.$$arity = 1); + }, $Associator_current_comment_before_end$ques$12.$$arity = 1); - Opal.defn(self, '$current_comment_decorates?', TMP_Associator_current_comment_decorates$q_13 = function(node) { + Opal.def(self, '$current_comment_decorates?', $Associator_current_comment_decorates$ques$13 = function(node) { var self = this; if ($truthy(self.current_comment['$!']())) { return false}; return self.current_comment.$location().$line()['$=='](node.$location().$last_line()); - }, TMP_Associator_current_comment_decorates$q_13.$$arity = 1); + }, $Associator_current_comment_decorates$ques$13.$$arity = 1); - Opal.defn(self, '$associate_and_advance_comment', TMP_Associator_associate_and_advance_comment_14 = function $$associate_and_advance_comment(node) { + Opal.def(self, '$associate_and_advance_comment', $Associator_associate_and_advance_comment$14 = function $$associate_and_advance_comment(node) { var self = this, key = nil; key = (function() {if ($truthy(self.map_using_locations)) { return node.$location() - } else { + } else { return node }; return nil; })(); self.mapping['$[]'](key)['$<<'](self.current_comment); return self.$advance_comment(); - }, TMP_Associator_associate_and_advance_comment_14.$$arity = 1); - return (Opal.defn(self, '$advance_through_directives', TMP_Associator_advance_through_directives_15 = function $$advance_through_directives() { + }, $Associator_associate_and_advance_comment$14.$$arity = 1); + Opal.const_set($nesting[0], 'MAGIC_COMMENT_RE', /^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/); + return (Opal.def(self, '$advance_through_directives', $Associator_advance_through_directives$15 = function $$advance_through_directives() { var $a, self = this; - if ($truthy(($truthy($a = self.current_comment) ? self.current_comment.$text()['$=~'](/^#!/) : $a))) { + if ($truthy(($truthy($a = self.current_comment) ? self.current_comment.$text()['$start_with?']("#!".$freeze()) : $a))) { self.$advance_comment()}; - if ($truthy(($truthy($a = self.current_comment) ? self.current_comment.$text()['$=~'](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Buffer'), 'ENCODING_RE')) : $a))) { + if ($truthy(($truthy($a = self.current_comment) ? self.current_comment.$text()['$=~']($$($nesting, 'MAGIC_COMMENT_RE')) : $a))) { + self.$advance_comment()}; + if ($truthy(($truthy($a = self.current_comment) ? self.current_comment.$text()['$=~']($$$($$($nesting, 'Buffer'), 'ENCODING_RE')) : $a))) { return self.$advance_comment() - } else { + } else { return nil }; - }, TMP_Associator_advance_through_directives_15.$$arity = 0), nil) && 'advance_through_directives'; - })(Opal.const_get_relative($nesting, 'Comment'), null, $nesting) + }, $Associator_advance_through_directives$15.$$arity = 0), nil) && 'advance_through_directives'; + })($$($nesting, 'Comment'), null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/rewriter"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -28027,40 +31602,45 @@ Opal.modules["parser/source/rewriter"] = function(Opal) { function $rb_lt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $hash2 = Opal.hash2; - Opal.add_stubs(['$attr_reader', '$new', '$lambda', '$puts', '$render', '$consumer=', '$-', '$append', '$freeze', '$begin', '$end', '$+', '$in_transaction?', '$raise', '$class', '$dup', '$source', '$each', '$sort', '$begin_pos', '$range', '$length', '$replacement', '$[]=', '$private', '$empty?', '$!', '$allow_multiple_insertions?', '$clobbered_insertion?', '$raise_clobber_error', '$record_insertion', '$adjacent_updates?', '$find', '$overlaps?', '$replace_compatible_with_insertion?', '$merge_actions!', '$<<', '$active_queue', '$adjacent_insertions?', '$merge_actions', '$delete', '$can_merge?', '$record_replace', '$|', '$active_insertions', '$active_insertions=', '$active_clobber', '$clobbered_position_mask', '$active_clobber=', '$size', '$!=', '$&', '$<=', '$end_pos', '$adjacent_insertion_mask', '$select', '$adjacent?', '$adjacent_position_mask', '$>=', '$==', '$[]', '$all?', '$intersect', '$nil?', '$max', '$sort_by', '$push', '$join', '$first', '$max_by', '$merge_replacements', '$replace_actions', '$disjoint?', '$<', '$process']); + Opal.add_stubs(['$attr_reader', '$warn_of_deprecation', '$class', '$new', '$lambda', '$puts', '$render', '$consumer=', '$-', '$append', '$freeze', '$begin', '$end', '$+', '$in_transaction?', '$raise', '$dup', '$source', '$each', '$sort', '$begin_pos', '$range', '$length', '$replacement', '$[]=', '$private', '$empty?', '$!', '$allow_multiple_insertions?', '$clobbered_insertion?', '$raise_clobber_error', '$record_insertion', '$adjacent_updates?', '$find', '$overlaps?', '$replace_compatible_with_insertion?', '$merge_actions!', '$<<', '$active_queue', '$adjacent_insertions?', '$merge_actions', '$delete', '$can_merge?', '$record_replace', '$|', '$active_insertions', '$active_insertions=', '$active_clobber', '$clobbered_position_mask', '$active_clobber=', '$size', '$!=', '$&', '$<=', '$end_pos', '$adjacent_insertion_mask', '$select', '$adjacent?', '$adjacent_position_mask', '$>=', '$==', '$[]', '$all?', '$intersect', '$nil?', '$max', '$sort_by', '$push', '$join', '$first', '$max_by', '$merge_replacements', '$replace_actions', '$disjoint?', '$<', '$process', '$extend']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Rewriter(){}; - var self = $Rewriter = $klass($base, $super, 'Rewriter', $Rewriter); + var self = $klass($base, $super, 'Rewriter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rewriter_initialize_2, TMP_Rewriter_remove_3, TMP_Rewriter_insert_before_4, TMP_Rewriter_insert_before_multi_5, TMP_Rewriter_insert_after_6, TMP_Rewriter_insert_after_multi_7, TMP_Rewriter_replace_8, TMP_Rewriter_process_10, TMP_Rewriter_transaction_11, TMP_Rewriter_append_14, TMP_Rewriter_record_insertion_15, TMP_Rewriter_record_replace_16, TMP_Rewriter_clobbered_position_mask_17, TMP_Rewriter_adjacent_position_mask_18, TMP_Rewriter_adjacent_insertion_mask_19, TMP_Rewriter_clobbered_insertion$q_21, TMP_Rewriter_adjacent_insertions$q_23, TMP_Rewriter_adjacent_updates$q_25, TMP_Rewriter_replace_compatible_with_insertion$q_26, TMP_Rewriter_can_merge$q_28, TMP_Rewriter_merge_actions_31, TMP_Rewriter_merge_actions$B_32, TMP_Rewriter_merge_replacements_34, TMP_Rewriter_replace_actions_36, TMP_Rewriter_raise_clobber_error_37, TMP_Rewriter_in_transaction$q_38, TMP_Rewriter_active_queue_39, TMP_Rewriter_active_clobber_40, TMP_Rewriter_active_insertions_41, TMP_Rewriter_active_clobber$eq_42, TMP_Rewriter_active_insertions$eq_43, TMP_Rewriter_adjacent$q_44; + var $nesting = [self].concat($parent_nesting), $Rewriter_initialize$1, $Rewriter_remove$3, $Rewriter_insert_before$4, $Rewriter_wrap$5, $Rewriter_insert_before_multi$6, $Rewriter_insert_after$7, $Rewriter_insert_after_multi$8, $Rewriter_replace$9, $Rewriter_process$10, $Rewriter_transaction$12, $Rewriter_append$13, $Rewriter_record_insertion$16, $Rewriter_record_replace$17, $Rewriter_clobbered_position_mask$18, $Rewriter_adjacent_position_mask$19, $Rewriter_adjacent_insertion_mask$20, $Rewriter_clobbered_insertion$ques$21, $Rewriter_adjacent_insertions$ques$23, $Rewriter_adjacent_updates$ques$25, $Rewriter_replace_compatible_with_insertion$ques$27, $Rewriter_can_merge$ques$28, $Rewriter_merge_actions$30, $Rewriter_merge_actions$excl$33, $Rewriter_merge_replacements$34, $Rewriter_replace_actions$36, $Rewriter_raise_clobber_error$38, $Rewriter_in_transaction$ques$39, $Rewriter_active_queue$40, $Rewriter_active_clobber$41, $Rewriter_active_insertions$42, $Rewriter_active_clobber$eq$43, $Rewriter_active_insertions$eq$44, $Rewriter_adjacent$ques$45; - def.diagnostics = def.insert_before_multi_order = def.insert_after_multi_order = def.source_buffer = def.queue = def.clobber = def.insertions = def.pending_queue = def.pending_clobber = def.pending_insertions = nil; + self.$$prototype.diagnostics = self.$$prototype.insert_before_multi_order = self.$$prototype.insert_after_multi_order = self.$$prototype.source_buffer = self.$$prototype.queue = self.$$prototype.clobber = self.$$prototype.insertions = self.$$prototype.pending_queue = self.$$prototype.pending_clobber = self.$$prototype.pending_insertions = nil; self.$attr_reader("source_buffer"); self.$attr_reader("diagnostics"); - Opal.defn(self, '$initialize', TMP_Rewriter_initialize_2 = function $$initialize(source_buffer) { - var TMP_1, self = this, $writer = nil; + Opal.def(self, '$initialize', $Rewriter_initialize$1 = function $$initialize(source_buffer) { + var $$2, self = this, $writer = nil; - self.diagnostics = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Diagnostic'), 'Engine').$new(); + self.$class().$warn_of_deprecation(); + self.diagnostics = $$$($$($nesting, 'Diagnostic'), 'Engine').$new(); - $writer = [$send(self, 'lambda', [], (TMP_1 = function(diag){var self = TMP_1.$$s || this; + $writer = [$send(self, 'lambda', [], ($$2 = function(diag){var self = $$2.$$s || this; if ($gvars.stderr == null) $gvars.stderr = nil; -if (diag == null) diag = nil; - return $gvars.stderr.$puts(diag.$render())}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1))]; + + + + if (diag == null) { + diag = nil; + }; + return $gvars.stderr.$puts(diag.$render());}, $$2.$$s = self, $$2.$$arity = 1, $$2))]; $send(self.diagnostics, 'consumer=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.source_buffer = source_buffer; @@ -28068,78 +31648,93 @@ if (diag == null) diag = nil; self.clobber = 0; self.insertions = 0; self.insert_before_multi_order = 0; - return (self.insert_after_multi_order = 0); - }, TMP_Rewriter_initialize_2.$$arity = 1); + self.insert_after_multi_order = 0; + self.pending_queue = nil; + self.pending_clobber = nil; + return (self.pending_insertions = nil); + }, $Rewriter_initialize$1.$$arity = 1); - Opal.defn(self, '$remove', TMP_Rewriter_remove_3 = function $$remove(range) { + Opal.def(self, '$remove', $Rewriter_remove$3 = function $$remove(range) { var self = this; - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range, "".$freeze())) - }, TMP_Rewriter_remove_3.$$arity = 1); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range, "".$freeze())) + }, $Rewriter_remove$3.$$arity = 1); - Opal.defn(self, '$insert_before', TMP_Rewriter_insert_before_4 = function $$insert_before(range, content) { + Opal.def(self, '$insert_before', $Rewriter_insert_before$4 = function $$insert_before(range, content) { var self = this; - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range.$begin(), content)) - }, TMP_Rewriter_insert_before_4.$$arity = 2); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$begin(), content)) + }, $Rewriter_insert_before$4.$$arity = 2); - Opal.defn(self, '$insert_before_multi', TMP_Rewriter_insert_before_multi_5 = function $$insert_before_multi(range, content) { + Opal.def(self, '$wrap', $Rewriter_wrap$5 = function $$wrap(range, before, after) { + var self = this; + + + self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$begin(), before)); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$end(), after)); + }, $Rewriter_wrap$5.$$arity = 3); + + Opal.def(self, '$insert_before_multi', $Rewriter_insert_before_multi$6 = function $$insert_before_multi(range, content) { var self = this; self.insert_before_multi_order = $rb_minus(self.insert_before_multi_order, 1); - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range.$begin(), content, true, self.insert_before_multi_order)); - }, TMP_Rewriter_insert_before_multi_5.$$arity = 2); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$begin(), content, true, self.insert_before_multi_order)); + }, $Rewriter_insert_before_multi$6.$$arity = 2); - Opal.defn(self, '$insert_after', TMP_Rewriter_insert_after_6 = function $$insert_after(range, content) { + Opal.def(self, '$insert_after', $Rewriter_insert_after$7 = function $$insert_after(range, content) { var self = this; - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range.$end(), content)) - }, TMP_Rewriter_insert_after_6.$$arity = 2); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$end(), content)) + }, $Rewriter_insert_after$7.$$arity = 2); - Opal.defn(self, '$insert_after_multi', TMP_Rewriter_insert_after_multi_7 = function $$insert_after_multi(range, content) { + Opal.def(self, '$insert_after_multi', $Rewriter_insert_after_multi$8 = function $$insert_after_multi(range, content) { var self = this; self.insert_after_multi_order = $rb_plus(self.insert_after_multi_order, 1); - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range.$end(), content, true, self.insert_after_multi_order)); - }, TMP_Rewriter_insert_after_multi_7.$$arity = 2); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range.$end(), content, true, self.insert_after_multi_order)); + }, $Rewriter_insert_after_multi$8.$$arity = 2); - Opal.defn(self, '$replace', TMP_Rewriter_replace_8 = function $$replace(range, content) { + Opal.def(self, '$replace', $Rewriter_replace$9 = function $$replace(range, content) { var self = this; - return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range, content)) - }, TMP_Rewriter_replace_8.$$arity = 2); + return self.$append($$$($$($nesting, 'Rewriter'), 'Action').$new(range, content)) + }, $Rewriter_replace$9.$$arity = 2); - Opal.defn(self, '$process', TMP_Rewriter_process_10 = function $$process() { - var TMP_9, self = this, adjustment = nil, source = nil; + Opal.def(self, '$process', $Rewriter_process$10 = function $$process() { + var $$11, self = this, adjustment = nil, source = nil; if ($truthy(self['$in_transaction?']())) { self.$raise("" + "Do not call " + (self.$class()) + "#" + ("process") + " inside a transaction")}; adjustment = 0; source = self.source_buffer.$source().$dup(); - $send(self.queue.$sort(), 'each', [], (TMP_9 = function(action){var self = TMP_9.$$s || this, begin_pos = nil, end_pos = nil, $writer = nil; -if (action == null) action = nil; + $send(self.queue.$sort(), 'each', [], ($$11 = function(action){var self = $$11.$$s || this, begin_pos = nil, end_pos = nil, $writer = nil; + + + if (action == null) { + action = nil; + }; begin_pos = $rb_plus(action.$range().$begin_pos(), adjustment); end_pos = $rb_plus(begin_pos, action.$range().$length()); $writer = [Opal.Range.$new(begin_pos,end_pos, true), action.$replacement()]; $send(source, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - return (adjustment = $rb_plus(adjustment, $rb_minus(action.$replacement().$length(), action.$range().$length())));}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); + return (adjustment = $rb_plus(adjustment, $rb_minus(action.$replacement().$length(), action.$range().$length())));}, $$11.$$s = self, $$11.$$arity = 1, $$11)); return source; - }, TMP_Rewriter_process_10.$$arity = 0); + }, $Rewriter_process$10.$$arity = 0); - Opal.defn(self, '$transaction', TMP_Rewriter_transaction_11 = function $$transaction() { - var self = this, $iter = TMP_Rewriter_transaction_11.$$p, $yield = $iter || nil; + Opal.def(self, '$transaction', $Rewriter_transaction$12 = function $$transaction() { + var $iter = $Rewriter_transaction$12.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Rewriter_transaction_11.$$p = null; + if ($iter) $Rewriter_transaction$12.$$p = null; return (function() { try { if (($yield !== nil)) { - } else { + } else { self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") }; if ($truthy(self['$in_transaction?']())) { @@ -28155,11 +31750,11 @@ if (action == null) action = nil; } finally { ((self.pending_queue = nil), (self.pending_clobber = nil), (self.pending_insertions = nil)) }; })() - }, TMP_Rewriter_transaction_11.$$arity = 0); + }, $Rewriter_transaction$12.$$arity = 0); self.$private(); - Opal.defn(self, '$append', TMP_Rewriter_append_14 = function $$append(action) { - var $a, TMP_12, TMP_13, self = this, range = nil, conflicting = nil, adjacent = nil, insertions = nil; + Opal.def(self, '$append', $Rewriter_append$13 = function $$append(action) { + var $a, $$14, $$15, self = this, range = nil, conflicting = nil, adjacent = nil, insertions = nil; range = action.$range(); @@ -28172,138 +31767,167 @@ if (action == null) action = nil; self.$record_insertion(range); if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { - conflicting = $send(adjacent, 'find', [], (TMP_12 = function(a){var self = TMP_12.$$s || this, $b; -if (a == null) a = nil; - return ($truthy($b = a.$range()['$overlaps?'](range)) ? self['$replace_compatible_with_insertion?'](a, action)['$!']() : $b)}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)); + conflicting = $send(adjacent, 'find', [], ($$14 = function(a){var self = $$14.$$s || this, $b; + + + + if (a == null) { + a = nil; + }; + return ($truthy($b = a.$range()['$overlaps?'](range)) ? self['$replace_compatible_with_insertion?'](a, action)['$!']() : $b);}, $$14.$$s = self, $$14.$$arity = 1, $$14)); if ($truthy(conflicting)) { self.$raise_clobber_error(action, [conflicting])}; self['$merge_actions!'](action, adjacent); - } else { + } else { self.$active_queue()['$<<'](action) }; - } else { + } else { if ($truthy((insertions = self['$adjacent_insertions?'](range)))) { - $send(insertions, 'each', [], (TMP_13 = function(insertion){var self = TMP_13.$$s || this, $b; -if (insertion == null) insertion = nil; - if ($truthy(($truthy($b = range['$overlaps?'](insertion.$range())) ? self['$replace_compatible_with_insertion?'](action, insertion)['$!']() : $b))) { + $send(insertions, 'each', [], ($$15 = function(insertion){var self = $$15.$$s || this, $b; + + + + if (insertion == null) { + insertion = nil; + }; + if ($truthy(($truthy($b = range['$overlaps?'](insertion.$range())) ? self['$replace_compatible_with_insertion?'](action, insertion)['$!']() : $b))) { return self.$raise_clobber_error(action, [insertion]) - } else { + } else { action = self.$merge_actions(action, [insertion]); return self.$active_queue().$delete(insertion); - }}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13))}; + };}, $$15.$$s = self, $$15.$$arity = 1, $$15))}; if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { if ($truthy(self['$can_merge?'](action, adjacent))) { self.$record_replace(range); self['$merge_actions!'](action, adjacent); - } else { + } else { self.$raise_clobber_error(action, adjacent) } - } else { + } else { self.$record_replace(range); self.$active_queue()['$<<'](action); }; }; return self; - }, TMP_Rewriter_append_14.$$arity = 1); + }, $Rewriter_append$13.$$arity = 1); - Opal.defn(self, '$record_insertion', TMP_Rewriter_record_insertion_15 = function $$record_insertion(range) { + Opal.def(self, '$record_insertion', $Rewriter_record_insertion$16 = function $$record_insertion(range) { var self = this, $writer = nil; $writer = [self.$active_insertions()['$|']((1)['$<<'](range.$begin_pos()))]; $send(self, 'active_insertions=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - }, TMP_Rewriter_record_insertion_15.$$arity = 1); + }, $Rewriter_record_insertion$16.$$arity = 1); - Opal.defn(self, '$record_replace', TMP_Rewriter_record_replace_16 = function $$record_replace(range) { + Opal.def(self, '$record_replace', $Rewriter_record_replace$17 = function $$record_replace(range) { var self = this, $writer = nil; $writer = [self.$active_clobber()['$|'](self.$clobbered_position_mask(range))]; $send(self, 'active_clobber=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - }, TMP_Rewriter_record_replace_16.$$arity = 1); + }, $Rewriter_record_replace$17.$$arity = 1); - Opal.defn(self, '$clobbered_position_mask', TMP_Rewriter_clobbered_position_mask_17 = function $$clobbered_position_mask(range) { + Opal.def(self, '$clobbered_position_mask', $Rewriter_clobbered_position_mask$18 = function $$clobbered_position_mask(range) { var self = this; return $rb_minus((1)['$<<'](range.$size()), 1)['$<<'](range.$begin_pos()) - }, TMP_Rewriter_clobbered_position_mask_17.$$arity = 1); + }, $Rewriter_clobbered_position_mask$18.$$arity = 1); - Opal.defn(self, '$adjacent_position_mask', TMP_Rewriter_adjacent_position_mask_18 = function $$adjacent_position_mask(range) { + Opal.def(self, '$adjacent_position_mask', $Rewriter_adjacent_position_mask$19 = function $$adjacent_position_mask(range) { var self = this; return $rb_minus((1)['$<<']($rb_plus(range.$size(), 2)), 1)['$<<']($rb_minus(range.$begin_pos(), 1)) - }, TMP_Rewriter_adjacent_position_mask_18.$$arity = 1); + }, $Rewriter_adjacent_position_mask$19.$$arity = 1); - Opal.defn(self, '$adjacent_insertion_mask', TMP_Rewriter_adjacent_insertion_mask_19 = function $$adjacent_insertion_mask(range) { + Opal.def(self, '$adjacent_insertion_mask', $Rewriter_adjacent_insertion_mask$20 = function $$adjacent_insertion_mask(range) { var self = this; return $rb_minus((1)['$<<']($rb_plus(range.$size(), 1)), 1)['$<<'](range.$begin_pos()) - }, TMP_Rewriter_adjacent_insertion_mask_19.$$arity = 1); + }, $Rewriter_adjacent_insertion_mask$20.$$arity = 1); - Opal.defn(self, '$clobbered_insertion?', TMP_Rewriter_clobbered_insertion$q_21 = function(insertion) { - var TMP_20, self = this, insertion_pos = nil; + Opal.def(self, '$clobbered_insertion?', $Rewriter_clobbered_insertion$ques$21 = function(insertion) { + var $$22, self = this, insertion_pos = nil; insertion_pos = insertion.$begin_pos(); if ($truthy(self.$active_insertions()['$&']((1)['$<<'](insertion_pos))['$!='](0))) { - return $send(self.$active_queue(), 'find', [], (TMP_20 = function(a){var self = TMP_20.$$s || this, $a; -if (a == null) a = nil; - return ($truthy($a = $rb_le(a.$range().$begin_pos(), insertion_pos)) ? $rb_le(insertion_pos, a.$range().$end_pos()) : $a)}, TMP_20.$$s = self, TMP_20.$$arity = 1, TMP_20)) - } else { + return $send(self.$active_queue(), 'find', [], ($$22 = function(a){var self = $$22.$$s || this, $a; + + + + if (a == null) { + a = nil; + }; + return ($truthy($a = $rb_le(a.$range().$begin_pos(), insertion_pos)) ? $rb_le(insertion_pos, a.$range().$end_pos()) : $a);}, $$22.$$s = self, $$22.$$arity = 1, $$22)) + } else { return nil }; - }, TMP_Rewriter_clobbered_insertion$q_21.$$arity = 1); + }, $Rewriter_clobbered_insertion$ques$21.$$arity = 1); - Opal.defn(self, '$adjacent_insertions?', TMP_Rewriter_adjacent_insertions$q_23 = function(range) { - var TMP_22, self = this, result = nil; + Opal.def(self, '$adjacent_insertions?', $Rewriter_adjacent_insertions$ques$23 = function(range) { + var $$24, self = this, result = nil; if ($truthy(self.$active_insertions()['$&'](self.$adjacent_insertion_mask(range))['$!='](0))) { - result = $send(self.$active_queue(), 'select', [], (TMP_22 = function(a){var self = TMP_22.$$s || this, $a; -if (a == null) a = nil; - return ($truthy($a = a.$range()['$empty?']()) ? self['$adjacent?'](range, a.$range()) : $a)}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)); + result = $send(self.$active_queue(), 'select', [], ($$24 = function(a){var self = $$24.$$s || this, $a; + + + + if (a == null) { + a = nil; + }; + return ($truthy($a = a.$range()['$empty?']()) ? self['$adjacent?'](range, a.$range()) : $a);}, $$24.$$s = self, $$24.$$arity = 1, $$24)); if ($truthy(result['$empty?']())) { return nil - } else { + } else { return result }; - } else { + } else { return nil } - }, TMP_Rewriter_adjacent_insertions$q_23.$$arity = 1); + }, $Rewriter_adjacent_insertions$ques$23.$$arity = 1); - Opal.defn(self, '$adjacent_updates?', TMP_Rewriter_adjacent_updates$q_25 = function(range) { - var TMP_24, self = this; + Opal.def(self, '$adjacent_updates?', $Rewriter_adjacent_updates$ques$25 = function(range) { + var $$26, self = this; if ($truthy(self.$active_clobber()['$&'](self.$adjacent_position_mask(range))['$!='](0))) { - return $send(self.$active_queue(), 'select', [], (TMP_24 = function(a){var self = TMP_24.$$s || this; -if (a == null) a = nil; - return self['$adjacent?'](range, a.$range())}, TMP_24.$$s = self, TMP_24.$$arity = 1, TMP_24)) - } else { + return $send(self.$active_queue(), 'select', [], ($$26 = function(a){var self = $$26.$$s || this; + + + + if (a == null) { + a = nil; + }; + return self['$adjacent?'](range, a.$range());}, $$26.$$s = self, $$26.$$arity = 1, $$26)) + } else { return nil } - }, TMP_Rewriter_adjacent_updates$q_25.$$arity = 1); + }, $Rewriter_adjacent_updates$ques$25.$$arity = 1); - Opal.defn(self, '$replace_compatible_with_insertion?', TMP_Rewriter_replace_compatible_with_insertion$q_26 = function(replace, insertion) { + Opal.def(self, '$replace_compatible_with_insertion?', $Rewriter_replace_compatible_with_insertion$ques$27 = function(replace, insertion) { var $a, $b, self = this, offset = nil; return ($truthy($a = ($truthy($b = $rb_ge($rb_minus(replace.$replacement().$length(), replace.$range().$size()), insertion.$range().$size())) ? (offset = $rb_minus(insertion.$range().$begin_pos(), replace.$range().$begin_pos())) : $b)) ? replace.$replacement()['$[]'](offset, insertion.$replacement().$length())['$=='](insertion.$replacement()) : $a) - }, TMP_Rewriter_replace_compatible_with_insertion$q_26.$$arity = 2); + }, $Rewriter_replace_compatible_with_insertion$ques$27.$$arity = 2); - Opal.defn(self, '$can_merge?', TMP_Rewriter_can_merge$q_28 = function(action, existing) { - var TMP_27, self = this, range = nil; + Opal.def(self, '$can_merge?', $Rewriter_can_merge$ques$28 = function(action, existing) { + var $$29, self = this, range = nil; range = action.$range(); - return $send(existing, 'all?', [], (TMP_27 = function(other){var self = TMP_27.$$s || this, $a, overlap = nil, repl1_offset = nil, repl2_offset = nil, repl1_length = nil, repl2_length = nil, replacement1 = nil, replacement2 = nil; -if (other == null) other = nil; + return $send(existing, 'all?', [], ($$29 = function(other){var self = $$29.$$s || this, $a, overlap = nil, repl1_offset = nil, repl2_offset = nil, repl1_length = nil, repl2_length = nil, replacement1 = nil, replacement2 = nil; + + + if (other == null) { + other = nil; + }; overlap = range.$intersect(other.$range()); if ($truthy(overlap['$nil?']())) { return true;}; @@ -28313,186 +31937,210 @@ if (other == null) other = nil; repl2_length = [$rb_minus(range.$length(), repl1_offset), $rb_minus(action.$replacement().$length(), repl1_offset)].$max(); replacement1 = ($truthy($a = action.$replacement()['$[]'](repl1_offset, repl1_length)) ? $a : "".$freeze()); replacement2 = ($truthy($a = other.$replacement()['$[]'](repl2_offset, repl2_length)) ? $a : "".$freeze()); - return replacement1['$=='](replacement2);}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)); - }, TMP_Rewriter_can_merge$q_28.$$arity = 2); + return replacement1['$=='](replacement2);}, $$29.$$s = self, $$29.$$arity = 1, $$29)); + }, $Rewriter_can_merge$ques$28.$$arity = 2); - Opal.defn(self, '$merge_actions', TMP_Rewriter_merge_actions_31 = function $$merge_actions(action, existing) { - var TMP_29, TMP_30, self = this, actions = nil, range = nil; + Opal.def(self, '$merge_actions', $Rewriter_merge_actions$30 = function $$merge_actions(action, existing) { + var $$31, $$32, self = this, actions = nil, range = nil; + + + actions = $send(existing.$push(action), 'sort_by', [], ($$31 = function(a){var self = $$31.$$s || this; + + + + if (a == null) { + a = nil; + }; + return [a.$range().$begin_pos(), a.$range().$end_pos()];}, $$31.$$s = self, $$31.$$arity = 1, $$31)); + range = actions.$first().$range().$join($send(actions, 'max_by', [], ($$32 = function(a){var self = $$32.$$s || this; - actions = $send(existing.$push(action), 'sort_by', [], (TMP_29 = function(a){var self = TMP_29.$$s || this; -if (a == null) a = nil; - return [a.$range().$begin_pos(), a.$range().$end_pos()]}, TMP_29.$$s = self, TMP_29.$$arity = 1, TMP_29)); - range = actions.$first().$range().$join($send(actions, 'max_by', [], (TMP_30 = function(a){var self = TMP_30.$$s || this; -if (a == null) a = nil; - return a.$range().$end_pos()}, TMP_30.$$s = self, TMP_30.$$arity = 1, TMP_30)).$range()); - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriter'), 'Action').$new(range, self.$merge_replacements(actions)); - }, TMP_Rewriter_merge_actions_31.$$arity = 2); + + if (a == null) { + a = nil; + }; + return a.$range().$end_pos();}, $$32.$$s = self, $$32.$$arity = 1, $$32)).$range()); + return $$$($$($nesting, 'Rewriter'), 'Action').$new(range, self.$merge_replacements(actions)); + }, $Rewriter_merge_actions$30.$$arity = 2); - Opal.defn(self, '$merge_actions!', TMP_Rewriter_merge_actions$B_32 = function(action, existing) { + Opal.def(self, '$merge_actions!', $Rewriter_merge_actions$excl$33 = function(action, existing) { var self = this, new_action = nil; new_action = self.$merge_actions(action, existing); self.$active_queue().$delete(action); return self.$replace_actions(existing, new_action); - }, TMP_Rewriter_merge_actions$B_32.$$arity = 2); + }, $Rewriter_merge_actions$excl$33.$$arity = 2); - Opal.defn(self, '$merge_replacements', TMP_Rewriter_merge_replacements_34 = function $$merge_replacements(actions) { - var TMP_33, self = this, result = nil, prev_act = nil; + Opal.def(self, '$merge_replacements', $Rewriter_merge_replacements$34 = function $$merge_replacements(actions) { + var $$35, self = this, result = nil, prev_act = nil; - result = ""; + result = "".$dup(); prev_act = nil; - $send(actions, 'each', [], (TMP_33 = function(act){var self = TMP_33.$$s || this, $a, prev_end = nil, offset = nil; -if (act == null) act = nil; + $send(actions, 'each', [], ($$35 = function(act){var self = $$35.$$s || this, $a, prev_end = nil, offset = nil; + + + if (act == null) { + act = nil; + }; if ($truthy(($truthy($a = prev_act['$!']()) ? $a : act.$range()['$disjoint?'](prev_act.$range())))) { result['$<<'](act.$replacement()) - } else { + } else { prev_end = [$rb_plus(prev_act.$range().$begin_pos(), prev_act.$replacement().$length()), prev_act.$range().$end_pos()].$max(); offset = $rb_minus(prev_end, act.$range().$begin_pos()); if ($truthy($rb_lt(offset, act.$replacement().$size()))) { result['$<<'](act.$replacement()['$[]'](Opal.Range.$new(offset, -1, false)))}; }; - return (prev_act = act);}, TMP_33.$$s = self, TMP_33.$$arity = 1, TMP_33)); + return (prev_act = act);}, $$35.$$s = self, $$35.$$arity = 1, $$35)); return result; - }, TMP_Rewriter_merge_replacements_34.$$arity = 1); + }, $Rewriter_merge_replacements$34.$$arity = 1); - Opal.defn(self, '$replace_actions', TMP_Rewriter_replace_actions_36 = function $$replace_actions(old, updated) { - var TMP_35, self = this; + Opal.def(self, '$replace_actions', $Rewriter_replace_actions$36 = function $$replace_actions(old, updated) { + var $$37, self = this; - $send(old, 'each', [], (TMP_35 = function(act){var self = TMP_35.$$s || this; -if (act == null) act = nil; - return self.$active_queue().$delete(act)}, TMP_35.$$s = self, TMP_35.$$arity = 1, TMP_35)); + $send(old, 'each', [], ($$37 = function(act){var self = $$37.$$s || this; + + + + if (act == null) { + act = nil; + }; + return self.$active_queue().$delete(act);}, $$37.$$s = self, $$37.$$arity = 1, $$37)); return self.$active_queue()['$<<'](updated); - }, TMP_Rewriter_replace_actions_36.$$arity = 2); + }, $Rewriter_replace_actions$36.$$arity = 2); - Opal.defn(self, '$raise_clobber_error', TMP_Rewriter_raise_clobber_error_37 = function $$raise_clobber_error(action, existing) { + Opal.def(self, '$raise_clobber_error', $Rewriter_raise_clobber_error$38 = function $$raise_clobber_error(action, existing) { var self = this, diagnostic = nil; - diagnostic = Opal.const_get_relative($nesting, 'Diagnostic').$new("error", "invalid_action", $hash2(["action"], {"action": action}), action.$range()); + diagnostic = $$($nesting, 'Diagnostic').$new("error", "invalid_action", $hash2(["action"], {"action": action}), action.$range()); self.diagnostics.$process(diagnostic); - diagnostic = Opal.const_get_relative($nesting, 'Diagnostic').$new("note", "clobbered", $hash2(["action"], {"action": existing['$[]'](0)}), existing['$[]'](0).$range()); + diagnostic = $$($nesting, 'Diagnostic').$new("note", "clobbered", $hash2(["action"], {"action": existing['$[]'](0)}), existing['$[]'](0).$range()); self.diagnostics.$process(diagnostic); - return self.$raise(Opal.const_get_relative($nesting, 'ClobberingError'), "Parser::Source::Rewriter detected clobbering"); - }, TMP_Rewriter_raise_clobber_error_37.$$arity = 2); + return self.$raise($$($nesting, 'ClobberingError'), "Parser::Source::Rewriter detected clobbering"); + }, $Rewriter_raise_clobber_error$38.$$arity = 2); - Opal.defn(self, '$in_transaction?', TMP_Rewriter_in_transaction$q_38 = function() { + Opal.def(self, '$in_transaction?', $Rewriter_in_transaction$ques$39 = function() { var self = this; return self.pending_queue['$nil?']()['$!']() - }, TMP_Rewriter_in_transaction$q_38.$$arity = 0); + }, $Rewriter_in_transaction$ques$39.$$arity = 0); - Opal.defn(self, '$active_queue', TMP_Rewriter_active_queue_39 = function $$active_queue() { + Opal.def(self, '$active_queue', $Rewriter_active_queue$40 = function $$active_queue() { var $a, self = this; return ($truthy($a = self.pending_queue) ? $a : self.queue) - }, TMP_Rewriter_active_queue_39.$$arity = 0); + }, $Rewriter_active_queue$40.$$arity = 0); - Opal.defn(self, '$active_clobber', TMP_Rewriter_active_clobber_40 = function $$active_clobber() { + Opal.def(self, '$active_clobber', $Rewriter_active_clobber$41 = function $$active_clobber() { var $a, self = this; return ($truthy($a = self.pending_clobber) ? $a : self.clobber) - }, TMP_Rewriter_active_clobber_40.$$arity = 0); + }, $Rewriter_active_clobber$41.$$arity = 0); - Opal.defn(self, '$active_insertions', TMP_Rewriter_active_insertions_41 = function $$active_insertions() { + Opal.def(self, '$active_insertions', $Rewriter_active_insertions$42 = function $$active_insertions() { var $a, self = this; return ($truthy($a = self.pending_insertions) ? $a : self.insertions) - }, TMP_Rewriter_active_insertions_41.$$arity = 0); + }, $Rewriter_active_insertions$42.$$arity = 0); - Opal.defn(self, '$active_clobber=', TMP_Rewriter_active_clobber$eq_42 = function(value) { + Opal.def(self, '$active_clobber=', $Rewriter_active_clobber$eq$43 = function(value) { var self = this; if ($truthy(self.pending_clobber)) { return (self.pending_clobber = value) - } else { + } else { return (self.clobber = value) } - }, TMP_Rewriter_active_clobber$eq_42.$$arity = 1); + }, $Rewriter_active_clobber$eq$43.$$arity = 1); - Opal.defn(self, '$active_insertions=', TMP_Rewriter_active_insertions$eq_43 = function(value) { + Opal.def(self, '$active_insertions=', $Rewriter_active_insertions$eq$44 = function(value) { var self = this; if ($truthy(self.pending_insertions)) { return (self.pending_insertions = value) - } else { + } else { return (self.insertions = value) } - }, TMP_Rewriter_active_insertions$eq_43.$$arity = 1); - return (Opal.defn(self, '$adjacent?', TMP_Rewriter_adjacent$q_44 = function(range1, range2) { + }, $Rewriter_active_insertions$eq$44.$$arity = 1); + + Opal.def(self, '$adjacent?', $Rewriter_adjacent$ques$45 = function(range1, range2) { var $a, self = this; return ($truthy($a = $rb_le(range1.$begin_pos(), range2.$end_pos())) ? $rb_le(range2.$begin_pos(), range1.$end_pos()) : $a) - }, TMP_Rewriter_adjacent$q_44.$$arity = 2), nil) && 'adjacent?'; + }, $Rewriter_adjacent$ques$45.$$arity = 2); + Opal.const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Source::Rewriter is deprecated.", "Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()); + return self.$extend($$($nesting, 'Deprecation')); })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/rewriter/action"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$include', '$attr_reader', '$alias_method', '$freeze', '$<=>', '$begin_pos', '$range', '$zero?', '$order', '$==', '$length', '$empty?', '$inspect']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Action(){}; - var self = $Action = $klass($base, $super, 'Action', $Action); + var self = $klass($base, $super, 'Action'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Action_initialize_1, TMP_Action_$lt$eq$gt_2, TMP_Action_to_s_3; + var $nesting = [self].concat($parent_nesting), $Action_initialize$1, $Action_$lt_eq_gt$2, $Action_to_s$3; - def.range = def.replacement = nil; + self.$$prototype.range = self.$$prototype.replacement = nil; - self.$include(Opal.const_get_relative($nesting, 'Comparable')); + self.$include($$($nesting, 'Comparable')); self.$attr_reader("range", "replacement", "allow_multiple_insertions", "order"); self.$alias_method("allow_multiple_insertions?", "allow_multiple_insertions"); - Opal.defn(self, '$initialize', TMP_Action_initialize_1 = function $$initialize(range, replacement, allow_multiple_insertions, order) { + Opal.def(self, '$initialize', $Action_initialize$1 = function $$initialize(range, replacement, allow_multiple_insertions, order) { var self = this; + + if (replacement == null) { replacement = ""; - } + }; + if (allow_multiple_insertions == null) { allow_multiple_insertions = false; - } + }; + if (order == null) { order = 0; - } - + }; self.range = range; self.replacement = replacement; self.allow_multiple_insertions = allow_multiple_insertions; self.order = order; return self.$freeze(); - }, TMP_Action_initialize_1.$$arity = -2); + }, $Action_initialize$1.$$arity = -2); - Opal.defn(self, '$<=>', TMP_Action_$lt$eq$gt_2 = function(other) { + Opal.def(self, '$<=>', $Action_$lt_eq_gt$2 = function(other) { var self = this, result = nil; result = self.$range().$begin_pos()['$<=>'](other.$range().$begin_pos()); if ($truthy(result['$zero?']())) { - } else { + } else { return result }; return self.$order()['$<=>'](other.$order()); - }, TMP_Action_$lt$eq$gt_2.$$arity = 1); - return (Opal.defn(self, '$to_s', TMP_Action_to_s_3 = function $$to_s() { + }, $Action_$lt_eq_gt$2.$$arity = 1); + return (Opal.def(self, '$to_s', $Action_to_s$3 = function $$to_s() { var $a, self = this; if ($truthy((($a = self.range.$length()['$=='](0)) ? self.replacement['$empty?']() : self.range.$length()['$=='](0)))) { @@ -28501,428 +32149,978 @@ Opal.modules["parser/source/rewriter/action"] = function(Opal) { return "" + "insert " + (self.replacement.$inspect()) } else if ($truthy(self.replacement['$empty?']())) { return "" + "remove " + (self.range.$length()) + " character(s)" - } else { + } else { return "" + "replace " + (self.range.$length()) + " character(s) with " + (self.replacement.$inspect()) } - }, TMP_Action_to_s_3.$$arity = 0), nil) && 'to_s'; - })(Opal.const_get_relative($nesting, 'Rewriter'), null, $nesting) + }, $Action_to_s$3.$$arity = 0), nil) && 'to_s'; + })($$($nesting, 'Rewriter'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/source/tree_rewriter"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + function $rb_lt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); + } + function $rb_gt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $lambda = Opal.lambda, $gvars = Opal.gvars, $send = Opal.send, $truthy = Opal.truthy, $hash = Opal.hash; + + Opal.add_stubs(['$attr_reader', '$new', '$puts', '$render', '$consumer=', '$-', '$freeze', '$check_policy_validity', '$method', '$adjust', '$source_range', '$combine', '$to_s', '$replace', '$wrap', '$dup', '$source', '$each', '$ordered_replacements', '$+', '$begin_pos', '$length', '$[]=', '$raise', '$class', '$warn_of_deprecation', '$insert_before', '$insert_after', '$join', '$extend', '$private', '$values', '$empty?', '$check_range_validity', '$<', '$>', '$end_pos', '$size', '$==', '$[]', '$trigger_policy', '$process']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $TreeRewriter_initialize$1, $TreeRewriter_replace$3, $TreeRewriter_wrap$4, $TreeRewriter_remove$5, $TreeRewriter_insert_before$6, $TreeRewriter_insert_after$7, $TreeRewriter_process$8, $TreeRewriter_transaction$10, $TreeRewriter_in_transaction$ques$11, $TreeRewriter_insert_before_multi$12, $TreeRewriter_insert_after_multi$13, $TreeRewriter_check_policy_validity$14, $TreeRewriter_combine$15, $TreeRewriter_check_range_validity$16, $TreeRewriter_enforce_policy$17, $TreeRewriter_trigger_policy$18; + + self.$$prototype.diagnostics = self.$$prototype.source_buffer = self.$$prototype.enforcer = self.$$prototype.action_root = self.$$prototype.in_transaction = self.$$prototype.policy = nil; + + self.$attr_reader("source_buffer"); + self.$attr_reader("diagnostics"); + + Opal.def(self, '$initialize', $TreeRewriter_initialize$1 = function $$initialize(source_buffer, $kwargs) { + var crossing_deletions, different_replacements, swallowed_insertions, $$2, self = this, $writer = nil, all_encompassing_range = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + crossing_deletions = $kwargs.$$smap["crossing_deletions"]; + if (crossing_deletions == null) { + crossing_deletions = "accept" + }; + + different_replacements = $kwargs.$$smap["different_replacements"]; + if (different_replacements == null) { + different_replacements = "accept" + }; + + swallowed_insertions = $kwargs.$$smap["swallowed_insertions"]; + if (swallowed_insertions == null) { + swallowed_insertions = "accept" + }; + self.diagnostics = $$$($$($nesting, 'Diagnostic'), 'Engine').$new(); + + $writer = [$lambda(($$2 = function(diag){var self = $$2.$$s || this; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diag == null) { + diag = nil; + }; + return $gvars.stderr.$puts(diag.$render());}, $$2.$$s = self, $$2.$$arity = 1, $$2))]; + $send(self.diagnostics, 'consumer=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + self.in_transaction = false; + self.policy = $hash2(["crossing_deletions", "different_replacements", "swallowed_insertions"], {"crossing_deletions": crossing_deletions, "different_replacements": different_replacements, "swallowed_insertions": swallowed_insertions}).$freeze(); + self.$check_policy_validity(); + self.enforcer = self.$method("enforce_policy"); + all_encompassing_range = self.source_buffer.$source_range().$adjust($hash2(["begin_pos", "end_pos"], {"begin_pos": -1, "end_pos": 1})); + return (self.action_root = $$$($$($nesting, 'TreeRewriter'), 'Action').$new(all_encompassing_range, self.enforcer)); + }, $TreeRewriter_initialize$1.$$arity = -2); + + Opal.def(self, '$replace', $TreeRewriter_replace$3 = function $$replace(range, content) { + var self = this; + + return self.$combine(range, $hash2(["replacement"], {"replacement": content})) + }, $TreeRewriter_replace$3.$$arity = 2); + + Opal.def(self, '$wrap', $TreeRewriter_wrap$4 = function $$wrap(range, insert_before, insert_after) { + var self = this; + + return self.$combine(range, $hash2(["insert_before", "insert_after"], {"insert_before": insert_before.$to_s(), "insert_after": insert_after.$to_s()})) + }, $TreeRewriter_wrap$4.$$arity = 3); + + Opal.def(self, '$remove', $TreeRewriter_remove$5 = function $$remove(range) { + var self = this; + + return self.$replace(range, "".$freeze()) + }, $TreeRewriter_remove$5.$$arity = 1); + + Opal.def(self, '$insert_before', $TreeRewriter_insert_before$6 = function $$insert_before(range, content) { + var self = this; + + return self.$wrap(range, content, nil) + }, $TreeRewriter_insert_before$6.$$arity = 2); + + Opal.def(self, '$insert_after', $TreeRewriter_insert_after$7 = function $$insert_after(range, content) { + var self = this; + + return self.$wrap(range, nil, content) + }, $TreeRewriter_insert_after$7.$$arity = 2); + + Opal.def(self, '$process', $TreeRewriter_process$8 = function $$process() { + var $$9, self = this, source = nil, adjustment = nil; + + + source = self.source_buffer.$source().$dup(); + adjustment = 0; + $send(self.action_root.$ordered_replacements(), 'each', [], ($$9 = function(range, replacement){var self = $$9.$$s || this, begin_pos = nil, end_pos = nil, $writer = nil; + + + + if (range == null) { + range = nil; + }; + + if (replacement == null) { + replacement = nil; + }; + begin_pos = $rb_plus(range.$begin_pos(), adjustment); + end_pos = $rb_plus(begin_pos, range.$length()); + + $writer = [Opal.Range.$new(begin_pos,end_pos, true), replacement]; + $send(source, '[]=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (adjustment = $rb_plus(adjustment, $rb_minus(replacement.$length(), range.$length())));}, $$9.$$s = self, $$9.$$arity = 2, $$9)); + return source; + }, $TreeRewriter_process$8.$$arity = 0); + + Opal.def(self, '$transaction', $TreeRewriter_transaction$10 = function $$transaction() { + var $iter = $TreeRewriter_transaction$10.$$p, $yield = $iter || nil, self = this, previous = nil, restore_root = nil; + + if ($iter) $TreeRewriter_transaction$10.$$p = null; + return (function() { try { + + if (($yield !== nil)) { + } else { + self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") + }; + previous = self.in_transaction; + self.in_transaction = true; + restore_root = self.action_root; + Opal.yieldX($yield, []); + restore_root = nil; + return self; + } finally { + ((function() {if ($truthy(restore_root)) { + return (self.action_root = restore_root) + } else { + return nil + }; return nil; })(), (self.in_transaction = previous)) + }; })() + }, $TreeRewriter_transaction$10.$$arity = 0); + + Opal.def(self, '$in_transaction?', $TreeRewriter_in_transaction$ques$11 = function() { + var self = this; + + return self.in_transaction + }, $TreeRewriter_in_transaction$ques$11.$$arity = 0); + + Opal.def(self, '$insert_before_multi', $TreeRewriter_insert_before_multi$12 = function $$insert_before_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_before(range, text); + }, $TreeRewriter_insert_before_multi$12.$$arity = 2); + + Opal.def(self, '$insert_after_multi', $TreeRewriter_insert_after_multi$13 = function $$insert_after_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_after(range, text); + }, $TreeRewriter_insert_after_multi$13.$$arity = 2); + Opal.const_set($nesting[0], 'DEPRECATION_WARNING', ["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.", "Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()); + self.$extend($$($nesting, 'Deprecation')); + self.$private(); + Opal.const_set($nesting[0], 'ACTIONS', ["accept", "warn", "raise"].$freeze()); + + Opal.def(self, '$check_policy_validity', $TreeRewriter_check_policy_validity$14 = function $$check_policy_validity() { + var self = this, invalid = nil; + + + invalid = $rb_minus(self.policy.$values(), $$($nesting, 'ACTIONS')); + if ($truthy(invalid['$empty?']())) { + return nil + } else { + return self.$raise($$($nesting, 'ArgumentError'), "" + "Invalid policy: " + (invalid.$join(", "))) + }; + }, $TreeRewriter_check_policy_validity$14.$$arity = 0); + + Opal.def(self, '$combine', $TreeRewriter_combine$15 = function $$combine(range, attributes) { + var self = this, action = nil; + + + range = self.$check_range_validity(range); + action = $$$($$($nesting, 'TreeRewriter'), 'Action').$new(range, self.enforcer, attributes); + self.action_root = self.action_root.$combine(action); + return self; + }, $TreeRewriter_combine$15.$$arity = 2); + + Opal.def(self, '$check_range_validity', $TreeRewriter_check_range_validity$16 = function $$check_range_validity(range) { + var $a, self = this; + + + if ($truthy(($truthy($a = $rb_lt(range.$begin_pos(), 0)) ? $a : $rb_gt(range.$end_pos(), self.source_buffer.$source().$size())))) { + self.$raise($$($nesting, 'IndexError'), "" + "The range " + (range) + " is outside the bounds of the source")}; + return range; + }, $TreeRewriter_check_range_validity$16.$$arity = 1); + + Opal.def(self, '$enforce_policy', $TreeRewriter_enforce_policy$17 = function $$enforce_policy(event) { + var $iter = $TreeRewriter_enforce_policy$17.$$p, $yield = $iter || nil, self = this, values = nil; + + if ($iter) $TreeRewriter_enforce_policy$17.$$p = null; + + if (self.policy['$[]'](event)['$==']("accept")) { + return nil}; + if ($truthy((values = Opal.yieldX($yield, [])))) { + } else { + return nil + }; + return self.$trigger_policy(event, Opal.to_hash(values)); + }, $TreeRewriter_enforce_policy$17.$$arity = 1); + Opal.const_set($nesting[0], 'POLICY_TO_LEVEL', $hash2(["warn", "raise"], {"warn": "warning", "raise": "error"}).$freeze()); + return (Opal.def(self, '$trigger_policy', $TreeRewriter_trigger_policy$18 = function $$trigger_policy(event, $kwargs) { + var range, conflict, arguments$, $a, $b, self = this, action = nil, diag = nil, highlights = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) { + range = self.$raise() + }; + + conflict = $kwargs.$$smap["conflict"]; + if (conflict == null) { + conflict = nil + }; + + arguments$ = Opal.kwrestargs($kwargs, {'range': true,'conflict': true});; + action = ($truthy($a = self.policy['$[]'](event)) ? $a : "raise"); + diag = $$$($$($nesting, 'Parser'), 'Diagnostic').$new($$($nesting, 'POLICY_TO_LEVEL')['$[]'](action), event, arguments$, range); + self.diagnostics.$process(diag); + if ($truthy(conflict)) { + + $b = conflict, $a = Opal.to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (highlights = $slice.call($a, 1)), $b; + diag = $$$($$($nesting, 'Parser'), 'Diagnostic').$new($$($nesting, 'POLICY_TO_LEVEL')['$[]'](action), "" + (event) + "_conflict", arguments$, range, highlights); + self.diagnostics.$process(diag);}; + if (action['$==']("raise")) { + return self.$raise($$$($$($nesting, 'Parser'), 'ClobberingError'), "Parser::Source::TreeRewriter detected clobbering") + } else { + return nil + }; + }, $TreeRewriter_trigger_policy$18.$$arity = -2), nil) && 'trigger_policy'; + })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; + + Opal.add_stubs(['$attr_reader', '$freeze', '$insertion?', '$replacement', '$do_combine', '$empty?', '$<<', '$begin', '$concat', '$flat_map', '$sort_by', '$to_proc', '$end', '$!', '$insert_before', '$insert_after', '$protected', '$swallow', '$new', '$class', '$==', '$range', '$merge', '$place_in_hierachy', '$group_by', '$relationship_with', '$[]', '$fuse_deletions', '$with', '$inject', '$map', '$contains?', '$contained?', '$disjoint?', '$call', '$call_enforcer_for_merge', '$!=', '$select']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Action'); + + var $nesting = [self].concat($parent_nesting), $Action_initialize$1, $Action_combine$2, $Action_ordered_replacements$3, $Action_insertion$ques$4, $Action_with$5, $Action_do_combine$6, $Action_place_in_hierachy$7, $Action_fuse_deletions$9, $Action_relationship_with$10, $Action_merge$13, $Action_call_enforcer_for_merge$14, $Action_swallow$16; + + self.$$prototype.insert_before = self.$$prototype.range = self.$$prototype.replacement = self.$$prototype.children = self.$$prototype.insert_after = self.$$prototype.enforcer = nil; + + self.$attr_reader("range", "replacement", "insert_before", "insert_after"); + + Opal.def(self, '$initialize', $Action_initialize$1 = function $$initialize(range, enforcer, $kwargs) { + var insert_before, replacement, insert_after, children, $a, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) { + insert_before = "" + }; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) { + replacement = nil + }; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) { + insert_after = "" + }; + + children = $kwargs.$$smap["children"]; + if (children == null) { + children = [] + }; + $a = [range, enforcer, children.$freeze(), insert_before.$freeze(), replacement, insert_after.$freeze()], (self.range = $a[0]), (self.enforcer = $a[1]), (self.children = $a[2]), (self.insert_before = $a[3]), (self.replacement = $a[4]), (self.insert_after = $a[5]), $a; + return self.$freeze(); + }, $Action_initialize$1.$$arity = -3); + + Opal.def(self, '$combine', $Action_combine$2 = function $$combine(action) { + var $a, self = this; + + + if ($truthy(($truthy($a = action['$insertion?']()) ? $a : action.$replacement()))) { + } else { + return self + }; + return self.$do_combine(action); + }, $Action_combine$2.$$arity = 1); + + Opal.def(self, '$ordered_replacements', $Action_ordered_replacements$3 = function $$ordered_replacements() { + var self = this, reps = nil; + + + reps = []; + if ($truthy(self.insert_before['$empty?']())) { + } else { + reps['$<<']([self.range.$begin(), self.insert_before]) + }; + if ($truthy(self.replacement)) { + reps['$<<']([self.range, self.replacement])}; + reps.$concat($send($send(self.children, 'sort_by', [], "range".$to_proc()), 'flat_map', [], "ordered_replacements".$to_proc())); + if ($truthy(self.insert_after['$empty?']())) { + } else { + reps['$<<']([self.range.$end(), self.insert_after]) + }; + return reps; + }, $Action_ordered_replacements$3.$$arity = 0); + + Opal.def(self, '$insertion?', $Action_insertion$ques$4 = function() { + var $a, $b, self = this; + + return ($truthy($a = ($truthy($b = self.$insert_before()['$empty?']()['$!']()) ? $b : self.$insert_after()['$empty?']()['$!']())) ? $a : ($truthy($b = self.$replacement()) ? self.$replacement()['$empty?']()['$!']() : $b)) + }, $Action_insertion$ques$4.$$arity = 0); + self.$protected(); + + Opal.def(self, '$with', $Action_with$5 = function($kwargs) { + var range, children, insert_before, replacement, insert_after, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) { + range = self.range + }; + + children = $kwargs.$$smap["children"]; + if (children == null) { + children = self.children + }; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) { + insert_before = self.insert_before + }; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) { + replacement = self.replacement + }; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) { + insert_after = self.insert_after + }; + if ($truthy(replacement)) { + children = self.$swallow(children)}; + return self.$class().$new(range, self.enforcer, $hash2(["children", "insert_before", "replacement", "insert_after"], {"children": children, "insert_before": insert_before, "replacement": replacement, "insert_after": insert_after})); + }, $Action_with$5.$$arity = -1); + + Opal.def(self, '$do_combine', $Action_do_combine$6 = function $$do_combine(action) { + var self = this; + + if (action.$range()['$=='](self.range)) { + return self.$merge(action) + } else { + return self.$place_in_hierachy(action) + } + }, $Action_do_combine$6.$$arity = 1); + + Opal.def(self, '$place_in_hierachy', $Action_place_in_hierachy$7 = function $$place_in_hierachy(action) { + var $$8, self = this, family = nil, extra_sibbling = nil; + + + family = $send(self.children, 'group_by', [], ($$8 = function(child){var self = $$8.$$s || this; + + + + if (child == null) { + child = nil; + }; + return child.$relationship_with(action);}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + if ($truthy(family['$[]']("fusible"))) { + return self.$fuse_deletions(action, family['$[]']("fusible"), [].concat(Opal.to_a(family['$[]']("sibbling"))).concat(Opal.to_a(family['$[]']("child")))) + } else { + + extra_sibbling = (function() {if ($truthy(family['$[]']("parent"))) { + return family['$[]']("parent")['$[]'](0).$do_combine(action) + } else if ($truthy(family['$[]']("child"))) { + return action.$with($hash2(["children"], {"children": family['$[]']("child")})) + } else { + return action + }; return nil; })(); + return self.$with($hash2(["children"], {"children": [].concat(Opal.to_a(family['$[]']("sibbling"))).concat([extra_sibbling])})); + }; + }, $Action_place_in_hierachy$7.$$arity = 1); + + Opal.def(self, '$fuse_deletions', $Action_fuse_deletions$9 = function $$fuse_deletions(action, fusible, other_sibblings) { + var self = this, without_fusible = nil, fused_range = nil, fused_deletion = nil; + + + without_fusible = self.$with($hash2(["children"], {"children": other_sibblings})); + fused_range = $send([action].concat(Opal.to_a(fusible)), 'map', [], "range".$to_proc()).$inject("join"); + fused_deletion = action.$with($hash2(["range"], {"range": fused_range})); + return without_fusible.$do_combine(fused_deletion); + }, $Action_fuse_deletions$9.$$arity = 3); + + Opal.def(self, '$relationship_with', $Action_relationship_with$10 = function $$relationship_with(action) { + var $a, $$11, $$12, self = this; + + if ($truthy(($truthy($a = action.$range()['$=='](self.range)) ? $a : self.range['$contains?'](action.$range())))) { + return "parent" + } else if ($truthy(self.range['$contained?'](action.$range()))) { + return "child" + } else if ($truthy(self.range['$disjoint?'](action.$range()))) { + return "sibbling" + } else if ($truthy(($truthy($a = action['$insertion?']()['$!']()) ? self['$insertion?']()['$!']() : $a))) { + + $send(self.enforcer, 'call', ["crossing_deletions"], ($$11 = function(){var self = $$11.$$s || this; + if (self.range == null) self.range = nil; + + return $hash2(["range", "conflict"], {"range": action.$range(), "conflict": self.range})}, $$11.$$s = self, $$11.$$arity = 0, $$11)); + return "fusible"; + } else { + return $send(self.enforcer, 'call', ["crossing_insertions"], ($$12 = function(){var self = $$12.$$s || this; + if (self.range == null) self.range = nil; + + return $hash2(["range", "conflict"], {"range": action.$range(), "conflict": self.range})}, $$12.$$s = self, $$12.$$arity = 0, $$12)) + } + }, $Action_relationship_with$10.$$arity = 1); + + Opal.def(self, '$merge', $Action_merge$13 = function $$merge(action) { + var $a, self = this; + + + self.$call_enforcer_for_merge(action); + return self.$with($hash2(["insert_before", "replacement", "insert_after"], {"insert_before": "" + (action.$insert_before()) + (self.$insert_before()), "replacement": ($truthy($a = action.$replacement()) ? $a : self.replacement), "insert_after": "" + (self.$insert_after()) + (action.$insert_after())})); + }, $Action_merge$13.$$arity = 1); + + Opal.def(self, '$call_enforcer_for_merge', $Action_call_enforcer_for_merge$14 = function $$call_enforcer_for_merge(action) { + var $$15, self = this; + + return $send(self.enforcer, 'call', ["different_replacements"], ($$15 = function(){var self = $$15.$$s || this, $a, $b; + if (self.replacement == null) self.replacement = nil; + if (self.range == null) self.range = nil; + + if ($truthy(($truthy($a = ($truthy($b = self.replacement) ? action.$replacement() : $b)) ? self.replacement['$!='](action.$replacement()) : $a))) { + return $hash2(["range", "replacement", "other_replacement"], {"range": self.range, "replacement": action.$replacement(), "other_replacement": self.replacement}) + } else { + return nil + }}, $$15.$$s = self, $$15.$$arity = 0, $$15)) + }, $Action_call_enforcer_for_merge$14.$$arity = 1); + return (Opal.def(self, '$swallow', $Action_swallow$16 = function $$swallow(children) { + var $$17, self = this; + + + $send(self.enforcer, 'call', ["swallowed_insertions"], ($$17 = function(){var self = $$17.$$s || this, insertions = nil; + if (self.range == null) self.range = nil; + + + insertions = $send(children, 'select', [], "insertion?".$to_proc()); + if ($truthy(insertions['$empty?']())) { + return nil + } else { + return $hash2(["range", "conflict"], {"range": self.range, "conflict": $send(insertions, 'map', [], "range".$to_proc())}) + };}, $$17.$$s = self, $$17.$$arity = 0, $$17)); + return []; + }, $Action_swallow$16.$$arity = 1), nil) && 'swallow'; + })($$($nesting, 'TreeRewriter'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range; Opal.add_stubs(['$attr_reader', '$freeze', '$line', '$alias_method', '$column', '$last_line', '$last_column', '$with', '$update_expression', '$==', '$class', '$reduce', '$map', '$instance_variables', '$instance_variable_get', '$send', '$inject', '$to_sym', '$[]', '$[]=', '$-', '$protected', '$tap', '$dup', '$to_proc']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Map(){}; - var self = $Map = $klass($base, $super, 'Map', $Map); + var self = $klass($base, $super, 'Map'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Map_initialize_1, TMP_Map_initialize_copy_2, TMP_Map_node$eq_3, TMP_Map_line_4, TMP_Map_column_5, TMP_Map_last_line_6, TMP_Map_last_column_7, TMP_Map_with_expression_9, TMP_Map_$eq$eq_11, TMP_Map_to_hash_13, TMP_Map_with_14, TMP_Map_update_expression_15; + var $nesting = [self].concat($parent_nesting), $Map_initialize$1, $Map_initialize_copy$2, $Map_node$eq$3, $Map_line$4, $Map_column$5, $Map_last_line$6, $Map_last_column$7, $Map_with_expression$8, $Map_$eq_eq$10, $Map_to_hash$12, $Map_with$14, $Map_update_expression$15; - def.node = def.expression = nil; + self.$$prototype.node = self.$$prototype.expression = nil; self.$attr_reader("node"); self.$attr_reader("expression"); - Opal.defn(self, '$initialize', TMP_Map_initialize_1 = function $$initialize(expression) { + Opal.def(self, '$initialize', $Map_initialize$1 = function $$initialize(expression) { var self = this; return (self.expression = expression) - }, TMP_Map_initialize_1.$$arity = 1); + }, $Map_initialize$1.$$arity = 1); - Opal.defn(self, '$initialize_copy', TMP_Map_initialize_copy_2 = function $$initialize_copy(other) { - var self = this, $iter = TMP_Map_initialize_copy_2.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize_copy', $Map_initialize_copy$2 = function $$initialize_copy(other) { + var $iter = $Map_initialize_copy$2.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Map_initialize_copy_2.$$p = null; + if ($iter) $Map_initialize_copy$2.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize_copy', TMP_Map_initialize_copy_2, false), $zuper, $iter); + $send(self, Opal.find_super_dispatcher(self, 'initialize_copy', $Map_initialize_copy$2, false), $zuper, $iter); return (self.node = nil); - }, TMP_Map_initialize_copy_2.$$arity = 1); + }, $Map_initialize_copy$2.$$arity = 1); - Opal.defn(self, '$node=', TMP_Map_node$eq_3 = function(node) { + Opal.def(self, '$node=', $Map_node$eq$3 = function(node) { var self = this; self.node = node; self.$freeze(); return self.node; - }, TMP_Map_node$eq_3.$$arity = 1); + }, $Map_node$eq$3.$$arity = 1); - Opal.defn(self, '$line', TMP_Map_line_4 = function $$line() { + Opal.def(self, '$line', $Map_line$4 = function $$line() { var self = this; return self.expression.$line() - }, TMP_Map_line_4.$$arity = 0); + }, $Map_line$4.$$arity = 0); self.$alias_method("first_line", "line"); - Opal.defn(self, '$column', TMP_Map_column_5 = function $$column() { + Opal.def(self, '$column', $Map_column$5 = function $$column() { var self = this; return self.expression.$column() - }, TMP_Map_column_5.$$arity = 0); + }, $Map_column$5.$$arity = 0); - Opal.defn(self, '$last_line', TMP_Map_last_line_6 = function $$last_line() { + Opal.def(self, '$last_line', $Map_last_line$6 = function $$last_line() { var self = this; return self.expression.$last_line() - }, TMP_Map_last_line_6.$$arity = 0); + }, $Map_last_line$6.$$arity = 0); - Opal.defn(self, '$last_column', TMP_Map_last_column_7 = function $$last_column() { + Opal.def(self, '$last_column', $Map_last_column$7 = function $$last_column() { var self = this; return self.expression.$last_column() - }, TMP_Map_last_column_7.$$arity = 0); + }, $Map_last_column$7.$$arity = 0); - Opal.defn(self, '$with_expression', TMP_Map_with_expression_9 = function $$with_expression(expression_l) { - var TMP_8, self = this; + Opal.def(self, '$with_expression', $Map_with_expression$8 = function $$with_expression(expression_l) { + var $$9, self = this; + + return $send(self, 'with', [], ($$9 = function(map){var self = $$9.$$s || this; - return $send(self, 'with', [], (TMP_8 = function(map){var self = TMP_8.$$s || this; -if (map == null) map = nil; - return map.$update_expression(expression_l)}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)) - }, TMP_Map_with_expression_9.$$arity = 1); + + + if (map == null) { + map = nil; + }; + return map.$update_expression(expression_l);}, $$9.$$s = self, $$9.$$arity = 1, $$9)) + }, $Map_with_expression$8.$$arity = 1); - Opal.defn(self, '$==', TMP_Map_$eq$eq_11 = function(other) { - var $a, TMP_10, self = this; + Opal.def(self, '$==', $Map_$eq_eq$10 = function(other) { + var $a, $$11, self = this; - return (($a = other.$class()['$=='](self.$class())) ? $send(self.$instance_variables(), 'map', [], (TMP_10 = function(ivar){var self = TMP_10.$$s || this; -if (ivar == null) ivar = nil; - return self.$instance_variable_get(ivar)['$=='](other.$send("instance_variable_get", ivar))}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10)).$reduce("&") : other.$class()['$=='](self.$class())) - }, TMP_Map_$eq$eq_11.$$arity = 1); + return (($a = other.$class()['$=='](self.$class())) ? $send(self.$instance_variables(), 'map', [], ($$11 = function(ivar){var self = $$11.$$s || this; + + + + if (ivar == null) { + ivar = nil; + }; + return self.$instance_variable_get(ivar)['$=='](other.$send("instance_variable_get", ivar));}, $$11.$$s = self, $$11.$$arity = 1, $$11)).$reduce("&") : other.$class()['$=='](self.$class())) + }, $Map_$eq_eq$10.$$arity = 1); - Opal.defn(self, '$to_hash', TMP_Map_to_hash_13 = function $$to_hash() { - var TMP_12, self = this; + Opal.def(self, '$to_hash', $Map_to_hash$12 = function $$to_hash() { + var $$13, self = this; + + return $send(self.$instance_variables(), 'inject', [$hash2([], {})], ($$13 = function(hash, ivar){var self = $$13.$$s || this, $writer = nil; - return $send(self.$instance_variables(), 'inject', [$hash2([], {})], (TMP_12 = function(hash, ivar){var self = TMP_12.$$s || this, $writer = nil; -if (hash == null) hash = nil;if (ivar == null) ivar = nil; + + if (hash == null) { + hash = nil; + }; + + if (ivar == null) { + ivar = nil; + }; if (ivar.$to_sym()['$==']("@node")) { return hash;}; $writer = [ivar['$[]']($range(1, -1, false)).$to_sym(), self.$instance_variable_get(ivar)]; $send(hash, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - return hash;}, TMP_12.$$s = self, TMP_12.$$arity = 2, TMP_12)) - }, TMP_Map_to_hash_13.$$arity = 0); + return hash;}, $$13.$$s = self, $$13.$$arity = 2, $$13)) + }, $Map_to_hash$12.$$arity = 0); self.$protected(); - Opal.defn(self, '$with', TMP_Map_with_14 = function() { - var self = this, $iter = TMP_Map_with_14.$$p, block = $iter || nil; + Opal.def(self, '$with', $Map_with$14 = function() { + var $iter = $Map_with$14.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Map_with_14.$$p = null; - return $send(self.$dup(), 'tap', [], block.$to_proc()) - }, TMP_Map_with_14.$$arity = 0); - return (Opal.defn(self, '$update_expression', TMP_Map_update_expression_15 = function $$update_expression(expression_l) { + if ($iter) $Map_with$14.$$p = null; + + + if ($iter) $Map_with$14.$$p = null;; + return $send(self.$dup(), 'tap', [], block.$to_proc()); + }, $Map_with$14.$$arity = 0); + return (Opal.def(self, '$update_expression', $Map_update_expression$15 = function $$update_expression(expression_l) { var self = this; return (self.expression = expression_l) - }, TMP_Map_update_expression_15.$$arity = 1), nil) && 'update_expression'; + }, $Map_update_expression$15.$$arity = 1), nil) && 'update_expression'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/operator"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Operator(){}; - var self = $Operator = $klass($base, $super, 'Operator', $Operator); + var self = $klass($base, $super, 'Operator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Operator_initialize_1; + var $nesting = [self].concat($parent_nesting), $Operator_initialize$1; self.$attr_reader("operator"); - return (Opal.defn(self, '$initialize', TMP_Operator_initialize_1 = function $$initialize(operator, expression) { - var self = this, $iter = TMP_Operator_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Operator_initialize$1 = function $$initialize(operator, expression) { + var $iter = $Operator_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Operator_initialize_1.$$p = null; + if ($iter) $Operator_initialize$1.$$p = null; self.operator = operator; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Operator_initialize_1, false), [expression], null); - }, TMP_Operator_initialize_1.$$arity = 2), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Operator_initialize$1, false), [expression], null); + }, $Operator_initialize$1.$$arity = 2), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/collection"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Collection(){}; - var self = $Collection = $klass($base, $super, 'Collection', $Collection); + var self = $klass($base, $super, 'Collection'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Collection_initialize_1; + var $nesting = [self].concat($parent_nesting), $Collection_initialize$1; self.$attr_reader("begin"); self.$attr_reader("end"); - return (Opal.defn(self, '$initialize', TMP_Collection_initialize_1 = function $$initialize(begin_l, end_l, expression_l) { - var $a, self = this, $iter = TMP_Collection_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Collection_initialize$1 = function $$initialize(begin_l, end_l, expression_l) { + var $a, $iter = $Collection_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Collection_initialize_1.$$p = null; + if ($iter) $Collection_initialize$1.$$p = null; $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Collection_initialize_1, false), [expression_l], null); - }, TMP_Collection_initialize_1.$$arity = 3), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Collection_initialize$1, false), [expression_l], null); + }, $Collection_initialize$1.$$arity = 3), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/constant"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$with', '$update_operator', '$protected']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Constant(){}; - var self = $Constant = $klass($base, $super, 'Constant', $Constant); + var self = $klass($base, $super, 'Constant'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Constant_initialize_1, TMP_Constant_with_operator_3, TMP_Constant_update_operator_4; + var $nesting = [self].concat($parent_nesting), $Constant_initialize$1, $Constant_with_operator$2, $Constant_update_operator$4; self.$attr_reader("double_colon"); self.$attr_reader("name"); self.$attr_reader("operator"); - Opal.defn(self, '$initialize', TMP_Constant_initialize_1 = function $$initialize(double_colon, name, expression) { - var $a, self = this, $iter = TMP_Constant_initialize_1.$$p, $yield = $iter || nil; + Opal.def(self, '$initialize', $Constant_initialize$1 = function $$initialize(double_colon, name, expression) { + var $a, $iter = $Constant_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Constant_initialize_1.$$p = null; + if ($iter) $Constant_initialize$1.$$p = null; $a = [double_colon, name], (self.double_colon = $a[0]), (self.name = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Constant_initialize_1, false), [expression], null); - }, TMP_Constant_initialize_1.$$arity = 3); + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Constant_initialize$1, false), [expression], null); + }, $Constant_initialize$1.$$arity = 3); - Opal.defn(self, '$with_operator', TMP_Constant_with_operator_3 = function $$with_operator(operator_l) { - var TMP_2, self = this; + Opal.def(self, '$with_operator', $Constant_with_operator$2 = function $$with_operator(operator_l) { + var $$3, self = this; + + return $send(self, 'with', [], ($$3 = function(map){var self = $$3.$$s || this; - return $send(self, 'with', [], (TMP_2 = function(map){var self = TMP_2.$$s || this; -if (map == null) map = nil; - return map.$update_operator(operator_l)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)) - }, TMP_Constant_with_operator_3.$$arity = 1); + + + if (map == null) { + map = nil; + }; + return map.$update_operator(operator_l);}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + }, $Constant_with_operator$2.$$arity = 1); self.$protected(); - return (Opal.defn(self, '$update_operator', TMP_Constant_update_operator_4 = function $$update_operator(operator_l) { + return (Opal.def(self, '$update_operator', $Constant_update_operator$4 = function $$update_operator(operator_l) { var self = this; return (self.operator = operator_l) - }, TMP_Constant_update_operator_4.$$arity = 1), nil) && 'update_operator'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + }, $Constant_update_operator$4.$$arity = 1), nil) && 'update_operator'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/variable"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$with', '$update_operator', '$protected']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Variable(){}; - var self = $Variable = $klass($base, $super, 'Variable', $Variable); + var self = $klass($base, $super, 'Variable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Variable_initialize_1, TMP_Variable_with_operator_3, TMP_Variable_update_operator_4; + var $nesting = [self].concat($parent_nesting), $Variable_initialize$1, $Variable_with_operator$2, $Variable_update_operator$4; self.$attr_reader("name"); self.$attr_reader("operator"); - Opal.defn(self, '$initialize', TMP_Variable_initialize_1 = function $$initialize(name_l, expression_l) { - var self = this, $iter = TMP_Variable_initialize_1.$$p, $yield = $iter || nil; + Opal.def(self, '$initialize', $Variable_initialize$1 = function $$initialize(name_l, expression_l) { + var $iter = $Variable_initialize$1.$$p, $yield = $iter || nil, self = this; + if ($iter) $Variable_initialize$1.$$p = null; + + if (expression_l == null) { expression_l = name_l; - } - if ($iter) TMP_Variable_initialize_1.$$p = null; - + }; self.name = name_l; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Variable_initialize_1, false), [expression_l], null); - }, TMP_Variable_initialize_1.$$arity = -2); + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Variable_initialize$1, false), [expression_l], null); + }, $Variable_initialize$1.$$arity = -2); - Opal.defn(self, '$with_operator', TMP_Variable_with_operator_3 = function $$with_operator(operator_l) { - var TMP_2, self = this; + Opal.def(self, '$with_operator', $Variable_with_operator$2 = function $$with_operator(operator_l) { + var $$3, self = this; - return $send(self, 'with', [], (TMP_2 = function(map){var self = TMP_2.$$s || this; -if (map == null) map = nil; - return map.$update_operator(operator_l)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)) - }, TMP_Variable_with_operator_3.$$arity = 1); + return $send(self, 'with', [], ($$3 = function(map){var self = $$3.$$s || this; + + + + if (map == null) { + map = nil; + }; + return map.$update_operator(operator_l);}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + }, $Variable_with_operator$2.$$arity = 1); self.$protected(); - return (Opal.defn(self, '$update_operator', TMP_Variable_update_operator_4 = function $$update_operator(operator_l) { + return (Opal.def(self, '$update_operator', $Variable_update_operator$4 = function $$update_operator(operator_l) { var self = this; return (self.operator = operator_l) - }, TMP_Variable_update_operator_4.$$arity = 1), nil) && 'update_operator'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + }, $Variable_update_operator$4.$$arity = 1), nil) && 'update_operator'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/keyword"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Keyword(){}; - var self = $Keyword = $klass($base, $super, 'Keyword', $Keyword); + var self = $klass($base, $super, 'Keyword'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Keyword_initialize_1; + var $nesting = [self].concat($parent_nesting), $Keyword_initialize$1; self.$attr_reader("keyword"); self.$attr_reader("begin"); self.$attr_reader("end"); - return (Opal.defn(self, '$initialize', TMP_Keyword_initialize_1 = function $$initialize(keyword_l, begin_l, end_l, expression_l) { - var $a, self = this, $iter = TMP_Keyword_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Keyword_initialize$1 = function $$initialize(keyword_l, begin_l, end_l, expression_l) { + var $a, $iter = $Keyword_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Keyword_initialize_1.$$p = null; + if ($iter) $Keyword_initialize$1.$$p = null; self.keyword = keyword_l; $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Keyword_initialize_1, false), [expression_l], null); - }, TMP_Keyword_initialize_1.$$arity = 4), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Keyword_initialize$1, false), [expression_l], null); + }, $Keyword_initialize$1.$$arity = 4), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/definition"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$join']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Definition(){}; - var self = $Definition = $klass($base, $super, 'Definition', $Definition); + var self = $klass($base, $super, 'Definition'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Definition_initialize_1; + var $nesting = [self].concat($parent_nesting), $Definition_initialize$1; - def.keyword = def.end = nil; + self.$$prototype.keyword = self.$$prototype.end = nil; self.$attr_reader("keyword"); self.$attr_reader("operator"); self.$attr_reader("name"); self.$attr_reader("end"); - return (Opal.defn(self, '$initialize', TMP_Definition_initialize_1 = function $$initialize(keyword_l, operator_l, name_l, end_l) { - var self = this, $iter = TMP_Definition_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Definition_initialize$1 = function $$initialize(keyword_l, operator_l, name_l, end_l) { + var $iter = $Definition_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Definition_initialize_1.$$p = null; + if ($iter) $Definition_initialize$1.$$p = null; self.keyword = keyword_l; self.operator = operator_l; self.name = name_l; self.end = end_l; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Definition_initialize_1, false), [self.keyword.$join(self.end)], null); - }, TMP_Definition_initialize_1.$$arity = 4), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Definition_initialize$1, false), [self.keyword.$join(self.end)], null); + }, $Definition_initialize$1.$$arity = 4), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/send"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$with', '$update_operator', '$protected']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Send(){}; - var self = $Send = $klass($base, $super, 'Send', $Send); + var self = $klass($base, $super, 'Send'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Send_initialize_1, TMP_Send_with_operator_3, TMP_Send_update_operator_4; + var $nesting = [self].concat($parent_nesting), $Send_initialize$1, $Send_with_operator$2, $Send_update_operator$4; self.$attr_reader("dot"); @@ -28931,317 +33129,372 @@ Opal.modules["parser/source/map/send"] = function(Opal) { self.$attr_reader("begin"); self.$attr_reader("end"); - Opal.defn(self, '$initialize', TMP_Send_initialize_1 = function $$initialize(dot_l, selector_l, begin_l, end_l, expression_l) { - var $a, self = this, $iter = TMP_Send_initialize_1.$$p, $yield = $iter || nil; + Opal.def(self, '$initialize', $Send_initialize$1 = function $$initialize(dot_l, selector_l, begin_l, end_l, expression_l) { + var $a, $iter = $Send_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Send_initialize_1.$$p = null; + if ($iter) $Send_initialize$1.$$p = null; self.dot = dot_l; self.selector = selector_l; $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Send_initialize_1, false), [expression_l], null); - }, TMP_Send_initialize_1.$$arity = 5); + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Send_initialize$1, false), [expression_l], null); + }, $Send_initialize$1.$$arity = 5); - Opal.defn(self, '$with_operator', TMP_Send_with_operator_3 = function $$with_operator(operator_l) { - var TMP_2, self = this; + Opal.def(self, '$with_operator', $Send_with_operator$2 = function $$with_operator(operator_l) { + var $$3, self = this; - return $send(self, 'with', [], (TMP_2 = function(map){var self = TMP_2.$$s || this; -if (map == null) map = nil; - return map.$update_operator(operator_l)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)) - }, TMP_Send_with_operator_3.$$arity = 1); + return $send(self, 'with', [], ($$3 = function(map){var self = $$3.$$s || this; + + + + if (map == null) { + map = nil; + }; + return map.$update_operator(operator_l);}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + }, $Send_with_operator$2.$$arity = 1); self.$protected(); - return (Opal.defn(self, '$update_operator', TMP_Send_update_operator_4 = function $$update_operator(operator_l) { + return (Opal.def(self, '$update_operator', $Send_update_operator$4 = function $$update_operator(operator_l) { var self = this; return (self.operator = operator_l) - }, TMP_Send_update_operator_4.$$arity = 1), nil) && 'update_operator'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + }, $Send_update_operator$4.$$arity = 1), nil) && 'update_operator'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/source/map/index"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + + Opal.add_stubs(['$attr_reader', '$with', '$update_operator', '$protected']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Index'); + + var $nesting = [self].concat($parent_nesting), $Index_initialize$1, $Index_with_operator$2, $Index_update_operator$4; + + + self.$attr_reader("begin"); + self.$attr_reader("end"); + self.$attr_reader("operator"); + + Opal.def(self, '$initialize', $Index_initialize$1 = function $$initialize(begin_l, end_l, expression_l) { + var $a, $iter = $Index_initialize$1.$$p, $yield = $iter || nil, self = this; + + if ($iter) $Index_initialize$1.$$p = null; + + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + self.operator = nil; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Index_initialize$1, false), [expression_l], null); + }, $Index_initialize$1.$$arity = 3); + + Opal.def(self, '$with_operator', $Index_with_operator$2 = function $$with_operator(operator_l) { + var $$3, self = this; + + return $send(self, 'with', [], ($$3 = function(map){var self = $$3.$$s || this; + + + + if (map == null) { + map = nil; + }; + return map.$update_operator(operator_l);}, $$3.$$s = self, $$3.$$arity = 1, $$3)) + }, $Index_with_operator$2.$$arity = 1); + self.$protected(); + return (Opal.def(self, '$update_operator', $Index_update_operator$4 = function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, $Index_update_operator$4.$$arity = 1), nil) && 'update_operator'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/condition"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Condition(){}; - var self = $Condition = $klass($base, $super, 'Condition', $Condition); + var self = $klass($base, $super, 'Condition'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Condition_initialize_1; + var $nesting = [self].concat($parent_nesting), $Condition_initialize$1; self.$attr_reader("keyword"); self.$attr_reader("begin"); self.$attr_reader("else"); self.$attr_reader("end"); - return (Opal.defn(self, '$initialize', TMP_Condition_initialize_1 = function $$initialize(keyword_l, begin_l, else_l, end_l, expression_l) { - var $a, self = this, $iter = TMP_Condition_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Condition_initialize$1 = function $$initialize(keyword_l, begin_l, else_l, end_l, expression_l) { + var $a, $iter = $Condition_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Condition_initialize_1.$$p = null; + if ($iter) $Condition_initialize$1.$$p = null; self.keyword = keyword_l; $a = [begin_l, else_l, end_l], (self.begin = $a[0]), (self["else"] = $a[1]), (self.end = $a[2]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Condition_initialize_1, false), [expression_l], null); - }, TMP_Condition_initialize_1.$$arity = 5), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Condition_initialize$1, false), [expression_l], null); + }, $Condition_initialize$1.$$arity = 5), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/ternary"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Ternary(){}; - var self = $Ternary = $klass($base, $super, 'Ternary', $Ternary); + var self = $klass($base, $super, 'Ternary'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Ternary_initialize_1; + var $nesting = [self].concat($parent_nesting), $Ternary_initialize$1; self.$attr_reader("question"); self.$attr_reader("colon"); - return (Opal.defn(self, '$initialize', TMP_Ternary_initialize_1 = function $$initialize(question_l, colon_l, expression_l) { - var $a, self = this, $iter = TMP_Ternary_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Ternary_initialize$1 = function $$initialize(question_l, colon_l, expression_l) { + var $a, $iter = $Ternary_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Ternary_initialize_1.$$p = null; + if ($iter) $Ternary_initialize$1.$$p = null; $a = [question_l, colon_l], (self.question = $a[0]), (self.colon = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Ternary_initialize_1, false), [expression_l], null); - }, TMP_Ternary_initialize_1.$$arity = 3), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Ternary_initialize$1, false), [expression_l], null); + }, $Ternary_initialize$1.$$arity = 3), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/for"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $For(){}; - var self = $For = $klass($base, $super, 'For', $For); + var self = $klass($base, $super, 'For'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_For_initialize_1; + var $nesting = [self].concat($parent_nesting), $For_initialize$1; self.$attr_reader("keyword", "in"); self.$attr_reader("begin", "end"); - return (Opal.defn(self, '$initialize', TMP_For_initialize_1 = function $$initialize(keyword_l, in_l, begin_l, end_l, expression_l) { - var $a, self = this, $iter = TMP_For_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $For_initialize$1 = function $$initialize(keyword_l, in_l, begin_l, end_l, expression_l) { + var $a, $iter = $For_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_For_initialize_1.$$p = null; + if ($iter) $For_initialize$1.$$p = null; $a = [keyword_l, in_l], (self.keyword = $a[0]), (self["in"] = $a[1]), $a; $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_For_initialize_1, false), [expression_l], null); - }, TMP_For_initialize_1.$$arity = 5), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $For_initialize$1, false), [expression_l], null); + }, $For_initialize$1.$$arity = 5), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/rescue_body"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $RescueBody(){}; - var self = $RescueBody = $klass($base, $super, 'RescueBody', $RescueBody); + var self = $klass($base, $super, 'RescueBody'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RescueBody_initialize_1; + var $nesting = [self].concat($parent_nesting), $RescueBody_initialize$1; self.$attr_reader("keyword"); self.$attr_reader("assoc"); self.$attr_reader("begin"); - return (Opal.defn(self, '$initialize', TMP_RescueBody_initialize_1 = function $$initialize(keyword_l, assoc_l, begin_l, expression_l) { - var self = this, $iter = TMP_RescueBody_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $RescueBody_initialize$1 = function $$initialize(keyword_l, assoc_l, begin_l, expression_l) { + var $iter = $RescueBody_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_RescueBody_initialize_1.$$p = null; + if ($iter) $RescueBody_initialize$1.$$p = null; self.keyword = keyword_l; self.assoc = assoc_l; self.begin = begin_l; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_RescueBody_initialize_1, false), [expression_l], null); - }, TMP_RescueBody_initialize_1.$$arity = 4), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $RescueBody_initialize$1, false), [expression_l], null); + }, $RescueBody_initialize$1.$$arity = 4), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/heredoc"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Heredoc(){}; - var self = $Heredoc = $klass($base, $super, 'Heredoc', $Heredoc); + var self = $klass($base, $super, 'Heredoc'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Heredoc_initialize_1; + var $nesting = [self].concat($parent_nesting), $Heredoc_initialize$1; self.$attr_reader("heredoc_body"); self.$attr_reader("heredoc_end"); - return (Opal.defn(self, '$initialize', TMP_Heredoc_initialize_1 = function $$initialize(begin_l, body_l, end_l) { - var self = this, $iter = TMP_Heredoc_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $Heredoc_initialize$1 = function $$initialize(begin_l, body_l, end_l) { + var $iter = $Heredoc_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Heredoc_initialize_1.$$p = null; + if ($iter) $Heredoc_initialize$1.$$p = null; self.heredoc_body = body_l; self.heredoc_end = end_l; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Heredoc_initialize_1, false), [begin_l], null); - }, TMP_Heredoc_initialize_1.$$arity = 3), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Heredoc_initialize$1, false), [begin_l], null); + }, $Heredoc_initialize$1.$$arity = 3), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ObjcKwarg(){}; - var self = $ObjcKwarg = $klass($base, $super, 'ObjcKwarg', $ObjcKwarg); + var self = $klass($base, $super, 'ObjcKwarg'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ObjcKwarg_initialize_1; + var $nesting = [self].concat($parent_nesting), $ObjcKwarg_initialize$1; self.$attr_reader("keyword"); self.$attr_reader("operator"); self.$attr_reader("argument"); - return (Opal.defn(self, '$initialize', TMP_ObjcKwarg_initialize_1 = function $$initialize(keyword_l, operator_l, argument_l, expression_l) { - var $a, self = this, $iter = TMP_ObjcKwarg_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $ObjcKwarg_initialize$1 = function $$initialize(keyword_l, operator_l, argument_l, expression_l) { + var $a, $iter = $ObjcKwarg_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_ObjcKwarg_initialize_1.$$p = null; + if ($iter) $ObjcKwarg_initialize$1.$$p = null; $a = [keyword_l, operator_l, argument_l], (self.keyword = $a[0]), (self.operator = $a[1]), (self.argument = $a[2]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_ObjcKwarg_initialize_1, false), [expression_l], null); - }, TMP_ObjcKwarg_initialize_1.$$arity = 4), nil) && 'initialize'; - })(Opal.const_get_relative($nesting, 'Map'), Opal.const_get_relative($nesting, 'Map'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $ObjcKwarg_initialize$1, false), [expression_l], null); + }, $ObjcKwarg_initialize$1.$$arity = 4), nil) && 'initialize'; + })($$($nesting, 'Map'), $$($nesting, 'Map'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/syntax_error"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$attr_reader', '$message']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $SyntaxError(){}; - var self = $SyntaxError = $klass($base, $super, 'SyntaxError', $SyntaxError); + var self = $klass($base, $super, 'SyntaxError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SyntaxError_initialize_1; + var $nesting = [self].concat($parent_nesting), $SyntaxError_initialize$1; self.$attr_reader("diagnostic"); - return (Opal.defn(self, '$initialize', TMP_SyntaxError_initialize_1 = function $$initialize(diagnostic) { - var self = this, $iter = TMP_SyntaxError_initialize_1.$$p, $yield = $iter || nil; + return (Opal.def(self, '$initialize', $SyntaxError_initialize$1 = function $$initialize(diagnostic) { + var $iter = $SyntaxError_initialize$1.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_SyntaxError_initialize_1.$$p = null; + if ($iter) $SyntaxError_initialize$1.$$p = null; self.diagnostic = diagnostic; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_SyntaxError_initialize_1, false), [diagnostic.$message()], null); - }, TMP_SyntaxError_initialize_1.$$arity = 1), nil) && 'initialize'; - })($nesting[0], Opal.const_get_relative($nesting, 'StandardError'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $SyntaxError_initialize$1, false), [diagnostic.$message()], null); + }, $SyntaxError_initialize$1.$$arity = 1), nil) && 'initialize'; + })($nesting[0], $$($nesting, 'StandardError'), $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/clobbering_error"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ClobberingError(){}; - var self = $ClobberingError = $klass($base, $super, 'ClobberingError', $ClobberingError); + var self = $klass($base, $super, 'ClobberingError'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return nil - })($nesting[0], Opal.const_get_relative($nesting, 'RuntimeError'), $nesting) + })($nesting[0], $$($nesting, 'RuntimeError'), $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/diagnostic"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -29258,39 +33511,39 @@ Opal.modules["parser/diagnostic"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$freeze', '$attr_reader', '$include?', '$raise', '$join', '$inspect', '$dup', '$%', '$[]', '$==', '$line', '$last_line', '$is?', '$+', '$message', '$render_line', '$first_line_only', '$last_line_only', '$-', '$source_buffer', '$decompose_position', '$end_pos', '$>', '$private', '$source_line', '$*', '$length', '$each', '$line_range', '$intersect', '$column_range', '$size', '$[]=', '$!', '$>=', '$map', '$name', '$!=', '$resize', '$=~', '$source', '$new', '$begin_pos']); + Opal.add_stubs(['$freeze', '$attr_reader', '$include?', '$raise', '$join', '$inspect', '$dup', '$%', '$[]', '$==', '$line', '$last_line', '$is?', '$+', '$message', '$render_line', '$first_line_only', '$last_line_only', '$-', '$source_buffer', '$decompose_position', '$end_pos', '$>', '$private', '$source_line', '$*', '$length', '$each', '$line_range', '$intersect', '$column_range', '$size', '$[]=', '$!', '$>=', '$map', '$name', '$!=', '$resize', '$=~', '$source', '$adjust']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Diagnostic(){}; - var self = $Diagnostic = $klass($base, $super, 'Diagnostic', $Diagnostic); + var self = $klass($base, $super, 'Diagnostic'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Diagnostic_initialize_1, TMP_Diagnostic_message_2, TMP_Diagnostic_render_3, TMP_Diagnostic_render_line_6, TMP_Diagnostic_first_line_only_7, TMP_Diagnostic_last_line_only_8; + var $nesting = [self].concat($parent_nesting), $Diagnostic_initialize$1, $Diagnostic_message$2, $Diagnostic_render$3, $Diagnostic_render_line$4, $Diagnostic_first_line_only$7, $Diagnostic_last_line_only$8; - def.reason = def["arguments"] = def.location = def.level = def.highlights = nil; + self.$$prototype.reason = self.$$prototype["arguments"] = self.$$prototype.location = self.$$prototype.level = self.$$prototype.highlights = nil; Opal.const_set($nesting[0], 'LEVELS', ["note", "warning", "error", "fatal"].$freeze()); self.$attr_reader("level", "reason", "arguments"); self.$attr_reader("location", "highlights"); - Opal.defn(self, '$initialize', TMP_Diagnostic_initialize_1 = function $$initialize(level, reason, arguments$, location, highlights) { + Opal.def(self, '$initialize', $Diagnostic_initialize$1 = function $$initialize(level, reason, arguments$, location, highlights) { var $a, self = this; + + if (highlights == null) { highlights = []; - } - - if ($truthy(Opal.const_get_relative($nesting, 'LEVELS')['$include?'](level))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + ("" + "Diagnostic#level must be one of " + (Opal.const_get_relative($nesting, 'LEVELS').$join(", ")) + "; ") + ("" + (level.$inspect()) + " provided.")) + }; + if ($truthy($$($nesting, 'LEVELS')['$include?'](level))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "" + ("" + "Diagnostic#level must be one of " + ($$($nesting, 'LEVELS').$join(", ")) + "; ") + ("" + (level.$inspect()) + " provided.")) }; if ($truthy(location)) { - } else { + } else { self.$raise("Expected a location") }; self.level = level; @@ -29299,20 +33552,20 @@ Opal.modules["parser/diagnostic"] = function(Opal) { self.location = location; self.highlights = highlights.$dup().$freeze(); return self.$freeze(); - }, TMP_Diagnostic_initialize_1.$$arity = -5); + }, $Diagnostic_initialize$1.$$arity = -5); - Opal.defn(self, '$message', TMP_Diagnostic_message_2 = function $$message() { + Opal.def(self, '$message', $Diagnostic_message$2 = function $$message() { var self = this; - return Opal.const_get_relative($nesting, 'MESSAGES')['$[]'](self.reason)['$%'](self["arguments"]) - }, TMP_Diagnostic_message_2.$$arity = 0); + return $$($nesting, 'MESSAGES')['$[]'](self.reason)['$%'](self["arguments"]) + }, $Diagnostic_message$2.$$arity = 0); - Opal.defn(self, '$render', TMP_Diagnostic_render_3 = function $$render() { + Opal.def(self, '$render', $Diagnostic_render$3 = function $$render() { var $a, $b, self = this, first_line = nil, last_line = nil, num_lines = nil, buffer = nil, last_lineno = nil, last_column = nil; if ($truthy(($truthy($a = self.location.$line()['$=='](self.location.$last_line())) ? $a : self.location['$is?']("\n")))) { return $rb_plus(["" + (self.location) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(self.location)) - } else { + } else { first_line = self.$first_line_only(self.location); last_line = self.$last_line_only(self.location); @@ -29321,33 +33574,39 @@ Opal.modules["parser/diagnostic"] = function(Opal) { $b = buffer.$decompose_position(self.location.$end_pos()), $a = Opal.to_ary($b), (last_lineno = ($a[0] == null ? nil : $a[0])), (last_column = ($a[1] == null ? nil : $a[1])), $b; return $rb_plus($rb_plus(["" + (self.location) + "-" + (last_lineno) + ":" + (last_column) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(first_line, $rb_gt(num_lines, 2), false)), self.$render_line(last_line, false, true)); } - }, TMP_Diagnostic_render_3.$$arity = 0); + }, $Diagnostic_render$3.$$arity = 0); self.$private(); - Opal.defn(self, '$render_line', TMP_Diagnostic_render_line_6 = function $$render_line(range, ellipsis, range_end) { - var TMP_4, $a, TMP_5, self = this, source_line = nil, highlight_line = nil, $writer = nil; + Opal.def(self, '$render_line', $Diagnostic_render_line$4 = function $$render_line(range, ellipsis, range_end) { + var $$5, $a, $$6, self = this, source_line = nil, highlight_line = nil, $writer = nil; + + if (ellipsis == null) { ellipsis = false; - } + }; + if (range_end == null) { range_end = false; - } - + }; source_line = range.$source_line(); highlight_line = $rb_times(" ", source_line.$length()); - $send(self.highlights, 'each', [], (TMP_4 = function(highlight){var self = TMP_4.$$s || this, line_range = nil, $writer = nil; -if (highlight == null) highlight = nil; + $send(self.highlights, 'each', [], ($$5 = function(highlight){var self = $$5.$$s || this, line_range = nil, $writer = nil; + + + if (highlight == null) { + highlight = nil; + }; line_range = range.$source_buffer().$line_range(range.$line()); if ($truthy((highlight = highlight.$intersect(line_range)))) { $writer = [highlight.$column_range(), $rb_times("~", highlight.$size())]; $send(highlight_line, '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - } else { + } else { return nil - };}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); + };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); if ($truthy(range['$is?']("\n"))) { highlight_line = $rb_plus(highlight_line, "^") } else if ($truthy(($truthy($a = range_end['$!']()) ? $rb_ge(range.$size(), 1) : $a))) { @@ -29355,7 +33614,7 @@ if (highlight == null) highlight = nil; $writer = [range.$column_range(), $rb_plus("^", $rb_times("~", $rb_minus(range.$size(), 1)))]; $send(highlight_line, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; - } else { + } else { $writer = [range.$column_range(), $rb_times("~", range.$size())]; $send(highlight_line, '[]=', Opal.to_a($writer)); @@ -29363,68 +33622,73 @@ if (highlight == null) highlight = nil; }; if ($truthy(ellipsis)) { highlight_line = $rb_plus(highlight_line, "...")}; - return $send([source_line, highlight_line], 'map', [], (TMP_5 = function(line){var self = TMP_5.$$s || this; -if (line == null) line = nil; - return "" + (range.$source_buffer().$name()) + ":" + (range.$line()) + ": " + (line)}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)); - }, TMP_Diagnostic_render_line_6.$$arity = -2); + return $send([source_line, highlight_line], 'map', [], ($$6 = function(line){var self = $$6.$$s || this; + + + + if (line == null) { + line = nil; + }; + return "" + (range.$source_buffer().$name()) + ":" + (range.$line()) + ": " + (line);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); + }, $Diagnostic_render_line$4.$$arity = -2); - Opal.defn(self, '$first_line_only', TMP_Diagnostic_first_line_only_7 = function $$first_line_only(range) { + Opal.def(self, '$first_line_only', $Diagnostic_first_line_only$7 = function $$first_line_only(range) { var self = this; if ($truthy(range.$line()['$!='](range.$last_line()))) { return range.$resize(range.$source()['$=~'](/\n/)) - } else { + } else { return range } - }, TMP_Diagnostic_first_line_only_7.$$arity = 1); - return (Opal.defn(self, '$last_line_only', TMP_Diagnostic_last_line_only_8 = function $$last_line_only(range) { + }, $Diagnostic_first_line_only$7.$$arity = 1); + return (Opal.def(self, '$last_line_only', $Diagnostic_last_line_only$8 = function $$last_line_only(range) { var self = this; if ($truthy(range.$line()['$!='](range.$last_line()))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(range.$source_buffer(), $rb_plus(range.$begin_pos(), range.$source()['$=~'](/[^\n]*$/)), range.$end_pos()) - } else { + return range.$adjust($hash2(["begin_pos"], {"begin_pos": range.$source()['$=~'](/[^\n]*$/)})) + } else { return range } - }, TMP_Diagnostic_last_line_only_8.$$arity = 1), nil) && 'last_line_only'; + }, $Diagnostic_last_line_only$8.$$arity = 1), nil) && 'last_line_only'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/diagnostic/engine"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$attr_accessor', '$ignore?', '$call', '$raise?', '$raise', '$protected', '$==', '$level']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Engine(){}; - var self = $Engine = $klass($base, $super, 'Engine', $Engine); + var self = $klass($base, $super, 'Engine'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Engine_initialize_1, TMP_Engine_process_2, TMP_Engine_ignore$q_3, TMP_Engine_raise$q_4; + var $nesting = [self].concat($parent_nesting), $Engine_initialize$1, $Engine_process$2, $Engine_ignore$ques$3, $Engine_raise$ques$4; - def.consumer = def.ignore_warnings = def.all_errors_are_fatal = nil; + self.$$prototype.consumer = self.$$prototype.ignore_warnings = self.$$prototype.all_errors_are_fatal = nil; self.$attr_accessor("consumer"); self.$attr_accessor("all_errors_are_fatal"); self.$attr_accessor("ignore_warnings"); - Opal.defn(self, '$initialize', TMP_Engine_initialize_1 = function $$initialize(consumer) { + Opal.def(self, '$initialize', $Engine_initialize$1 = function $$initialize(consumer) { var self = this; + + if (consumer == null) { consumer = nil; - } - + }; self.consumer = consumer; self.all_errors_are_fatal = false; return (self.ignore_warnings = false); - }, TMP_Engine_initialize_1.$$arity = -1); + }, $Engine_initialize$1.$$arity = -1); - Opal.defn(self, '$process', TMP_Engine_process_2 = function $$process(diagnostic) { + Opal.def(self, '$process', $Engine_process$2 = function $$process(diagnostic) { var self = this; @@ -29432,101 +33696,100 @@ Opal.modules["parser/diagnostic/engine"] = function(Opal) { } else if ($truthy(self.consumer)) { self.consumer.$call(diagnostic)}; if ($truthy(self['$raise?'](diagnostic))) { - self.$raise(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'SyntaxError'), diagnostic)}; + self.$raise($$$($$($nesting, 'Parser'), 'SyntaxError'), diagnostic)}; return self; - }, TMP_Engine_process_2.$$arity = 1); + }, $Engine_process$2.$$arity = 1); self.$protected(); - Opal.defn(self, '$ignore?', TMP_Engine_ignore$q_3 = function(diagnostic) { + Opal.def(self, '$ignore?', $Engine_ignore$ques$3 = function(diagnostic) { var $a, self = this; return ($truthy($a = self.ignore_warnings) ? diagnostic.$level()['$==']("warning") : $a) - }, TMP_Engine_ignore$q_3.$$arity = 1); - return (Opal.defn(self, '$raise?', TMP_Engine_raise$q_4 = function(diagnostic) { + }, $Engine_ignore$ques$3.$$arity = 1); + return (Opal.def(self, '$raise?', $Engine_raise$ques$4 = function(diagnostic) { var $a, $b, self = this; return ($truthy($a = ($truthy($b = self.all_errors_are_fatal) ? diagnostic.$level()['$==']("error") : $b)) ? $a : diagnostic.$level()['$==']("fatal")) - }, TMP_Engine_raise$q_4.$$arity = 1), nil) && 'raise?'; - })(Opal.const_get_relative($nesting, 'Diagnostic'), null, $nesting) + }, $Engine_raise$ques$4.$$arity = 1), nil) && 'raise?'; + })($$($nesting, 'Diagnostic'), null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/static_environment"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs(['$reset', '$[]', '$push', '$dup', '$pop', '$add', '$to_sym', '$include?']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $StaticEnvironment(){}; - var self = $StaticEnvironment = $klass($base, $super, 'StaticEnvironment', $StaticEnvironment); + var self = $klass($base, $super, 'StaticEnvironment'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_StaticEnvironment_initialize_1, TMP_StaticEnvironment_reset_2, TMP_StaticEnvironment_extend_static_3, TMP_StaticEnvironment_extend_dynamic_4, TMP_StaticEnvironment_unextend_5, TMP_StaticEnvironment_declare_6, TMP_StaticEnvironment_declared$q_7; + var $nesting = [self].concat($parent_nesting), $StaticEnvironment_initialize$1, $StaticEnvironment_reset$2, $StaticEnvironment_extend_static$3, $StaticEnvironment_extend_dynamic$4, $StaticEnvironment_unextend$5, $StaticEnvironment_declare$6, $StaticEnvironment_declared$ques$7; - def.stack = def.variables = nil; + self.$$prototype.stack = self.$$prototype.variables = nil; - Opal.defn(self, '$initialize', TMP_StaticEnvironment_initialize_1 = function $$initialize() { + Opal.def(self, '$initialize', $StaticEnvironment_initialize$1 = function $$initialize() { var self = this; return self.$reset() - }, TMP_StaticEnvironment_initialize_1.$$arity = 0); + }, $StaticEnvironment_initialize$1.$$arity = 0); - Opal.defn(self, '$reset', TMP_StaticEnvironment_reset_2 = function $$reset() { + Opal.def(self, '$reset', $StaticEnvironment_reset$2 = function $$reset() { var self = this; - self.variables = Opal.const_get_relative($nesting, 'Set')['$[]'](); + self.variables = $$($nesting, 'Set')['$[]'](); return (self.stack = []); - }, TMP_StaticEnvironment_reset_2.$$arity = 0); + }, $StaticEnvironment_reset$2.$$arity = 0); - Opal.defn(self, '$extend_static', TMP_StaticEnvironment_extend_static_3 = function $$extend_static() { + Opal.def(self, '$extend_static', $StaticEnvironment_extend_static$3 = function $$extend_static() { var self = this; self.stack.$push(self.variables); - self.variables = Opal.const_get_relative($nesting, 'Set')['$[]'](); + self.variables = $$($nesting, 'Set')['$[]'](); return self; - }, TMP_StaticEnvironment_extend_static_3.$$arity = 0); + }, $StaticEnvironment_extend_static$3.$$arity = 0); - Opal.defn(self, '$extend_dynamic', TMP_StaticEnvironment_extend_dynamic_4 = function $$extend_dynamic() { + Opal.def(self, '$extend_dynamic', $StaticEnvironment_extend_dynamic$4 = function $$extend_dynamic() { var self = this; self.stack.$push(self.variables); self.variables = self.variables.$dup(); return self; - }, TMP_StaticEnvironment_extend_dynamic_4.$$arity = 0); + }, $StaticEnvironment_extend_dynamic$4.$$arity = 0); - Opal.defn(self, '$unextend', TMP_StaticEnvironment_unextend_5 = function $$unextend() { + Opal.def(self, '$unextend', $StaticEnvironment_unextend$5 = function $$unextend() { var self = this; self.variables = self.stack.$pop(); return self; - }, TMP_StaticEnvironment_unextend_5.$$arity = 0); + }, $StaticEnvironment_unextend$5.$$arity = 0); - Opal.defn(self, '$declare', TMP_StaticEnvironment_declare_6 = function $$declare(name) { + Opal.def(self, '$declare', $StaticEnvironment_declare$6 = function $$declare(name) { var self = this; self.variables.$add(name.$to_sym()); return self; - }, TMP_StaticEnvironment_declare_6.$$arity = 1); - return (Opal.defn(self, '$declared?', TMP_StaticEnvironment_declared$q_7 = function(name) { + }, $StaticEnvironment_declare$6.$$arity = 1); + return (Opal.def(self, '$declared?', $StaticEnvironment_declared$ques$7 = function(name) { var self = this; return self.variables['$include?'](name.$to_sym()) - }, TMP_StaticEnvironment_declared$q_7.$$arity = 1), nil) && 'declared?'; + }, $StaticEnvironment_declared$ques$7.$$arity = 1), nil) && 'declared?'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/lexer"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -29543,127 +33806,129 @@ Opal.modules["parser/lexer"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash = Opal.hash, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range, $gvars = Opal.gvars; + function $rb_lt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash = Opal.hash, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range, $gvars = Opal.gvars; - Opal.add_stubs(['$attr_accessor', '$private', '$_lex_trans_keys=', '$-', '$_lex_key_spans=', '$_lex_index_offsets=', '$_lex_indicies=', '$_lex_trans_targs=', '$_lex_trans_actions=', '$_lex_to_state_actions=', '$_lex_from_state_actions=', '$_lex_eof_trans=', '$lex_start=', '$lex_error=', '$lex_en_interp_words=', '$lex_en_interp_string=', '$lex_en_plain_words=', '$lex_en_plain_string=', '$lex_en_interp_backslash_delimited=', '$lex_en_plain_backslash_delimited=', '$lex_en_interp_backslash_delimited_words=', '$lex_en_plain_backslash_delimited_words=', '$lex_en_regexp_modifiers=', '$lex_en_expr_variable=', '$lex_en_expr_fname=', '$lex_en_expr_endfn=', '$lex_en_expr_dot=', '$lex_en_expr_arg=', '$lex_en_expr_cmdarg=', '$lex_en_expr_endarg=', '$lex_en_expr_mid=', '$lex_en_expr_beg=', '$lex_en_expr_labelarg=', '$lex_en_expr_value=', '$lex_en_expr_end=', '$lex_en_leading_dot=', '$lex_en_line_comment=', '$lex_en_line_begin=', '$freeze', '$ord', '$union', '$chars', '$attr_reader', '$reset', '$lex_en_line_begin', '$class', '$new', '$source', '$==', '$encoding', '$unpack', '$[]', '$lex_en_expr_dot', '$lex_en_expr_fname', '$lex_en_expr_value', '$lex_en_expr_beg', '$lex_en_expr_mid', '$lex_en_expr_arg', '$lex_en_expr_cmdarg', '$lex_en_expr_end', '$lex_en_expr_endarg', '$lex_en_expr_endfn', '$lex_en_expr_labelarg', '$lex_en_interp_string', '$lex_en_interp_words', '$lex_en_plain_string', '$fetch', '$invert', '$push', '$count', '$pop', '$any?', '$shift', '$send', '$+', '$size', '$<=', '$===', '$<<', '$>', '$!=', '$emit_comment', '$literal', '$flush_string', '$extend_content', '$emit', '$heredoc?', '$saved_herebody_s=', '$start_interp_brace', '$[]=', '$diagnostic', '$range', '$str_s', '$gsub', '$tok', '$version?', '$nest_and_try_closing', '$heredoc_e', '$pop_literal', '$infer_indent_level', '$words?', '$!', '$eof_codepoint?', '$extend_space', '$extend_string', '$>=', '$active?', '$slice', '$chr', '$munge_escape?', '$regexp?', '$match', '$scan', '$join', '$=~', '$to_i', '$stack_pop', '$emit_table', '$push_literal', '$arg_or_cmdarg', '$emit_do', '$start_with?', '$nil?', '$declared?', '$force_encoding', '$dup', '$lexpop', '$include?', '$inspect', '$last', '$end_with?', '$empty?', '$index', '$call', '$to_f', '$Float', '$length', '$lambda', '$Rational', '$Complex', '$each', '$split', '$encode_escape', '$%', '$end_interp_brace_and_try_closing', '$saved_herebody_s', '$&', '$|', '$lex_error', '$protected', '$process', '$backslash_delimited?', '$interpolate?', '$lex_en_interp_backslash_delimited_words', '$lex_en_plain_backslash_delimited_words', '$lex_en_plain_words', '$lex_en_interp_backslash_delimited', '$lex_en_plain_backslash_delimited', '$dedent_level', '$type', '$lex_en_regexp_modifiers', '$upcase']); + Opal.add_stubs(['$attr_accessor', '$private', '$_lex_trans_keys=', '$-', '$_lex_key_spans=', '$_lex_index_offsets=', '$_lex_indicies=', '$_lex_trans_targs=', '$_lex_trans_actions=', '$_lex_to_state_actions=', '$_lex_from_state_actions=', '$_lex_eof_trans=', '$lex_start=', '$lex_error=', '$lex_en_interp_words=', '$lex_en_interp_string=', '$lex_en_plain_words=', '$lex_en_plain_string=', '$lex_en_interp_backslash_delimited=', '$lex_en_plain_backslash_delimited=', '$lex_en_interp_backslash_delimited_words=', '$lex_en_plain_backslash_delimited_words=', '$lex_en_regexp_modifiers=', '$lex_en_expr_variable=', '$lex_en_expr_fname=', '$lex_en_expr_endfn=', '$lex_en_expr_dot=', '$lex_en_expr_arg=', '$lex_en_expr_cmdarg=', '$lex_en_expr_endarg=', '$lex_en_expr_mid=', '$lex_en_expr_beg=', '$lex_en_expr_labelarg=', '$lex_en_expr_value=', '$lex_en_expr_end=', '$lex_en_leading_dot=', '$lex_en_line_comment=', '$lex_en_line_begin=', '$freeze', '$ord', '$union', '$chars', '$attr_reader', '$reset', '$lex_en_line_begin', '$class', '$new', '$source', '$==', '$encoding', '$unpack', '$[]', '$lex_en_expr_dot', '$lex_en_expr_fname', '$lex_en_expr_value', '$lex_en_expr_beg', '$lex_en_expr_mid', '$lex_en_expr_arg', '$lex_en_expr_cmdarg', '$lex_en_expr_end', '$lex_en_expr_endarg', '$lex_en_expr_endfn', '$lex_en_expr_labelarg', '$lex_en_interp_string', '$lex_en_interp_words', '$lex_en_plain_string', '$fetch', '$invert', '$push', '$count', '$pop', '$top', '$any?', '$shift', '$send', '$+', '$size', '$<=', '$===', '$<<', '$>', '$!=', '$emit_comment', '$tok', '$literal', '$flush_string', '$extend_content', '$emit', '$heredoc?', '$saved_herebody_s=', '$start_interp_brace', '$[]=', '$diagnostic', '$range', '$str_s', '$gsub', '$version?', '$nest_and_try_closing', '$heredoc_e', '$pop_literal', '$infer_indent_level', '$words?', '$!', '$eof_codepoint?', '$extend_space', '$extend_string', '$>=', '$active?', '$slice', '$chr', '$munge_escape?', '$regexp?', '$match', '$squiggly_heredoc?', '$supports_line_continuation_via_slash?', '$scan', '$join', '$=~', '$to_i', '$stack_pop', '$<', '$in_block?', '$in_lambda?', '$can_have_numparams?', '$register', '$emit_table', '$push_literal', '$arg_or_cmdarg', '$emit_do', '$nil?', '$declared?', '$getbyte', '$lexpop', '$inspect', '$end_with?', '$empty?', '$index', '$call', '$Float', '$last', '$to_f', '$length', '$lambda', '$Rational', '$Complex', '$start_with?', '$each', '$encode_escape', '$%', '$end_interp_brace_and_try_closing', '$saved_herebody_s', '$next_state_for_literal', '$rstrip', '$&', '$|', '$include?', '$lex_error', '$protected', '$force_encoding', '$process', '$backslash_delimited?', '$interpolate?', '$lex_en_interp_backslash_delimited_words', '$lex_en_plain_backslash_delimited_words', '$lex_en_plain_words', '$lex_en_interp_backslash_delimited', '$lex_en_plain_backslash_delimited', '$dedent_level', '$type', '$lex_en_regexp_modifiers', '$upcase']); return (function($base, $super, $parent_nesting) { - function $Lexer(){}; - var self = $Lexer = $klass($base, $super, 'Lexer', $Lexer); + var self = $klass($base, $super, 'Lexer'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Lexer_initialize_1, TMP_Lexer_reset_2, TMP_Lexer_source_buffer$eq_3, TMP_Lexer_encoding_4, TMP_Lexer_state_5, TMP_Lexer_state$eq_6, TMP_Lexer_push_cmdarg_7, TMP_Lexer_pop_cmdarg_8, TMP_Lexer_push_cond_9, TMP_Lexer_pop_cond_10, TMP_Lexer_dedent_level_11, TMP_Lexer_advance_36, TMP_Lexer_eof_codepoint$q_37, TMP_Lexer_version$q_38, TMP_Lexer_stack_pop_39, $a, TMP_Lexer_encode_escape_40, TMP_Lexer_encode_escape_41, TMP_Lexer_tok_42, TMP_Lexer_range_43, TMP_Lexer_emit_44, TMP_Lexer_emit_table_45, TMP_Lexer_emit_do_46, TMP_Lexer_arg_or_cmdarg_47, TMP_Lexer_emit_comment_48, TMP_Lexer_diagnostic_49, TMP_Lexer_push_literal_50, TMP_Lexer_literal_51, TMP_Lexer_pop_literal_52, TMP_Lexer_53, $writer = nil; + var $nesting = [self].concat($parent_nesting), $Lexer_initialize$1, $Lexer_reset$2, $Lexer_source_buffer$eq$3, $Lexer_encoding$4, $Lexer_state$5, $Lexer_state$eq$6, $Lexer_push_cmdarg$7, $Lexer_pop_cmdarg$8, $Lexer_push_cond$9, $Lexer_pop_cond$10, $Lexer_max_numparam$11, $Lexer_dedent_level$12, $Lexer_advance$13, $Lexer_eof_codepoint$ques$43, $Lexer_version$ques$44, $Lexer_stack_pop$45, $Lexer_encode_escape$46, $Lexer_tok$47, $Lexer_range$48, $Lexer_emit$49, $Lexer_emit_table$50, $Lexer_emit_do$51, $Lexer_arg_or_cmdarg$52, $Lexer_emit_comment$53, $Lexer_diagnostic$54, $Lexer_push_literal$55, $Lexer_next_state_for_literal$56, $Lexer_literal$57, $Lexer_pop_literal$58, $Lexer$59, $writer = nil; - def.source_buffer = def.source_pts = def.cs = def.cmdarg_stack = def.cmdarg = def.cond_stack = def.cond = def.dedent_level = def.token_queue = def.p = def.herebody_s = def.sharp_s = def.ts = def.top = def.stack = def.te = def.version = def.escape_s = def.escape = def.act = def.static_env = def.lambda_stack = def.paren_nest = def.num_digits_s = def.num_suffix_s = def.num_base = def.num_xfrm = def.newline_s = def.eq_begin_s = def.in_kwarg = def.tokens = def.command_state = def.comments = def.diagnostics = def.literal_stack = nil; + self.$$prototype.source_buffer = self.$$prototype.source_pts = self.$$prototype.cs = self.$$prototype.cmdarg_stack = self.$$prototype.cmdarg = self.$$prototype.cond_stack = self.$$prototype.cond = self.$$prototype.max_numparam_stack = self.$$prototype.dedent_level = self.$$prototype.token_queue = self.$$prototype.p = self.$$prototype.command_start = self.$$prototype.herebody_s = self.$$prototype.sharp_s = self.$$prototype.ts = self.$$prototype.te = self.$$prototype.top = self.$$prototype.stack = self.$$prototype.version = self.$$prototype.escape_s = self.$$prototype.escape = self.$$prototype.context = self.$$prototype.act = self.$$prototype.static_env = self.$$prototype.lambda_stack = self.$$prototype.paren_nest = self.$$prototype.num_digits_s = self.$$prototype.num_suffix_s = self.$$prototype.num_base = self.$$prototype.num_xfrm = self.$$prototype.newline_s = self.$$prototype.eq_begin_s = self.$$prototype.cs_before_block_comment = self.$$prototype.in_kwarg = self.$$prototype.tokens = self.$$prototype.comments = self.$$prototype.diagnostics = self.$$prototype.literal_stack = nil; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_trans_keys"); return self.$private("_lex_trans_keys", "_lex_trans_keys="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 26, 0, 127, 58, 58, 58, 58, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 93, 93, 0, 127, 0, 127, 10, 10, 10, 34, 10, 10, 10, 39, 0, 127, 10, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 65, 122, 0, 122, 38, 61, 0, 0, 42, 61, 61, 61, 48, 61, 48, 62, 46, 46, 46, 46, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 124, 124, 60, 61, 0, 0, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; + $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 26, 0, 127, 58, 58, 58, 58, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 10, 10, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 65, 122, 0, 122, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 58, 46, 46, 48, 101, 48, 95, 9, 92, 9, 92, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; $send(self, '_lex_trans_keys=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_key_spans"); return self.$private("_lex_key_spans", "_lex_key_spans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 128, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 1, 1, 1, 1, 1, 1, 123, 1, 128, 128, 66, 128, 128, 1, 128, 128, 1, 25, 1, 30, 128, 87, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 55, 0, 93, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 27, 36, 24, 88, 128, 10, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 58, 123, 24, 0, 20, 1, 14, 15, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 1, 2, 0, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 54, 48, 75, 67, 15, 58, 0, 1, 0, 67, 67, 67, 67, 10, 0, 1, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 128, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 123, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 1, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 27, 36, 24, 88, 128, 10, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 58, 123, 24, 0, 20, 1, 84, 84, 84, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 13, 1, 54, 48, 84, 84, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1]]; $send(self, '_lex_key_spans=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_index_offsets"); return self.$private("_lex_index_offsets", "_lex_index_offsets="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3669, 3798, 3927, 4056, 4185, 4314, 4443, 4471, 4600, 4602, 4604, 4733, 4735, 4737, 4739, 4741, 4870, 4999, 5128, 5257, 5386, 5515, 5644, 5773, 5902, 6031, 6160, 6289, 6418, 6547, 6676, 6805, 6934, 7063, 7065, 7067, 7069, 7071, 7081, 7083, 7085, 7087, 7089, 7091, 7093, 7095, 7097, 7226, 7228, 7357, 7359, 7361, 7363, 7365, 7367, 7369, 7493, 7495, 7624, 7753, 7820, 7949, 8078, 8080, 8209, 8338, 8340, 8366, 8368, 8399, 8528, 8616, 8663, 8742, 8821, 8915, 8943, 8971, 9018, 9119, 9147, 9181, 9183, 9277, 9356, 9460, 9589, 9718, 9847, 9976, 10105, 10234, 10236, 10238, 10367, 10383, 10394, 10405, 10416, 10427, 10556, 10558, 10643, 10728, 10813, 10898, 10983, 11068, 11070, 11072, 11111, 11113, 11210, 11235, 11236, 11238, 11240, 11242, 11267, 11269, 11271, 11365, 11390, 11479, 11608, 11619, 11741, 11742, 11743, 11752, 11761, 11762, 11763, 11857, 11858, 11859, 11860, 11954, 11956, 11957, 11958, 11959, 12053, 12100, 12194, 12288, 12289, 12290, 12384, 12431, 12433, 12527, 12652, 12680, 12708, 12736, 12737, 12841, 12945, 13049, 13050, 13177, 13304, 13431, 13558, 13685, 13686, 13813, 13940, 13941, 14068, 14096, 14223, 14350, 14477, 14604, 14731, 14858, 14985, 15112, 15239, 15240, 15367, 15368, 15424, 15425, 15519, 15608, 15737, 15748, 15870, 15871, 15872, 15881, 15890, 15891, 15892, 15986, 15987, 15988, 15989, 16083, 16085, 16086, 16087, 16088, 16182, 16229, 16323, 16417, 16418, 16419, 16513, 16560, 16562, 16656, 16781, 16809, 16837, 16865, 16866, 16970, 17074, 17178, 17179, 17306, 17433, 17560, 17687, 17814, 17815, 17942, 18069, 18070, 18197, 18225, 18352, 18479, 18606, 18733, 18860, 18987, 19114, 19241, 19368, 19369, 19496, 19497, 19553, 19554, 19648, 19673, 19701, 19795, 19823, 19860, 19949, 20078, 20089, 20117, 20154, 20179, 20268, 20397, 20408, 20442, 20467, 20526, 20585, 20615, 20744, 20755, 20884, 21013, 21142, 21271, 21296, 21297, 21364, 21366, 21368, 21497, 21626, 21637, 21639, 21641, 21643, 21645, 21647, 21650, 21652, 21719, 21721, 21724, 21853, 21982, 22111, 22240, 22369, 22498, 22627, 22629, 22631, 22760, 22889, 23018, 23147, 23276, 23405, 23534, 23663, 23792, 23921, 24050, 24179, 24308, 24437, 24566, 24695, 24824, 24953, 25082, 25211, 25340, 25469, 25598, 25727, 25856, 25985, 26114, 26243, 26372, 26501, 26630, 26759, 26888, 27017, 27146, 27275, 27404, 27533, 27662, 27791, 27920, 28049, 28178, 28307, 28436, 28565, 28694, 28823, 28952, 29081, 29210, 29339, 29468, 29597, 29726, 29855, 29984, 30113, 30242, 30371, 30500, 30629, 30758, 30887, 31016, 31145, 31274, 31403, 31532, 31661, 31790, 31919, 32048, 32177, 32306, 32435, 32564, 32693, 32822, 32951, 33080, 33209, 33338, 33340, 33469, 33598, 33623, 33625, 33627, 33629, 33630, 33759, 33888, 33890, 33891, 33916, 33917, 33984, 33986, 33988, 33990, 33992, 33994, 33997, 33999, 34066, 34068, 34071, 34200, 34202, 34204, 34206, 34334, 34463, 34526, 34580, 34634, 34635, 34689, 34744, 34746, 34748, 34750, 34775, 34776, 34905, 34906, 35023, 35024, 35026, 35028, 35029, 35083, 35085, 35087, 35089, 35114, 35116, 35245, 35247, 35249, 35251, 35253, 35382, 35511, 35640, 35641, 35770, 35772, 35897, 35922, 35924, 35926, 35928, 35929, 35931, 35932, 36061, 36190, 36215, 36216, 36218, 36220, 36222, 36223, 36352, 36481, 36610, 36739, 36868, 36997, 37126, 37255, 37384, 37513, 37642, 37771, 37900, 38029, 38158, 38287, 38416, 38545, 38550, 38551, 38618, 38620, 38621, 38622, 38623, 38648, 38650, 38675, 38742, 38744, 38746, 38805, 38929, 38954, 38955, 38976, 38978, 38993, 39009, 39011, 39013, 39041, 39170, 39299, 39301, 39302, 39369, 39372, 39373, 39374, 39375, 39376, 39443, 39572, 39583, 39585, 39587, 39589, 39592, 39594, 39596, 39599, 39601, 39604, 39605, 39607, 39674, 39677, 39801, 39802, 39931, 40060, 40182, 40183, 40184, 40193, 40202, 40203, 40204, 40298, 40299, 40300, 40301, 40395, 40397, 40398, 40399, 40400, 40494, 40541, 40635, 40729, 40730, 40731, 40825, 40872, 40874, 40968, 41093, 41121, 41149, 41177, 41178, 41282, 41386, 41490, 41491, 41618, 41745, 41872, 41999, 42126, 42127, 42254, 42381, 42382, 42509, 42537, 42664, 42791, 42918, 43045, 43172, 43299, 43426, 43553, 43680, 43807, 43934, 44061, 44188, 44315, 44316, 44317, 44373, 44374, 44503, 44632, 44761, 44762, 44764, 44765, 44894, 45023, 45152, 45281, 45410, 45539, 45668, 45797, 45926, 46055, 46184, 46313, 46442, 46571, 46700, 46829, 46958, 47087, 47216, 47345, 47474, 47603, 47732, 47861, 47990, 48119, 48248, 48377, 48506, 48635, 48764, 48893, 49022, 49151, 49280, 49409, 49538, 49667, 49796, 49925, 50054, 50183, 50312, 50441, 50570, 50699, 50828, 50957, 51086, 51215, 51344, 51473, 51602, 51731, 51860, 51989, 52118, 52247, 52376, 52505, 52572, 52701, 52830, 52959, 53088, 53217, 53346, 53475, 53604, 53733, 53862, 53991, 54120, 54249, 54378, 54507, 54636, 54765, 54894, 55023, 55152, 55281, 55410, 55539, 55668, 55797, 55798, 55863, 55957, 55982, 55983, 55985, 55987, 55989, 55990, 56119, 56248, 56273, 56274, 56276, 56278, 56280, 56281, 56410, 56539, 56541, 56542, 56567, 56568, 56635, 56637, 56639, 56768, 56897, 56908, 56910, 56935, 56936, 56937, 56958, 56961, 56974, 56976, 57031, 57080, 57156, 57224, 57240, 57299, 57300, 57302, 57303, 57371, 57439, 57507, 57575, 57586, 57587, 57589, 57590, 57658, 57726, 57794, 57862, 57930, 57998, 58066, 58134, 58204, 58272, 58342, 58410, 58412, 58415, 58417, 58484, 58486, 58489, 58618, 58747, 58748, 58877, 59006, 59135, 59264, 59393, 59522, 59523, 59525, 59526, 59655, 59784, 59913, 60042, 60171, 60300, 60429, 60558, 60687, 60816, 60945, 61074, 61203, 61332, 61461, 61590, 61719, 61848, 61977, 62106, 62235, 62364, 62493, 62622, 62751, 62880, 63009, 63138, 63267, 63396, 63525, 63654, 63783, 63912, 64041, 64170, 64299, 64384, 64513, 64642, 64771, 64900, 65029, 65158, 65287, 65416, 65545, 65674, 65803, 65932, 66061, 66190, 66319, 66448, 66577, 66706, 66835, 66964, 67093, 67222, 67351, 67480, 67609, 67738, 67867, 67996, 68125, 68254, 68383, 68512, 68641, 68770, 68899, 69028, 69157, 69286, 69415, 69544, 69673, 69802, 69931, 70060, 70189, 70318, 70447, 70576, 70705, 70834, 70963, 71092, 71221, 71350, 71479, 71608, 71737, 71866, 71995, 72124, 72253, 72382, 72511, 72640, 72769, 72770, 72835, 72836, 72875, 72914, 72916, 72969, 72971, 73064, 73166, 73258]]; + $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3669, 3798, 3927, 4056, 4185, 4314, 4443, 4471, 4600, 4602, 4604, 4733, 4735, 4737, 4739, 4741, 4870, 4999, 5128, 5257, 5386, 5515, 5644, 5773, 5902, 6031, 6160, 6289, 6418, 6547, 6676, 6805, 6934, 7063, 7065, 7067, 7069, 7071, 7081, 7083, 7085, 7087, 7089, 7091, 7093, 7095, 7097, 7226, 7228, 7357, 7442, 7444, 7529, 7531, 7533, 7535, 7537, 7539, 7541, 7665, 7667, 7752, 7837, 7922, 8007, 8092, 8094, 8223, 8352, 8419, 8421, 8550, 8679, 8681, 8683, 8685, 8687, 8816, 8904, 8906, 8953, 9032, 9111, 9205, 9233, 9261, 9308, 9409, 9437, 9471, 9473, 9567, 9646, 9750, 9879, 10008, 10137, 10266, 10395, 10524, 10526, 10528, 10657, 10673, 10684, 10695, 10697, 10708, 10719, 10721, 10723, 10725, 10727, 10729, 10731, 10733, 10862, 10864, 10949, 11034, 11119, 11204, 11289, 11374, 11376, 11378, 11417, 11419, 11516, 11541, 11542, 11544, 11546, 11548, 11573, 11575, 11577, 11671, 11696, 11785, 11914, 11925, 12047, 12048, 12049, 12058, 12067, 12068, 12069, 12163, 12164, 12165, 12166, 12260, 12262, 12263, 12264, 12265, 12359, 12406, 12500, 12594, 12595, 12596, 12690, 12737, 12739, 12833, 12910, 12966, 13022, 13078, 13079, 13206, 13333, 13334, 13461, 13462, 13589, 13716, 13843, 13970, 13971, 14098, 14225, 14352, 14479, 14606, 14733, 14734, 14735, 14791, 14792, 14886, 14975, 15104, 15115, 15237, 15238, 15239, 15248, 15257, 15258, 15259, 15353, 15354, 15355, 15356, 15450, 15452, 15453, 15454, 15455, 15549, 15596, 15690, 15784, 15785, 15786, 15880, 15927, 15929, 16023, 16100, 16156, 16212, 16268, 16269, 16396, 16523, 16524, 16651, 16652, 16779, 16906, 17033, 17160, 17161, 17288, 17415, 17542, 17669, 17796, 17923, 17924, 17925, 17981, 17982, 18076, 18101, 18129, 18223, 18251, 18288, 18377, 18506, 18517, 18545, 18582, 18607, 18696, 18825, 18836, 18870, 18895, 18954, 19013, 19043, 19172, 19183, 19312, 19441, 19570, 19699, 19828, 19853, 19854, 19921, 19923, 19925, 20054, 20183, 20194, 20196, 20198, 20200, 20202, 20204, 20207, 20209, 20276, 20278, 20281, 20410, 20539, 20668, 20797, 20926, 21055, 21184, 21186, 21188, 21317, 21446, 21575, 21704, 21833, 21962, 22091, 22220, 22349, 22478, 22607, 22736, 22865, 22994, 23123, 23252, 23381, 23510, 23639, 23768, 23897, 24026, 24155, 24284, 24413, 24542, 24671, 24800, 24929, 25058, 25187, 25316, 25445, 25574, 25703, 25832, 25961, 26090, 26219, 26348, 26477, 26606, 26735, 26864, 26993, 27122, 27251, 27380, 27509, 27638, 27767, 27896, 28025, 28154, 28283, 28412, 28541, 28670, 28799, 28928, 29057, 29186, 29315, 29444, 29573, 29702, 29831, 29960, 30089, 30218, 30347, 30476, 30605, 30734, 30863, 30992, 31121, 31250, 31379, 31508, 31637, 31766, 31895, 31897, 32026, 32155, 32180, 32182, 32184, 32186, 32187, 32316, 32445, 32447, 32448, 32473, 32474, 32541, 32543, 32545, 32547, 32549, 32551, 32554, 32556, 32623, 32625, 32628, 32757, 32759, 32761, 32763, 32891, 33020, 33083, 33137, 33191, 33192, 33246, 33301, 33303, 33305, 33307, 33332, 33333, 33462, 33463, 33580, 33581, 33583, 33585, 33586, 33640, 33642, 33644, 33646, 33671, 33673, 33802, 33804, 33806, 33808, 33810, 33939, 34068, 34197, 34198, 34327, 34329, 34454, 34479, 34481, 34483, 34485, 34486, 34488, 34489, 34618, 34747, 34772, 34773, 34775, 34777, 34779, 34780, 34909, 35038, 35167, 35296, 35425, 35554, 35683, 35812, 35941, 36070, 36199, 36328, 36457, 36586, 36715, 36844, 36973, 37102, 37107, 37108, 37175, 37177, 37178, 37179, 37180, 37205, 37207, 37232, 37299, 37301, 37303, 37362, 37486, 37511, 37512, 37533, 37535, 37620, 37705, 37790, 37792, 37794, 37822, 37951, 38080, 38082, 38083, 38150, 38153, 38154, 38155, 38156, 38157, 38224, 38353, 38364, 38366, 38368, 38370, 38373, 38375, 38377, 38380, 38509, 38520, 38649, 38651, 38653, 38656, 38657, 38683, 38714, 38716, 38718, 38785, 38788, 38912, 38913, 39042, 39171, 39293, 39294, 39295, 39304, 39313, 39314, 39315, 39409, 39410, 39411, 39412, 39506, 39508, 39509, 39510, 39511, 39605, 39652, 39746, 39840, 39841, 39842, 39936, 39983, 39985, 40079, 40156, 40212, 40268, 40324, 40325, 40452, 40579, 40580, 40707, 40708, 40835, 40962, 41089, 41216, 41217, 41344, 41471, 41598, 41725, 41852, 41979, 42106, 42233, 42360, 42487, 42614, 42741, 42868, 42995, 43122, 43249, 43376, 43503, 43630, 43631, 43632, 43688, 43689, 43818, 43947, 44076, 44077, 44079, 44080, 44209, 44338, 44467, 44596, 44725, 44854, 44983, 45112, 45241, 45370, 45499, 45628, 45757, 45886, 46015, 46144, 46273, 46402, 46531, 46660, 46789, 46918, 47047, 47176, 47305, 47434, 47563, 47692, 47821, 47950, 48079, 48208, 48337, 48466, 48595, 48724, 48853, 48982, 49111, 49240, 49369, 49498, 49627, 49756, 49885, 50014, 50143, 50272, 50401, 50530, 50659, 50788, 50917, 51046, 51175, 51304, 51433, 51562, 51691, 51820, 51949, 52016, 52145, 52274, 52403, 52532, 52661, 52790, 52919, 53048, 53177, 53306, 53435, 53564, 53693, 53822, 53951, 54080, 54209, 54338, 54467, 54596, 54725, 54854, 54983, 55112, 55241, 55242, 55307, 55401, 55426, 55427, 55429, 55431, 55433, 55434, 55563, 55692, 55717, 55718, 55720, 55722, 55724, 55725, 55854, 55983, 55985, 55986, 56011, 56012, 56079, 56081, 56083, 56212, 56341, 56352, 56354, 56379, 56380, 56381, 56402, 56405, 56419, 56421, 56476, 56525, 56610, 56695, 56771, 56839, 56855, 56914, 56916, 56917, 56923, 56924, 56925, 56993, 57061, 57129, 57197, 57208, 57210, 57211, 57217, 57219, 57220, 57221, 57289, 57357, 57425, 57493, 57561, 57629, 57697, 57765, 57835, 57903, 57973, 58041, 58043, 58046, 58048, 58115, 58117, 58120, 58249, 58378, 58379, 58508, 58637, 58766, 58895, 59024, 59153, 59154, 59156, 59157, 59286, 59415, 59544, 59673, 59802, 59931, 60060, 60189, 60318, 60447, 60576, 60705, 60834, 60963, 61092, 61221, 61350, 61479, 61608, 61737, 61866, 61995, 62124, 62253, 62382, 62511, 62640, 62769, 62898, 63027, 63156, 63285, 63414, 63543, 63672, 63801, 63930, 64015, 64144, 64273, 64402, 64531, 64660, 64789, 64918, 65047, 65176, 65305, 65434, 65563, 65692, 65821, 65950, 66079, 66208, 66337, 66466, 66595, 66724, 66853, 66982, 67111, 67240, 67369, 67498, 67627, 67756, 67885, 68014, 68143, 68272, 68401, 68530, 68659, 68788, 68917, 69046, 69175, 69304, 69433, 69562, 69691, 69820, 69949, 70078, 70207, 70336, 70465, 70594, 70723, 70852, 70981, 71110, 71239, 71368, 71497, 71626, 71755, 71884, 72013, 72142, 72271, 72400, 72401, 72466, 72467, 72506, 72545, 72547, 72600, 72602, 72695, 72797, 72889]]; $send(self, '_lex_index_offsets=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_indicies"); return self.$private("_lex_indicies", "_lex_indicies="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 21, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 34, 31, 31, 31, 31, 31, 31, 35, 31, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 37, 18, 18, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 43, 45, 43, 45, 45, 43, 43, 45, 45, 45, 46, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 45, 43, 43, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 45, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 50, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 52, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 61, 50, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 66, 62, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 67, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68, 49, 68, 49, 49, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 74, 76, 74, 76, 76, 74, 74, 76, 76, 76, 77, 76, 76, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 76, 74, 74, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 76, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 76, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 76, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 79, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 82, 80, 82, 80, 82, 82, 80, 80, 82, 82, 82, 83, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 82, 80, 80, 81, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 82, 80, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 80, 80, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 82, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 80, 82, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 85, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 81, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 81, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 81, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 88, 87, 88, 87, 87, 88, 88, 87, 87, 87, 89, 87, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 88, 87, 88, 88, 86, 87, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 88, 88, 88, 87, 88, 86, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 87, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 88, 92, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 91, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 91, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 88, 88, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 93, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 88, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 95, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 95, 96, 97, 97, 97, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 101, 98, 98, 98, 98, 100, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 99, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 99, 101, 98, 98, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 105, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 103, 103, 103, 103, 105, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 103, 103, 103, 103, 104, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 103, 103, 103, 103, 103, 104, 106, 103, 108, 107, 109, 107, 110, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 112, 107, 112, 112, 112, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 112, 107, 107, 107, 107, 113, 114, 107, 115, 107, 116, 117, 118, 119, 120, 113, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 121, 107, 122, 118, 123, 124, 107, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 125, 126, 118, 127, 111, 107, 111, 111, 111, 111, 111, 111, 111, 111, 128, 111, 111, 111, 111, 111, 111, 111, 111, 129, 111, 111, 130, 111, 131, 111, 111, 111, 132, 133, 107, 127, 107, 111, 107, 107, 107, 107, 107, 107, 107, 107, 107, 134, 107, 134, 134, 134, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 134, 107, 107, 107, 107, 135, 136, 107, 137, 107, 138, 139, 140, 141, 142, 135, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 143, 107, 144, 140, 145, 146, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 147, 148, 140, 109, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 149, 104, 104, 104, 104, 104, 104, 104, 104, 150, 104, 104, 151, 104, 152, 104, 104, 104, 153, 154, 107, 109, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 156, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 157, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 158, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 159, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 160, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 161, 104, 104, 104, 104, 104, 104, 104, 162, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 163, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 164, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 165, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 166, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 167, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 159, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 169, 168, 170, 168, 171, 168, 140, 168, 172, 168, 168, 168, 168, 168, 168, 168, 173, 168, 174, 168, 175, 168, 140, 168, 176, 168, 140, 168, 177, 168, 171, 168, 179, 178, 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, 180, 182, 182, 182, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, 180, 180, 180, 180, 180, 180, 180, 183, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 184, 180, 180, 181, 180, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 180, 180, 180, 180, 181, 186, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 188, 180, 188, 188, 188, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 188, 180, 180, 180, 180, 180, 180, 180, 189, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 180, 190, 180, 180, 187, 180, 187, 187, 187, 191, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 180, 180, 180, 180, 180, 187, 192, 193, 195, 194, 196, 194, 197, 194, 198, 194, 199, 194, 200, 201, 201, 201, 200, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 200, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 203, 192, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 206, 206, 204, 206, 204, 206, 206, 204, 204, 206, 206, 206, 207, 206, 206, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 206, 206, 206, 206, 206, 206, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 206, 204, 204, 205, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 206, 204, 205, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 204, 204, 204, 204, 204, 204, 204, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 204, 204, 204, 204, 206, 204, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 204, 204, 204, 204, 204, 206, 209, 206, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 206, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 210, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 204, 205, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 205, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 204, 205, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 205, 209, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 212, 204, 204, 204, 204, 213, 204, 204, 204, 204, 204, 214, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 203, 204, 204, 204, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 204, 204, 204, 204, 211, 215, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 204, 204, 204, 214, 204, 211, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 217, 217, 217, 216, 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 217, 217, 217, 217, 216, 220, 219, 204, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 221, 212, 218, 217, 204, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 221, 213, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 212, 204, 204, 204, 204, 213, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 204, 204, 204, 204, 211, 215, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 204, 204, 204, 204, 204, 211, 204, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 221, 215, 222, 223, 223, 223, 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 222, 225, 225, 225, 222, 225, 225, 225, 225, 225, 226, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 222, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 227, 225, 222, 225, 225, 225, 222, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 222, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 228, 225, 222, 229, 229, 229, 222, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 222, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 231, 229, 222, 232, 232, 232, 222, 232, 232, 232, 232, 232, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 222, 232, 222, 232, 232, 232, 222, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 222, 232, 222, 223, 223, 223, 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 234, 223, 222, 235, 235, 235, 222, 235, 235, 235, 235, 235, 236, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 222, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 237, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 238, 235, 235, 235, 235, 235, 235, 239, 235, 222, 235, 235, 235, 222, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 222, 235, 240, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 241, 222, 241, 222, 222, 242, 242, 242, 222, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 222, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 244, 242, 222, 225, 225, 225, 222, 225, 225, 225, 225, 225, 226, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 222, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 228, 225, 222, 245, 245, 245, 222, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 222, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 245, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 248, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 192, 192, 250, 192, 248, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 192, 192, 192, 192, 247, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 192, 192, 192, 192, 192, 247, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 248, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 204, 204, 250, 204, 248, 204, 247, 247, 247, 247, 247, 247, 251, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 247, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 204, 247, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 248, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 204, 204, 250, 204, 248, 204, 247, 247, 247, 247, 247, 247, 247, 247, 252, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 247, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 204, 247, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 248, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 204, 204, 250, 204, 248, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 253, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 247, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 204, 247, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 248, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 204, 204, 250, 204, 248, 204, 247, 247, 247, 253, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 247, 204, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 204, 204, 204, 204, 204, 247, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 256, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 257, 254, 254, 254, 254, 256, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 255, 257, 254, 254, 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 259, 259, 259, 259, 259, 259, 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 259, 259, 259, 259, 260, 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 259, 259, 259, 259, 259, 260, 262, 261, 262, 261, 261, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 261, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 261, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 261, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 265, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 265, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 259, 259, 259, 259, 259, 259, 259, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 259, 259, 259, 259, 268, 259, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 259, 259, 259, 259, 259, 268, 269, 265, 270, 271, 270, 270, 270, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 270, 265, 265, 272, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 273, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 274, 265, 275, 276, 275, 275, 275, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 275, 265, 265, 277, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 278, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 279, 265, 281, 282, 281, 281, 281, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 283, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 284, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 285, 280, 287, 288, 287, 287, 287, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 289, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 290, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 287, 288, 287, 287, 287, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 289, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 292, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 287, 293, 287, 287, 287, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 289, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 290, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 294, 265, 271, 265, 296, 295, 296, 296, 296, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 296, 295, 295, 295, 295, 295, 297, 295, 295, 295, 295, 295, 295, 295, 298, 295, 299, 295, 301, 300, 300, 300, 301, 300, 300, 300, 300, 302, 303, 302, 302, 302, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 301, 300, 300, 300, 300, 300, 302, 300, 300, 304, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 305, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 306, 300, 300, 307, 300, 302, 308, 302, 302, 302, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 302, 308, 309, 310, 311, 312, 313, 315, 314, 317, 318, 317, 317, 317, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 317, 316, 303, 314, 319, 314, 321, 320, 320, 320, 321, 320, 320, 320, 320, 322, 323, 322, 322, 322, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 321, 320, 320, 320, 320, 320, 322, 320, 320, 324, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 325, 320, 322, 326, 322, 322, 322, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 322, 326, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 329, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 330, 327, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 331, 331, 331, 331, 331, 331, 331, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 331, 331, 331, 331, 13, 331, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 331, 331, 331, 331, 331, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 331, 334, 333, 333, 333, 334, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 335, 335, 335, 335, 335, 335, 335, 335, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 336, 333, 333, 333, 333, 333, 333, 333, 333, 333, 337, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 338, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 339, 333, 333, 340, 333, 341, 342, 344, 344, 344, 344, 344, 344, 344, 344, 343, 345, 345, 345, 345, 345, 345, 345, 345, 343, 343, 346, 346, 38, 38, 38, 346, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 346, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 347, 38, 348, 349, 350, 350, 38, 38, 38, 350, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 350, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 351, 38, 37, 350, 352, 353, 354, 354, 25, 25, 25, 354, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 354, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 355, 25, 350, 19, 19, 19, 350, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 350, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 356, 19, 346, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 346, 357, 357, 357, 346, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 346, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 357, 359, 360, 360, 357, 357, 357, 360, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 360, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 361, 357, 360, 19, 19, 19, 360, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 360, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 356, 19, 362, 360, 360, 25, 25, 25, 360, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 360, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 363, 364, 364, 364, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 366, 364, 363, 367, 367, 367, 363, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 363, 367, 363, 368, 368, 368, 363, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 363, 368, 363, 369, 369, 369, 363, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 363, 369, 363, 363, 367, 367, 367, 363, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 363, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 367, 367, 367, 367, 367, 367, 367, 370, 370, 370, 370, 370, 370, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 370, 370, 370, 370, 370, 370, 367, 363, 368, 368, 368, 363, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 363, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 368, 368, 368, 368, 368, 368, 368, 371, 371, 371, 371, 371, 371, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 371, 371, 371, 371, 371, 371, 368, 363, 369, 369, 369, 363, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 363, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 369, 369, 369, 369, 369, 369, 369, 372, 372, 372, 372, 372, 372, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 372, 372, 372, 372, 372, 372, 369, 373, 376, 375, 375, 375, 376, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 375, 375, 375, 375, 375, 375, 375, 377, 377, 377, 377, 377, 377, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 377, 377, 377, 377, 377, 377, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 367, 375, 376, 378, 378, 378, 376, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 376, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 380, 378, 376, 381, 381, 381, 376, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 376, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 381, 381, 381, 381, 381, 381, 381, 382, 382, 382, 382, 382, 382, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 382, 382, 382, 382, 382, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 383, 381, 376, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 386, 376, 385, 385, 385, 376, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 376, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 385, 376, 385, 385, 385, 376, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 376, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 374, 385, 374, 376, 382, 382, 382, 376, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 376, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 369, 382, 374, 369, 369, 369, 374, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 374, 369, 376, 378, 378, 378, 376, 378, 378, 378, 378, 387, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 376, 378, 378, 378, 378, 378, 387, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 389, 378, 376, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 384, 384, 384, 384, 384, 384, 384, 390, 390, 390, 390, 390, 390, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 390, 390, 390, 390, 390, 390, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 384, 384, 384, 384, 384, 384, 384, 391, 391, 391, 391, 391, 391, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 391, 391, 391, 391, 391, 391, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 384, 384, 384, 384, 384, 384, 384, 392, 392, 392, 392, 392, 392, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 392, 392, 392, 392, 392, 392, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 384, 384, 384, 384, 384, 384, 384, 393, 393, 393, 393, 393, 393, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 393, 393, 393, 393, 393, 393, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 384, 384, 384, 384, 384, 384, 384, 394, 394, 394, 394, 394, 394, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 394, 394, 394, 394, 394, 394, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 384, 384, 384, 384, 384, 384, 384, 395, 395, 395, 395, 395, 395, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 395, 395, 395, 395, 395, 395, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 389, 384, 376, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 376, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 396, 396, 396, 396, 396, 396, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 386, 384, 397, 376, 381, 381, 381, 376, 381, 381, 381, 381, 387, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 376, 381, 381, 381, 381, 381, 387, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 381, 381, 381, 381, 381, 381, 381, 392, 392, 392, 392, 392, 392, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 392, 392, 392, 392, 392, 392, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 389, 381, 398, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 399, 399, 399, 399, 399, 399, 399, 400, 400, 400, 400, 400, 400, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 400, 400, 400, 400, 400, 399, 399, 402, 401, 401, 401, 402, 401, 401, 401, 401, 401, 403, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 401, 401, 401, 401, 401, 401, 401, 404, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 405, 401, 407, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 408, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 409, 406, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 410, 410, 410, 410, 410, 410, 410, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 410, 410, 410, 410, 44, 410, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 410, 410, 410, 410, 410, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 410, 413, 412, 412, 412, 413, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 413, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 414, 414, 414, 414, 414, 414, 414, 414, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 415, 412, 412, 412, 412, 412, 412, 412, 412, 412, 416, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 417, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 418, 412, 412, 419, 412, 420, 421, 423, 423, 423, 423, 423, 423, 423, 423, 422, 424, 424, 424, 424, 424, 424, 424, 424, 422, 422, 425, 425, 69, 69, 69, 425, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 425, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 426, 69, 427, 428, 429, 429, 69, 69, 69, 429, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 429, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 430, 69, 68, 429, 431, 432, 433, 433, 56, 56, 56, 433, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 433, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 434, 56, 429, 50, 50, 50, 429, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 429, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 435, 50, 425, 56, 56, 56, 425, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 425, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 425, 436, 436, 436, 425, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 425, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 437, 436, 438, 439, 439, 436, 436, 436, 439, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 439, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 440, 436, 439, 50, 50, 50, 439, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 439, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 435, 50, 441, 439, 439, 56, 56, 56, 439, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 439, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 442, 443, 443, 443, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 443, 442, 446, 446, 446, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 446, 442, 447, 447, 447, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 447, 442, 448, 448, 448, 442, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 442, 448, 442, 442, 446, 446, 446, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 446, 446, 446, 446, 446, 446, 446, 449, 449, 449, 449, 449, 449, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 449, 449, 449, 449, 449, 449, 446, 442, 447, 447, 447, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 447, 447, 447, 447, 447, 447, 447, 450, 450, 450, 450, 450, 450, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 450, 450, 450, 450, 450, 450, 447, 442, 448, 448, 448, 442, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 442, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 448, 448, 448, 448, 448, 448, 448, 451, 451, 451, 451, 451, 451, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 451, 451, 451, 451, 451, 451, 448, 452, 455, 454, 454, 454, 455, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 455, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 454, 454, 454, 454, 454, 454, 454, 456, 456, 456, 456, 456, 456, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 456, 456, 456, 456, 456, 456, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 446, 454, 455, 457, 457, 457, 455, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 455, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 459, 457, 455, 460, 460, 460, 455, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 455, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 460, 460, 460, 460, 460, 460, 460, 461, 461, 461, 461, 461, 461, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, 461, 461, 461, 461, 461, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 462, 460, 455, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, 464, 464, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 465, 455, 464, 464, 464, 455, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 455, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 465, 464, 455, 464, 464, 464, 455, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 455, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 453, 464, 453, 455, 461, 461, 461, 455, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 455, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 448, 461, 453, 448, 448, 448, 453, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 453, 448, 455, 457, 457, 457, 455, 457, 457, 457, 457, 466, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 455, 457, 457, 457, 457, 457, 466, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 468, 457, 455, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 463, 463, 463, 463, 463, 463, 463, 469, 469, 469, 469, 469, 469, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 469, 469, 469, 469, 469, 469, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 463, 463, 463, 463, 463, 463, 463, 470, 470, 470, 470, 470, 470, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 470, 470, 470, 470, 470, 470, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 463, 463, 463, 463, 463, 463, 463, 471, 471, 471, 471, 471, 471, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 471, 471, 471, 471, 471, 471, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 463, 463, 463, 463, 463, 463, 463, 472, 472, 472, 472, 472, 472, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 472, 472, 472, 472, 472, 472, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 463, 463, 463, 463, 463, 463, 463, 473, 473, 473, 473, 473, 473, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 473, 473, 473, 473, 473, 473, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 463, 463, 463, 463, 463, 463, 463, 474, 474, 474, 474, 474, 474, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 474, 474, 474, 474, 474, 474, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 463, 455, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 455, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, 475, 475, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 465, 463, 476, 455, 460, 460, 460, 455, 460, 460, 460, 460, 466, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 455, 460, 460, 460, 460, 460, 466, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 460, 460, 460, 460, 460, 460, 460, 471, 471, 471, 471, 471, 471, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 471, 471, 471, 471, 471, 471, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 468, 460, 477, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 478, 478, 478, 478, 478, 478, 478, 479, 479, 479, 479, 479, 479, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 479, 479, 479, 479, 479, 479, 478, 478, 481, 480, 480, 480, 481, 480, 480, 480, 480, 482, 483, 482, 482, 482, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 481, 480, 480, 480, 480, 480, 482, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 484, 480, 482, 485, 482, 482, 482, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 482, 485, 486, 487, 487, 487, 486, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 486, 487, 489, 488, 488, 488, 489, 488, 488, 488, 488, 488, 490, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 491, 488, 492, 493, 493, 493, 492, 493, 493, 493, 493, 493, 494, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 492, 493, 496, 495, 495, 495, 496, 495, 495, 495, 495, 495, 497, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 496, 495, 495, 495, 495, 495, 495, 495, 495, 498, 495, 500, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 501, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 502, 499, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 503, 503, 503, 503, 503, 503, 503, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 503, 503, 503, 503, 75, 503, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 503, 503, 503, 503, 503, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 503, 505, 504, 504, 504, 505, 504, 504, 504, 504, 504, 506, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 505, 504, 508, 507, 507, 507, 508, 507, 507, 507, 507, 509, 510, 509, 509, 509, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 508, 507, 507, 507, 507, 507, 509, 507, 507, 511, 507, 509, 512, 509, 509, 509, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 509, 512, 514, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 515, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 516, 513, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 517, 517, 517, 517, 517, 517, 517, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 517, 517, 517, 517, 81, 517, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 517, 517, 517, 517, 517, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 517, 519, 518, 518, 518, 519, 518, 518, 518, 518, 520, 521, 520, 520, 520, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 519, 518, 518, 518, 518, 518, 520, 518, 520, 522, 520, 520, 520, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 520, 522, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 525, 526, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 527, 88, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 528, 528, 528, 528, 528, 528, 528, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 528, 528, 528, 528, 86, 528, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 528, 528, 528, 528, 528, 86, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 528, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 529, 529, 529, 529, 529, 529, 529, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 529, 529, 529, 529, 91, 529, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 529, 529, 529, 529, 529, 91, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 530, 530, 530, 530, 530, 530, 530, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 530, 530, 530, 530, 93, 530, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 530, 530, 530, 530, 530, 93, 532, 533, 533, 533, 532, 533, 533, 533, 533, 534, 535, 534, 534, 534, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 532, 533, 533, 533, 533, 533, 534, 536, 533, 537, 538, 539, 540, 533, 533, 533, 541, 542, 533, 542, 533, 543, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 544, 533, 545, 546, 547, 533, 533, 548, 549, 548, 548, 550, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 551, 552, 533, 543, 553, 543, 554, 555, 556, 557, 558, 559, 531, 531, 560, 531, 531, 531, 561, 562, 563, 531, 531, 564, 565, 566, 567, 531, 568, 531, 569, 531, 533, 570, 533, 542, 533, 531, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 572, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 571, 571, 571, 572, 571, 572, 571, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 571, 571, 571, 571, 531, 571, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 571, 571, 571, 571, 571, 531, 534, 573, 534, 534, 534, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 534, 573, 574, 543, 575, 575, 543, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 543, 575, 576, 577, 578, 579, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 95, 95, 580, 95, 580, 95, 95, 580, 580, 95, 95, 95, 582, 95, 95, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 95, 95, 95, 95, 95, 95, 95, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 580, 95, 580, 580, 581, 95, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 580, 580, 580, 95, 580, 581, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 584, 584, 584, 584, 584, 584, 584, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 584, 584, 584, 584, 581, 584, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 584, 584, 584, 584, 584, 581, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 584, 585, 575, 543, 575, 543, 575, 543, 575, 587, 586, 543, 588, 575, 543, 575, 589, 543, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 543, 580, 543, 575, 543, 543, 575, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 572, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 571, 571, 571, 572, 571, 572, 571, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 571, 571, 571, 571, 548, 571, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 571, 571, 571, 571, 571, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 548, 591, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 548, 548, 548, 592, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 548, 548, 548, 548, 548, 593, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 594, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 595, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 572, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 572, 590, 572, 590, 548, 548, 548, 594, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 548, 590, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 590, 590, 590, 590, 590, 548, 589, 580, 535, 580, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 597, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 598, 599, 531, 531, 531, 531, 531, 600, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 601, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 602, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 603, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 604, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 605, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 606, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 607, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 608, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 609, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 610, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 611, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 607, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 612, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 611, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 613, 531, 614, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 615, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 616, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 617, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 618, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 619, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 620, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 621, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 622, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 623, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 624, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 625, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 626, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 616, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 627, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 628, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 572, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 629, 629, 629, 572, 629, 572, 629, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 629, 629, 629, 629, 531, 629, 531, 531, 531, 531, 531, 531, 531, 531, 630, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 629, 629, 629, 629, 629, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 631, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 632, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 633, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 634, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 635, 531, 636, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 637, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 609, 531, 531, 531, 638, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 639, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 640, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 625, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 641, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 563, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 623, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 642, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 643, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 644, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 625, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 645, 531, 531, 531, 646, 531, 531, 531, 531, 531, 647, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 647, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 648, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 649, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 650, 651, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 652, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 625, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 653, 531, 531, 654, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 609, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 620, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 655, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 656, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 638, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 657, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 563, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 658, 531, 531, 531, 531, 531, 531, 531, 531, 531, 652, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 620, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 659, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 660, 531, 531, 531, 531, 531, 531, 531, 661, 531, 531, 531, 531, 531, 531, 531, 662, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 638, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 626, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 646, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 663, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 620, 531, 531, 531, 644, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 664, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 665, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 572, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 572, 596, 572, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 531, 596, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 614, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 596, 596, 596, 596, 596, 531, 543, 575, 667, 668, 668, 668, 667, 668, 668, 668, 668, 669, 668, 669, 669, 669, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 667, 668, 668, 668, 668, 668, 669, 668, 668, 670, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 668, 671, 668, 668, 666, 668, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 668, 668, 668, 668, 668, 666, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 100, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 101, 672, 672, 672, 672, 100, 672, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 672, 672, 672, 672, 99, 672, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 672, 672, 672, 672, 672, 99, 669, 673, 669, 669, 669, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 669, 673, 674, 675, 676, 677, 678, 672, 679, 681, 682, 682, 682, 681, 682, 682, 682, 682, 683, 684, 683, 683, 683, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 681, 682, 682, 682, 682, 682, 683, 685, 682, 686, 682, 687, 688, 682, 682, 682, 689, 690, 682, 690, 682, 687, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 691, 692, 693, 682, 682, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 695, 696, 682, 687, 680, 687, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 682, 697, 682, 690, 682, 680, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 699, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 698, 698, 698, 698, 698, 699, 698, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 698, 698, 698, 698, 680, 698, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 698, 698, 698, 698, 698, 680, 701, 700, 702, 683, 703, 683, 683, 683, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 683, 703, 704, 687, 705, 705, 687, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 687, 705, 706, 707, 708, 709, 687, 705, 687, 705, 687, 705, 687, 710, 705, 687, 705, 712, 687, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 687, 711, 687, 705, 687, 687, 705, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 699, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 713, 713, 713, 713, 713, 699, 713, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 713, 713, 713, 713, 694, 713, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 713, 713, 713, 713, 713, 694, 712, 711, 684, 711, 687, 705, 715, 714, 714, 714, 715, 714, 714, 714, 714, 716, 717, 716, 716, 716, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 715, 714, 714, 714, 714, 714, 716, 714, 714, 718, 714, 109, 719, 714, 720, 714, 721, 109, 140, 722, 142, 109, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 723, 714, 724, 140, 725, 726, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 140, 727, 140, 109, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 728, 714, 714, 714, 714, 714, 714, 714, 714, 729, 714, 714, 730, 714, 731, 714, 714, 714, 153, 154, 714, 109, 714, 732, 732, 732, 732, 732, 732, 732, 732, 732, 716, 732, 716, 716, 716, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 716, 732, 732, 732, 732, 135, 136, 732, 137, 732, 138, 139, 140, 141, 142, 135, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 143, 732, 144, 140, 145, 146, 732, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 147, 148, 140, 109, 104, 732, 104, 104, 104, 104, 104, 104, 104, 104, 149, 104, 104, 104, 104, 104, 104, 104, 104, 150, 104, 104, 151, 104, 152, 104, 104, 104, 153, 154, 732, 109, 732, 104, 733, 734, 734, 734, 733, 734, 734, 734, 734, 140, 735, 140, 140, 140, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 733, 734, 734, 734, 734, 734, 140, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 140, 734, 140, 735, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 109, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 140, 735, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 736, 140, 735, 140, 140, 140, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 140, 737, 737, 737, 737, 737, 737, 737, 737, 737, 738, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 140, 737, 140, 735, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 140, 103, 739, 733, 140, 733, 741, 740, 743, 744, 743, 743, 743, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 743, 742, 745, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 105, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 733, 733, 733, 733, 105, 733, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 733, 733, 733, 733, 104, 733, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 733, 733, 733, 733, 733, 104, 746, 140, 735, 140, 140, 140, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 140, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 140, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 109, 733, 747, 748, 749, 750, 751, 752, 140, 735, 140, 140, 140, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 140, 733, 733, 733, 733, 733, 733, 733, 733, 733, 109, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 140, 733, 140, 740, 109, 753, 109, 753, 754, 755, 754, 754, 754, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 754, 742, 756, 753, 757, 757, 757, 757, 757, 757, 757, 757, 757, 112, 757, 112, 112, 112, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 112, 757, 757, 757, 757, 113, 114, 757, 115, 757, 116, 117, 118, 119, 120, 113, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 121, 757, 122, 118, 123, 124, 757, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 125, 126, 118, 127, 111, 757, 111, 111, 111, 111, 111, 111, 111, 111, 128, 111, 111, 111, 111, 111, 111, 111, 111, 129, 111, 111, 130, 111, 131, 111, 111, 111, 132, 133, 757, 127, 757, 111, 140, 753, 758, 753, 759, 753, 760, 753, 761, 179, 179, 179, 761, 179, 179, 179, 179, 762, 179, 762, 762, 762, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 761, 179, 179, 179, 179, 179, 762, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 763, 179, 179, 181, 179, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 179, 179, 179, 179, 181, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 764, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 178, 178, 178, 178, 764, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 178, 178, 178, 178, 181, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 178, 178, 178, 178, 178, 181, 765, 765, 765, 765, 765, 765, 765, 765, 765, 182, 765, 182, 182, 182, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 182, 765, 765, 765, 765, 765, 765, 765, 183, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 765, 184, 765, 765, 181, 765, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 765, 765, 765, 765, 765, 181, 766, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 764, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 765, 765, 765, 765, 764, 765, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 765, 765, 765, 765, 181, 765, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 767, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 765, 765, 765, 765, 765, 181, 186, 765, 769, 768, 768, 768, 769, 768, 768, 768, 768, 770, 768, 770, 770, 770, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 769, 768, 768, 768, 768, 768, 770, 768, 768, 771, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 772, 768, 768, 768, 768, 768, 768, 768, 773, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 774, 768, 770, 775, 770, 770, 770, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 770, 775, 776, 777, 778, 779, 781, 780, 782, 783, 780, 784, 786, 787, 787, 787, 786, 787, 787, 787, 787, 788, 789, 788, 788, 788, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 786, 787, 787, 787, 787, 787, 788, 787, 787, 790, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 787, 791, 787, 787, 785, 787, 785, 785, 785, 785, 785, 785, 785, 785, 792, 785, 785, 785, 785, 785, 785, 785, 785, 793, 785, 785, 794, 785, 795, 785, 785, 785, 787, 787, 787, 787, 787, 785, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 796, 796, 796, 796, 796, 796, 796, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 796, 796, 796, 796, 785, 796, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 796, 796, 796, 796, 796, 785, 788, 797, 788, 788, 788, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 788, 797, 798, 799, 800, 801, 802, 804, 803, 805, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 807, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 808, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 809, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 810, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 811, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 807, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 812, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 813, 785, 785, 785, 785, 785, 785, 785, 814, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 815, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 816, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 807, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 817, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 807, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 818, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 819, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 806, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 785, 806, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 811, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 806, 806, 806, 806, 806, 785, 821, 203, 203, 203, 821, 203, 203, 203, 203, 822, 823, 822, 822, 822, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 821, 203, 203, 203, 203, 203, 822, 824, 203, 825, 203, 826, 827, 203, 828, 203, 829, 830, 203, 831, 832, 833, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 834, 203, 835, 836, 837, 838, 203, 839, 840, 839, 839, 841, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 842, 843, 203, 844, 845, 203, 846, 847, 848, 849, 850, 851, 820, 820, 852, 820, 820, 820, 853, 854, 855, 820, 820, 856, 857, 858, 859, 820, 860, 820, 861, 820, 862, 863, 203, 844, 203, 820, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 248, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 192, 192, 250, 192, 248, 192, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 192, 192, 192, 192, 820, 192, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 192, 192, 192, 192, 192, 820, 865, 864, 864, 866, 864, 867, 869, 870, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 871, 868, 873, 872, 874, 875, 876, 822, 877, 822, 822, 822, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 822, 877, 879, 878, 881, 882, 881, 881, 881, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 881, 880, 203, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 203, 883, 884, 885, 886, 887, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 889, 889, 889, 889, 889, 889, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 889, 891, 201, 201, 201, 891, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 891, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 893, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 203, 892, 894, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 203, 895, 203, 192, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 892, 892, 892, 203, 892, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 892, 892, 892, 203, 203, 892, 898, 883, 203, 883, 883, 899, 899, 899, 883, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 883, 899, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 901, 902, 883, 903, 206, 904, 902, 883, 883, 905, 906, 883, 906, 883, 206, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 907, 883, 908, 909, 910, 883, 911, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 912, 883, 883, 206, 900, 206, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 883, 913, 883, 906, 883, 900, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 914, 914, 914, 916, 914, 915, 914, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 914, 914, 914, 914, 900, 914, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 914, 914, 914, 914, 914, 900, 918, 917, 919, 921, 922, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 923, 920, 925, 926, 924, 927, 928, 929, 930, 206, 914, 914, 206, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 206, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 914, 914, 914, 914, 914, 914, 914, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 914, 914, 914, 914, 205, 914, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 914, 914, 914, 914, 914, 205, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 914, 206, 914, 206, 914, 206, 914, 206, 931, 914, 206, 914, 206, 914, 206, 206, 914, 206, 914, 932, 933, 883, 934, 203, 883, 844, 203, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 203, 883, 203, 893, 883, 937, 936, 936, 936, 937, 936, 936, 936, 936, 938, 939, 938, 938, 938, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 937, 936, 936, 936, 936, 936, 938, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 936, 941, 936, 936, 940, 936, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 936, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 942, 942, 942, 942, 943, 942, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 942, 942, 942, 942, 942, 943, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 944, 944, 944, 944, 944, 944, 944, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 944, 944, 944, 944, 945, 944, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 944, 944, 944, 944, 944, 945, 948, 947, 947, 947, 948, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 948, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 949, 949, 949, 949, 949, 949, 949, 949, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 950, 947, 947, 947, 947, 947, 947, 947, 947, 947, 951, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 952, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 953, 947, 947, 954, 947, 955, 956, 958, 958, 958, 958, 958, 958, 958, 958, 957, 959, 959, 959, 959, 959, 959, 959, 959, 957, 957, 960, 960, 242, 242, 242, 960, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 960, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 961, 242, 962, 963, 964, 964, 242, 242, 242, 964, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 964, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 965, 242, 241, 964, 966, 967, 968, 968, 229, 229, 229, 968, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 968, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 969, 229, 964, 223, 223, 223, 964, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 964, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 970, 223, 960, 229, 229, 229, 960, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 960, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 231, 229, 960, 971, 971, 971, 960, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 960, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 972, 971, 973, 974, 974, 971, 971, 971, 974, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 974, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 975, 971, 974, 223, 223, 223, 974, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 974, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 970, 223, 976, 974, 974, 229, 229, 229, 974, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 974, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 231, 229, 977, 978, 978, 978, 977, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 977, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 978, 978, 978, 978, 978, 978, 978, 979, 979, 979, 979, 979, 979, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 979, 979, 979, 979, 979, 979, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 980, 978, 977, 981, 981, 981, 977, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 977, 981, 977, 982, 982, 982, 977, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 977, 982, 977, 983, 983, 983, 977, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 977, 983, 977, 977, 981, 981, 981, 977, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 977, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 981, 981, 981, 981, 981, 981, 981, 984, 984, 984, 984, 984, 984, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 984, 984, 984, 984, 984, 984, 981, 977, 982, 982, 982, 977, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 977, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 982, 982, 982, 982, 982, 982, 982, 985, 985, 985, 985, 985, 985, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 985, 985, 985, 985, 985, 985, 982, 977, 983, 983, 983, 977, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 977, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 983, 983, 983, 983, 983, 983, 983, 986, 986, 986, 986, 986, 986, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 986, 986, 986, 986, 986, 986, 983, 987, 990, 989, 989, 989, 990, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 990, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 989, 989, 989, 989, 989, 989, 989, 991, 991, 991, 991, 991, 991, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 991, 991, 991, 991, 991, 991, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 981, 989, 990, 992, 992, 992, 990, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 990, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 992, 992, 992, 992, 992, 992, 992, 993, 993, 993, 993, 993, 993, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 993, 993, 993, 993, 993, 993, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 994, 992, 990, 995, 995, 995, 990, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 990, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 997, 995, 990, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, 999, 999, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 1000, 990, 999, 999, 999, 990, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 990, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1000, 999, 990, 999, 999, 999, 990, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 990, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 988, 999, 988, 990, 996, 996, 996, 990, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 990, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 983, 996, 988, 983, 983, 983, 988, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 988, 983, 990, 992, 992, 992, 990, 992, 992, 992, 992, 1001, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 990, 992, 992, 992, 992, 992, 1001, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 992, 992, 992, 992, 992, 992, 992, 1002, 1002, 1002, 1002, 1002, 1002, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 1002, 1002, 1002, 1002, 1002, 1002, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 1003, 992, 990, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 998, 998, 998, 998, 998, 998, 998, 1004, 1004, 1004, 1004, 1004, 1004, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1004, 1004, 1004, 1004, 1004, 1004, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 998, 998, 998, 998, 998, 998, 998, 1005, 1005, 1005, 1005, 1005, 1005, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1005, 1005, 1005, 1005, 1005, 1005, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 998, 998, 998, 998, 998, 998, 998, 1006, 1006, 1006, 1006, 1006, 1006, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1006, 1006, 1006, 1006, 1006, 1006, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 998, 998, 998, 998, 998, 998, 998, 1007, 1007, 1007, 1007, 1007, 1007, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1007, 1007, 1007, 1007, 1007, 1007, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 998, 998, 998, 998, 998, 998, 998, 1008, 1008, 1008, 1008, 1008, 1008, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1008, 1008, 1008, 1008, 1008, 1008, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 998, 998, 998, 998, 998, 998, 998, 1009, 1009, 1009, 1009, 1009, 1009, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1009, 1009, 1009, 1009, 1009, 1009, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1000, 998, 990, 995, 995, 995, 990, 995, 995, 995, 995, 1001, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 990, 995, 995, 995, 995, 995, 1001, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 995, 995, 995, 995, 995, 995, 995, 1011, 1011, 1011, 1011, 1011, 1011, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 1011, 1011, 1011, 1011, 1011, 1011, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 1003, 995, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 998, 998, 998, 998, 998, 998, 998, 1012, 1012, 1012, 1012, 1012, 1012, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1012, 1012, 1012, 1012, 1012, 1012, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1003, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 998, 998, 998, 998, 998, 998, 998, 1013, 1013, 1013, 1013, 1013, 1013, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1013, 1013, 1013, 1013, 1013, 1013, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1003, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 998, 998, 998, 998, 998, 998, 998, 1014, 1014, 1014, 1014, 1014, 1014, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1014, 1014, 1014, 1014, 1014, 1014, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1003, 998, 990, 998, 998, 998, 990, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 990, 998, 998, 998, 998, 998, 1001, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1010, 1010, 1010, 1010, 1010, 1010, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1003, 998, 1015, 1016, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1017, 1017, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 248, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 192, 192, 250, 192, 248, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 192, 192, 192, 192, 247, 192, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 192, 192, 192, 192, 192, 247, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 248, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 883, 883, 250, 883, 248, 883, 247, 247, 247, 247, 1019, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 883, 883, 883, 883, 247, 883, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 883, 883, 883, 883, 883, 247, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 248, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 883, 883, 250, 883, 248, 883, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1020, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 883, 883, 883, 883, 247, 883, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 883, 883, 883, 883, 883, 247, 1021, 1022, 883, 878, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1024, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 1025, 1026, 820, 820, 820, 820, 820, 1027, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1028, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 1029, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1030, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 1031, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1032, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1033, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 1034, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1035, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1036, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1037, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1038, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 1034, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1039, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1038, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1040, 820, 1041, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1042, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 1043, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1044, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1045, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 1046, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1047, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1048, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 1049, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 1050, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1051, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1052, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 1053, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1043, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1054, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1055, 820, 1056, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1057, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1036, 820, 820, 820, 1054, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1058, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1059, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1052, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 1060, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 855, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1050, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 1061, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1062, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 1063, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1064, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1052, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1065, 820, 820, 820, 1066, 820, 820, 820, 820, 820, 1067, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1067, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1068, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 1069, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1070, 1071, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 1072, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1073, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1074, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1077, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1075, 1075, 1079, 1075, 1077, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1075, 1075, 1075, 1075, 1076, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1075, 1075, 1075, 1075, 1075, 1076, 869, 1080, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 871, 868, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1081, 820, 820, 1082, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1036, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1047, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1083, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1084, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1054, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1085, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 855, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 1086, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1087, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1047, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1052, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1088, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 1089, 820, 820, 820, 820, 820, 820, 820, 1090, 820, 820, 820, 820, 820, 820, 820, 1091, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1054, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1092, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1093, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1061, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1094, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1061, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 1095, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1047, 820, 820, 820, 1096, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1097, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1061, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 1098, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 1099, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 248, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 249, 1023, 1023, 250, 1023, 248, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 820, 1023, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1041, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1023, 1023, 1023, 1023, 1023, 820, 1100, 203, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 893, 883, 1102, 1101, 1101, 1101, 1102, 1101, 1101, 1101, 1101, 1103, 1104, 1103, 1103, 1103, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1101, 1101, 1101, 1101, 1101, 1103, 1101, 1101, 1105, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1106, 1101, 1103, 1107, 1103, 1103, 1103, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1103, 1107, 1108, 1109, 1110, 1111, 1112, 1114, 1113, 1115, 1117, 1118, 1118, 1118, 1117, 1118, 1118, 1118, 1118, 1119, 1120, 1119, 1119, 1119, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1117, 1118, 1118, 1118, 1118, 1118, 1119, 1118, 1121, 1122, 1118, 1118, 1118, 1121, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1118, 1123, 1118, 1118, 1116, 1118, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1118, 1118, 1118, 1118, 1118, 1116, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 256, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 257, 1124, 1124, 1124, 1124, 256, 1124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1124, 1124, 1124, 1124, 255, 1124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1124, 1124, 1124, 1124, 1124, 255, 1119, 1125, 1119, 1119, 1119, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1119, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1124, 1132, 1134, 1135, 1135, 1135, 1134, 1135, 1135, 1135, 1135, 1136, 1137, 1136, 1136, 1136, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1134, 1135, 1135, 1135, 1135, 1135, 1136, 1138, 1139, 1140, 1141, 1142, 1143, 1139, 1144, 1145, 1146, 1142, 1147, 1148, 1149, 1142, 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1159, 1159, 1161, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1162, 1163, 1164, 1142, 1165, 1139, 1166, 1167, 1168, 1169, 1170, 1171, 1133, 1133, 1172, 1133, 1133, 1133, 1173, 1174, 1175, 1133, 1133, 1176, 1177, 1178, 1179, 1133, 1180, 1133, 1181, 1133, 1182, 1183, 1184, 1142, 1135, 1133, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1185, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 265, 265, 265, 265, 265, 1185, 265, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 265, 265, 265, 265, 1133, 265, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 265, 265, 265, 265, 265, 1133, 1187, 1186, 1188, 1136, 1189, 1136, 1136, 1136, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1136, 1189, 1190, 1192, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1191, 1193, 1194, 1195, 1196, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 260, 260, 1197, 260, 1197, 260, 260, 1197, 1197, 260, 260, 260, 1198, 260, 260, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 260, 260, 260, 260, 260, 260, 260, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1197, 260, 1197, 1197, 268, 260, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1197, 1197, 1197, 260, 1197, 268, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1200, 1200, 1200, 1200, 268, 1200, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1200, 1200, 1200, 1200, 1200, 268, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1201, 1191, 1142, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1202, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1201, 1191, 1203, 1204, 1142, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1201, 1191, 1201, 1205, 1191, 1207, 1206, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 1206, 1147, 1208, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1210, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1211, 1209, 1209, 1209, 1209, 1209, 1210, 1209, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 262, 1209, 1213, 1212, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1215, 1212, 1216, 1217, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1218, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1219, 1212, 1212, 1212, 1212, 1212, 1212, 1220, 1212, 1212, 1215, 1212, 1216, 1217, 1212, 1212, 1212, 1221, 1212, 1212, 1212, 1212, 1212, 1218, 1212, 1212, 1222, 1212, 1212, 1212, 1212, 1212, 1219, 1212, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1224, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1223, 1223, 1223, 1223, 1223, 1224, 1223, 1223, 1223, 1226, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1227, 1223, 1228, 265, 1228, 265, 265, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 265, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1228, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1230, 1229, 1231, 1233, 1232, 1234, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1220, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1221, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1222, 1212, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1236, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1221, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1222, 1212, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1239, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1242, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1243, 1245, 1244, 1246, 1248, 1248, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1249, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1250, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1251, 1247, 1252, 1252, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1253, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1252, 1252, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1242, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1257, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1258, 1254, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1261, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1262, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1263, 1259, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1265, 1265, 1265, 1265, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1266, 1264, 1265, 1265, 1265, 1265, 1265, 1265, 1264, 1264, 1267, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1268, 1264, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1270, 1237, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1242, 1237, 1269, 1269, 1269, 1269, 1269, 1269, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1272, 1271, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1274, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1275, 1271, 1271, 1271, 1271, 1271, 1274, 1271, 1271, 1271, 1276, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1277, 1271, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1279, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1276, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1277, 1271, 1280, 1237, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1282, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1283, 1237, 1237, 1237, 1237, 1237, 1282, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1242, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1202, 1208, 1142, 1284, 1191, 1192, 1191, 1285, 1192, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1192, 1208, 1192, 1191, 1192, 1142, 1191, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1197, 1197, 1197, 1197, 1197, 1197, 1286, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1197, 1197, 1197, 1197, 268, 1197, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1197, 1197, 1197, 1197, 1197, 268, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1185, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 265, 265, 265, 265, 1185, 265, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 265, 265, 265, 265, 1159, 265, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 265, 265, 265, 265, 265, 1159, 1288, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1159, 1290, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1291, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1292, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1293, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1294, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1185, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1287, 1289, 1289, 1289, 1289, 1185, 1289, 1159, 1159, 1159, 1293, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1159, 1289, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1289, 1289, 1289, 1289, 1289, 1159, 1295, 1297, 1296, 1298, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1300, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1301, 1302, 1133, 1133, 1133, 1133, 1133, 1303, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1304, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1305, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1306, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1307, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1308, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1309, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1310, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1311, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1312, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1313, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1314, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1315, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1316, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1317, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1318, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1314, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1319, 1133, 1320, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1321, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1322, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1323, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1325, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1326, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1327, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1328, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1329, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1330, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1331, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1332, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1333, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1334, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1335, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1336, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1337, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 270, 271, 270, 270, 270, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 270, 1185, 1338, 272, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1338, 1338, 273, 1338, 1338, 1185, 1338, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1338, 274, 1338, 1338, 1133, 1338, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1338, 1338, 1338, 1338, 1338, 1133, 287, 288, 287, 287, 287, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 289, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 292, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1340, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1341, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1342, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1185, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1343, 1343, 1343, 1343, 1343, 1185, 1343, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1343, 1343, 1343, 1343, 1133, 1343, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1344, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1343, 1343, 1343, 1343, 1343, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1345, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1346, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1347, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1348, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1349, 1133, 1350, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1351, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1352, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1317, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1353, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1354, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1334, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1355, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1175, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1356, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1357, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1317, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1358, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1324, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1359, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1360, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1361, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1334, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1362, 1133, 1133, 1133, 1363, 1133, 1133, 1133, 1133, 1133, 1364, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1365, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1331, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1317, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1366, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1367, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1368, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1369, 1370, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1317, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1371, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1372, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1358, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1373, 1133, 1133, 1374, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1317, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1375, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1331, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1376, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1377, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1378, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1317, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1379, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1380, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1366, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1381, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1382, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1328, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1357, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1383, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1384, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1385, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1386, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1387, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1323, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1388, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1389, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1358, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1390, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1358, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1391, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1328, 1133, 1133, 1133, 1392, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1393, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1358, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1394, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1395, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1396, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1185, 1299, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1133, 1299, 1133, 1133, 1133, 1366, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1299, 1299, 1299, 1299, 1299, 1133, 1397, 1201, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1142, 1191, 1398, 1400, 1399, 1400, 1400, 1400, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1400, 1399, 1399, 1399, 1399, 1399, 1401, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 298, 1399, 296, 1402, 296, 296, 296, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 296, 1402, 1402, 1402, 1402, 1402, 297, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 298, 1402, 299, 1402, 1404, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1405, 1403, 1404, 1403, 1404, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1407, 1403, 1404, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1408, 1403, 1404, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1409, 1403, 1411, 1409, 0]]; + $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 21, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 34, 31, 31, 31, 31, 31, 31, 35, 31, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 37, 18, 18, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 43, 45, 43, 45, 45, 43, 43, 45, 45, 45, 46, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 45, 43, 43, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 45, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 50, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 52, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 61, 50, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 66, 62, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 67, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68, 49, 68, 49, 49, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 74, 76, 74, 76, 76, 74, 74, 76, 76, 76, 77, 76, 76, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 76, 74, 74, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 76, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 76, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 76, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 79, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 82, 80, 82, 80, 82, 82, 80, 80, 82, 82, 82, 83, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 82, 80, 80, 81, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 82, 80, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 80, 80, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 82, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 80, 82, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 85, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 81, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 81, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 81, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 88, 87, 88, 87, 87, 88, 88, 87, 87, 87, 89, 87, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 88, 87, 88, 88, 86, 87, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 88, 88, 88, 87, 88, 86, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 87, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 88, 88, 88, 88, 88, 88, 93, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 91, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 91, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 88, 88, 88, 88, 88, 88, 88, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 88, 88, 88, 88, 94, 88, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 88, 88, 88, 88, 88, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 95, 95, 95, 95, 96, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 95, 95, 95, 95, 95, 96, 97, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 101, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 102, 99, 99, 99, 99, 101, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, 99, 99, 100, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, 99, 99, 99, 100, 102, 99, 99, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 104, 104, 104, 104, 106, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 104, 109, 108, 110, 108, 111, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 113, 108, 113, 113, 113, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 113, 108, 108, 108, 108, 114, 115, 108, 116, 108, 117, 118, 119, 120, 121, 114, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 122, 108, 123, 119, 124, 125, 108, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 126, 127, 119, 128, 112, 108, 112, 112, 112, 112, 112, 112, 112, 112, 129, 112, 112, 112, 112, 112, 112, 112, 112, 130, 112, 112, 131, 112, 132, 112, 112, 112, 133, 134, 108, 128, 108, 112, 108, 108, 108, 108, 108, 108, 108, 108, 108, 135, 108, 135, 135, 135, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 135, 108, 108, 108, 108, 136, 137, 108, 138, 108, 139, 140, 141, 142, 143, 136, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 144, 108, 145, 141, 146, 147, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 148, 149, 141, 110, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 150, 105, 105, 105, 105, 105, 105, 105, 105, 151, 105, 105, 152, 105, 153, 105, 105, 105, 154, 155, 108, 110, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 156, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 157, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 158, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 159, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 160, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 156, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 161, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 162, 105, 105, 105, 105, 105, 105, 105, 163, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 164, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 165, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 156, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 166, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 156, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 167, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 168, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 108, 108, 108, 108, 106, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 160, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 108, 108, 108, 108, 108, 105, 170, 169, 171, 169, 172, 169, 141, 169, 173, 169, 169, 169, 169, 169, 169, 169, 174, 169, 175, 169, 176, 169, 141, 169, 177, 169, 141, 169, 178, 169, 172, 169, 180, 179, 181, 181, 181, 181, 181, 181, 181, 181, 181, 183, 181, 183, 183, 183, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 183, 181, 181, 181, 181, 181, 181, 181, 184, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 181, 185, 181, 181, 182, 181, 182, 182, 182, 186, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 181, 181, 181, 181, 181, 182, 187, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 189, 181, 189, 189, 189, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 189, 181, 181, 181, 181, 181, 181, 181, 190, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 181, 191, 181, 181, 188, 181, 188, 188, 188, 192, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 181, 181, 181, 181, 181, 188, 194, 193, 194, 194, 194, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, 193, 193, 193, 193, 193, 193, 193, 195, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 196, 193, 197, 193, 198, 193, 198, 198, 198, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 198, 193, 193, 193, 193, 193, 193, 193, 199, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 200, 193, 201, 202, 204, 203, 205, 203, 206, 203, 207, 203, 208, 203, 209, 210, 210, 210, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 212, 201, 213, 214, 213, 213, 213, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 213, 201, 201, 215, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 217, 201, 218, 219, 218, 218, 218, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 218, 201, 201, 220, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 222, 201, 224, 225, 224, 224, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 226, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 228, 223, 230, 231, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 232, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 234, 229, 230, 235, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 232, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 234, 229, 214, 201, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 238, 236, 238, 236, 238, 238, 236, 236, 238, 238, 238, 239, 238, 238, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 238, 238, 238, 238, 238, 238, 238, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 238, 236, 236, 237, 238, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 238, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 236, 236, 236, 236, 236, 236, 236, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 236, 236, 236, 236, 238, 236, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 236, 236, 236, 236, 236, 238, 241, 238, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 236, 241, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 243, 236, 236, 236, 236, 244, 236, 236, 236, 236, 236, 245, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 212, 236, 236, 236, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 236, 236, 236, 236, 242, 246, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 236, 236, 236, 245, 236, 242, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 247, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 247, 251, 250, 254, 253, 249, 248, 254, 255, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 243, 236, 236, 236, 236, 244, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 236, 236, 236, 236, 242, 246, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 236, 236, 236, 236, 236, 242, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 254, 256, 254, 257, 258, 259, 259, 259, 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 260, 259, 258, 261, 261, 261, 258, 261, 261, 261, 261, 261, 262, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 258, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 263, 261, 258, 261, 261, 261, 258, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 258, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 264, 261, 258, 265, 265, 265, 258, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 258, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 267, 265, 258, 268, 268, 268, 258, 268, 268, 268, 268, 268, 269, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 258, 268, 258, 268, 268, 268, 258, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 258, 268, 258, 259, 259, 259, 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 270, 259, 258, 271, 271, 271, 258, 271, 271, 271, 271, 271, 272, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 258, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 273, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 271, 271, 271, 271, 271, 275, 271, 258, 271, 271, 271, 258, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 258, 271, 276, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 277, 258, 277, 258, 258, 278, 278, 278, 258, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 258, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 258, 261, 261, 261, 258, 261, 261, 261, 261, 261, 262, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 258, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 264, 261, 258, 281, 281, 281, 258, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 258, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 281, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 284, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 201, 201, 286, 201, 284, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 201, 201, 201, 201, 283, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 201, 201, 201, 201, 201, 283, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 284, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 236, 236, 286, 236, 284, 236, 283, 283, 283, 283, 283, 283, 287, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 283, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 236, 283, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 284, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 236, 236, 286, 236, 284, 236, 283, 283, 283, 283, 283, 283, 283, 283, 288, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 283, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 236, 283, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 284, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 236, 236, 286, 236, 284, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 289, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 283, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 236, 283, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 284, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 236, 236, 286, 236, 284, 236, 283, 283, 283, 289, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 283, 236, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 236, 236, 236, 236, 236, 283, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 292, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 293, 290, 290, 290, 290, 292, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 290, 290, 290, 290, 291, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 290, 290, 290, 290, 290, 291, 293, 290, 290, 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 295, 295, 295, 295, 296, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 295, 295, 295, 295, 295, 296, 298, 297, 298, 297, 297, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 297, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 297, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 297, 302, 301, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 301, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 301, 306, 305, 307, 305, 308, 305, 309, 305, 311, 310, 312, 310, 313, 310, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 295, 295, 295, 295, 295, 295, 295, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 295, 295, 295, 295, 314, 295, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 295, 295, 295, 295, 295, 314, 315, 301, 316, 317, 316, 316, 316, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 316, 301, 301, 318, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 319, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 320, 301, 321, 322, 321, 321, 321, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 321, 301, 301, 323, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 324, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 325, 301, 327, 328, 327, 327, 327, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 326, 326, 329, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 330, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 331, 326, 333, 334, 333, 333, 333, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 332, 332, 335, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 336, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 337, 332, 333, 334, 333, 333, 333, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 332, 332, 335, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 338, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 337, 332, 333, 339, 333, 333, 333, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 332, 332, 335, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 336, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 337, 332, 340, 301, 317, 301, 342, 341, 342, 342, 342, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 342, 341, 341, 341, 341, 341, 343, 341, 341, 341, 341, 341, 341, 341, 344, 341, 345, 341, 347, 346, 346, 346, 347, 346, 346, 346, 346, 348, 349, 348, 348, 348, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 347, 346, 346, 346, 346, 346, 348, 346, 346, 350, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 351, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 352, 346, 346, 353, 346, 348, 354, 348, 348, 348, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 348, 354, 355, 356, 357, 358, 359, 361, 360, 363, 364, 363, 363, 363, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 363, 362, 349, 360, 365, 360, 367, 366, 366, 366, 367, 366, 366, 366, 366, 368, 369, 368, 368, 368, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 367, 366, 366, 366, 366, 366, 368, 366, 366, 370, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 371, 366, 368, 372, 368, 368, 368, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 368, 372, 374, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 375, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 376, 373, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 377, 377, 377, 377, 377, 377, 377, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 377, 377, 377, 377, 13, 377, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 377, 377, 377, 377, 377, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 377, 380, 379, 379, 379, 380, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 381, 381, 381, 381, 381, 381, 381, 381, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 382, 379, 379, 379, 379, 379, 379, 379, 379, 379, 383, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 384, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 385, 379, 379, 386, 379, 387, 388, 390, 390, 390, 390, 390, 390, 390, 390, 389, 391, 391, 391, 391, 391, 391, 391, 391, 389, 389, 392, 392, 38, 38, 38, 392, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 392, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 393, 38, 394, 395, 396, 396, 38, 38, 38, 396, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 396, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 397, 38, 37, 396, 398, 399, 400, 400, 25, 25, 25, 400, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 400, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 401, 25, 396, 19, 19, 19, 396, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 396, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 402, 19, 392, 25, 25, 25, 392, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 392, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 392, 403, 403, 403, 392, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 392, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 404, 403, 405, 406, 406, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 407, 403, 406, 19, 19, 19, 406, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 406, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 402, 19, 408, 406, 406, 25, 25, 25, 406, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 406, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 409, 409, 409, 409, 409, 409, 409, 410, 410, 410, 410, 410, 410, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 410, 410, 410, 410, 410, 410, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 411, 409, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 409, 409, 409, 409, 409, 409, 409, 412, 412, 412, 412, 412, 412, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 412, 412, 412, 412, 412, 412, 409, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 409, 409, 409, 409, 409, 409, 409, 413, 413, 413, 413, 413, 413, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 413, 413, 413, 413, 413, 413, 409, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 409, 409, 409, 409, 409, 409, 409, 414, 414, 414, 414, 414, 414, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 414, 414, 414, 414, 414, 414, 409, 415, 418, 417, 417, 417, 418, 417, 417, 417, 417, 419, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 418, 417, 417, 417, 417, 417, 419, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 421, 417, 418, 417, 417, 417, 418, 417, 417, 417, 417, 416, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 418, 417, 417, 417, 417, 417, 416, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 417, 417, 417, 417, 417, 417, 417, 422, 422, 422, 422, 422, 422, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 422, 422, 422, 422, 422, 422, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 423, 417, 416, 418, 422, 422, 422, 418, 422, 422, 422, 422, 416, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 418, 422, 422, 422, 422, 422, 416, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 416, 422, 424, 418, 425, 425, 425, 418, 425, 425, 425, 425, 419, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 419, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 416, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 416, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 416, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 425, 425, 425, 425, 425, 425, 425, 422, 422, 422, 422, 422, 422, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 422, 422, 422, 422, 422, 422, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 429, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 425, 425, 425, 425, 425, 425, 425, 430, 430, 430, 430, 430, 430, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 430, 430, 430, 430, 430, 430, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 425, 425, 425, 425, 425, 425, 425, 431, 431, 431, 431, 431, 431, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 431, 431, 431, 431, 431, 431, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 425, 425, 425, 425, 425, 425, 425, 432, 432, 432, 432, 432, 432, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 432, 432, 432, 432, 432, 432, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 425, 425, 425, 425, 425, 425, 425, 433, 433, 433, 433, 433, 433, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 433, 433, 433, 433, 433, 433, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 426, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 418, 425, 425, 425, 418, 425, 425, 425, 425, 416, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 418, 425, 425, 425, 425, 425, 416, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 434, 434, 434, 434, 434, 434, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 416, 425, 435, 436, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, 437, 437, 440, 439, 439, 439, 440, 439, 439, 439, 439, 439, 441, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 439, 439, 439, 439, 439, 439, 439, 439, 442, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 443, 439, 445, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 446, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 447, 444, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 448, 448, 448, 448, 448, 448, 448, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 448, 448, 448, 448, 44, 448, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 448, 448, 448, 448, 448, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 452, 452, 452, 452, 452, 452, 452, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 454, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 456, 450, 450, 457, 450, 458, 459, 461, 461, 461, 461, 461, 461, 461, 461, 460, 462, 462, 462, 462, 462, 462, 462, 462, 460, 460, 463, 463, 69, 69, 69, 463, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 463, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 464, 69, 465, 466, 467, 467, 69, 69, 69, 467, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 467, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 468, 69, 68, 467, 469, 470, 471, 471, 56, 56, 56, 471, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 471, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 472, 56, 467, 50, 50, 50, 467, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 467, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 473, 50, 463, 56, 56, 56, 463, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 463, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 463, 474, 474, 474, 463, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 463, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 475, 474, 476, 477, 477, 474, 474, 474, 477, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 477, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 478, 474, 477, 50, 50, 50, 477, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 477, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 473, 50, 479, 477, 477, 56, 56, 56, 477, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 477, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 480, 480, 480, 480, 480, 480, 480, 481, 481, 481, 481, 481, 481, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 481, 481, 481, 481, 481, 481, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 482, 480, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 480, 480, 480, 480, 480, 480, 480, 483, 483, 483, 483, 483, 483, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 483, 483, 483, 483, 483, 483, 480, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 480, 480, 480, 480, 480, 480, 480, 484, 484, 484, 484, 484, 484, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 484, 484, 484, 484, 484, 484, 480, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 480, 480, 480, 480, 480, 480, 480, 485, 485, 485, 485, 485, 485, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 485, 485, 485, 485, 485, 485, 480, 486, 489, 488, 488, 488, 489, 488, 488, 488, 488, 490, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 488, 488, 488, 488, 488, 490, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 492, 488, 489, 488, 488, 488, 489, 488, 488, 488, 488, 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 488, 488, 488, 488, 488, 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 488, 488, 488, 488, 488, 488, 488, 493, 493, 493, 493, 493, 493, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 493, 493, 493, 493, 493, 493, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 494, 488, 487, 489, 493, 493, 493, 489, 493, 493, 493, 493, 487, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 489, 493, 493, 493, 493, 493, 487, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 487, 493, 495, 489, 496, 496, 496, 489, 496, 496, 496, 496, 490, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 490, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 487, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 487, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 487, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 496, 496, 496, 496, 496, 496, 496, 493, 493, 493, 493, 493, 493, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 493, 493, 493, 493, 493, 493, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 496, 496, 496, 496, 496, 496, 496, 498, 498, 498, 498, 498, 498, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 498, 498, 498, 498, 498, 498, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 500, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 496, 496, 496, 496, 496, 496, 496, 501, 501, 501, 501, 501, 501, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 501, 501, 501, 501, 501, 501, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 496, 496, 496, 496, 496, 496, 496, 502, 502, 502, 502, 502, 502, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 502, 502, 502, 502, 502, 502, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 496, 496, 496, 496, 496, 496, 496, 503, 503, 503, 503, 503, 503, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 503, 503, 503, 503, 503, 503, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 496, 496, 496, 496, 496, 496, 496, 504, 504, 504, 504, 504, 504, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 504, 504, 504, 504, 504, 504, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 499, 496, 489, 496, 496, 496, 489, 496, 496, 496, 496, 487, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 489, 496, 496, 496, 496, 496, 487, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 505, 505, 505, 505, 505, 505, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 487, 496, 506, 507, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 511, 510, 510, 510, 511, 510, 510, 510, 510, 512, 513, 512, 512, 512, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 511, 510, 510, 510, 510, 510, 512, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 514, 510, 512, 515, 512, 512, 512, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 512, 515, 516, 517, 517, 517, 516, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 516, 517, 519, 518, 518, 518, 519, 518, 518, 518, 518, 518, 520, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 519, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 521, 518, 522, 523, 523, 523, 522, 523, 523, 523, 523, 523, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 522, 523, 526, 525, 525, 525, 526, 525, 525, 525, 525, 525, 527, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 526, 525, 525, 525, 525, 525, 525, 525, 525, 528, 525, 530, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 531, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 532, 529, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 533, 533, 533, 533, 533, 533, 533, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 533, 533, 533, 533, 75, 533, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 533, 533, 533, 533, 533, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 533, 535, 534, 534, 534, 535, 534, 534, 534, 534, 534, 536, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 538, 537, 537, 537, 538, 537, 537, 537, 537, 539, 540, 539, 539, 539, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 538, 537, 537, 537, 537, 537, 539, 537, 537, 541, 537, 539, 542, 539, 539, 539, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 539, 542, 544, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 545, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 546, 543, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 547, 547, 547, 547, 547, 547, 547, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 547, 547, 547, 547, 81, 547, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 547, 547, 547, 547, 547, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 547, 549, 548, 548, 548, 549, 548, 548, 548, 548, 550, 551, 550, 550, 550, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 549, 548, 548, 548, 548, 548, 550, 548, 550, 552, 550, 550, 550, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 550, 552, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 553, 553, 553, 553, 553, 553, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 553, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 555, 555, 555, 555, 555, 555, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 555, 556, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 557, 88, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 558, 558, 558, 558, 558, 558, 558, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 558, 558, 558, 558, 86, 558, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 558, 558, 558, 558, 558, 86, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 558, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 559, 559, 559, 559, 559, 559, 559, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 559, 559, 559, 559, 91, 559, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 559, 559, 559, 559, 559, 91, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 560, 560, 560, 560, 560, 560, 560, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 560, 560, 560, 560, 91, 560, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 560, 560, 560, 560, 560, 91, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 561, 561, 561, 561, 561, 561, 561, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 561, 561, 561, 561, 94, 561, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 561, 561, 561, 561, 561, 94, 563, 564, 564, 564, 563, 564, 564, 564, 564, 565, 566, 565, 565, 565, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 563, 564, 564, 564, 564, 564, 565, 567, 564, 568, 569, 570, 571, 564, 564, 564, 572, 573, 564, 573, 564, 574, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 575, 564, 576, 577, 578, 564, 564, 579, 580, 579, 579, 581, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 582, 583, 564, 574, 584, 574, 585, 586, 587, 588, 589, 590, 562, 562, 591, 562, 562, 562, 592, 593, 594, 562, 562, 595, 596, 597, 598, 562, 599, 562, 600, 562, 564, 601, 564, 573, 564, 562, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 603, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 602, 602, 602, 603, 602, 603, 602, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 602, 602, 602, 602, 562, 602, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 602, 602, 602, 602, 602, 562, 565, 604, 565, 565, 565, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 565, 604, 605, 574, 606, 606, 574, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 574, 606, 607, 608, 609, 610, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 96, 96, 611, 96, 611, 96, 96, 611, 611, 96, 96, 96, 613, 96, 96, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 96, 96, 96, 96, 96, 96, 96, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 611, 96, 611, 611, 612, 96, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 611, 611, 611, 96, 611, 612, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 615, 615, 615, 615, 615, 615, 615, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 615, 615, 615, 615, 612, 615, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 615, 615, 615, 615, 615, 612, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, 616, 606, 574, 606, 574, 606, 574, 606, 618, 617, 574, 619, 606, 574, 606, 620, 574, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 574, 611, 574, 606, 574, 574, 606, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 603, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 602, 602, 602, 603, 602, 603, 602, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 602, 602, 602, 602, 579, 602, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 602, 602, 602, 602, 602, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 579, 622, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 579, 579, 579, 623, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 579, 579, 579, 579, 579, 624, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 625, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 626, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 603, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 603, 621, 603, 621, 579, 579, 579, 625, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 579, 621, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 621, 621, 621, 621, 621, 579, 620, 611, 566, 611, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 628, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 629, 630, 562, 562, 562, 562, 562, 631, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 632, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 633, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 634, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 635, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 636, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 637, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 638, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 639, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 640, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 641, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 642, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 638, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 643, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 642, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 644, 562, 645, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 646, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 647, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 648, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 649, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 650, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 651, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 652, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 653, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 654, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 655, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 656, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 657, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 647, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 658, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 659, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 603, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 660, 660, 660, 603, 660, 603, 660, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 660, 660, 660, 660, 562, 660, 562, 562, 562, 562, 562, 562, 562, 562, 661, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 660, 660, 660, 660, 660, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 662, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 663, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 664, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 665, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 666, 562, 667, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 668, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 640, 562, 562, 562, 669, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 670, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 671, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 656, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 672, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 594, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 654, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 673, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 674, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 675, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 656, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 676, 562, 562, 562, 677, 562, 562, 562, 562, 562, 678, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 678, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 679, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 680, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 681, 682, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 683, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 656, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 684, 562, 562, 685, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 640, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 651, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 686, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 687, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 669, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 688, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 594, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 689, 562, 562, 562, 562, 562, 562, 562, 562, 562, 683, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 651, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 690, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 691, 562, 562, 562, 562, 562, 562, 562, 692, 562, 562, 562, 562, 562, 562, 562, 693, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 669, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 657, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 677, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 694, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 651, 562, 562, 562, 675, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 695, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 696, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 603, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 603, 627, 603, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 562, 627, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 645, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 627, 627, 627, 627, 627, 562, 574, 606, 698, 699, 699, 699, 698, 699, 699, 699, 699, 700, 699, 700, 700, 700, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 698, 699, 699, 699, 699, 699, 700, 699, 699, 701, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 699, 702, 699, 699, 697, 699, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 699, 699, 699, 699, 699, 697, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 101, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 102, 703, 703, 703, 703, 101, 703, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 703, 703, 703, 703, 100, 703, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 703, 703, 703, 703, 703, 100, 700, 704, 700, 700, 700, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 700, 704, 705, 706, 707, 708, 709, 703, 710, 712, 713, 713, 713, 712, 713, 713, 713, 713, 714, 715, 714, 714, 714, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 712, 713, 713, 713, 713, 713, 714, 716, 713, 717, 713, 718, 719, 713, 713, 713, 720, 721, 713, 721, 713, 718, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 722, 723, 724, 713, 713, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 726, 727, 713, 718, 711, 718, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 713, 728, 713, 721, 713, 711, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 730, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 729, 729, 729, 729, 729, 730, 729, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 729, 729, 729, 729, 711, 729, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 729, 729, 729, 729, 729, 711, 732, 731, 733, 714, 734, 714, 714, 714, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 714, 734, 735, 718, 736, 736, 718, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 718, 736, 737, 738, 739, 740, 718, 736, 718, 736, 718, 736, 718, 741, 736, 718, 736, 743, 718, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 718, 742, 718, 736, 718, 718, 736, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 730, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 744, 744, 744, 744, 744, 730, 744, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 744, 744, 744, 744, 725, 744, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 744, 744, 744, 744, 744, 725, 743, 742, 715, 742, 718, 736, 746, 745, 745, 745, 746, 745, 745, 745, 745, 747, 748, 747, 747, 747, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 746, 745, 745, 745, 745, 745, 747, 745, 745, 749, 745, 110, 750, 745, 751, 745, 752, 110, 141, 753, 143, 110, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 754, 745, 755, 141, 756, 757, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 141, 758, 141, 110, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 759, 745, 745, 745, 745, 745, 745, 745, 745, 760, 745, 745, 761, 745, 762, 745, 745, 745, 154, 155, 745, 110, 745, 763, 763, 763, 763, 763, 763, 763, 763, 763, 747, 763, 747, 747, 747, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 747, 763, 763, 763, 763, 136, 137, 763, 138, 763, 139, 140, 141, 142, 143, 136, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 144, 763, 145, 141, 146, 147, 763, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 148, 149, 141, 110, 105, 763, 105, 105, 105, 105, 105, 105, 105, 105, 150, 105, 105, 105, 105, 105, 105, 105, 105, 151, 105, 105, 152, 105, 153, 105, 105, 105, 154, 155, 763, 110, 763, 105, 764, 765, 765, 765, 764, 765, 765, 765, 765, 141, 766, 141, 141, 141, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 764, 765, 765, 765, 765, 765, 141, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 141, 765, 141, 766, 141, 141, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 104, 104, 104, 104, 104, 110, 104, 104, 104, 104, 104, 104, 104, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 104, 141, 766, 141, 141, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 104, 767, 141, 766, 141, 141, 141, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 141, 768, 768, 768, 768, 768, 768, 768, 768, 768, 769, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 141, 768, 141, 766, 141, 141, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 141, 141, 104, 770, 764, 141, 764, 772, 771, 774, 775, 774, 774, 774, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 774, 773, 776, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 106, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 107, 764, 764, 764, 764, 106, 764, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 764, 764, 764, 764, 105, 764, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 764, 764, 764, 764, 764, 105, 777, 141, 766, 141, 141, 141, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 141, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 141, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 110, 764, 778, 779, 780, 781, 782, 783, 141, 766, 141, 141, 141, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 141, 764, 764, 764, 764, 764, 764, 764, 764, 764, 110, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 141, 764, 141, 771, 110, 784, 110, 784, 785, 786, 785, 785, 785, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 785, 773, 787, 784, 788, 788, 788, 788, 788, 788, 788, 788, 788, 113, 788, 113, 113, 113, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 113, 788, 788, 788, 788, 114, 115, 788, 116, 788, 117, 118, 119, 120, 121, 114, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 122, 788, 123, 119, 124, 125, 788, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 126, 127, 119, 128, 112, 788, 112, 112, 112, 112, 112, 112, 112, 112, 129, 112, 112, 112, 112, 112, 112, 112, 112, 130, 112, 112, 131, 112, 132, 112, 112, 112, 133, 134, 788, 128, 788, 112, 141, 784, 789, 784, 790, 784, 791, 784, 792, 180, 180, 180, 792, 180, 180, 180, 180, 793, 180, 793, 793, 793, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 792, 180, 180, 180, 180, 180, 793, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 180, 794, 180, 180, 182, 180, 182, 182, 182, 186, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 180, 180, 180, 180, 180, 182, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 795, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 180, 179, 179, 179, 179, 795, 179, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 179, 179, 179, 179, 182, 179, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 179, 179, 179, 179, 179, 182, 796, 796, 796, 796, 796, 796, 796, 796, 796, 183, 796, 183, 183, 183, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 183, 796, 796, 796, 796, 796, 796, 796, 184, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 796, 185, 796, 796, 182, 796, 182, 182, 182, 186, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 796, 796, 796, 796, 796, 182, 797, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 795, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 180, 796, 796, 796, 796, 795, 796, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 796, 796, 796, 796, 182, 796, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 798, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 796, 796, 796, 796, 796, 182, 187, 796, 800, 799, 799, 799, 800, 799, 799, 799, 799, 801, 799, 801, 801, 801, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 800, 799, 799, 799, 799, 799, 801, 799, 799, 802, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 803, 799, 799, 799, 799, 799, 799, 799, 804, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 805, 799, 801, 806, 801, 801, 801, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 801, 806, 807, 808, 809, 810, 812, 811, 813, 814, 811, 815, 817, 818, 818, 818, 817, 818, 818, 818, 818, 819, 820, 819, 819, 819, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 817, 818, 818, 818, 818, 818, 819, 818, 818, 821, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 818, 822, 818, 818, 816, 818, 816, 816, 816, 816, 816, 816, 816, 816, 823, 816, 816, 816, 816, 816, 816, 816, 816, 824, 816, 816, 825, 816, 826, 816, 816, 816, 818, 818, 818, 818, 818, 816, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 827, 827, 827, 827, 827, 827, 827, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 827, 827, 827, 827, 816, 827, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 827, 827, 827, 827, 827, 816, 819, 828, 819, 819, 819, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 819, 828, 829, 830, 831, 832, 833, 835, 834, 836, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 838, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 839, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 840, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 841, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 842, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 838, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 843, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 844, 816, 816, 816, 816, 816, 816, 816, 845, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 846, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 847, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 838, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 848, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 838, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 849, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 850, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 837, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 816, 837, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 842, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 837, 837, 837, 837, 837, 816, 852, 212, 212, 212, 852, 212, 212, 212, 212, 853, 854, 853, 853, 853, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 852, 212, 212, 212, 212, 212, 853, 855, 212, 856, 212, 857, 858, 212, 859, 212, 860, 861, 212, 862, 863, 864, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 865, 212, 866, 867, 868, 869, 212, 870, 871, 870, 870, 872, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 873, 874, 212, 875, 876, 212, 877, 878, 879, 880, 881, 882, 851, 851, 883, 851, 851, 851, 884, 885, 886, 851, 851, 887, 888, 889, 890, 851, 891, 851, 892, 851, 893, 894, 212, 875, 212, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 899, 898, 898, 900, 898, 901, 903, 904, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 905, 902, 907, 906, 908, 909, 910, 853, 911, 853, 853, 853, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 853, 911, 913, 912, 915, 916, 915, 915, 915, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 212, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 212, 917, 918, 919, 920, 921, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 923, 923, 923, 923, 923, 923, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 923, 925, 210, 210, 210, 925, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 925, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 927, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 212, 926, 928, 930, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 212, 929, 212, 201, 213, 214, 213, 213, 213, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 213, 926, 926, 215, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 926, 926, 926, 212, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 217, 926, 230, 231, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 229, 232, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 234, 229, 213, 214, 213, 213, 213, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 213, 926, 926, 215, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 926, 926, 926, 212, 212, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 217, 926, 932, 917, 934, 933, 917, 935, 935, 935, 917, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 917, 935, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 937, 938, 917, 939, 238, 940, 938, 917, 917, 941, 942, 917, 942, 917, 238, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 943, 917, 944, 945, 946, 917, 947, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 948, 917, 917, 238, 936, 238, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 917, 949, 917, 950, 917, 936, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 952, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 951, 951, 951, 953, 951, 952, 951, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 951, 951, 951, 951, 936, 951, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 951, 951, 951, 951, 951, 936, 955, 954, 956, 958, 959, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 960, 957, 962, 963, 961, 964, 965, 966, 967, 238, 951, 951, 968, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 238, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 951, 951, 951, 951, 951, 951, 951, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 951, 951, 951, 951, 237, 951, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 951, 951, 951, 951, 951, 237, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 951, 969, 951, 238, 951, 238, 951, 238, 970, 951, 238, 951, 238, 951, 238, 238, 951, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 971, 971, 971, 971, 971, 971, 974, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 971, 971, 971, 971, 972, 971, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 971, 971, 971, 971, 971, 972, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 975, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 977, 977, 977, 977, 977, 977, 977, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 977, 977, 977, 977, 978, 977, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 977, 977, 977, 977, 977, 978, 969, 951, 968, 951, 980, 981, 917, 982, 253, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 254, 243, 255, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 254, 244, 254, 257, 212, 917, 875, 212, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 212, 917, 212, 927, 917, 986, 985, 985, 985, 986, 985, 985, 985, 985, 987, 988, 987, 987, 987, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 986, 985, 985, 985, 985, 985, 987, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 990, 985, 985, 989, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 991, 991, 991, 991, 992, 991, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 991, 991, 991, 991, 991, 992, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 993, 993, 993, 993, 993, 993, 993, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 993, 993, 993, 993, 994, 993, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 993, 993, 993, 993, 993, 994, 997, 996, 996, 996, 997, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 997, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 998, 998, 998, 998, 998, 998, 998, 998, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 999, 996, 996, 996, 996, 996, 996, 996, 996, 996, 1000, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 1001, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 1002, 996, 996, 1003, 996, 1004, 1005, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1006, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1006, 1006, 1009, 1009, 278, 278, 278, 1009, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 1009, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 1010, 278, 1011, 1012, 1013, 1013, 278, 278, 278, 1013, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 1013, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 1014, 278, 277, 1013, 1015, 1016, 1017, 1017, 265, 265, 265, 1017, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1017, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1018, 265, 1013, 259, 259, 259, 1013, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1013, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1019, 259, 1009, 265, 265, 265, 1009, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1009, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 267, 265, 1009, 1020, 1020, 1020, 1009, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1009, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1020, 1022, 1023, 1023, 1020, 1020, 1020, 1023, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1023, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1024, 1020, 1023, 259, 259, 259, 1023, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1023, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1019, 259, 1025, 1023, 1023, 265, 265, 265, 1023, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1023, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 267, 265, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1028, 1026, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1029, 1029, 1029, 1029, 1029, 1029, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1029, 1029, 1029, 1029, 1029, 1029, 1026, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1030, 1030, 1030, 1030, 1030, 1030, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1030, 1030, 1030, 1030, 1030, 1030, 1026, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1031, 1031, 1031, 1031, 1031, 1031, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1031, 1031, 1031, 1031, 1031, 1031, 1026, 1032, 1035, 1034, 1034, 1034, 1035, 1034, 1034, 1034, 1034, 1036, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1034, 1034, 1034, 1034, 1034, 1036, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1037, 1037, 1037, 1037, 1037, 1037, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1037, 1037, 1037, 1037, 1037, 1037, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1038, 1034, 1035, 1034, 1034, 1034, 1035, 1034, 1034, 1034, 1034, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1034, 1034, 1034, 1034, 1034, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1039, 1039, 1039, 1039, 1039, 1039, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1039, 1039, 1039, 1039, 1039, 1039, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1040, 1034, 1033, 1035, 1039, 1039, 1039, 1035, 1039, 1039, 1039, 1039, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1035, 1039, 1039, 1039, 1039, 1039, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1033, 1039, 1041, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1036, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1036, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1033, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1039, 1039, 1039, 1039, 1039, 1039, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1039, 1039, 1039, 1039, 1039, 1039, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1045, 1045, 1045, 1045, 1045, 1045, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1045, 1045, 1045, 1045, 1045, 1045, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1047, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1048, 1048, 1048, 1048, 1048, 1048, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1048, 1048, 1048, 1048, 1048, 1048, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1049, 1049, 1049, 1049, 1049, 1049, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1049, 1049, 1049, 1049, 1049, 1049, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1050, 1050, 1050, 1050, 1050, 1050, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1050, 1050, 1050, 1050, 1050, 1050, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1051, 1051, 1051, 1051, 1051, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1051, 1051, 1051, 1051, 1051, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1044, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1033, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1054, 1054, 1054, 1054, 1054, 1054, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1054, 1054, 1054, 1054, 1054, 1054, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1055, 1055, 1055, 1055, 1055, 1055, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1055, 1055, 1055, 1055, 1055, 1055, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1056, 1056, 1056, 1056, 1056, 1056, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1056, 1056, 1056, 1056, 1056, 1056, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1057, 1057, 1057, 1057, 1057, 1057, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1057, 1057, 1057, 1057, 1057, 1057, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1058, 1058, 1058, 1058, 1058, 1058, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1058, 1058, 1058, 1058, 1058, 1058, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1059, 1059, 1059, 1059, 1059, 1059, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1059, 1059, 1059, 1059, 1059, 1059, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1060, 1060, 1060, 1060, 1060, 1060, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1060, 1060, 1060, 1060, 1060, 1060, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1033, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1061, 1061, 1061, 1061, 1061, 1061, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1061, 1061, 1061, 1061, 1061, 1061, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1062, 1062, 1062, 1062, 1062, 1062, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1062, 1062, 1062, 1062, 1062, 1062, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1063, 1063, 1063, 1063, 1063, 1063, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1063, 1063, 1063, 1063, 1063, 1063, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1064, 1064, 1064, 1064, 1064, 1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1064, 1064, 1064, 1064, 1064, 1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1035, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1035, 1042, 1042, 1042, 1042, 1042, 1053, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1052, 1052, 1052, 1052, 1052, 1052, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1046, 1042, 1065, 1066, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 284, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 201, 201, 286, 201, 284, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 201, 201, 201, 201, 283, 201, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 201, 201, 201, 201, 201, 283, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 284, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 917, 917, 286, 917, 284, 917, 283, 283, 283, 283, 1069, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 917, 917, 917, 917, 283, 917, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 917, 917, 917, 917, 917, 283, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 284, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 917, 917, 286, 917, 284, 917, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1070, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 917, 917, 917, 917, 283, 917, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 917, 917, 917, 917, 917, 283, 1071, 1072, 917, 912, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 1073, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 1074, 1075, 851, 851, 851, 851, 851, 1076, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1077, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 1078, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1079, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 1080, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1081, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1082, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 1083, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 1084, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 1085, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 284, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 201, 201, 286, 201, 284, 201, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 201, 201, 201, 201, 851, 201, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 201, 201, 201, 201, 201, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1086, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1087, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 1083, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1088, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1087, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1089, 851, 1090, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1091, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 1092, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1093, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1094, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 1095, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1096, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1097, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 1098, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 1099, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1100, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1101, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 1102, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1092, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1103, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1104, 851, 1105, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1106, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1085, 851, 851, 851, 1103, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1107, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1108, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1101, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 1109, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 886, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1099, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 1110, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1111, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 1112, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1113, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1101, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1114, 851, 851, 851, 1115, 851, 851, 851, 851, 851, 1116, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1116, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1117, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 1118, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1119, 1120, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 1121, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1122, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1123, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1126, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1127, 1124, 1124, 1128, 1124, 1126, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1125, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1124, 1125, 903, 1129, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 905, 902, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1130, 851, 851, 1131, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1085, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1096, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1132, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1133, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1103, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1134, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 886, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 1135, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1136, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1096, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1101, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1137, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 1138, 851, 851, 851, 851, 851, 851, 851, 1139, 851, 851, 851, 851, 851, 851, 851, 1140, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1103, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1141, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1142, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1110, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1143, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1110, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 1144, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1096, 851, 851, 851, 1145, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1146, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1110, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 1147, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 1148, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 895, 896, 896, 896, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 284, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 285, 895, 895, 286, 895, 284, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 897, 895, 895, 851, 895, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1090, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 895, 895, 895, 895, 895, 851, 1149, 212, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 927, 917, 1151, 1150, 1150, 1150, 1151, 1150, 1150, 1150, 1150, 1152, 1153, 1152, 1152, 1152, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1150, 1150, 1150, 1150, 1150, 1152, 1150, 1150, 1154, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1155, 1150, 1152, 1156, 1152, 1152, 1152, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1152, 1156, 1157, 1158, 1159, 1160, 1161, 1163, 1162, 1164, 1166, 1167, 1167, 1167, 1166, 1167, 1167, 1167, 1167, 1168, 1169, 1168, 1168, 1168, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1166, 1167, 1167, 1167, 1167, 1167, 1168, 1167, 1170, 1171, 1167, 1167, 1167, 1170, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167, 1172, 1167, 1167, 1165, 1167, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167, 1167, 1167, 1167, 1167, 1165, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 292, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 293, 1173, 1173, 1173, 1173, 292, 1173, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1173, 1173, 1173, 1173, 291, 1173, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1173, 1173, 1173, 1173, 1173, 291, 1168, 1174, 1168, 1168, 1168, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1168, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1173, 1181, 1183, 1184, 1184, 1184, 1183, 1184, 1184, 1184, 1184, 1185, 1186, 1185, 1185, 1185, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1183, 1184, 1184, 1184, 1184, 1184, 1185, 1187, 1188, 1189, 1190, 1191, 1192, 1188, 1193, 1194, 1195, 1191, 1196, 1197, 1198, 1191, 1199, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1208, 1208, 1210, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1211, 1212, 1213, 1191, 1214, 1188, 1215, 1216, 1217, 1218, 1219, 1220, 1182, 1182, 1221, 1182, 1182, 1182, 1222, 1223, 1224, 1182, 1182, 1225, 1226, 1227, 1228, 1182, 1229, 1182, 1230, 1182, 1231, 1232, 1233, 1234, 1184, 1182, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1235, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 301, 301, 301, 301, 301, 1235, 301, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 301, 301, 301, 301, 1182, 301, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 301, 301, 301, 301, 301, 1182, 1237, 1236, 1238, 1185, 1239, 1185, 1185, 1185, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1185, 1239, 1240, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1241, 1243, 1244, 1245, 1246, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 296, 296, 1247, 296, 1247, 296, 296, 1247, 1247, 296, 296, 296, 1248, 296, 296, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 296, 296, 296, 296, 296, 296, 296, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1247, 296, 1247, 1247, 314, 296, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1247, 1247, 1247, 296, 1247, 314, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1250, 1250, 1250, 1250, 314, 1250, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1250, 1250, 1250, 1250, 1250, 314, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1250, 1251, 301, 1191, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1253, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1251, 1252, 1254, 1255, 1191, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1251, 1256, 1251, 1257, 1252, 1259, 1258, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 1260, 1258, 1196, 1261, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1264, 1262, 1262, 1262, 1262, 1262, 1263, 1262, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 298, 1262, 1265, 301, 1265, 1265, 1265, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1265, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1266, 301, 1268, 1267, 1268, 1268, 1268, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1269, 1267, 1271, 1270, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1273, 1270, 1274, 1275, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1276, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1277, 1270, 1270, 1270, 1270, 1270, 1270, 1278, 1270, 1270, 1273, 1270, 1274, 1275, 1270, 1270, 1270, 1279, 1270, 1270, 1270, 1270, 1270, 1276, 1270, 1270, 1280, 1270, 1270, 1270, 1270, 1270, 1277, 1270, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1282, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1283, 1281, 1281, 1281, 1281, 1281, 1282, 1281, 1281, 1281, 1284, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1285, 1281, 1286, 301, 1286, 301, 301, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 301, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1286, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1288, 1287, 1290, 1289, 1291, 1293, 1292, 1292, 1292, 1294, 1292, 1295, 1296, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1278, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1279, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1280, 1270, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1298, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1279, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1280, 1270, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1301, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1304, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1306, 1305, 1307, 1309, 1308, 1308, 1308, 1310, 1308, 1312, 1311, 1313, 1314, 1316, 1316, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1317, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1318, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1319, 1315, 1320, 1320, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1321, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1320, 1320, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1304, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1324, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1325, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1326, 1322, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1329, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1330, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1331, 1327, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1333, 1333, 1333, 1333, 1333, 1333, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1334, 1332, 1333, 1333, 1333, 1333, 1333, 1333, 1332, 1332, 1335, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1336, 1332, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1338, 1299, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1304, 1299, 1337, 1337, 1337, 1337, 1337, 1337, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1340, 1339, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1342, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1343, 1339, 1339, 1339, 1339, 1339, 1342, 1339, 1339, 1339, 1344, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1345, 1339, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1347, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1344, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1345, 1339, 1348, 1299, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1350, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1351, 1299, 1299, 1299, 1299, 1299, 1350, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1304, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1302, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1303, 1299, 1253, 1261, 1191, 1352, 1252, 1242, 1252, 1353, 1354, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1242, 1261, 1242, 1252, 1242, 1191, 1252, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1247, 1247, 1247, 1247, 1247, 1247, 1355, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1247, 1247, 1247, 1247, 314, 1247, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1247, 1247, 1247, 1247, 1247, 314, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1235, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 301, 301, 301, 301, 1235, 301, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 301, 301, 301, 301, 1208, 301, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 301, 301, 301, 301, 301, 1208, 1357, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1208, 1359, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1360, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1361, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1362, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1363, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1235, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1356, 1358, 1358, 1358, 1358, 1235, 1358, 1208, 1208, 1208, 1362, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1208, 1358, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1358, 1358, 1358, 1358, 1358, 1208, 1364, 1366, 1365, 1367, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1369, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1370, 1371, 1182, 1182, 1182, 1182, 1182, 1372, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1373, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1374, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1375, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1376, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1377, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1378, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1379, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1380, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1381, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1382, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1383, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1384, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1385, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1386, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1387, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1383, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1388, 1182, 1389, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1390, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1391, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1392, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1394, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1395, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1396, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1397, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1398, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1399, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1400, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1401, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1402, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1403, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1404, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1405, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1406, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 316, 317, 316, 316, 316, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 316, 1235, 1407, 318, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1407, 1407, 319, 1407, 1407, 1235, 1407, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1407, 320, 1407, 1407, 1182, 1407, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1407, 1407, 1407, 1407, 1407, 1182, 333, 334, 333, 333, 333, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 332, 332, 335, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 338, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 337, 332, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1409, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1410, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1411, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1235, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1412, 1412, 1412, 1412, 1412, 1235, 1412, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1412, 1412, 1412, 1412, 1182, 1412, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1413, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1412, 1412, 1412, 1412, 1412, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1414, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1415, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1416, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1417, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1418, 1182, 1419, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1420, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1421, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1386, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1422, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1423, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1403, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1424, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1224, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1425, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1426, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1386, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1427, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1393, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1428, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1429, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1430, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1403, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1431, 1182, 1182, 1182, 1432, 1182, 1182, 1182, 1182, 1182, 1433, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1434, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1400, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1386, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1435, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1436, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1437, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1438, 1439, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1386, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1440, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1441, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1427, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1442, 1182, 1182, 1443, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1386, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1444, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1400, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1445, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1446, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1447, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1386, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1448, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1449, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1435, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1450, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1451, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1397, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1426, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1452, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1453, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1454, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1455, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1456, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1392, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1457, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1458, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1427, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1459, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1427, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1460, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1397, 1182, 1182, 1182, 1461, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1462, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1427, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1463, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1464, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1465, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1235, 1368, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1182, 1368, 1182, 1182, 1182, 1435, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1368, 1368, 1368, 1368, 1368, 1182, 1466, 1251, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1191, 1241, 1467, 1469, 1468, 1469, 1469, 1469, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1469, 1468, 1468, 1468, 1468, 1468, 1470, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 344, 1468, 342, 1471, 342, 342, 342, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 342, 1471, 1471, 1471, 1471, 1471, 343, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 344, 1471, 345, 1471, 1473, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1474, 1472, 1473, 1472, 1473, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1476, 1472, 1473, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1477, 1472, 1473, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1478, 1472, 1480, 1478, 0]]; $send(self, '_lex_indicies=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_trans_targs"); return self.$private("_lex_trans_targs", "_lex_trans_targs="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[165, 2, 3, 4, 171, 6, 7, 8, 9, 10, 165, 165, 174, 177, 174, 12, 178, 14, 174, 185, 186, 189, 190, 196, 191, 192, 193, 19, 194, 195, 198, 200, 201, 202, 203, 204, 25, 18, 187, 188, 27, 236, 237, 239, 241, 239, 30, 242, 32, 239, 249, 250, 253, 254, 260, 255, 256, 257, 37, 258, 259, 262, 264, 265, 266, 267, 268, 43, 36, 251, 252, 45, 300, 301, 308, 310, 308, 48, 311, 50, 313, 316, 313, 52, 317, 54, 323, 322, 0, 56, 324, 325, 58, 326, 327, 327, 327, 327, 440, 61, 62, 63, 440, 468, 64, 65, 468, 468, 472, 472, 69, 64, 70, 470, 471, 473, 474, 472, 468, 475, 476, 478, 66, 67, 479, 480, 68, 472, 71, 72, 77, 84, 482, 483, 70, 470, 471, 473, 474, 472, 468, 475, 476, 478, 66, 67, 479, 480, 68, 71, 72, 77, 84, 482, 483, 481, 73, 74, 75, 76, 78, 79, 82, 80, 81, 83, 85, 86, 468, 88, 89, 90, 92, 95, 93, 94, 96, 98, 499, 499, 499, 500, 100, 502, 101, 503, 102, 500, 100, 502, 101, 503, 537, 537, 537, 105, 106, 107, 108, 548, 537, 537, 553, 537, 537, 574, 537, 112, 575, 581, 115, 118, 120, 122, 123, 124, 118, 119, 585, 119, 585, 121, 537, 599, 600, 603, 604, 610, 605, 606, 607, 129, 608, 609, 612, 614, 615, 616, 617, 618, 135, 128, 601, 602, 137, 654, 655, 139, 539, 103, 541, 141, 142, 657, 758, 144, 145, 146, 758, 766, 766, 766, 149, 787, 786, 766, 789, 791, 776, 823, 155, 156, 157, 161, 162, 155, 156, 157, 161, 162, 158, 158, 156, 157, 159, 160, 158, 158, 156, 157, 159, 160, 870, 156, 766, 939, 163, 164, 939, 939, 165, 165, 166, 167, 168, 170, 172, 173, 165, 165, 165, 169, 165, 169, 165, 1, 165, 165, 165, 5, 174, 174, 175, 174, 176, 179, 174, 174, 11, 13, 174, 174, 174, 180, 181, 182, 15, 21, 26, 205, 28, 174, 174, 174, 183, 184, 174, 16, 174, 174, 174, 17, 174, 174, 174, 20, 197, 199, 22, 174, 174, 23, 24, 174, 206, 210, 214, 207, 208, 209, 211, 212, 213, 174, 174, 215, 219, 225, 216, 223, 224, 217, 221, 222, 218, 220, 174, 226, 235, 234, 227, 228, 229, 230, 231, 232, 233, 174, 174, 174, 238, 239, 239, 239, 240, 243, 239, 29, 31, 239, 239, 239, 244, 245, 246, 33, 39, 44, 269, 46, 239, 239, 239, 247, 248, 239, 34, 239, 239, 239, 35, 239, 239, 239, 38, 261, 263, 40, 239, 239, 41, 42, 239, 270, 274, 278, 271, 272, 273, 275, 276, 277, 239, 239, 279, 283, 289, 280, 287, 288, 281, 285, 286, 282, 284, 239, 290, 299, 298, 291, 292, 293, 294, 295, 296, 297, 239, 239, 239, 302, 303, 303, 304, 303, 305, 303, 303, 303, 306, 306, 306, 307, 306, 306, 306, 308, 308, 308, 309, 308, 47, 49, 308, 308, 312, 312, 312, 313, 313, 314, 313, 315, 313, 313, 51, 53, 313, 313, 318, 318, 319, 318, 318, 320, 321, 320, 55, 57, 322, 322, 322, 328, 327, 327, 329, 330, 331, 332, 334, 337, 338, 339, 340, 327, 341, 342, 344, 346, 347, 348, 352, 354, 355, 356, 372, 377, 384, 389, 396, 403, 406, 407, 411, 405, 415, 423, 427, 429, 434, 436, 439, 327, 327, 327, 327, 327, 327, 333, 327, 333, 327, 335, 59, 336, 327, 60, 327, 327, 343, 345, 327, 349, 350, 351, 347, 353, 327, 357, 358, 367, 370, 359, 360, 361, 362, 363, 364, 365, 366, 328, 368, 369, 371, 373, 376, 374, 375, 378, 381, 379, 380, 382, 383, 385, 387, 386, 388, 390, 391, 327, 392, 393, 394, 395, 327, 397, 400, 398, 399, 401, 402, 404, 408, 409, 410, 412, 414, 413, 416, 417, 418, 420, 419, 421, 422, 424, 425, 426, 428, 430, 431, 432, 433, 435, 437, 438, 441, 440, 440, 442, 443, 445, 440, 440, 440, 444, 440, 444, 446, 440, 448, 447, 447, 451, 452, 453, 454, 447, 456, 457, 458, 459, 461, 463, 464, 465, 466, 467, 447, 449, 447, 450, 447, 447, 447, 447, 447, 455, 447, 455, 460, 447, 462, 447, 468, 468, 469, 484, 485, 471, 487, 488, 475, 489, 490, 491, 492, 493, 495, 496, 497, 498, 468, 468, 468, 468, 468, 468, 472, 477, 468, 468, 468, 468, 468, 468, 468, 468, 468, 486, 468, 486, 468, 468, 468, 468, 494, 468, 87, 91, 97, 499, 501, 504, 99, 499, 499, 500, 505, 505, 506, 507, 509, 511, 512, 505, 505, 508, 505, 508, 505, 510, 505, 505, 505, 514, 513, 513, 515, 516, 517, 519, 521, 522, 527, 534, 513, 513, 513, 513, 518, 513, 518, 513, 520, 513, 513, 514, 523, 524, 525, 526, 528, 529, 532, 530, 531, 533, 535, 536, 538, 537, 546, 547, 549, 550, 552, 554, 555, 556, 558, 559, 560, 562, 563, 584, 587, 588, 589, 657, 658, 659, 660, 661, 557, 663, 679, 684, 691, 696, 698, 704, 707, 708, 712, 706, 716, 727, 731, 734, 742, 746, 749, 750, 537, 103, 540, 537, 537, 542, 544, 545, 537, 543, 537, 537, 537, 537, 537, 104, 537, 537, 537, 537, 537, 551, 537, 551, 537, 537, 109, 537, 537, 110, 537, 537, 557, 537, 561, 537, 564, 573, 537, 111, 576, 577, 578, 537, 579, 113, 582, 114, 116, 583, 537, 565, 567, 537, 566, 537, 537, 568, 571, 572, 537, 569, 570, 537, 537, 537, 537, 580, 117, 586, 537, 537, 590, 537, 537, 537, 591, 593, 537, 592, 537, 592, 537, 594, 595, 596, 125, 131, 136, 619, 138, 537, 537, 537, 597, 598, 537, 126, 537, 537, 537, 127, 537, 537, 537, 130, 611, 613, 132, 537, 537, 133, 134, 537, 620, 624, 628, 621, 622, 623, 625, 626, 627, 537, 537, 629, 633, 639, 630, 637, 638, 631, 635, 636, 632, 634, 537, 640, 648, 653, 641, 642, 643, 644, 645, 646, 647, 649, 650, 651, 652, 537, 537, 537, 656, 140, 143, 537, 662, 537, 664, 665, 674, 677, 666, 667, 668, 669, 670, 671, 672, 673, 538, 675, 676, 678, 680, 683, 681, 682, 685, 688, 686, 687, 689, 690, 692, 694, 693, 695, 697, 699, 701, 700, 702, 703, 705, 538, 709, 710, 711, 713, 715, 714, 717, 718, 719, 724, 720, 721, 722, 537, 538, 539, 103, 723, 544, 725, 726, 728, 729, 730, 732, 733, 735, 736, 737, 740, 738, 739, 741, 743, 744, 745, 747, 748, 537, 751, 751, 752, 753, 754, 756, 751, 751, 751, 755, 751, 755, 751, 757, 751, 759, 758, 758, 760, 761, 758, 762, 764, 758, 758, 758, 758, 763, 758, 763, 765, 758, 767, 766, 766, 770, 771, 772, 766, 773, 775, 778, 779, 780, 781, 782, 766, 783, 784, 788, 811, 815, 766, 816, 818, 820, 766, 821, 822, 824, 828, 830, 831, 766, 833, 851, 856, 863, 871, 878, 885, 890, 891, 895, 889, 900, 910, 916, 919, 928, 932, 936, 937, 938, 768, 766, 769, 766, 766, 766, 766, 766, 766, 774, 766, 774, 766, 147, 777, 766, 766, 766, 766, 766, 766, 766, 785, 766, 766, 148, 150, 766, 151, 795, 803, 806, 790, 807, 808, 796, 800, 801, 766, 790, 151, 792, 793, 152, 766, 792, 766, 766, 794, 766, 797, 799, 766, 797, 798, 800, 801, 799, 766, 766, 802, 766, 766, 804, 799, 800, 801, 804, 805, 766, 797, 799, 800, 801, 766, 797, 799, 800, 801, 766, 809, 799, 800, 801, 809, 810, 766, 151, 811, 790, 812, 800, 801, 813, 799, 151, 813, 790, 814, 817, 819, 153, 154, 766, 766, 825, 826, 827, 822, 829, 766, 766, 832, 766, 766, 834, 835, 844, 849, 836, 837, 838, 839, 840, 841, 842, 843, 767, 845, 846, 847, 848, 767, 850, 852, 855, 853, 854, 767, 767, 857, 860, 858, 859, 861, 862, 767, 864, 866, 865, 867, 868, 869, 766, 766, 872, 767, 873, 766, 874, 875, 876, 877, 768, 879, 882, 880, 881, 883, 884, 886, 887, 888, 767, 892, 893, 894, 896, 898, 899, 897, 767, 901, 902, 903, 906, 904, 905, 907, 908, 909, 911, 913, 912, 914, 915, 917, 918, 920, 921, 923, 926, 922, 924, 925, 927, 929, 930, 931, 933, 934, 935, 766, 766, 939, 940, 941, 939, 943, 942, 944, 942, 945, 946, 947, 942, 942]]; + $writer = [[181, 2, 3, 4, 187, 6, 7, 8, 9, 10, 181, 181, 190, 193, 190, 12, 194, 14, 190, 201, 202, 205, 206, 212, 207, 208, 209, 19, 210, 211, 214, 216, 217, 218, 219, 220, 25, 18, 203, 204, 27, 243, 244, 246, 248, 246, 30, 249, 32, 246, 256, 257, 260, 261, 267, 262, 263, 264, 37, 265, 266, 269, 271, 272, 273, 274, 275, 43, 36, 258, 259, 45, 298, 299, 306, 308, 306, 48, 309, 50, 311, 314, 311, 52, 315, 54, 321, 320, 0, 56, 322, 323, 324, 58, 325, 326, 326, 326, 326, 439, 61, 62, 63, 439, 467, 64, 65, 467, 467, 471, 471, 69, 64, 70, 469, 470, 472, 473, 471, 467, 474, 475, 477, 66, 67, 478, 479, 68, 471, 71, 72, 77, 84, 481, 482, 70, 469, 470, 472, 473, 471, 467, 474, 475, 477, 66, 67, 478, 479, 68, 71, 72, 77, 84, 481, 482, 480, 73, 74, 75, 76, 78, 79, 82, 80, 81, 83, 85, 86, 467, 88, 89, 90, 92, 95, 93, 94, 96, 98, 498, 498, 498, 499, 100, 501, 101, 502, 102, 499, 100, 501, 101, 502, 536, 103, 536, 104, 105, 103, 536, 104, 536, 536, 536, 108, 109, 110, 111, 547, 536, 536, 552, 536, 114, 115, 116, 536, 119, 114, 115, 116, 536, 119, 117, 117, 115, 116, 558, 118, 117, 117, 115, 116, 558, 118, 115, 536, 574, 536, 121, 575, 581, 125, 590, 591, 130, 131, 125, 126, 589, 126, 589, 536, 127, 128, 129, 592, 132, 536, 606, 607, 610, 611, 617, 612, 613, 614, 137, 615, 616, 619, 621, 622, 623, 624, 625, 143, 136, 608, 609, 145, 661, 662, 147, 538, 106, 540, 149, 150, 664, 766, 152, 153, 154, 766, 774, 774, 774, 157, 795, 794, 774, 797, 799, 801, 774, 163, 164, 165, 805, 774, 167, 168, 816, 784, 838, 171, 172, 173, 177, 178, 171, 172, 173, 177, 178, 174, 174, 172, 173, 175, 176, 174, 174, 172, 173, 175, 176, 885, 172, 774, 954, 179, 180, 954, 954, 181, 181, 182, 183, 184, 186, 188, 189, 181, 181, 181, 185, 181, 185, 181, 1, 181, 181, 181, 5, 190, 190, 191, 190, 192, 195, 190, 190, 11, 13, 190, 190, 190, 196, 197, 198, 15, 21, 26, 221, 28, 190, 190, 190, 199, 200, 190, 16, 190, 190, 190, 17, 190, 190, 190, 20, 213, 215, 22, 190, 190, 23, 24, 190, 222, 226, 223, 224, 225, 190, 190, 227, 228, 231, 233, 242, 229, 230, 190, 232, 234, 236, 235, 190, 237, 238, 239, 240, 241, 190, 190, 190, 245, 246, 246, 246, 247, 250, 246, 29, 31, 246, 246, 246, 251, 252, 253, 33, 39, 44, 276, 46, 246, 246, 246, 254, 255, 246, 34, 246, 246, 246, 35, 246, 246, 246, 38, 268, 270, 40, 246, 246, 41, 42, 246, 277, 281, 278, 279, 280, 246, 246, 282, 283, 286, 288, 297, 284, 285, 246, 287, 289, 291, 290, 246, 292, 293, 294, 295, 296, 246, 246, 246, 300, 301, 301, 302, 301, 303, 301, 301, 301, 304, 304, 304, 305, 304, 304, 304, 306, 306, 306, 307, 306, 47, 49, 306, 306, 310, 310, 310, 311, 311, 312, 311, 313, 311, 311, 51, 53, 311, 311, 316, 316, 317, 316, 316, 318, 319, 318, 55, 57, 320, 320, 320, 320, 327, 326, 326, 328, 329, 330, 331, 333, 336, 337, 338, 339, 326, 340, 341, 343, 345, 346, 347, 351, 353, 354, 355, 371, 376, 383, 388, 395, 402, 405, 406, 410, 404, 414, 422, 426, 428, 433, 435, 438, 326, 326, 326, 326, 326, 326, 332, 326, 332, 326, 334, 59, 335, 326, 60, 326, 326, 342, 344, 326, 348, 349, 350, 346, 352, 326, 356, 357, 366, 369, 358, 359, 360, 361, 362, 363, 364, 365, 327, 367, 368, 370, 372, 375, 373, 374, 377, 380, 378, 379, 381, 382, 384, 386, 385, 387, 389, 390, 326, 391, 392, 393, 394, 326, 396, 399, 397, 398, 400, 401, 403, 407, 408, 409, 411, 413, 412, 415, 416, 417, 419, 418, 420, 421, 423, 424, 425, 427, 429, 430, 431, 432, 434, 436, 437, 440, 439, 439, 441, 442, 444, 439, 439, 439, 443, 439, 443, 445, 439, 447, 446, 446, 450, 451, 452, 453, 446, 455, 456, 457, 458, 460, 462, 463, 464, 465, 466, 446, 448, 446, 449, 446, 446, 446, 446, 446, 454, 446, 454, 459, 446, 461, 446, 467, 467, 468, 483, 484, 470, 486, 487, 474, 488, 489, 490, 491, 492, 494, 495, 496, 497, 467, 467, 467, 467, 467, 467, 471, 476, 467, 467, 467, 467, 467, 467, 467, 467, 467, 485, 467, 485, 467, 467, 467, 467, 493, 467, 87, 91, 97, 498, 500, 503, 99, 498, 498, 499, 504, 504, 505, 506, 508, 510, 511, 504, 504, 507, 504, 507, 504, 509, 504, 504, 504, 513, 512, 512, 514, 515, 516, 518, 520, 521, 526, 533, 512, 512, 512, 512, 517, 512, 517, 512, 519, 512, 512, 513, 522, 523, 524, 525, 527, 528, 531, 529, 530, 532, 534, 535, 537, 536, 545, 546, 548, 549, 551, 553, 554, 555, 557, 559, 560, 562, 563, 588, 594, 595, 596, 664, 665, 666, 667, 668, 556, 670, 687, 692, 699, 704, 706, 712, 715, 716, 720, 714, 724, 735, 739, 742, 750, 754, 757, 758, 536, 103, 104, 536, 106, 539, 536, 536, 541, 543, 544, 536, 542, 536, 536, 536, 536, 536, 107, 536, 536, 536, 536, 536, 550, 536, 550, 536, 536, 112, 536, 536, 113, 536, 536, 556, 536, 561, 536, 536, 536, 564, 573, 536, 120, 576, 577, 578, 536, 579, 122, 582, 583, 123, 586, 587, 536, 565, 567, 536, 566, 536, 536, 568, 571, 572, 536, 569, 570, 536, 536, 536, 536, 536, 536, 580, 536, 574, 584, 585, 536, 584, 536, 574, 584, 124, 593, 536, 536, 536, 597, 536, 536, 536, 598, 600, 536, 599, 536, 599, 536, 601, 602, 603, 133, 139, 144, 626, 146, 536, 536, 536, 604, 605, 536, 134, 536, 536, 536, 135, 536, 536, 536, 138, 618, 620, 140, 536, 536, 141, 142, 536, 627, 631, 628, 629, 630, 536, 536, 632, 633, 636, 647, 660, 634, 635, 536, 637, 638, 639, 641, 640, 536, 642, 643, 644, 645, 646, 648, 655, 649, 650, 651, 652, 653, 654, 656, 657, 658, 659, 536, 536, 536, 663, 148, 151, 536, 669, 671, 672, 682, 685, 673, 674, 675, 676, 677, 678, 679, 680, 681, 683, 684, 686, 688, 691, 689, 690, 693, 696, 694, 695, 697, 698, 700, 702, 701, 703, 705, 707, 709, 708, 710, 711, 713, 681, 717, 718, 719, 721, 723, 722, 725, 726, 727, 732, 728, 729, 730, 536, 537, 538, 106, 731, 543, 733, 734, 736, 737, 738, 740, 741, 743, 744, 745, 748, 746, 747, 749, 751, 752, 753, 755, 756, 536, 759, 759, 760, 761, 762, 764, 759, 759, 759, 763, 759, 763, 759, 765, 759, 767, 766, 766, 768, 769, 766, 770, 772, 766, 766, 766, 766, 771, 766, 771, 773, 766, 775, 774, 774, 778, 779, 780, 774, 781, 783, 786, 787, 788, 789, 790, 774, 791, 792, 798, 826, 830, 774, 831, 833, 835, 774, 836, 837, 839, 843, 845, 846, 774, 848, 866, 871, 878, 886, 893, 900, 905, 906, 910, 904, 915, 925, 931, 934, 943, 947, 951, 952, 953, 786, 776, 774, 777, 774, 774, 774, 774, 774, 774, 782, 774, 782, 774, 155, 785, 774, 774, 774, 774, 774, 774, 774, 774, 774, 793, 796, 774, 774, 156, 158, 796, 159, 774, 796, 159, 774, 160, 807, 818, 821, 800, 822, 823, 808, 812, 814, 774, 800, 160, 802, 804, 161, 774, 802, 774, 803, 774, 774, 162, 806, 774, 774, 809, 811, 774, 809, 810, 812, 814, 811, 774, 813, 774, 774, 815, 817, 774, 166, 774, 774, 774, 819, 811, 812, 814, 819, 820, 774, 809, 811, 812, 814, 774, 809, 811, 812, 814, 774, 824, 811, 812, 814, 824, 825, 774, 160, 826, 800, 827, 812, 814, 828, 811, 160, 828, 800, 829, 832, 834, 774, 169, 170, 774, 774, 840, 841, 842, 837, 844, 774, 774, 847, 774, 774, 849, 850, 859, 864, 851, 852, 853, 854, 855, 856, 857, 858, 775, 860, 861, 862, 863, 775, 865, 867, 870, 868, 869, 775, 775, 872, 875, 873, 874, 876, 877, 775, 879, 881, 880, 882, 883, 884, 774, 774, 887, 775, 888, 774, 889, 890, 891, 892, 776, 894, 897, 895, 896, 898, 899, 901, 902, 903, 775, 907, 908, 909, 911, 913, 914, 912, 775, 916, 917, 918, 921, 919, 920, 922, 923, 924, 926, 928, 927, 929, 930, 932, 933, 935, 936, 938, 941, 937, 939, 940, 942, 944, 945, 946, 948, 949, 950, 774, 774, 954, 955, 956, 954, 958, 957, 959, 957, 960, 961, 962, 957, 957]]; $send(self, '_lex_trans_targs=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_trans_actions"); return self.$private("_lex_trans_actions", "_lex_trans_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 11, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 0, 0, 24, 25, 26, 27, 28, 29, 29, 30, 31, 29, 32, 31, 33, 31, 29, 29, 30, 29, 34, 29, 29, 35, 29, 29, 29, 29, 29, 29, 0, 36, 37, 0, 38, 37, 39, 37, 0, 0, 36, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 45, 28, 46, 29, 29, 29, 46, 47, 48, 49, 0, 0, 0, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 55, 56, 0, 28, 0, 57, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 58, 59, 0, 0, 0, 60, 61, 62, 63, 0, 7, 7, 64, 65, 65, 0, 0, 0, 28, 0, 0, 0, 29, 66, 29, 29, 29, 67, 68, 69, 68, 68, 68, 0, 70, 71, 70, 70, 70, 72, 73, 74, 75, 0, 76, 77, 78, 81, 82, 0, 28, 0, 7, 0, 7, 83, 84, 85, 67, 86, 0, 87, 0, 88, 89, 90, 0, 91, 92, 0, 93, 7, 7, 94, 95, 0, 0, 96, 97, 98, 99, 99, 99, 99, 99, 99, 99, 99, 100, 101, 102, 0, 0, 103, 0, 104, 105, 106, 0, 107, 108, 109, 0, 7, 0, 0, 110, 111, 0, 28, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, 0, 119, 120, 121, 7, 7, 122, 0, 0, 123, 124, 125, 99, 99, 99, 99, 99, 99, 99, 99, 126, 127, 128, 0, 0, 129, 0, 130, 131, 132, 0, 133, 134, 135, 0, 7, 0, 0, 136, 137, 0, 28, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 143, 144, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 0, 154, 155, 156, 157, 158, 159, 7, 160, 0, 0, 161, 162, 163, 164, 165, 166, 167, 0, 168, 7, 169, 170, 0, 0, 171, 172, 173, 174, 0, 175, 176, 177, 0, 178, 0, 0, 179, 180, 181, 182, 183, 184, 0, 28, 0, 0, 7, 7, 0, 0, 0, 185, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 188, 189, 190, 191, 192, 67, 193, 0, 194, 0, 0, 0, 195, 0, 196, 197, 0, 0, 198, 0, 0, 0, 199, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 203, 204, 0, 0, 0, 205, 206, 207, 67, 208, 0, 28, 209, 0, 210, 211, 0, 28, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 214, 0, 215, 216, 217, 218, 219, 67, 220, 0, 0, 221, 0, 222, 223, 224, 225, 28, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 7, 7, 7, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 67, 242, 0, 243, 244, 245, 246, 247, 248, 0, 0, 0, 249, 7, 7, 0, 250, 251, 252, 253, 254, 0, 0, 0, 0, 0, 255, 256, 67, 257, 0, 258, 28, 259, 260, 261, 262, 263, 264, 0, 28, 0, 0, 0, 0, 0, 0, 265, 266, 267, 268, 67, 269, 0, 270, 28, 271, 272, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, 275, 0, 8, 0, 0, 7, 276, 0, 0, 0, 0, 0, 0, 7, 7, 0, 277, 0, 277, 277, 277, 0, 0, 277, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 0, 277, 278, 279, 0, 280, 281, 0, 58, 0, 282, 0, 283, 284, 285, 286, 287, 29, 288, 289, 290, 291, 292, 67, 293, 0, 294, 295, 0, 296, 297, 0, 298, 299, 276, 300, 0, 301, 0, 0, 302, 0, 0, 0, 0, 303, 0, 0, 0, 0, 0, 0, 304, 0, 0, 305, 0, 306, 307, 0, 0, 0, 308, 0, 0, 309, 310, 311, 312, 0, 0, 0, 313, 314, 0, 315, 316, 317, 0, 7, 318, 319, 320, 0, 321, 99, 99, 99, 99, 99, 99, 99, 99, 322, 323, 324, 0, 0, 325, 0, 326, 327, 328, 0, 329, 330, 331, 0, 7, 0, 0, 332, 333, 0, 28, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 338, 339, 340, 0, 0, 0, 341, 28, 342, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 58, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 343, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 344, 345, 346, 347, 348, 348, 344, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 349, 350, 351, 0, 28, 0, 0, 352, 353, 354, 67, 355, 0, 356, 28, 357, 7, 358, 359, 0, 28, 360, 0, 0, 361, 362, 363, 364, 67, 365, 0, 28, 366, 367, 368, 369, 0, 28, 0, 370, 0, 7, 0, 0, 0, 0, 0, 371, 0, 0, 372, 372, 0, 373, 0, 0, 0, 374, 7, 375, 375, 375, 0, 0, 376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, 378, 0, 379, 380, 381, 382, 383, 384, 67, 385, 0, 386, 0, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 395, 0, 0, 396, 397, 398, 0, 0, 399, 0, 0, 398, 400, 400, 401, 402, 0, 403, 403, 0, 404, 405, 406, 407, 0, 408, 398, 398, 409, 0, 0, 410, 410, 0, 411, 412, 0, 413, 414, 415, 415, 416, 416, 0, 0, 417, 418, 418, 419, 419, 420, 421, 421, 422, 422, 423, 424, 424, 425, 425, 0, 0, 426, 427, 428, 429, 430, 431, 431, 428, 430, 432, 372, 433, 0, 0, 0, 0, 0, 434, 435, 375, 375, 375, 436, 375, 437, 438, 28, 439, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, 442, 443, 0, 0, 0, 0, 0, 0, 444, 0, 0, 0, 0, 0, 443, 445, 446, 0, 447, 0, 448, 0, 0, 0, 0, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 451, 452, 453, 7, 76, 454, 0, 455, 0, 456, 0, 0, 0, 457, 458]]; + $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 11, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 0, 0, 24, 25, 26, 27, 28, 29, 29, 30, 31, 29, 32, 31, 33, 31, 29, 29, 30, 29, 34, 29, 29, 35, 29, 29, 29, 29, 29, 29, 0, 36, 37, 0, 38, 37, 39, 37, 0, 0, 36, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 45, 28, 46, 29, 29, 29, 46, 47, 0, 48, 0, 28, 29, 49, 29, 50, 51, 52, 0, 0, 0, 0, 0, 53, 54, 0, 55, 0, 28, 0, 56, 0, 29, 57, 29, 58, 29, 59, 60, 61, 60, 62, 60, 0, 63, 64, 63, 65, 63, 66, 67, 0, 68, 0, 0, 0, 0, 69, 69, 0, 0, 70, 70, 71, 0, 28, 72, 0, 0, 0, 69, 0, 73, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 74, 75, 0, 0, 0, 76, 77, 78, 79, 0, 7, 7, 80, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 29, 57, 29, 29, 29, 59, 60, 61, 60, 60, 60, 0, 63, 64, 63, 63, 63, 85, 66, 86, 87, 0, 88, 89, 90, 93, 94, 0, 28, 0, 7, 0, 7, 95, 96, 97, 59, 98, 0, 99, 0, 100, 101, 102, 0, 103, 104, 0, 105, 7, 7, 106, 107, 0, 0, 108, 109, 110, 111, 111, 111, 111, 111, 111, 111, 111, 112, 113, 114, 0, 0, 115, 0, 116, 117, 118, 0, 119, 120, 121, 0, 7, 0, 0, 122, 123, 0, 28, 124, 0, 0, 0, 0, 0, 125, 126, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 129, 130, 131, 0, 132, 133, 134, 7, 7, 135, 0, 0, 136, 137, 138, 111, 111, 111, 111, 111, 111, 111, 111, 139, 140, 141, 0, 0, 142, 0, 143, 144, 145, 0, 146, 147, 148, 0, 7, 0, 0, 149, 150, 0, 28, 151, 0, 0, 0, 0, 0, 152, 153, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 156, 157, 158, 0, 159, 160, 0, 161, 0, 162, 163, 164, 165, 166, 167, 0, 168, 169, 170, 171, 172, 173, 7, 174, 0, 0, 175, 176, 177, 178, 179, 180, 181, 0, 182, 7, 183, 184, 0, 0, 185, 186, 187, 188, 0, 189, 190, 191, 0, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 0, 28, 0, 0, 7, 7, 0, 0, 0, 200, 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 203, 204, 205, 206, 207, 59, 208, 0, 209, 0, 0, 0, 210, 0, 211, 212, 0, 0, 213, 0, 0, 0, 214, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 218, 219, 0, 0, 0, 220, 221, 222, 59, 223, 0, 28, 224, 0, 225, 226, 0, 28, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 229, 0, 230, 231, 232, 233, 234, 59, 235, 0, 0, 236, 0, 237, 238, 239, 240, 28, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 7, 7, 7, 241, 242, 243, 244, 245, 246, 247, 0, 248, 249, 250, 251, 252, 253, 254, 255, 256, 59, 257, 0, 258, 259, 260, 261, 262, 263, 0, 0, 0, 264, 7, 7, 0, 265, 266, 267, 268, 269, 0, 0, 0, 0, 0, 270, 271, 59, 272, 0, 273, 28, 274, 275, 276, 277, 278, 279, 0, 28, 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, 59, 284, 0, 285, 28, 286, 287, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 290, 0, 8, 0, 0, 7, 291, 0, 0, 291, 291, 0, 0, 7, 292, 0, 292, 0, 292, 292, 292, 0, 0, 292, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 0, 292, 293, 294, 294, 295, 296, 0, 297, 298, 0, 74, 0, 299, 0, 300, 301, 302, 303, 304, 29, 305, 306, 307, 308, 309, 59, 310, 0, 311, 312, 0, 313, 314, 0, 315, 316, 291, 317, 0, 318, 319, 320, 0, 0, 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 0, 0, 324, 0, 325, 326, 0, 0, 0, 327, 0, 0, 328, 329, 330, 331, 332, 333, 0, 334, 335, 335, 0, 336, 0, 337, 338, 338, 0, 0, 339, 340, 341, 0, 342, 343, 344, 0, 7, 345, 346, 347, 0, 348, 111, 111, 111, 111, 111, 111, 111, 111, 349, 350, 351, 0, 0, 352, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 0, 0, 359, 360, 0, 28, 361, 0, 0, 0, 0, 0, 362, 363, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 367, 368, 0, 0, 0, 369, 28, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 74, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 370, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 371, 372, 373, 374, 375, 375, 371, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 376, 377, 378, 0, 28, 0, 0, 379, 380, 381, 59, 382, 0, 383, 28, 384, 7, 385, 386, 0, 28, 387, 0, 0, 388, 389, 390, 391, 59, 392, 0, 28, 393, 394, 395, 396, 0, 28, 0, 397, 0, 7, 398, 0, 0, 0, 0, 399, 0, 0, 400, 400, 0, 401, 0, 0, 0, 402, 7, 403, 403, 403, 0, 0, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 406, 407, 0, 408, 409, 410, 411, 412, 413, 59, 414, 0, 415, 0, 0, 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, 425, 426, 427, 0, 0, 428, 0, 429, 430, 29, 431, 432, 433, 0, 0, 434, 0, 0, 433, 435, 435, 436, 437, 0, 438, 439, 0, 440, 441, 442, 0, 443, 444, 0, 0, 445, 446, 433, 433, 447, 0, 0, 448, 448, 0, 449, 0, 450, 451, 7, 0, 452, 0, 453, 454, 455, 456, 456, 457, 457, 0, 0, 458, 459, 459, 460, 460, 461, 462, 462, 463, 463, 464, 465, 465, 466, 466, 0, 0, 467, 468, 469, 470, 471, 472, 472, 469, 471, 473, 400, 474, 0, 0, 0, 475, 0, 0, 476, 477, 403, 403, 403, 478, 403, 479, 480, 28, 481, 482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 483, 0, 0, 0, 0, 478, 0, 0, 0, 0, 0, 484, 485, 0, 0, 0, 0, 0, 0, 486, 0, 0, 0, 0, 0, 485, 487, 488, 0, 489, 0, 490, 0, 0, 0, 0, 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, 494, 495, 7, 88, 496, 0, 497, 0, 498, 0, 0, 0, 499, 500]]; $send(self, '_lex_trans_actions=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_to_state_actions"); return self.$private("_lex_to_state_actions", "_lex_to_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 79, 0, 79, 0, 0, 0, 79, 79, 0, 0, 0, 0, 79, 0, 79, 0, 79, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 91, 0, 91, 0, 0, 0, 91, 91, 0, 0, 0, 0, 91, 0, 91, 0, 91, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 91, 0, 0, 0, 0, 0]]; $send(self, '_lex_to_state_actions=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_from_state_actions"); return self.$private("_lex_from_state_actions", "_lex_from_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 80, 0, 0, 0, 80, 80, 0, 0, 0, 0, 80, 0, 80, 0, 80, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 92, 0, 92, 0, 0, 0, 92, 92, 0, 0, 0, 0, 92, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 92, 0, 0, 0, 0, 0]]; $send(self, '_lex_from_state_actions=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$attr_accessor("_lex_eof_trans"); return self.$private("_lex_eof_trans", "_lex_eof_trans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 44, 44, 44, 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 75, 75, 75, 75, 81, 81, 81, 81, 0, 0, 0, 0, 95, 97, 99, 99, 99, 104, 104, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 179, 181, 181, 181, 193, 195, 195, 195, 195, 195, 201, 193, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 193, 205, 205, 205, 205, 255, 255, 255, 260, 262, 262, 262, 266, 266, 260, 266, 266, 266, 266, 266, 266, 266, 266, 266, 296, 296, 0, 309, 310, 311, 313, 315, 317, 315, 315, 0, 327, 328, 332, 332, 333, 342, 343, 344, 344, 344, 347, 347, 349, 350, 351, 351, 351, 353, 354, 355, 355, 351, 347, 347, 360, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 364, 364, 374, 375, 375, 375, 375, 387, 387, 387, 375, 375, 375, 375, 387, 387, 387, 387, 387, 387, 387, 387, 387, 398, 387, 399, 400, 400, 0, 407, 411, 411, 412, 421, 422, 423, 423, 423, 426, 426, 428, 429, 430, 430, 430, 432, 433, 434, 434, 430, 426, 426, 439, 440, 440, 440, 440, 440, 443, 443, 443, 443, 443, 443, 443, 443, 453, 454, 454, 454, 454, 466, 466, 466, 454, 454, 454, 454, 466, 466, 466, 466, 466, 466, 466, 466, 466, 477, 466, 478, 479, 479, 0, 486, 487, 0, 493, 0, 500, 504, 504, 0, 0, 513, 514, 518, 518, 0, 523, 0, 526, 0, 529, 529, 530, 531, 0, 572, 574, 575, 576, 577, 579, 581, 585, 585, 576, 576, 576, 576, 587, 576, 576, 581, 576, 576, 572, 591, 591, 591, 591, 591, 591, 581, 581, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 630, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 576, 0, 673, 674, 675, 677, 673, 680, 0, 699, 701, 703, 704, 705, 706, 707, 709, 706, 706, 706, 706, 706, 712, 706, 706, 714, 712, 712, 706, 0, 733, 734, 104, 104, 737, 738, 104, 734, 734, 741, 743, 746, 734, 747, 734, 748, 749, 751, 753, 734, 741, 754, 754, 743, 754, 758, 754, 754, 754, 754, 0, 179, 766, 767, 766, 766, 0, 776, 777, 779, 781, 783, 781, 785, 0, 797, 798, 799, 800, 802, 804, 806, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 0, 193, 865, 868, 869, 873, 875, 876, 877, 878, 879, 881, 884, 885, 887, 889, 892, 893, 895, 896, 193, 893, 893, 884, 884, 884, 884, 915, 918, 920, 921, 925, 928, 929, 930, 931, 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 884, 935, 884, 884, 884, 936, 943, 943, 945, 947, 956, 957, 958, 958, 958, 961, 961, 963, 964, 965, 965, 965, 967, 968, 969, 969, 965, 961, 961, 974, 975, 975, 975, 975, 975, 978, 978, 978, 978, 978, 978, 978, 978, 988, 989, 989, 989, 989, 1001, 1001, 1001, 989, 989, 989, 989, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1016, 1017, 1018, 1018, 193, 884, 884, 1022, 884, 879, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1076, 869, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1101, 884, 0, 1108, 1109, 1110, 1112, 1114, 1116, 0, 1125, 1126, 1127, 1128, 1130, 1125, 1133, 0, 266, 1187, 1189, 1190, 1191, 1192, 1194, 1196, 1198, 1201, 1201, 1192, 1192, 1204, 1205, 1192, 1192, 1207, 1209, 1210, 1210, 1213, 1224, 266, 1230, 1232, 1233, 1235, 1213, 1213, 1238, 1238, 1238, 1244, 1245, 1247, 1248, 1238, 1238, 1255, 1260, 1265, 1238, 1238, 1272, 1272, 1238, 1238, 1209, 1192, 1192, 1209, 1192, 1192, 1198, 266, 1289, 1290, 1290, 1290, 1290, 1290, 1290, 1296, 1198, 1299, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1339, 1340, 1300, 1300, 1344, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1398, 1192, 1399, 0, 1403, 1403, 0, 1407, 1407, 1407, 1407, 1411]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 44, 44, 44, 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 75, 75, 75, 75, 81, 81, 81, 81, 0, 0, 0, 0, 96, 98, 100, 100, 100, 105, 105, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 180, 182, 182, 182, 194, 194, 194, 202, 204, 204, 204, 204, 204, 210, 202, 202, 202, 202, 202, 202, 202, 237, 237, 237, 237, 237, 237, 202, 253, 202, 253, 237, 237, 202, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 202, 237, 237, 237, 237, 291, 291, 291, 296, 298, 298, 298, 302, 302, 302, 306, 306, 306, 306, 311, 311, 311, 296, 302, 302, 302, 302, 302, 302, 302, 302, 302, 342, 342, 0, 355, 356, 357, 359, 361, 363, 361, 361, 0, 373, 374, 378, 378, 379, 388, 389, 390, 390, 390, 393, 393, 395, 396, 397, 397, 397, 399, 400, 401, 401, 397, 393, 393, 406, 407, 407, 407, 407, 407, 410, 410, 410, 410, 416, 417, 417, 417, 417, 425, 417, 417, 417, 417, 430, 417, 417, 417, 417, 417, 417, 436, 437, 438, 438, 0, 445, 449, 449, 450, 459, 460, 461, 461, 461, 464, 464, 466, 467, 468, 468, 468, 470, 471, 472, 472, 468, 464, 464, 477, 478, 478, 478, 478, 478, 481, 481, 481, 481, 487, 488, 488, 488, 488, 496, 488, 488, 488, 488, 501, 488, 488, 488, 488, 488, 488, 507, 508, 509, 509, 0, 516, 517, 0, 523, 0, 530, 534, 534, 0, 0, 543, 544, 548, 548, 0, 553, 0, 556, 0, 559, 559, 560, 561, 562, 0, 603, 605, 606, 607, 608, 610, 612, 616, 616, 607, 607, 607, 607, 618, 607, 607, 612, 607, 607, 603, 622, 622, 622, 622, 622, 622, 612, 612, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 661, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 607, 0, 704, 705, 706, 708, 704, 711, 0, 730, 732, 734, 735, 736, 737, 738, 740, 737, 737, 737, 737, 737, 743, 737, 737, 745, 743, 743, 737, 0, 764, 765, 105, 105, 768, 769, 105, 765, 765, 772, 774, 777, 765, 778, 765, 779, 780, 782, 784, 765, 772, 785, 785, 774, 785, 789, 785, 785, 785, 785, 0, 180, 797, 798, 797, 797, 0, 807, 808, 810, 812, 814, 812, 816, 0, 828, 829, 830, 831, 833, 835, 837, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 0, 896, 899, 902, 903, 907, 909, 910, 911, 912, 913, 915, 918, 919, 921, 923, 926, 927, 929, 930, 202, 927, 932, 927, 918, 934, 918, 918, 952, 955, 957, 958, 962, 965, 966, 967, 968, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 972, 976, 978, 952, 952, 918, 983, 984, 984, 984, 918, 918, 918, 985, 992, 992, 994, 996, 1005, 1006, 1007, 1007, 1007, 1010, 1010, 1012, 1013, 1014, 1014, 1014, 1016, 1017, 1018, 1018, 1014, 1010, 1010, 1023, 1024, 1024, 1024, 1024, 1024, 1027, 1027, 1027, 1027, 1033, 1034, 1034, 1034, 1034, 1042, 1034, 1034, 1034, 1034, 1048, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1066, 1067, 1068, 1068, 202, 918, 918, 1072, 918, 913, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 202, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 1125, 903, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 1150, 918, 0, 1157, 1158, 1159, 1161, 1163, 1165, 0, 1174, 1175, 1176, 1177, 1179, 1174, 1182, 0, 302, 1237, 1239, 1240, 1241, 1242, 1244, 1246, 1248, 1251, 1251, 302, 1253, 1255, 1256, 1257, 1253, 1259, 1262, 1263, 1263, 302, 1268, 1271, 1282, 302, 1288, 1290, 1292, 1293, 1296, 1297, 1271, 1271, 1300, 1300, 1300, 1306, 1308, 1309, 1312, 1314, 1315, 1316, 1300, 1300, 1323, 1328, 1333, 1300, 1300, 1340, 1340, 1300, 1300, 1262, 1253, 1253, 1262, 1253, 1253, 1248, 302, 1358, 1359, 1359, 1359, 1359, 1359, 1359, 1365, 1248, 1368, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1408, 1409, 1369, 1369, 1413, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1467, 1242, 1468, 0, 1472, 1472, 0, 1476, 1476, 1476, 1476, 1480]]; $send(self, '_lex_eof_trans=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_start") })(Opal.get_singleton_class(self), $nesting); - $writer = [165]; + $writer = [181]; $send(self, 'lex_start=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_error") })(Opal.get_singleton_class(self), $nesting); @@ -29672,254 +33937,257 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self, 'lex_error=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_interp_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [174]; + $writer = [190]; $send(self, 'lex_en_interp_words=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_interp_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [239]; + $writer = [246]; $send(self, 'lex_en_interp_string=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_plain_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [303]; + $writer = [301]; $send(self, 'lex_en_plain_words=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_plain_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [306]; + $writer = [304]; $send(self, 'lex_en_plain_string=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_interp_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [308]; + $writer = [306]; $send(self, 'lex_en_interp_backslash_delimited=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_plain_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [312]; + $writer = [310]; $send(self, 'lex_en_plain_backslash_delimited=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_interp_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [313]; + $writer = [311]; $send(self, 'lex_en_interp_backslash_delimited_words=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_plain_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [318]; + $writer = [316]; $send(self, 'lex_en_plain_backslash_delimited_words=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_regexp_modifiers") })(Opal.get_singleton_class(self), $nesting); - $writer = [320]; + $writer = [318]; $send(self, 'lex_en_regexp_modifiers=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_variable") })(Opal.get_singleton_class(self), $nesting); - $writer = [322]; + $writer = [320]; $send(self, 'lex_en_expr_variable=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_fname") })(Opal.get_singleton_class(self), $nesting); - $writer = [327]; + $writer = [326]; $send(self, 'lex_en_expr_fname=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_endfn") })(Opal.get_singleton_class(self), $nesting); - $writer = [440]; + $writer = [439]; $send(self, 'lex_en_expr_endfn=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [447]; + $writer = [446]; $send(self, 'lex_en_expr_dot=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_arg") })(Opal.get_singleton_class(self), $nesting); - $writer = [468]; + $writer = [467]; $send(self, 'lex_en_expr_arg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_cmdarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [499]; + $writer = [498]; $send(self, 'lex_en_expr_cmdarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_endarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [505]; + $writer = [504]; $send(self, 'lex_en_expr_endarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_mid") })(Opal.get_singleton_class(self), $nesting); - $writer = [513]; + $writer = [512]; $send(self, 'lex_en_expr_mid=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_beg") })(Opal.get_singleton_class(self), $nesting); - $writer = [537]; + $writer = [536]; $send(self, 'lex_en_expr_beg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_labelarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [751]; + $writer = [759]; $send(self, 'lex_en_expr_labelarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_value") })(Opal.get_singleton_class(self), $nesting); - $writer = [758]; + $writer = [766]; $send(self, 'lex_en_expr_value=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_expr_end") })(Opal.get_singleton_class(self), $nesting); - $writer = [766]; + $writer = [774]; $send(self, 'lex_en_expr_end=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_leading_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [939]; + $writer = [954]; $send(self, 'lex_en_leading_dot=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_line_comment") })(Opal.get_singleton_class(self), $nesting); - $writer = [942]; + $writer = [957]; $send(self, 'lex_en_line_comment=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("lex_en_line_begin") })(Opal.get_singleton_class(self), $nesting); - $writer = [165]; + $writer = [181]; $send(self, 'lex_en_line_begin=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; Opal.const_set($nesting[0], 'ESCAPES', $hash("a".$ord(), "\u0007", "b".$ord(), "\b", "e".$ord(), "\u001b", "f".$ord(), "\f", "n".$ord(), "\n", "r".$ord(), "\r", "s".$ord(), " ", "t".$ord(), "\t", "v".$ord(), "\v", "\\".$ord(), "\\").$freeze()); - Opal.const_set($nesting[0], 'REGEXP_META_CHARACTERS', $send(Opal.const_get_relative($nesting, 'Regexp'), 'union', Opal.to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()); - Opal.const_set($nesting[0], 'RBRACE_OR_RBRACK', ["}", "]"].$freeze()); + Opal.const_set($nesting[0], 'REGEXP_META_CHARACTERS', $send($$($nesting, 'Regexp'), 'union', Opal.to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()); + Opal.const_set($nesting[0], 'NUMPARAM_MAX', 100); self.$attr_reader("source_buffer"); + self.$attr_reader("max_numparam_stack"); self.$attr_accessor("diagnostics"); self.$attr_accessor("static_env"); self.$attr_accessor("force_utf32"); - self.$attr_accessor("cond", "cmdarg", "in_kwarg"); + self.$attr_accessor("cond", "cmdarg", "in_kwarg", "context"); self.$attr_accessor("tokens", "comments"); - Opal.defn(self, '$initialize', TMP_Lexer_initialize_1 = function $$initialize(version) { + Opal.def(self, '$initialize', $Lexer_initialize$1 = function $$initialize(version) { var self = this; self.version = version; self.static_env = nil; + self.context = nil; self.tokens = nil; self.comments = nil; return self.$reset(); - }, TMP_Lexer_initialize_1.$$arity = 1); + }, $Lexer_initialize$1.$$arity = 1); - Opal.defn(self, '$reset', TMP_Lexer_reset_2 = function $$reset(reset_state) { + Opal.def(self, '$reset', $Lexer_reset$2 = function $$reset(reset_state) { var self = this; + + if (reset_state == null) { reset_state = true; - } - + }; if ($truthy(reset_state)) { self.cs = self.$class().$lex_en_line_begin(); - self.cond = Opal.const_get_relative($nesting, 'StackState').$new("cond"); - self.cmdarg = Opal.const_get_relative($nesting, 'StackState').$new("cmdarg"); + self.cond = $$($nesting, 'StackState').$new("cond"); + self.cmdarg = $$($nesting, 'StackState').$new("cmdarg"); self.cond_stack = []; self.cmdarg_stack = [];}; self.force_utf32 = false; @@ -29945,90 +34213,98 @@ Opal.modules["parser/lexer"] = function(Opal) { self.paren_nest = 0; self.lambda_stack = []; self.dedent_level = nil; - self.command_state = false; - return (self.in_kwarg = false); - }, TMP_Lexer_reset_2.$$arity = -1); + self.command_start = true; + self.in_kwarg = false; + self.cs_before_block_comment = self.$class().$lex_en_line_begin(); + return (self.max_numparam_stack = $$($nesting, 'MaxNumparamStack').$new()); + }, $Lexer_reset$2.$$arity = -1); - Opal.defn(self, '$source_buffer=', TMP_Lexer_source_buffer$eq_3 = function(source_buffer) { - var $a, $b, self = this, source = nil; + Opal.def(self, '$source_buffer=', $Lexer_source_buffer$eq$3 = function(source_buffer) { + var self = this, source = nil; self.source_buffer = source_buffer; if ($truthy(self.source_buffer)) { source = self.source_buffer.$source(); - if ($truthy(($truthy($a = (($b = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil)) ? source.$encoding()['$=='](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8')) : $a))) { + if (source.$encoding()['$==']($$$($$($nesting, 'Encoding'), 'UTF_8'))) { self.source_pts = source.$unpack("U*") - } else { + } else { self.source_pts = source.$unpack("C*") }; if (self.source_pts['$[]'](0)['$=='](65279)) { return (self.p = 1) - } else { + } else { return nil }; - } else { + } else { return (self.source_pts = nil) }; - }, TMP_Lexer_source_buffer$eq_3.$$arity = 1); + }, $Lexer_source_buffer$eq$3.$$arity = 1); - Opal.defn(self, '$encoding', TMP_Lexer_encoding_4 = function $$encoding() { + Opal.def(self, '$encoding', $Lexer_encoding$4 = function $$encoding() { var self = this; return self.source_buffer.$source().$encoding() - }, TMP_Lexer_encoding_4.$$arity = 0); + }, $Lexer_encoding$4.$$arity = 0); Opal.const_set($nesting[0], 'LEX_STATES', $hash2(["line_begin", "expr_dot", "expr_fname", "expr_value", "expr_beg", "expr_mid", "expr_arg", "expr_cmdarg", "expr_end", "expr_endarg", "expr_endfn", "expr_labelarg", "interp_string", "interp_words", "plain_string", "plain_words"], {"line_begin": self.$lex_en_line_begin(), "expr_dot": self.$lex_en_expr_dot(), "expr_fname": self.$lex_en_expr_fname(), "expr_value": self.$lex_en_expr_value(), "expr_beg": self.$lex_en_expr_beg(), "expr_mid": self.$lex_en_expr_mid(), "expr_arg": self.$lex_en_expr_arg(), "expr_cmdarg": self.$lex_en_expr_cmdarg(), "expr_end": self.$lex_en_expr_end(), "expr_endarg": self.$lex_en_expr_endarg(), "expr_endfn": self.$lex_en_expr_endfn(), "expr_labelarg": self.$lex_en_expr_labelarg(), "interp_string": self.$lex_en_interp_string(), "interp_words": self.$lex_en_interp_words(), "plain_string": self.$lex_en_plain_string(), "plain_words": self.$lex_en_plain_string()})); - Opal.defn(self, '$state', TMP_Lexer_state_5 = function $$state() { + Opal.def(self, '$state', $Lexer_state$5 = function $$state() { var self = this; - return Opal.const_get_relative($nesting, 'LEX_STATES').$invert().$fetch(self.cs, self.cs) - }, TMP_Lexer_state_5.$$arity = 0); + return $$($nesting, 'LEX_STATES').$invert().$fetch(self.cs, self.cs) + }, $Lexer_state$5.$$arity = 0); - Opal.defn(self, '$state=', TMP_Lexer_state$eq_6 = function(state) { + Opal.def(self, '$state=', $Lexer_state$eq$6 = function(state) { var self = this; - return (self.cs = Opal.const_get_relative($nesting, 'LEX_STATES').$fetch(state)) - }, TMP_Lexer_state$eq_6.$$arity = 1); + return (self.cs = $$($nesting, 'LEX_STATES').$fetch(state)) + }, $Lexer_state$eq$6.$$arity = 1); - Opal.defn(self, '$push_cmdarg', TMP_Lexer_push_cmdarg_7 = function $$push_cmdarg() { + Opal.def(self, '$push_cmdarg', $Lexer_push_cmdarg$7 = function $$push_cmdarg() { var self = this; self.cmdarg_stack.$push(self.cmdarg); - return (self.cmdarg = Opal.const_get_relative($nesting, 'StackState').$new("" + "cmdarg." + (self.cmdarg_stack.$count()))); - }, TMP_Lexer_push_cmdarg_7.$$arity = 0); + return (self.cmdarg = $$($nesting, 'StackState').$new("" + "cmdarg." + (self.cmdarg_stack.$count()))); + }, $Lexer_push_cmdarg$7.$$arity = 0); - Opal.defn(self, '$pop_cmdarg', TMP_Lexer_pop_cmdarg_8 = function $$pop_cmdarg() { + Opal.def(self, '$pop_cmdarg', $Lexer_pop_cmdarg$8 = function $$pop_cmdarg() { var self = this; return (self.cmdarg = self.cmdarg_stack.$pop()) - }, TMP_Lexer_pop_cmdarg_8.$$arity = 0); + }, $Lexer_pop_cmdarg$8.$$arity = 0); - Opal.defn(self, '$push_cond', TMP_Lexer_push_cond_9 = function $$push_cond() { + Opal.def(self, '$push_cond', $Lexer_push_cond$9 = function $$push_cond() { var self = this; self.cond_stack.$push(self.cond); - return (self.cond = Opal.const_get_relative($nesting, 'StackState').$new("" + "cond." + (self.cond_stack.$count()))); - }, TMP_Lexer_push_cond_9.$$arity = 0); + return (self.cond = $$($nesting, 'StackState').$new("" + "cond." + (self.cond_stack.$count()))); + }, $Lexer_push_cond$9.$$arity = 0); - Opal.defn(self, '$pop_cond', TMP_Lexer_pop_cond_10 = function $$pop_cond() { + Opal.def(self, '$pop_cond', $Lexer_pop_cond$10 = function $$pop_cond() { var self = this; return (self.cond = self.cond_stack.$pop()) - }, TMP_Lexer_pop_cond_10.$$arity = 0); + }, $Lexer_pop_cond$10.$$arity = 0); - Opal.defn(self, '$dedent_level', TMP_Lexer_dedent_level_11 = function $$dedent_level() { + Opal.def(self, '$max_numparam', $Lexer_max_numparam$11 = function $$max_numparam() { + var self = this; + + return self.max_numparam_stack.$top() + }, $Lexer_max_numparam$11.$$arity = 0); + + Opal.def(self, '$dedent_level', $Lexer_dedent_level$12 = function $$dedent_level() { var $a, self = this, dedent_level = nil; $a = [self.dedent_level, nil], (dedent_level = $a[0]), (self.dedent_level = $a[1]), $a; return dedent_level; - }, TMP_Lexer_dedent_level_11.$$arity = 0); + }, $Lexer_dedent_level$12.$$arity = 0); - Opal.defn(self, '$advance', TMP_Lexer_advance_36 = function $$advance() { - var $a, $b, $c, $d, TMP_12, TMP_13, TMP_14, TMP_15, TMP_16, TMP_17, TMP_18, TMP_19, TMP_20, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, TMP_21, $p, $q, $r, $s, $t, $u, TMP_22, TMP_23, TMP_24, $v, $w, TMP_25, TMP_26, TMP_27, $x, $y, TMP_28, TMP_29, TMP_30, TMP_31, TMP_32, TMP_33, TMP_34, TMP_35, self = this, klass = nil, _lex_trans_keys = nil, _lex_key_spans = nil, _lex_index_offsets = nil, _lex_indicies = nil, _lex_trans_targs = nil, _lex_trans_actions = nil, _lex_to_state_actions = nil, _lex_from_state_actions = nil, _lex_eof_trans = nil, pe = nil, p = nil, eof = nil, testEof = nil, _slen = nil, _trans = nil, _keys = nil, _inds = nil, _acts = nil, _nacts = nil, _goto_level = nil, _resume = nil, _eof_trans = nil, _again = nil, _test_eof = nil, _out = nil, $case = nil, _wide = nil, tm = nil, heredoc_e = nil, current_literal = nil, $writer = nil, line = nil, string = nil, lookahead = nil, token = nil, escaped_char = nil, unknown_options = nil, type = nil, delimiter = nil, escape = nil, ident = nil, value = nil, digits = nil, invalid_idx = nil, invalid_s = nil, codepoints = nil, codepoint_s = nil, codepoint = nil, new_herebody_s = nil, indent = nil, dedent_body = nil; + Opal.def(self, '$advance', $Lexer_advance$13 = function $$advance() { + var $a, $b, $c, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36, $$37, $$38, $$39, $$40, $$41, $$42, self = this, klass = nil, _lex_trans_keys = nil, _lex_key_spans = nil, _lex_index_offsets = nil, _lex_indicies = nil, _lex_trans_targs = nil, _lex_trans_actions = nil, _lex_to_state_actions = nil, _lex_from_state_actions = nil, _lex_eof_trans = nil, pe = nil, p = nil, eof = nil, cmd_state = nil, testEof = nil, _slen = nil, _trans = nil, _keys = nil, _inds = nil, _acts = nil, _nacts = nil, _goto_level = nil, _resume = nil, _eof_trans = nil, _again = nil, _test_eof = nil, _out = nil, $case = nil, _wide = nil, tm = nil, heredoc_e = nil, diag_msg = nil, ident_tok = nil, ident_ts = nil, ident_te = nil, current_literal = nil, $writer = nil, line = nil, string = nil, lookahead = nil, token = nil, escaped_char = nil, unknown_options = nil, value = nil, type = nil, delimiter = nil, escape = nil, ident = nil, digits = nil, invalid_idx = nil, invalid_s = nil, codepoints = nil, codepoint_s = nil, spaces_p = nil, codepoint = nil, new_herebody_s = nil, indent = nil, dedent_body = nil; if ($truthy(self.token_queue['$any?']())) { @@ -30045,7 +34321,8 @@ Opal.modules["parser/lexer"] = function(Opal) { _lex_eof_trans = klass.$send("_lex_eof_trans"); pe = $rb_plus(self.source_pts.$size(), 2); $a = [self.p, pe], (p = $a[0]), (eof = $a[1]), $a; - self.command_state = ($truthy($a = self.cs['$=='](klass.$lex_en_expr_value())) ? $a : self.cs['$=='](klass.$lex_en_line_begin())); + cmd_state = self.command_start; + self.command_start = false; testEof = false; $b = nil, $a = Opal.to_ary($b), (_slen = ($a[0] == null ? nil : $a[0])), (_trans = ($a[1] == null ? nil : $a[1])), (_keys = ($a[2] == null ? nil : $a[2])), (_inds = ($a[3] == null ? nil : $a[3])), (_acts = ($a[4] == null ? nil : $a[4])), (_nacts = ($a[5] == null ? nil : $a[5])), $b; @@ -30070,7 +34347,7 @@ Opal.modules["parser/lexer"] = function(Opal) { if ($truthy($rb_le(_goto_level, _resume))) { $case = _lex_from_state_actions['$[]'](self.cs); - if ((80)['$===']($case)) { + if ((92)['$===']($case)) { self.ts = p;}; _keys = self.cs['$<<'](1); _inds = _lex_index_offsets['$[]'](self.cs); @@ -30078,7 +34355,7 @@ Opal.modules["parser/lexer"] = function(Opal) { _wide = ($truthy($b = self.source_pts['$[]'](p)) ? $b : 0); _trans = (function() {if ($truthy(($truthy($b = ($truthy($c = $rb_gt(_slen, 0)) ? $rb_le(_lex_trans_keys['$[]'](_keys), _wide) : $c)) ? $rb_le(_wide, _lex_trans_keys['$[]']($rb_plus(_keys, 1))) : $b))) { return _lex_indicies['$[]']($rb_minus($rb_plus(_inds, _wide), _lex_trans_keys['$[]'](_keys))) - } else { + } else { return _lex_indicies['$[]']($rb_plus(_inds, _slen)) }; return nil; })();}; if ($truthy($rb_le(_goto_level, _eof_trans))) { @@ -30088,7 +34365,7 @@ Opal.modules["parser/lexer"] = function(Opal) { $case = _lex_trans_actions['$[]'](_trans); if ((28)['$===']($case)) { self.newline_s = p;} - else if ((99)['$===']($case)) { + else if ((111)['$===']($case)) { self.escape_s = p; self.escape = nil;} else if ((29)['$===']($case)) { @@ -30096,15 +34373,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = self.herebody_s; self.herebody_s = nil;};} - else if ((67)['$===']($case)) { + else if ((59)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);} - else if ((70)['$===']($case)) { + else if ((63)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());} - else if ((279)['$===']($case)) { + else if ((296)['$===']($case)) { tm = p;} else if ((36)['$===']($case)) { tm = p;} @@ -30112,41 +34389,51 @@ Opal.modules["parser/lexer"] = function(Opal) { tm = p;} else if ((40)['$===']($case)) { tm = p;} - else if ((55)['$===']($case)) { + else if ((70)['$===']($case)) { heredoc_e = p;} - else if ((319)['$===']($case)) { + else if ((335)['$===']($case)) { + tm = $rb_minus(p, 1); + diag_msg = "ivar_name";} + else if ((338)['$===']($case)) { + tm = $rb_minus(p, 2); + diag_msg = "cvar_name";} + else if ((346)['$===']($case)) { self.escape = nil;} - else if ((348)['$===']($case)) { + else if ((375)['$===']($case)) { tm = p;} - else if ((424)['$===']($case)) { + else if ((294)['$===']($case)) { + ident_tok = self.$tok(); + ident_ts = self.ts; + ident_te = self.te;} + else if ((465)['$===']($case)) { self.num_base = 16; self.num_digits_s = p;} - else if ((418)['$===']($case)) { + else if ((459)['$===']($case)) { self.num_base = 10; self.num_digits_s = p;} - else if ((421)['$===']($case)) { + else if ((462)['$===']($case)) { self.num_base = 8; self.num_digits_s = p;} - else if ((415)['$===']($case)) { + else if ((456)['$===']($case)) { self.num_base = 2; self.num_digits_s = p;} - else if ((430)['$===']($case)) { + else if ((471)['$===']($case)) { self.num_base = 10; self.num_digits_s = self.ts;} - else if ((398)['$===']($case)) { + else if ((433)['$===']($case)) { self.num_base = 8; self.num_digits_s = self.ts;} - else if ((410)['$===']($case)) { + else if ((448)['$===']($case)) { self.num_suffix_s = p;} - else if ((405)['$===']($case)) { + else if ((441)['$===']($case)) { self.num_suffix_s = p;} - else if ((403)['$===']($case)) { + else if ((438)['$===']($case)) { self.num_suffix_s = p;} - else if ((76)['$===']($case)) { + else if ((88)['$===']($case)) { tm = p;} else if ((7)['$===']($case)) { self.te = $rb_plus(p, 1);} - else if ((96)['$===']($case)) { + else if ((108)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30161,14 +34448,11 @@ Opal.modules["parser/lexer"] = function(Opal) { $writer[$rb_minus($writer["length"], 1)];; self.herebody_s = nil;}; current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 766; - - $writer = [self.top, self.cs]; - $send(self.stack, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.top = $rb_plus(self.top, 1); - self.cs = 758; - _goto_level = _again; + p = $rb_plus(p, 1); + _goto_level = _out; continue;;;;} else if ((5)['$===']($case)) { self.te = $rb_plus(p, 1); @@ -30184,10 +34468,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((92)['$===']($case)) { + else if ((104)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30207,12 +34491,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30228,12 +34512,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((91)['$===']($case)) { + else if ((103)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30246,18 +34530,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((97)['$===']($case)) { + else if ((109)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30272,15 +34556,15 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((94)['$===']($case)) { + else if ((106)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$literal().$extend_space(self.ts, self.te);;} - else if ((95)['$===']($case)) { + else if ((107)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30294,15 +34578,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} else if ((6)['$===']($case)) { @@ -30312,14 +34596,18 @@ Opal.modules["parser/lexer"] = function(Opal) { current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($b = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { + } else { current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;} else if ((4)['$===']($case)) { @@ -30336,18 +34624,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((123)['$===']($case)) { + else if ((136)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30362,14 +34650,11 @@ Opal.modules["parser/lexer"] = function(Opal) { $writer[$rb_minus($writer["length"], 1)];; self.herebody_s = nil;}; current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 766; - - $writer = [self.top, self.cs]; - $send(self.stack, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.top = $rb_plus(self.top, 1); - self.cs = 758; - _goto_level = _again; + p = $rb_plus(p, 1); + _goto_level = _out; continue;;;;} else if ((10)['$===']($case)) { self.te = $rb_plus(p, 1); @@ -30385,10 +34670,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((120)['$===']($case)) { + else if ((133)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30408,12 +34693,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30429,12 +34714,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((119)['$===']($case)) { + else if ((132)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30447,18 +34732,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((124)['$===']($case)) { + else if ((137)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30473,10 +34758,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((122)['$===']($case)) { + else if ((135)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30490,15 +34775,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} else if ((11)['$===']($case)) { @@ -30508,14 +34793,18 @@ Opal.modules["parser/lexer"] = function(Opal) { current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($b = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { + } else { current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;} else if ((9)['$===']($case)) { @@ -30532,18 +34821,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((146)['$===']($case)) { + else if ((160)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30563,12 +34852,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30584,12 +34873,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((145)['$===']($case)) { + else if ((159)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30602,23 +34891,23 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((148)['$===']($case)) { + else if ((162)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$literal().$extend_space(self.ts, self.te);;} - else if ((149)['$===']($case)) { + else if ((163)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30632,18 +34921,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((152)['$===']($case)) { + else if ((166)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30663,12 +34952,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30684,12 +34973,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((151)['$===']($case)) { + else if ((165)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30702,18 +34991,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((154)['$===']($case)) { + else if ((168)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30727,18 +35016,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((161)['$===']($case)) { + else if ((175)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30753,14 +35042,11 @@ Opal.modules["parser/lexer"] = function(Opal) { $writer[$rb_minus($writer["length"], 1)];; self.herebody_s = nil;}; current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 766; - - $writer = [self.top, self.cs]; - $send(self.stack, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.top = $rb_plus(self.top, 1); - self.cs = 758; - _goto_level = _again; + p = $rb_plus(p, 1); + _goto_level = _out; continue;;;;} else if ((13)['$===']($case)) { self.te = $rb_plus(p, 1); @@ -30776,10 +35062,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((158)['$===']($case)) { + else if ((172)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30799,12 +35085,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30820,12 +35106,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((157)['$===']($case)) { + else if ((171)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30838,18 +35124,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((162)['$===']($case)) { + else if ((176)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30864,10 +35150,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((160)['$===']($case)) { + else if ((174)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -30881,15 +35167,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} else if ((12)['$===']($case)) { @@ -30906,18 +35192,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((164)['$===']($case)) { + else if ((178)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -30937,12 +35223,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -30958,12 +35244,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((163)['$===']($case)) { + else if ((177)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -30976,18 +35262,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((171)['$===']($case)) { + else if ((185)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -31002,14 +35288,11 @@ Opal.modules["parser/lexer"] = function(Opal) { $writer[$rb_minus($writer["length"], 1)];; self.herebody_s = nil;}; current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 766; - - $writer = [self.top, self.cs]; - $send(self.stack, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.top = $rb_plus(self.top, 1); - self.cs = 758; - _goto_level = _again; + p = $rb_plus(p, 1); + _goto_level = _out; continue;;;;} else if ((15)['$===']($case)) { self.te = $rb_plus(p, 1); @@ -31025,10 +35308,10 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((167)['$===']($case)) { + else if ((181)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -31048,12 +35331,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -31069,12 +35352,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((166)['$===']($case)) { + else if ((180)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -31087,18 +35370,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((172)['$===']($case)) { + else if ((186)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31113,15 +35396,15 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((169)['$===']($case)) { + else if ((183)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$literal().$extend_space(self.ts, self.te);;} - else if ((170)['$===']($case)) { + else if ((184)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31135,15 +35418,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} else if ((14)['$===']($case)) { @@ -31160,18 +35443,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((174)['$===']($case)) { + else if ((188)['$===']($case)) { self.te = $rb_plus(p, 1); current_literal = self.$literal(); @@ -31191,12 +35474,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -31212,12 +35495,12 @@ Opal.modules["parser/lexer"] = function(Opal) { }; if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;} - else if ((173)['$===']($case)) { + else if ((187)['$===']($case)) { self.te = $rb_plus(p, 1); string = self.$tok(); @@ -31230,32 +35513,32 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 751; - } else { + self.cs = 759; + } else { self.cs = self.$pop_literal() }; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$extend_string(string, self.ts, self.te) };;} - else if ((176)['$===']($case)) { + else if ((190)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$literal().$extend_space(self.ts, self.te);;} - else if ((177)['$===']($case)) { + else if ((191)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tREGEXP_OPT", self.$tok(self.ts, $rb_minus(self.te, 1)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((178)['$===']($case)) { + else if ((192)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31263,7 +35546,7 @@ Opal.modules["parser/lexer"] = function(Opal) { if ($truthy(unknown_options['$any?']())) { self.$diagnostic("error", "regexp_options", $hash2(["options"], {"options": unknown_options.$join()}))}; self.$emit("tREGEXP_OPT"); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; @@ -31275,7 +35558,7 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { self.$emit("tBACK_REF") - } else { + } else { self.$emit("tGVAR") }; self.cs = self.$stack_pop(); @@ -31283,7 +35566,7 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((179)['$===']($case)) { + else if ((193)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31291,7 +35574,7 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { self.$emit("tBACK_REF") - } else { + } else { self.$emit("tGVAR") }; self.cs = self.$stack_pop(); @@ -31299,7 +35582,7 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((181)['$===']($case)) { + else if ((196)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31311,7 +35594,29 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((180)['$===']($case)) { + else if ((195)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_lt(self.version, 27))) { + self.$diagnostic("error", "ivar_name", $hash2(["name"], {"name": self.$tok()}))}; + value = self.$tok()['$[]']($range(1, -1, false)); + if (value['$[]'](0)['$==']("0")) { + self.$diagnostic("error", "leading_zero_in_numparam", nil, self.$range(self.ts, self.te))}; + if ($truthy($rb_gt(value.$to_i(), $$($nesting, 'NUMPARAM_MAX')))) { + self.$diagnostic("error", "too_large_numparam", nil, self.$range(self.ts, self.te))}; + if ($truthy(($truthy($b = self.context['$in_block?']()['$!']()) ? self.context['$in_lambda?']()['$!']() : $b))) { + self.$diagnostic("error", "numparam_outside_block", nil, self.$range(self.ts, self.te))}; + if ($truthy(self.max_numparam_stack['$can_have_numparams?']()['$!']())) { + self.$diagnostic("error", "ordinary_param_defined", nil, self.$range(self.ts, self.te))}; + self.max_numparam_stack.$register(value.$to_i()); + self.$emit("tNUMPARAM", self.$tok()['$[]']($range(1, -1, false))); + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((194)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -31323,20 +35628,20 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((202)['$===']($case)) { + else if ((217)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN')); - self.cs = 440; + self.$emit_table($$($nesting, 'KEYWORDS_BEGIN')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((188)['$===']($case)) { + else if ((203)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; @@ -31345,32 +35650,32 @@ Opal.modules["parser/lexer"] = function(Opal) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; $writer = [self.top, self.cs]; $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((185)['$===']($case)) { + else if ((200)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 440; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((197)['$===']($case)) { + else if ((212)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} else if ((20)['$===']($case)) { @@ -31383,23 +35688,23 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;; - } else { + } else { p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;; };;} - else if ((184)['$===']($case)) { + else if ((199)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((183)['$===']($case)) { + else if ((198)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31407,88 +35712,88 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((201)['$===']($case)) { + else if ((216)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN')); - self.cs = 440; + self.$emit_table($$($nesting, 'KEYWORDS_BEGIN')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((198)['$===']($case)) { + else if ((213)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tCONSTANT"); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((200)['$===']($case)) { + else if ((215)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((195)['$===']($case)) { + else if ((210)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; $writer = [self.top, self.cs]; $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((191)['$===']($case)) { + else if ((206)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 440; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((196)['$===']($case)) { + else if ((211)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((189)['$===']($case)) { + else if ((204)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((194)['$===']($case)) { + else if ((209)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} else if ((19)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 440; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; @@ -31499,34 +35804,34 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((187)['$===']($case)) { + else if ((202)['$===']($case)) { $case = self.act; - if ((39)['$===']($case)) { + if ((40)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN')); - self.cs = 440; + self.$emit_table($$($nesting, 'KEYWORDS_BEGIN')); + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((40)['$===']($case)) { + else if ((41)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tCONSTANT"); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((41)['$===']($case)) { + else if ((42)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; @@ -31536,20 +35841,20 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 751; + self.cs = 759; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((204)['$===']($case)) { + else if ((219)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((203)['$===']($case)) { + else if ((218)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31557,16 +35862,16 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((206)['$===']($case)) { + else if ((221)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((205)['$===']($case)) { + else if ((220)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} else if ((21)['$===']($case)) { @@ -31575,27 +35880,27 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((212)['$===']($case)) { + else if ((227)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 468; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 467; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((211)['$===']($case)) { + else if ((226)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((210)['$===']($case)) { + else if ((225)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31603,73 +35908,73 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((222)['$===']($case)) { + else if ((237)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tCONSTANT"); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((213)['$===']($case)) { + else if ((228)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((218)['$===']($case)) { + else if ((233)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 468; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 467; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((216)['$===']($case)) { + else if ((231)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((221)['$===']($case)) { + else if ((236)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((245)['$===']($case)) { + else if ((260)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((228)['$===']($case)) { + else if ((243)['$===']($case)) { self.te = $rb_plus(p, 1); if (self.$tok(tm, $rb_plus(tm, 1))['$==']("/".$freeze())) { self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1)))}; p = $rb_minus(tm, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((234)['$===']($case)) { + else if ((249)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} else if ((24)['$===']($case)) { @@ -31677,15 +35982,15 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((236)['$===']($case)) { + else if ((251)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} else if ((39)['$===']($case)) { @@ -31693,18 +35998,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((223)['$===']($case)) { + else if ((238)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((224)['$===']($case)) { + else if ((239)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31712,53 +36017,53 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((235)['$===']($case)) { + else if ((250)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((231)['$===']($case)) { + else if ((246)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((233)['$===']($case)) { + else if ((248)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((227)['$===']($case)) { + else if ((242)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((226)['$===']($case)) { + else if ((241)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((244)['$===']($case)) { + else if ((259)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} else if ((25)['$===']($case)) { @@ -31770,36 +36075,36 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} else if ((23)['$===']($case)) { $case = self.act; - if ((67)['$===']($case)) { + if ((68)['$===']($case)) { p = $rb_minus(self.te, 1);; if (self.$tok(tm, $rb_plus(tm, 1))['$==']("/".$freeze())) { self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1)))}; p = $rb_minus(tm, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;} - else if ((68)['$===']($case)) { + else if ((69)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;} - else if ((73)['$===']($case)) { + else if ((74)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;} else { @@ -31810,10 +36115,10 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 468; + self.cs = 467; _goto_level = _again; continue;;;;} - else if ((249)['$===']($case)) { + else if ((264)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31821,13 +36126,13 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((250)['$===']($case)) { + else if ((265)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 468; + self.cs = 467; _goto_level = _again; continue;;;;} else if ((44)['$===']($case)) { @@ -31836,50 +36141,50 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 468; + self.cs = 467; _goto_level = _again; continue;;;;} else if ((42)['$===']($case)) { $case = self.act; - if ((80)['$===']($case)) { + if ((81)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self.cond['$active?']())) { self.$emit("kDO_COND", "do".$freeze(), $rb_minus(self.te, 2), self.te) - } else { + } else { self.$emit("kDO", "do".$freeze(), $rb_minus(self.te, 2), self.te) }; - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((81)['$===']($case)) { + else if ((82)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 468; + self.cs = 467; _goto_level = _again; continue;;;};} - else if ((260)['$===']($case)) { + else if ((275)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit_do(true); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((253)['$===']($case)) { + else if ((268)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((254)['$===']($case)) { + else if ((269)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31887,27 +36192,27 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((255)['$===']($case)) { + else if ((270)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((258)['$===']($case)) { + else if ((273)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((264)['$===']($case)) { + else if ((279)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((263)['$===']($case)) { + else if ((278)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -31915,59 +36220,57 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((272)['$===']($case)) { + else if ((287)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((266)['$===']($case)) { + else if ((281)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((270)['$===']($case)) { + else if ((285)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((265)['$===']($case)) { + else if ((280)['$===']($case)) { $case = self.act; - if ((88)['$===']($case)) { + if ((89)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 537; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((89)['$===']($case)) { + else if ((90)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;};} - else if ((300)['$===']($case)) { + else if ((56)['$===']($case)) { self.te = $rb_plus(p, 1); + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - if ($truthy(self.$tok()['$start_with?']("-".$freeze()))) { - - self.$emit("tUMINUS_NUM", "-".$freeze(), self.ts, $rb_plus(self.ts, 1)); - self.cs = 766; - - p = $rb_plus(p, 1); - _goto_level = _out; - continue;;;};;} - else if ((301)['$===']($case)) { + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((320)['$===']($case)) { self.te = $rb_plus(p, 1); type = (delimiter = self.$tok()['$[]'](0).$chr()); @@ -31976,7 +36279,7 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;;;} - else if ((295)['$===']($case)) { + else if ((312)['$===']($case)) { self.te = $rb_plus(p, 1); $b = [self.source_buffer.$slice(self.ts).$chr(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; @@ -31984,7 +36287,7 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;;;} - else if ((51)['$===']($case)) { + else if ((54)['$===']($case)) { self.te = $rb_plus(p, 1); $b = [self.$tok()['$[]']($range(0, -2, false)), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; @@ -31992,7 +36295,17 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;;;} - else if ((302)['$===']($case)) { + else if ((333)['$===']($case)) { + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + self.$emit("tSYMBEG", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + + self.cs = 326; + _goto_level = _again; + continue;;;;} + else if ((321)['$===']($case)) { self.te = $rb_plus(p, 1); $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; @@ -32000,38 +36313,47 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;;;} - else if ((54)['$===']($case)) { + else if ((332)['$===']($case)) { + self.te = $rb_plus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), $rb_plus(self.ts, 2))); + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((68)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((316)['$===']($case)) { + else if ((343)['$===']($case)) { self.te = $rb_plus(p, 1); escape = $hash2([" ", "\r", "\n", "\t", "\v", "\f"], {" ": "\\s", "\r": "\\r", "\n": "\\n", "\t": "\\t", "\v": "\\v", "\f": "\\f"})['$[]'](self.source_buffer.$slice($rb_plus(self.ts, 1))); self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((315)['$===']($case)) { + else if ((342)['$===']($case)) { self.te = $rb_plus(p, 1); self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} - else if ((303)['$===']($case)) { + else if ((322)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION_BEGIN')); + self.$emit_table($$($nesting, 'PUNCTUATION_BEGIN')); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((48)['$===']($case)) { + else if ((51)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32040,41 +36362,69 @@ Opal.modules["parser/lexer"] = function(Opal) { ident = self.$tok(self.ts, $rb_minus(self.te, 2)); self.$emit((function() {if ($truthy(self.source_buffer.$slice(self.ts)['$=~'](/[A-Z]/))) { return "tCONSTANT" - } else { + } else { return "tIDENTIFIER" }; return nil; })(), ident, self.ts, $rb_minus(self.te, 2)); p = $rb_minus(p, 1); if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](ident) : $b))) { - self.cs = 766 - } else { - self.cs = self.$arg_or_cmdarg() - }; + self.cs = 774 } else { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); - self.cs = 751; + self.cs = 759; }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((289)['$===']($case)) { + else if ((319)['$===']($case)) { + self.te = $rb_plus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT3") + } else { + self.$emit("tDOT3") + }; + self.cs = 536; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((48)['$===']($case)) { + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ($truthy(($truthy($b = ($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](ident_tok) : $c)) ? $rb_lt(self.version, 25) : $b))) { + self.cs = 439 + } else { + self.cs = 498 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((306)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; - self.cs = 165; + self.cs = 181; _goto_level = _again; continue;;;;} - else if ((52)['$===']($case)) { + else if ((55)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((275)['$===']($case)) { + else if ((290)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32082,7 +36432,18 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((299)['$===']($case)) { + else if ((317)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((316)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -32091,7 +36452,7 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((296)['$===']($case)) { + else if ((313)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -32100,194 +36461,266 @@ Opal.modules["parser/lexer"] = function(Opal) { self.cs = self.$push_literal(type, delimiter, self.ts); _goto_level = _again; continue;;;;} - else if ((294)['$===']($case)) { + else if ((311)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} - else if ((304)['$===']($case)) { + else if ((340)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} + else if ((323)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((314)['$===']($case)) { + else if ((336)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((341)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} - else if ((320)['$===']($case)) { + else if ((347)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((297)['$===']($case)) { + else if ((314)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION_BEGIN')); + self.$emit_table($$($nesting, 'PUNCTUATION_BEGIN')); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((342)['$===']($case)) { + else if ((318)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT2") + } else { + self.$emit("tDOT2") + }; + self.cs = 536; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((293)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };;} - else if ((286)['$===']($case)) { + else if ((303)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((288)['$===']($case)) { + else if ((305)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; - self.cs = 165; + self.cs = 181; _goto_level = _again; continue;;;;} - else if ((291)['$===']($case)) { + else if ((308)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((50)['$===']($case)) { + else if ((53)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} - else if ((57)['$===']($case)) { + else if ((72)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));;} + else if ((73)['$===']($case)) { p = $rb_minus(self.te, 1);; value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($b = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((49)['$===']($case)) { + else if ((47)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + + self.$emit("tIDENTIFIER"); + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { + + self.cs = 439; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };;} + else if ((52)['$===']($case)) { p = $rb_minus(self.te, 1);;} - else if ((53)['$===']($case)) { + else if ((67)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((47)['$===']($case)) { + else if ((50)['$===']($case)) { $case = self.act; - if ((111)['$===']($case)) { + if ((95)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION_BEGIN')); + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((112)['$===']($case)) { + else if ((102)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));} + else if ((116)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((117)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 513; + self.cs = 512; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((113)['$===']($case)) { + else if ((118)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN')); - self.cs = 758; + self.$emit_table($$($nesting, 'KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((115)['$===']($case)) { + else if ((122)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;} - else if ((116)['$===']($case)) { + else if ((123)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $c))) { + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((119)['$===']($case)) { + else if ((127)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;};} - else if ((350)['$===']($case)) { + else if ((377)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((351)['$===']($case)) { + else if ((378)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32295,42 +36728,42 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((352)['$===']($case)) { + else if ((379)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((356)['$===']($case)) { + else if ((383)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((60)['$===']($case)) { + else if ((76)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((360)['$===']($case)) { + else if ((387)['$===']($case)) { self.te = $rb_plus(p, 1); self.cs = self.$push_literal(self.$tok(), self.$tok(), self.ts); _goto_level = _again; continue;;;;} - else if ((359)['$===']($case)) { + else if ((386)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((358)['$===']($case)) { + else if ((385)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32338,56 +36771,56 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((362)['$===']($case)) { + else if ((389)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((361)['$===']($case)) { + else if ((388)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((59)['$===']($case)) { + else if ((75)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(p, 1); - self.cs = 537; + self.cs = 536; _goto_level = _again; continue;;;;} - else if ((392)['$===']($case)) { + else if ((423)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tLAMBDA", "->".$freeze(), self.ts, $rb_plus(self.ts, 2)); self.lambda_stack.$push(self.paren_nest); - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((74)['$===']($case)) { + else if ((86)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((370)['$===']($case)) { + else if ((397)['$===']($case)) { self.te = $rb_plus(p, 1); - $c = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $c[0]), (delimiter = $c[1]), $c; + $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; self.cs = self.$push_literal(type, delimiter, self.ts, nil, false, false, true); _goto_level = _again; continue;;;;} - else if ((62)['$===']($case)) { + else if ((78)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); @@ -32397,85 +36830,105 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((389)['$===']($case)) { + else if ((419)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 447; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 446; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((383)['$===']($case)) { + else if ((475)['$===']($case)) { + self.te = $rb_plus(p, 1); + + self.$emit_table($$($nesting, 'PUNCTUATION')); + + self.cs = 766; + _goto_level = _again; + continue;;;;} + else if ((412)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 537; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((376)['$===']($case)) { + else if ((404)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cond.$lexpop(); - self.cmdarg.$lexpop(); - if ($truthy(Opal.const_get_relative($nesting, 'RBRACE_OR_RBRACK')['$include?'](self.$tok()))) { - self.cs = 505}; + self.$emit_table($$($nesting, 'PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if ($truthy(($truthy($b = self.$tok()['$==']("}".$freeze())) ? $b : self.$tok()['$==']("]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 774 + } else { + self.cs = 504 + }}; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((388)['$===']($case)) { + else if ((417)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tOP_ASGN", self.$tok(self.ts, $rb_minus(self.te, 1))); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((374)['$===']($case)) { + else if ((402)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tEH", "?".$freeze()); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((371)['$===']($case)) { + else if ((399)['$===']($case)) { self.te = $rb_plus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 537; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((373)['$===']($case)) { + else if ((401)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tSEMI", ";".$freeze()); - self.cs = 758; + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((438)['$===']($case)) { + else if ((480)['$===']($case)) { self.te = $rb_plus(p, 1); self.$diagnostic("error", "bare_backslash", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); p = $rb_minus(p, 1);;} - else if ((369)['$===']($case)) { + else if ((396)['$===']($case)) { self.te = $rb_plus(p, 1); self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));;} - else if ((368)['$===']($case)) { + else if ((395)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32483,53 +36936,54 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((448)['$===']($case)) { + else if ((490)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 327; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 326; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((446)['$===']($case)) { + else if ((488)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((445)['$===']($case)) { + else if ((487)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 758; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((395)['$===']($case)) { + else if ((427)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("error", "no_dot_digit_literal");;} - else if ((435)['$===']($case)) { + else if ((477)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tCONSTANT"); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((387)['$===']($case)) { + else if ((416)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); @@ -32540,80 +36994,141 @@ Opal.modules["parser/lexer"] = function(Opal) { $send(self.stack, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 322; + self.cs = 320; _goto_level = _again; continue;;;;} - else if ((393)['$===']($case)) { + else if ((424)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 447; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 446; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((440)['$===']($case)) { + else if ((482)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $c))) { + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };;} - else if ((382)['$===']($case)) { + else if ((422)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$($nesting, 'PUNCTUATION')); + + self.cs = 766; + _goto_level = _again; + continue;;;;} + else if ((418)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 537; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((394)['$===']($case)) { + else if ((411)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 537; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((380)['$===']($case)) { + else if ((426)['$===']($case)) { + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((409)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((386)['$===']($case)) { + else if ((415)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));;} - else if ((63)['$===']($case)) { + else if ((84)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((79)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$diagnostic("error", "no_dot_digit_literal");;} - else if ((61)['$===']($case)) { + else if ((83)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;} + else if ((77)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));;} - else if ((64)['$===']($case)) { + else if ((80)['$===']($case)) { $case = self.act; - if ((132)['$===']($case)) { + if ((140)['$===']($case)) { p = $rb_minus(self.te, 1);; if (self.lambda_stack.$last()['$=='](self.paren_nest)) { @@ -32621,120 +37136,122 @@ Opal.modules["parser/lexer"] = function(Opal) { self.lambda_stack.$pop(); if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLAMBEG", "{".$freeze()) - } else { + } else { self.$emit("kDO_LAMBDA", "do".$freeze()) }; } else if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLCURLY", "{".$freeze()) - } else { + } else { self.$emit_do() }; - self.cs = 758; + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((133)['$===']($case)) { + else if ((141)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 327; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 326; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((134)['$===']($case)) { + else if ((142)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((135)['$===']($case)) { + else if ((143)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 537; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((136)['$===']($case)) { + else if ((144)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 758; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((137)['$===']($case)) { + else if ((145)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 513; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 512; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((138)['$===']($case)) { + else if ((146)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - if ($truthy(($truthy($c = self['$version?'](18)) ? self.$tok()['$==']("not".$freeze()) : $c))) { + self.$emit_table($$($nesting, 'KEYWORDS')); + if ($truthy(($truthy($b = self['$version?'](18)) ? self.$tok()['$==']("not".$freeze()) : $b))) { - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = 468; + self.cs = 467; p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((139)['$===']($case)) { + else if ((147)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18))) { self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $c))) { - } else { - self.cs = self.$arg_or_cmdarg() - }; + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { } else { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((140)['$===']($case)) { + else if ((148)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); + self.$emit_table($$($nesting, 'KEYWORDS')); p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((141)['$===']($case)) { + else if ((149)['$===']($case)) { p = $rb_minus(self.te, 1);; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($c = ($truthy($d = digits['$empty?']()) ? self.num_base['$=='](8) : $d)) ? self['$version?'](18) : $c))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($c = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -32742,19 +37259,19 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((143)['$===']($case)) { + else if ((151)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18, 19, 20))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) - } else { + } else { self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); @@ -32763,12 +37280,12 @@ Opal.modules["parser/lexer"] = function(Opal) { _goto_level = _out; continue;;; };} - else if ((144)['$===']($case)) { + else if ((152)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18, 19, 20))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) - } else { + } else { self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); @@ -32777,7 +37294,7 @@ Opal.modules["parser/lexer"] = function(Opal) { _goto_level = _out; continue;;; };} - else if ((145)['$===']($case)) { + else if ((153)['$===']($case)) { p = $rb_minus(self.te, 1);; digits = self.$tok(self.ts, self.num_suffix_s); @@ -32785,131 +37302,170 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((147)['$===']($case)) { + else if ((155)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tCONSTANT"); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((151)['$===']($case)) { + else if ((158)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit("tDOT", ".", self.ts, $rb_plus(self.ts, 1)); + self.$emit("tCOLON", ":", $rb_plus(self.ts, 1), $rb_plus(self.ts, 2)); + p = $rb_plus($rb_minus(p, self.$tok().$length()), 2); + self.cs = 446; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((159)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 446; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((160)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $c))) { + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((152)['$===']($case)) { + else if ((161)['$===']($case)) { p = $rb_minus(self.te, 1);; if (tm['$=='](self.te)) { self.$emit("tFID") - } else { + } else { self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 468; + self.cs = 467; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((163)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 766; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((164)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;};} - else if ((78)['$===']($case)) { + else if ((90)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;} - else if ((453)['$===']($case)) { + else if ((495)['$===']($case)) { self.te = $rb_plus(p, 1); self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 165; + self.cs = 181; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((454)['$===']($case)) { + else if ((496)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 165; + self.cs = 181; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((75)['$===']($case)) { + else if ((87)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 165; + self.cs = 181; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((457)['$===']($case)) { + else if ((499)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$emit_comment(self.eq_begin_s, self.te); - self.cs = 165; + self.cs = self.cs_before_block_comment; _goto_level = _again; continue;;;;} - else if ((456)['$===']($case)) { + else if ((498)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.$diagnostic("fatal", "embedded_document", nil, self.$range(self.eq_begin_s, $rb_plus(self.eq_begin_s, "=begin".$length())));;} - else if ((89)['$===']($case)) { + else if ((101)['$===']($case)) { self.te = $rb_plus(p, 1); self.eq_begin_s = self.ts; - self.cs = 942; + self.cs = 957; _goto_level = _again; continue;;;;} else if ((2)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(pe, 3);;} - else if ((81)['$===']($case)) { + else if ((93)['$===']($case)) { self.te = $rb_plus(p, 1); + cmd_state = true; p = $rb_minus(p, 1); - self.cs = 758; + self.cs = 766; _goto_level = _again; continue;;;;} - else if ((82)['$===']($case)) { + else if ((94)['$===']($case)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); @@ -32917,46 +37473,48 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;;;} - else if ((83)['$===']($case)) { + else if ((95)['$===']($case)) { self.te = p; p = $rb_minus(p, 1);} - else if ((88)['$===']($case)) { + else if ((100)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); self.eq_begin_s = self.ts; - self.cs = 942; + self.cs = 957; _goto_level = _again; continue;;;;} - else if ((87)['$===']($case)) { + else if ((99)['$===']($case)) { self.te = p; p = $rb_minus(p, 1); + cmd_state = true; p = $rb_minus(p, 1); - self.cs = 758; + self.cs = 766; _goto_level = _again; continue;;;;} else if ((1)['$===']($case)) { p = $rb_minus(self.te, 1);; + cmd_state = true; p = $rb_minus(p, 1); - self.cs = 758; + self.cs = 766; _goto_level = _again; continue;;;;} - else if ((73)['$===']($case)) { + else if ((66)['$===']($case)) { self.newline_s = p;; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());;} - else if ((93)['$===']($case)) { + else if ((105)['$===']($case)) { self.newline_s = p;; @@ -32979,12 +37537,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -32998,14 +37556,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((121)['$===']($case)) { + else if ((134)['$===']($case)) { self.newline_s = p;; @@ -33028,12 +37586,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33047,14 +37605,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((147)['$===']($case)) { + else if ((161)['$===']($case)) { self.newline_s = p;; @@ -33077,12 +37635,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33096,14 +37654,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((153)['$===']($case)) { + else if ((167)['$===']($case)) { self.newline_s = p;; @@ -33126,12 +37684,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33145,14 +37703,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((159)['$===']($case)) { + else if ((173)['$===']($case)) { self.newline_s = p;; @@ -33175,12 +37733,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33194,14 +37752,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((165)['$===']($case)) { + else if ((179)['$===']($case)) { self.newline_s = p;; @@ -33224,12 +37782,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33243,14 +37801,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((168)['$===']($case)) { + else if ((182)['$===']($case)) { self.newline_s = p;; @@ -33273,12 +37831,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33292,14 +37850,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((175)['$===']($case)) { + else if ((189)['$===']($case)) { self.newline_s = p;; @@ -33322,12 +37880,12 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -33341,14 +37899,14 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($c = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $c))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;;} - else if ((246)['$===']($case)) { + else if ((261)['$===']($case)) { self.newline_s = p;; @@ -33356,10 +37914,10 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((237)['$===']($case)) { + else if ((252)['$===']($case)) { self.newline_s = p;; @@ -33367,10 +37925,10 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((229)['$===']($case)) { + else if ((244)['$===']($case)) { self.newline_s = p;; @@ -33378,10 +37936,10 @@ Opal.modules["parser/lexer"] = function(Opal) { p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((317)['$===']($case)) { + else if ((344)['$===']($case)) { self.newline_s = p;; @@ -33391,21 +37949,22 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((290)['$===']($case)) { + else if ((307)['$===']($case)) { self.newline_s = p;; self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; - self.cs = 165; + self.cs = 181; _goto_level = _again; continue;;;;;} - else if ((458)['$===']($case)) { + else if ((500)['$===']($case)) { self.newline_s = p;; @@ -33413,15 +37972,15 @@ Opal.modules["parser/lexer"] = function(Opal) { self.$emit_comment(self.eq_begin_s, self.te); - self.cs = 165; + self.cs = self.cs_before_block_comment; _goto_level = _again; continue;;;;;} - else if ((455)['$===']($case)) { + else if ((497)['$===']($case)) { self.newline_s = p;; self.te = $rb_plus(p, 1);;} - else if ((90)['$===']($case)) { + else if ((102)['$===']($case)) { self.newline_s = p;; @@ -33429,7 +37988,7 @@ Opal.modules["parser/lexer"] = function(Opal) { self.eq_begin_s = self.ts; - self.cs = 942; + self.cs = 957; _goto_level = _again; continue;;;;;} else if ((3)['$===']($case)) { @@ -33438,12 +37997,167 @@ Opal.modules["parser/lexer"] = function(Opal) { self.te = $rb_plus(p, 1); - p = $rb_minus(pe, 3);;;} - else if ((412)['$===']($case)) { + p = $rb_minus(pe, 3);;;} + else if ((451)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$14 = function(chars){var self = $$14.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tRATIONAL", self.$Rational(chars));}, $$14.$$s = self, $$14.$$arity = 1, $$14));; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((449)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$15 = function(chars){var self = $$15.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tIMAGINARY", self.$Complex(0, chars));}, $$15.$$s = self, $$15.$$arity = 1, $$15));; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((454)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$16 = function(chars){var self = $$16.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, $$16.$$s = self, $$16.$$arity = 1, $$16));; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((452)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$17 = function(chars){var self = $$17.$$s || this; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) { + chars = nil; + }; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, $$17.$$s = self, $$17.$$arity = 1, $$17));; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((450)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$18 = function(chars){var self = $$18.$$s || this; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + - self.num_xfrm = $send(self, 'lambda', [], (TMP_12 = function(chars){var self = TMP_12.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tRATIONAL", self.$Rational(chars))}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12));; + + if (chars == null) { + chars = nil; + }; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, $$18.$$s = self, $$18.$$arity = 1, $$18));; self.te = p; p = $rb_minus(p, 1); @@ -33451,11 +38165,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($c = ($truthy($d = digits['$empty?']()) ? self.num_base['$=='](8) : $d)) ? self['$version?'](18) : $c))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($c = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -33463,18 +38177,26 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((411)['$===']($case)) { + else if ((453)['$===']($case)) { - self.num_xfrm = $send(self, 'lambda', [], (TMP_13 = function(chars){var self = TMP_13.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tIMAGINARY", self.$Complex(0, chars))}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13));; + self.num_xfrm = $send(self, 'lambda', [], ($$19 = function(chars){var self = $$19.$$s || this; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) { + chars = nil; + }; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, $$19.$$s = self, $$19.$$arity = 1, $$19));; self.te = p; p = $rb_minus(p, 1); @@ -33482,11 +38204,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($c = ($truthy($d = digits['$empty?']()) ? self.num_base['$=='](8) : $d)) ? self['$version?'](18) : $c))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($c = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -33494,49 +38216,78 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((413)['$===']($case)) { + else if ((442)['$===']($case)) { - self.num_xfrm = $send(self, 'lambda', [], (TMP_14 = function(chars){var self = TMP_14.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)))}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14));; + self.num_xfrm = $send(self, 'lambda', [], ($$20 = function(chars){var self = $$20.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Float(chars)));}, $$20.$$s = self, $$20.$$arity = 1, $$20));; self.te = p; p = $rb_minus(p, 1); - digits = self.$tok(self.num_digits_s, self.num_suffix_s); - if ($truthy(digits['$end_with?']("_".$freeze()))) { - self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($c = ($truthy($d = digits['$empty?']()) ? self.num_base['$=='](8) : $d)) ? self['$version?'](18) : $c))) { - digits = "0".$freeze() - } else if ($truthy(digits['$empty?']())) { - self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($c = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { - invalid_s = $rb_plus(self.num_digits_s, invalid_idx); - self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((443)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$21 = function(chars){var self = $$21.$$s || this; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) { + chars = nil; + }; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, $$21.$$s = self, $$21.$$arity = 1, $$21));; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); if ($truthy(self['$version?'](18, 19, 20))) { - self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { - self.num_xfrm.$call(digits.$to_i(self.num_base)) + } else { + self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((406)['$===']($case)) { + else if ((444)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$22 = function(chars){var self = $$22.$$s || this; + - self.num_xfrm = $send(self, 'lambda', [], (TMP_15 = function(chars){var self = TMP_15.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tIMAGINARY", self.$Complex(0, self.$Float(chars)))}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15));; + + if (chars == null) { + chars = nil; + }; + return self.$emit("tRATIONAL", self.$Rational(chars));}, $$22.$$s = self, $$22.$$arity = 1, $$22));; self.te = p; p = $rb_minus(p, 1); @@ -33546,18 +38297,23 @@ if (chars == null) chars = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((407)['$===']($case)) { + else if ((446)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$23 = function(chars){var self = $$23.$$s || this; + - self.num_xfrm = $send(self, 'lambda', [], (TMP_16 = function(chars){var self = TMP_16.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tRATIONAL", self.$Rational(chars))}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16));; + + if (chars == null) { + chars = nil; + }; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, $$23.$$s = self, $$23.$$arity = 1, $$23));; self.te = p; p = $rb_minus(p, 1); @@ -33567,18 +38323,26 @@ if (chars == null) chars = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((408)['$===']($case)) { + else if ((445)['$===']($case)) { + + self.num_xfrm = $send(self, 'lambda', [], ($$24 = function(chars){var self = $$24.$$s || this; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + - self.num_xfrm = $send(self, 'lambda', [], (TMP_17 = function(chars){var self = TMP_17.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)))}, TMP_17.$$s = self, TMP_17.$$arity = 1, TMP_17));; + + if (chars == null) { + chars = nil; + }; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, $$24.$$s = self, $$24.$$arity = 1, $$24));; self.te = p; p = $rb_minus(p, 1); @@ -33588,30 +38352,48 @@ if (chars == null) chars = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((116)['$===']($case)) { + else if ((128)['$===']($case)) { self.escape = ""; codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); codepoint_s = $rb_plus(self.escape_s, 2); - (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$split(/[ \t]/), 'each', [], (TMP_18 = function(codepoint_str){var self = TMP_18.$$s || this, codepoint = nil; + if ($truthy($rb_lt(self.version, 24))) { + + if ($truthy(($truthy($b = codepoints['$start_with?'](" ")) ? $b : codepoints['$start_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3)))}; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2)))}; + if ($truthy(($truthy($b = codepoints['$end_with?'](" ")) ? $b : codepoints['$end_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p))};}; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], ($$25 = function($mlhs_tmp1){var self = $$25.$$s || this, $d, $e, codepoint_str = nil, spaces = nil, codepoint = nil; if (self.escape == null) self.escape = nil; -if (codepoint_str == null) codepoint_str = nil; + - codepoint = codepoint_str.$to_i(16); - if ($truthy($rb_ge(codepoint, 1114112))) { - - self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + if ($mlhs_tmp1 == null) { + $mlhs_tmp1 = nil; + }; + $e = $mlhs_tmp1, $d = Opal.to_ary($e), (codepoint_str = ($d[0] == null ? nil : $d[0])), (spaces = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { - Opal.brk(nil, $brk);}; - self.escape = $rb_plus(self.escape, codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'))); - return (codepoint_s = $rb_plus(codepoint_s, $rb_plus(codepoint_str.$length(), 1)));}, TMP_18.$$s = self, TMP_18.$$brk = $brk, TMP_18.$$arity = 1, TMP_18)) + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk);}; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$($nesting, 'Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, $$25.$$s = self, $$25.$$brk = $brk, $$25.$$arity = 1, $$25.$$has_top_level_mlhs_arg = true, $$25)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; self.te = p; @@ -33620,33 +38402,55 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($c = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $c))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($c = self.escape) ? $c : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((142)['$===']($case)) { + else if ((155)['$===']($case)) { self.escape = ""; codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); codepoint_s = $rb_plus(self.escape_s, 2); - (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$split(/[ \t]/), 'each', [], (TMP_19 = function(codepoint_str){var self = TMP_19.$$s || this, codepoint = nil; + if ($truthy($rb_lt(self.version, 24))) { + + if ($truthy(($truthy($b = codepoints['$start_with?'](" ")) ? $b : codepoints['$start_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3)))}; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2)))}; + if ($truthy(($truthy($b = codepoints['$end_with?'](" ")) ? $b : codepoints['$end_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p))};}; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], ($$26 = function($mlhs_tmp1){var self = $$26.$$s || this, $d, $e, codepoint_str = nil, spaces = nil, codepoint = nil; if (self.escape == null) self.escape = nil; -if (codepoint_str == null) codepoint_str = nil; + - codepoint = codepoint_str.$to_i(16); - if ($truthy($rb_ge(codepoint, 1114112))) { - - self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + if ($mlhs_tmp1 == null) { + $mlhs_tmp1 = nil; + }; + $e = $mlhs_tmp1, $d = Opal.to_ary($e), (codepoint_str = ($d[0] == null ? nil : $d[0])), (spaces = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { - Opal.brk(nil, $brk);}; - self.escape = $rb_plus(self.escape, codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'))); - return (codepoint_s = $rb_plus(codepoint_s, $rb_plus(codepoint_str.$length(), 1)));}, TMP_19.$$s = self, TMP_19.$$brk = $brk, TMP_19.$$arity = 1, TMP_19)) + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk);}; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$($nesting, 'Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, $$26.$$s = self, $$26.$$brk = $brk, $$26.$$arity = 1, $$26.$$has_top_level_mlhs_arg = true, $$26)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; self.te = p; @@ -33655,57 +38459,75 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($c = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $c))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($c = self.escape) ? $c : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((338)['$===']($case)) { + else if ((365)['$===']($case)) { self.escape = ""; codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); codepoint_s = $rb_plus(self.escape_s, 2); - (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$split(/[ \t]/), 'each', [], (TMP_20 = function(codepoint_str){var self = TMP_20.$$s || this, codepoint = nil; + if ($truthy($rb_lt(self.version, 24))) { + + if ($truthy(($truthy($b = codepoints['$start_with?'](" ")) ? $b : codepoints['$start_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3)))}; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2)))}; + if ($truthy(($truthy($b = codepoints['$end_with?'](" ")) ? $b : codepoints['$end_with?']("\t")))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p))};}; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], ($$27 = function($mlhs_tmp1){var self = $$27.$$s || this, $d, $e, codepoint_str = nil, spaces = nil, codepoint = nil; if (self.escape == null) self.escape = nil; -if (codepoint_str == null) codepoint_str = nil; + - codepoint = codepoint_str.$to_i(16); - if ($truthy($rb_ge(codepoint, 1114112))) { - - self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + if ($mlhs_tmp1 == null) { + $mlhs_tmp1 = nil; + }; + $e = $mlhs_tmp1, $d = Opal.to_ary($e), (codepoint_str = ($d[0] == null ? nil : $d[0])), (spaces = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { - Opal.brk(nil, $brk);}; - self.escape = $rb_plus(self.escape, codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'))); - return (codepoint_s = $rb_plus(codepoint_s, $rb_plus(codepoint_str.$length(), 1)));}, TMP_20.$$s = self, TMP_20.$$brk = $brk, TMP_20.$$arity = 1, TMP_20)) + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk);}; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$($nesting, 'Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, $$27.$$s = self, $$27.$$brk = $brk, $$27.$$arity = 1, $$27.$$has_top_level_mlhs_arg = true, $$27)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($c = self.escape) ? $c : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($c = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((100)['$===']($case)) { + else if ((112)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.te = p; @@ -33714,20 +38536,24 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($d = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $d))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($d = self.escape) ? $d : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((126)['$===']($case)) { + else if ((139)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.te = p; @@ -33736,41 +38562,41 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($d = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $d))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($d = self.escape) ? $d : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((322)['$===']($case)) { + else if ((349)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($d = self.escape) ? $d : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($d = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((103)['$===']($case)) { + else if ((115)['$===']($case)) { self.$diagnostic("fatal", "invalid_escape");; @@ -33780,17 +38606,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($e = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $e))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($e = self.escape) ? $e : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((129)['$===']($case)) { + else if ((142)['$===']($case)) { self.$diagnostic("fatal", "invalid_escape");; @@ -33800,39 +38630,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($e = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $e))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($e = self.escape) ? $e : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((325)['$===']($case)) { + else if ((352)['$===']($case)) { self.$diagnostic("fatal", "invalid_escape");; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($e = self.escape) ? $e : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($e = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((105)['$===']($case)) { + else if ((117)['$===']($case)) { self.escape = "\u007F";; @@ -33842,17 +38672,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($f = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $f))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($f = self.escape) ? $f : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((131)['$===']($case)) { + else if ((144)['$===']($case)) { self.escape = "\u007F";; @@ -33862,39 +38696,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($f = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $f))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($f = self.escape) ? $f : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((327)['$===']($case)) { + else if ((354)['$===']($case)) { self.escape = "\u007F";; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($f = self.escape) ? $f : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($f = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((102)['$===']($case)) { + else if ((114)['$===']($case)) { self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; @@ -33904,17 +38738,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($g = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $g))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($g = self.escape) ? $g : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((128)['$===']($case)) { + else if ((141)['$===']($case)) { self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; @@ -33924,39 +38762,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($g = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $g))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($g = self.escape) ? $g : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((324)['$===']($case)) { + else if ((351)['$===']($case)) { self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($g = self.escape) ? $g : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($g = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((118)['$===']($case)) { + else if ((131)['$===']($case)) { self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; @@ -33966,17 +38804,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($h = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $h))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($h = self.escape) ? $h : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((144)['$===']($case)) { + else if ((158)['$===']($case)) { self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; @@ -33986,41 +38828,41 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($h = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $h))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($h = self.escape) ? $h : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((340)['$===']($case)) { + else if ((368)['$===']($case)) { self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($h = self.escape) ? $h : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($h = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((113)['$===']($case)) { + else if ((130)['$===']($case)) { - self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'));; + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; self.te = p; p = $rb_minus(p, 1); @@ -34028,19 +38870,23 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($i = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $i))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($i = self.escape) ? $i : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((139)['$===']($case)) { + else if ((157)['$===']($case)) { - self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'));; + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; self.te = p; p = $rb_minus(p, 1); @@ -34048,41 +38894,41 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($i = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $i))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($i = self.escape) ? $i : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((335)['$===']($case)) { + else if ((367)['$===']($case)) { - self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'));; + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($i = self.escape) ? $i : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($i = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((117)['$===']($case)) { + else if ((125)['$===']($case)) { - self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$($nesting, 'Encoding'), 'UTF_8'));; self.te = p; p = $rb_minus(p, 1); @@ -34090,19 +38936,23 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($j = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $j))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($j = self.escape) ? $j : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((143)['$===']($case)) { + else if ((152)['$===']($case)) { - self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$($nesting, 'Encoding'), 'UTF_8'));; self.te = p; p = $rb_minus(p, 1); @@ -34110,39 +38960,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($j = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $j))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($j = self.escape) ? $j : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((339)['$===']($case)) { + else if ((362)['$===']($case)) { - self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$($nesting, 'Encoding'), 'UTF_8'));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($j = self.escape) ? $j : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($j = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((112)['$===']($case)) { + else if ((124)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; @@ -34152,17 +39002,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($k = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $k))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($k = self.escape) ? $k : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((138)['$===']($case)) { + else if ((151)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; @@ -34172,39 +39026,105 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($k = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $k))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($k = self.escape) ? $k : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((334)['$===']($case)) { + else if ((361)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($k = self.escape) ? $k : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($k = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((129)['$===']($case)) { + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) + };;;} + else if ((156)['$===']($case)) { + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) + };;;} + else if ((366)['$===']($case)) { + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((115)['$===']($case)) { + else if ((126)['$===']($case)) { self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; @@ -34214,17 +39134,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($l = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $l))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($l = self.escape) ? $l : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((141)['$===']($case)) { + else if ((153)['$===']($case)) { self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; @@ -34234,39 +39158,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($l = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $l))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($l = self.escape) ? $l : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((337)['$===']($case)) { + else if ((363)['$===']($case)) { self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($l = self.escape) ? $l : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($l = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((101)['$===']($case)) { + else if ((113)['$===']($case)) { self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; @@ -34276,17 +39200,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($m = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $m))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($m = self.escape) ? $m : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((127)['$===']($case)) { + else if ((140)['$===']($case)) { self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; @@ -34296,39 +39224,39 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($m = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $m))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($m = self.escape) ? $m : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((323)['$===']($case)) { + else if ((350)['$===']($case)) { self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($m = self.escape) ? $m : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($m = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((150)['$===']($case)) { + else if ((164)['$===']($case)) { self.escape_s = p; self.escape = nil;; @@ -34338,17 +39266,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($n = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $n))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($n = self.escape) ? $n : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((155)['$===']($case)) { + else if ((169)['$===']($case)) { self.escape_s = p; self.escape = nil;; @@ -34358,17 +39290,21 @@ if (codepoint_str == null) codepoint_str = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($n = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $n))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($n = self.escape) ? $n : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((66)['$===']($case)) { + else if ((57)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34400,7 +39336,7 @@ if (codepoint_str == null) codepoint_str = nil; self.herebody_s = nil;};; tm = p;;} - else if ((190)['$===']($case)) { + else if ((205)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34409,7 +39345,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((209)['$===']($case)) { + else if ((224)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34418,7 +39354,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((217)['$===']($case)) { + else if ((232)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34438,10 +39374,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((248)['$===']($case)) { + else if ((263)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34450,7 +39386,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((240)['$===']($case)) { + else if ((255)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34462,10 +39398,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((259)['$===']($case)) { + else if ((274)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34474,7 +39410,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((271)['$===']($case)) { + else if ((286)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34483,7 +39419,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((267)['$===']($case)) { + else if ((282)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34495,10 +39431,46 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((287)['$===']($case)) { + else if ((58)['$===']($case)) { + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil;};; + + self.te = $rb_plus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((49)['$===']($case)) { + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil;};; + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ($truthy(($truthy($b = ($truthy($c = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](ident_tok) : $c)) ? $rb_lt(self.version, 25) : $b))) { + self.cs = 439 + } else { + self.cs = 498 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((304)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34507,7 +39479,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((357)['$===']($case)) { + else if ((384)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34516,7 +39488,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((353)['$===']($case)) { + else if ((380)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34530,16 +39502,25 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;; - } else { + } else { - self.cs = 165; + self.cs = 181; _goto_level = _again; continue;; };;;} - else if ((366)['$===']($case)) { + else if ((393)['$===']($case)) { + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil;};; + + self.te = p; + p = $rb_minus(p, 1);;} + else if ((390)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34547,8 +39528,13 @@ if (codepoint_str == null) codepoint_str = nil; self.herebody_s = nil;};; self.te = p; - p = $rb_minus(p, 1);;} - else if ((363)['$===']($case)) { + p = $rb_minus(p, 1); + + + self.cs = 181; + _goto_level = _again; + continue;;;;;} + else if ((429)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34558,11 +39544,15 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1); + self.$emit("tDOT", ".", self.ts, $rb_plus(self.ts, 1)); + self.$emit("tCOLON", ":", $rb_plus(self.ts, 1), $rb_plus(self.ts, 2)); + p = $rb_plus($rb_minus(p, self.$tok().$length()), 2); + self.cs = 446; - self.cs = 165; - _goto_level = _again; + p = $rb_plus(p, 1); + _goto_level = _out; continue;;;;;} - else if ((439)['$===']($case)) { + else if ((481)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34571,7 +39561,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((381)['$===']($case)) { + else if ((410)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34582,10 +39572,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); - self.cs = 939; + self.cs = 954; _goto_level = _again; continue;;;;;} - else if ((84)['$===']($case)) { + else if ((96)['$===']($case)) { if ($truthy(self.herebody_s)) { @@ -34594,7 +39584,7 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1);;} - else if ((239)['$===']($case)) { + else if ((254)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); @@ -34607,21 +39597,18 @@ if (codepoint_str == null) codepoint_str = nil; if (self.lambda_stack.$last()['$=='](self.paren_nest)) { - p = $rb_minus(self.ts, 1); - - self.cs = 766; - _goto_level = _again; - continue;;; - } else { - - self.$emit("tLCURLY", "{".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 758; - - p = $rb_plus(p, 1); - _goto_level = _out; - continue;;; - };;;} - else if ((261)['$===']($case)) { + self.lambda_stack.$pop(); + self.$emit("tLAMBEG", "{".$freeze(), $rb_minus(self.te, 1), self.te); + } else { + self.$emit("tLCURLY", "{".$freeze(), $rb_minus(self.te, 1), self.te) + }; + self.command_start = true; + self.cs = 766; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((276)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); @@ -34636,11 +39623,16 @@ if (codepoint_str == null) codepoint_str = nil; self.lambda_stack.$pop(); self.$emit("tLAMBEG", "{".$freeze()); - } else { + } else { self.$emit("tLBRACE_ARG", "{".$freeze()) }; - self.cs = 758;;;} - else if ((349)['$===']($case)) { + self.command_start = true; + self.cs = 766; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((376)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); @@ -34654,15 +39646,16 @@ if (codepoint_str == null) codepoint_str = nil; if (self.lambda_stack.$last()['$=='](self.paren_nest)) { self.lambda_stack.$pop(); + self.command_start = true; self.$emit("tLAMBEG", "{".$freeze()); - } else { + } else { self.$emit("tLBRACE", "{".$freeze()) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((451)['$===']($case)) { + else if ((493)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); @@ -34678,34 +39671,38 @@ if (codepoint_str == null) codepoint_str = nil; self.lambda_stack.$pop(); if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLAMBEG", "{".$freeze()) - } else { + } else { self.$emit("kDO_LAMBDA", "do".$freeze()) }; } else if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLCURLY", "{".$freeze()) - } else { + } else { self.$emit_do() }; - self.cs = 758; + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((452)['$===']($case)) { + else if ((494)['$===']($case)) { current_literal = self.$literal(); if ($truthy(current_literal)) { if ($truthy(current_literal.$end_interp_brace_and_try_closing())) { if ($truthy(self['$version?'](18, 19))) { - self.$emit("tRCURLY", "}".$freeze(), $rb_minus(p, 1), p) - } else { + + self.$emit("tRCURLY", "}".$freeze(), $rb_minus(p, 1), p); + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { self.$emit("tSTRING_DEND", "}".$freeze(), $rb_minus(p, 1), p) }; if ($truthy(current_literal.$saved_herebody_s())) { self.herebody_s = current_literal.$saved_herebody_s()}; p = $rb_minus(p, 1); - self.cs = self.$stack_pop(); + self.cs = self.$next_state_for_literal(current_literal); p = $rb_plus(p, 1); _goto_level = _out; @@ -34714,68 +39711,79 @@ if (codepoint_str == null) codepoint_str = nil; self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cond.$lexpop(); - self.cmdarg.$lexpop(); - if ($truthy(Opal.const_get_relative($nesting, 'RBRACE_OR_RBRACK')['$include?'](self.$tok()))) { - self.cs = 505}; + self.$emit_table($$($nesting, 'PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if ($truthy(($truthy($b = self.$tok()['$==']("}".$freeze())) ? $b : self.$tok()['$==']("]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 774 + } else { + self.cs = 504 + }}; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((68)['$===']($case)) { + else if ((60)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());;} - else if ((71)['$===']($case)) { + else if ((64)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.newline_s = p;;} - else if ((193)['$===']($case)) { + else if ((208)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((208)['$===']($case)) { + else if ((223)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((220)['$===']($case)) { + else if ((235)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((242)['$===']($case)) { + else if ((257)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; @@ -34783,80 +39791,80 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((257)['$===']($case)) { + else if ((272)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((269)['$===']($case)) { + else if ((284)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((293)['$===']($case)) { + else if ((310)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((355)['$===']($case)) { + else if ((382)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((365)['$===']($case)) { + else if ((392)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((385)['$===']($case)) { + else if ((414)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((86)['$===']($case)) { + else if ((98)['$===']($case)) { self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((214)['$===']($case)) { + else if ((229)['$===']($case)) { tm = p;; @@ -34864,13 +39872,13 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_minus(tm, 1); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((305)['$===']($case)) { + else if ((324)['$===']($case)) { tm = p;; @@ -34879,12 +39887,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((278)['$===']($case)) { + else if ((295)['$===']($case)) { tm = p;; @@ -34893,15 +39901,15 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((378)['$===']($case)) { + else if ((407)['$===']($case)) { tm = p;; $case = self.act; - if ((132)['$===']($case)) { + if ((140)['$===']($case)) { p = $rb_minus(self.te, 1);; if (self.lambda_stack.$last()['$=='](self.paren_nest)) { @@ -34909,120 +39917,122 @@ if (codepoint_str == null) codepoint_str = nil; self.lambda_stack.$pop(); if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLAMBEG", "{".$freeze()) - } else { + } else { self.$emit("kDO_LAMBDA", "do".$freeze()) }; } else if (self.$tok()['$==']("{".$freeze())) { self.$emit("tLCURLY", "{".$freeze()) - } else { + } else { self.$emit_do() }; - self.cs = 758; + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((133)['$===']($case)) { + else if ((141)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 327; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 326; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((134)['$===']($case)) { + else if ((142)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((135)['$===']($case)) { + else if ((143)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 537; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((136)['$===']($case)) { + else if ((144)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 758; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((137)['$===']($case)) { + else if ((145)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - self.cs = 513; + self.$emit_table($$($nesting, 'KEYWORDS')); + self.cs = 512; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((138)['$===']($case)) { + else if ((146)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); - if ($truthy(($truthy($n = self['$version?'](18)) ? self.$tok()['$==']("not".$freeze()) : $n))) { + self.$emit_table($$($nesting, 'KEYWORDS')); + if ($truthy(($truthy($b = self['$version?'](18)) ? self.$tok()['$==']("not".$freeze()) : $b))) { - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = 468; + self.cs = 467; p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((139)['$===']($case)) { + else if ((147)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18))) { self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($n = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $n))) { - } else { - self.cs = self.$arg_or_cmdarg() - }; + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { } else { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((140)['$===']($case)) { + else if ((148)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS')); + self.$emit_table($$($nesting, 'KEYWORDS')); p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((141)['$===']($case)) { + else if ((149)['$===']($case)) { p = $rb_minus(self.te, 1);; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($n = ($truthy($o = digits['$empty?']()) ? self.num_base['$=='](8) : $o)) ? self['$version?'](18) : $n))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($n = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -35030,19 +40040,19 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((143)['$===']($case)) { + else if ((151)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18, 19, 20))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) - } else { + } else { self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); @@ -35051,12 +40061,12 @@ if (codepoint_str == null) codepoint_str = nil; _goto_level = _out; continue;;; };} - else if ((144)['$===']($case)) { + else if ((152)['$===']($case)) { p = $rb_minus(self.te, 1);; if ($truthy(self['$version?'](18, 19, 20))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) - } else { + } else { self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); @@ -35065,7 +40075,7 @@ if (codepoint_str == null) codepoint_str = nil; _goto_level = _out; continue;;; };} - else if ((145)['$===']($case)) { + else if ((153)['$===']($case)) { p = $rb_minus(self.te, 1);; digits = self.$tok(self.ts, self.num_suffix_s); @@ -35073,57 +40083,95 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((147)['$===']($case)) { + else if ((155)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tCONSTANT"); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((151)['$===']($case)) { + else if ((158)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit("tDOT", ".", self.ts, $rb_plus(self.ts, 1)); + self.$emit("tCOLON", ":", $rb_plus(self.ts, 1), $rb_plus(self.ts, 2)); + p = $rb_plus($rb_minus(p, self.$tok().$length()), 2); + self.cs = 446; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((159)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 446; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((160)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($n = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $n))) { + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((152)['$===']($case)) { + else if ((161)['$===']($case)) { p = $rb_minus(self.te, 1);; if (tm['$=='](self.te)) { self.$emit("tFID") - } else { + } else { self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 468; + self.cs = 467; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((163)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 766; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((164)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;};;} - else if ((215)['$===']($case)) { + else if ((230)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35131,13 +40179,13 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_minus(tm, 1); p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((306)['$===']($case)) { + else if ((325)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35146,12 +40194,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((280)['$===']($case)) { + else if ((297)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35160,10 +40208,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((379)['$===']($case)) { + else if ((408)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35172,17 +40220,17 @@ if (codepoint_str == null) codepoint_str = nil; if (tm['$=='](self.te)) { self.$emit("tFID") - } else { + } else { self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 468; + self.cs = 467; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((307)['$===']($case)) { + else if ((326)['$===']($case)) { tm = p;; @@ -35191,12 +40239,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((281)['$===']($case)) { + else if ((298)['$===']($case)) { tm = p;; @@ -35205,10 +40253,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((308)['$===']($case)) { + else if ((327)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35217,12 +40265,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((282)['$===']($case)) { + else if ((299)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35231,10 +40279,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((312)['$===']($case)) { + else if ((331)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35243,12 +40291,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((285)['$===']($case)) { + else if ((302)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35257,10 +40305,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((311)['$===']($case)) { + else if ((330)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35269,79 +40317,94 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((284)['$===']($case)) { + else if ((301)['$===']($case)) { tm = $rb_minus(p, 2);; $case = self.act; - if ((111)['$===']($case)) { + if ((95)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION_BEGIN')); + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((112)['$===']($case)) { + else if ((102)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));} + else if ((116)['$===']($case)) { + + p = $rb_minus(self.te, 1);; + self.$emit_table($$($nesting, 'PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;} + else if ((117)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 513; + self.cs = 512; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((113)['$===']($case)) { + else if ((118)['$===']($case)) { p = $rb_minus(self.te, 1);; - self.$emit_table(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN')); - self.cs = 758; + self.$emit_table($$($nesting, 'KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;;} - else if ((115)['$===']($case)) { + else if ((122)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;} - else if ((116)['$===']($case)) { + else if ((123)['$===']($case)) { p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - if ($truthy(($truthy($n = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $n))) { + if ($truthy(($truthy($b = self.static_env['$nil?']()['$!']()) ? self.static_env['$declared?'](self.$tok()) : $b))) { - self.cs = 440; + self.cs = 439; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = self.$arg_or_cmdarg(); + self.cs = self.$arg_or_cmdarg(cmd_state); p = $rb_plus(p, 1); _goto_level = _out; continue;;; };} - else if ((119)['$===']($case)) { + else if ((127)['$===']($case)) { p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;};;} - else if ((309)['$===']($case)) { + else if ((328)['$===']($case)) { tm = $rb_minus(p, 3);; @@ -35350,12 +40413,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((283)['$===']($case)) { + else if ((300)['$===']($case)) { tm = $rb_minus(p, 3);; @@ -35364,10 +40427,10 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(self.ts, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((310)['$===']($case)) { + else if ((329)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35376,12 +40439,12 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((434)['$===']($case)) { + else if ((476)['$===']($case)) { tm = $rb_minus(p, 2);; @@ -35394,7 +40457,7 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((238)['$===']($case)) { + else if ((253)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false);; @@ -35403,12 +40466,12 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); self.$emit("tLBRACK", "[".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((341)['$===']($case)) { + else if ((369)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false);; @@ -35421,7 +40484,7 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((437)['$===']($case)) { + else if ((479)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false);; @@ -35430,16 +40493,18 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_minus(p, 1); self.$emit("tLBRACK2", "[".$freeze()); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((230)['$===']($case)) { + else if ((245)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); - self.paren_nest = $rb_plus(self.paren_nest, 1);; + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true};; self.te = p; p = $rb_minus(p, 1); @@ -35447,40 +40512,44 @@ if (codepoint_str == null) codepoint_str = nil; if ($truthy(self['$version?'](18))) { self.$emit("tLPAREN2", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;; };;;} - else if ((243)['$===']($case)) { + else if ((258)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); - self.paren_nest = $rb_plus(self.paren_nest, 1);; + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true};; self.te = p; p = $rb_minus(p, 1); self.$emit("tLPAREN2", "(".$freeze()); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((251)['$===']($case)) { + else if ((266)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); - self.paren_nest = $rb_plus(self.paren_nest, 1);; + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true};; self.te = p; p = $rb_minus(p, 1); @@ -35488,24 +40557,26 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); if ($truthy(self['$version?'](18))) { - self.cs = 758; + self.cs = 766; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;; };;;} - else if ((298)['$===']($case)) { + else if ((315)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); - self.paren_nest = $rb_plus(self.paren_nest, 1);; + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true};; self.te = p; p = $rb_minus(p, 1); @@ -35515,97 +40586,158 @@ if (codepoint_str == null) codepoint_str = nil; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((390)['$===']($case)) { + else if ((420)['$===']($case)) { self.cond.$push(false); self.cmdarg.$push(false); - self.paren_nest = $rb_plus(self.paren_nest, 1);; + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true};; self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cs = 537; + self.$emit_table($$($nesting, 'PUNCTUATION')); + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((391)['$===']($case)) { + else if ((421)['$===']($case)) { self.paren_nest = $rb_minus(self.paren_nest, 1);; self.te = p; p = $rb_minus(p, 1); - self.$emit_table(Opal.const_get_relative($nesting, 'PUNCTUATION')); - self.cond.$lexpop(); - self.cmdarg.$lexpop(); - if ($truthy(Opal.const_get_relative($nesting, 'RBRACE_OR_RBRACK')['$include?'](self.$tok()))) { - self.cs = 505}; + self.$emit_table($$($nesting, 'PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if ($truthy(($truthy($b = self.$tok()['$==']("}".$freeze())) ? $b : self.$tok()['$==']("]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 774 + } else { + self.cs = 504 + }}; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((56)['$===']($case)) { + else if ((71)['$===']($case)) { heredoc_e = p;; self.newline_s = p;;} - else if ((313)['$===']($case)) { + else if ((339)['$===']($case)) { new_herebody_s = p;; self.te = p; p = $rb_minus(p, 1); - self.$tok(self.ts, heredoc_e)['$=~'](/^<<(-?)(~?)(["'`]?)(.*)\3$/); - indent = ($truthy($n = (($o = $gvars['~']) === nil ? nil : $o['$[]'](1))['$empty?']()['$!']()) ? $n : (($o = $gvars['~']) === nil ? nil : $o['$[]'](2))['$empty?']()['$!']()); - dedent_body = (($n = $gvars['~']) === nil ? nil : $n['$[]'](2))['$empty?']()['$!'](); - type = (function() {if ($truthy((($n = $gvars['~']) === nil ? nil : $n['$[]'](3))['$empty?']())) { + self.$tok(self.ts, heredoc_e)['$=~'](/^<<(-?)(~?)(["'`]?)(.*)\3$/m); + indent = ($truthy($b = (($c = $gvars['~']) === nil ? nil : $c['$[]'](1))['$empty?']()['$!']()) ? $b : (($c = $gvars['~']) === nil ? nil : $c['$[]'](2))['$empty?']()['$!']()); + dedent_body = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))['$empty?']()['$!'](); + type = (function() {if ($truthy((($b = $gvars['~']) === nil ? nil : $b['$[]'](3))['$empty?']())) { return "<<\"".$freeze() - } else { + } else { - return $rb_plus("<<".$freeze(), (($n = $gvars['~']) === nil ? nil : $n['$[]'](3))); + return $rb_plus("<<".$freeze(), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))); }; return nil; })(); - delimiter = (($n = $gvars['~']) === nil ? nil : $n['$[]'](4)); - if ($truthy(($truthy($n = dedent_body) ? self['$version?'](18, 19, 20, 21, 22) : $n))) { + delimiter = (($b = $gvars['~']) === nil ? nil : $b['$[]'](4)); + if ($truthy($rb_ge(self.version, 27))) { + if ($truthy(($truthy($b = $rb_gt(delimiter.$count("\n"), 0)) ? $b : $rb_gt(delimiter.$count("\r"), 0)))) { + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)))} + } else if ($truthy($rb_ge(self.version, 24))) { + if ($truthy($rb_gt(delimiter.$count("\n"), 0))) { + if ($truthy(delimiter['$end_with?']("\n"))) { + + self.$diagnostic("warning", "heredoc_id_ends_with_nl", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + delimiter = delimiter.$rstrip(); + } else { + self.$diagnostic("fatal", "heredoc_id_has_newline", nil, self.$range(self.ts, $rb_plus(self.ts, 1))) + }}}; + if ($truthy(($truthy($b = dedent_body) ? self['$version?'](18, 19, 20, 21, 22) : $b))) { self.$emit("tLSHFT", "<<".$freeze(), self.ts, $rb_plus(self.ts, 2)); p = $rb_plus(self.ts, 1); - self.cs = 537; + self.cs = 536; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { self.cs = self.$push_literal(type, delimiter, self.ts, heredoc_e, indent, dedent_body); - self.herebody_s = ($truthy($n = self.herebody_s) ? $n : new_herebody_s); + self.herebody_s = ($truthy($b = self.herebody_s) ? $b : new_herebody_s); p = $rb_minus(self.herebody_s, 1); };;;} - else if ((318)['$===']($case)) { + else if ((334)['$===']($case)) { + + tm = $rb_minus(p, 1); + diag_msg = "ivar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((337)['$===']($case)) { + + tm = $rb_minus(p, 2); + diag_msg = "cvar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 774; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;;} + else if ((345)['$===']($case)) { self.escape = nil;; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($n = self.escape) ? $n : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($n = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((345)['$===']($case)) { + else if ((372)['$===']($case)) { tm = p;; @@ -35614,55 +40746,60 @@ if (codepoint_str == null) codepoint_str = nil; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 513; + self.cs = 512; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((425)['$===']($case)) { + else if ((466)['$===']($case)) { self.num_base = 16; self.num_digits_s = p;; self.num_suffix_s = p;;} - else if ((419)['$===']($case)) { + else if ((460)['$===']($case)) { self.num_base = 10; self.num_digits_s = p;; self.num_suffix_s = p;;} - else if ((422)['$===']($case)) { + else if ((463)['$===']($case)) { self.num_base = 8; self.num_digits_s = p;; self.num_suffix_s = p;;} - else if ((416)['$===']($case)) { + else if ((457)['$===']($case)) { self.num_base = 2; self.num_digits_s = p;; self.num_suffix_s = p;;} - else if ((431)['$===']($case)) { + else if ((472)['$===']($case)) { self.num_base = 10; self.num_digits_s = self.ts;; self.num_suffix_s = p;;} - else if ((400)['$===']($case)) { + else if ((435)['$===']($case)) { self.num_base = 8; self.num_digits_s = self.ts;; self.num_suffix_s = p;;} - else if ((432)['$===']($case)) { + else if ((473)['$===']($case)) { self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_21 = function(chars){var self = TMP_21.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21));;} - else if ((77)['$===']($case)) { + self.num_xfrm = $send(self, 'lambda', [], ($$28 = function(chars){var self = $$28.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$28.$$s = self, $$28.$$arity = 1, $$28));;} + else if ((89)['$===']($case)) { tm = p;; @@ -35670,7 +40807,7 @@ if (chars == null) chars = nil; p = $rb_minus(tm, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} else if ((8)['$===']($case)) { @@ -35678,162 +40815,192 @@ if (chars == null) chars = nil; self.te = $rb_plus(p, 1);; self.newline_s = p;;} - else if ((199)['$===']($case)) { + else if ((439)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 39;;} - else if ((186)['$===']($case)) { + self.num_suffix_s = p;;} + else if ((214)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 40;;} - else if ((182)['$===']($case)) { + else if ((201)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 41;;} - else if ((26)['$===']($case)) { + else if ((197)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 67;;} - else if ((232)['$===']($case)) { + self.act = 42;;} + else if ((26)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 68;;} - else if ((27)['$===']($case)) { + else if ((247)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 73;;} - else if ((225)['$===']($case)) { + self.act = 69;;} + else if ((27)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 74;;} - else if ((252)['$===']($case)) { + else if ((240)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 80;;} - else if ((45)['$===']($case)) { + self.act = 75;;} + else if ((267)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 81;;} - else if ((273)['$===']($case)) { + else if ((45)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 88;;} - else if ((262)['$===']($case)) { + self.act = 82;;} + else if ((288)['$===']($case)) { self.te = $rb_plus(p, 1);; self.act = 89;;} - else if ((276)['$===']($case)) { + else if ((277)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 111;;} - else if ((344)['$===']($case)) { + self.act = 90;;} + else if ((69)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 112;;} - else if ((343)['$===']($case)) { + self.act = 102;;} + else if ((291)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 113;;} - else if ((58)['$===']($case)) { + self.act = 116;;} + else if ((371)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 115;;} - else if ((274)['$===']($case)) { + self.act = 117;;} + else if ((370)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 116;;} - else if ((277)['$===']($case)) { + self.act = 118;;} + else if ((74)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 119;;} - else if ((447)['$===']($case)) { + self.act = 122;;} + else if ((289)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 132;;} - else if ((442)['$===']($case)) { + self.act = 123;;} + else if ((292)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 133;;} - else if ((450)['$===']($case)) { + self.act = 127;;} + else if ((489)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 135;;} - else if ((443)['$===']($case)) { + self.act = 140;;} + else if ((484)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 136;;} - else if ((444)['$===']($case)) { + self.act = 141;;} + else if ((492)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 137;;} - else if ((449)['$===']($case)) { + self.act = 143;;} + else if ((485)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 138;;} - else if ((441)['$===']($case)) { + self.act = 144;;} + else if ((486)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 139;;} - else if ((436)['$===']($case)) { + self.act = 145;;} + else if ((491)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 140;;} - else if ((372)['$===']($case)) { + self.act = 146;;} + else if ((483)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 141;;} - else if ((402)['$===']($case)) { + self.act = 147;;} + else if ((478)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 144;;} - else if ((65)['$===']($case)) { + self.act = 148;;} + else if ((400)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 145;;} - else if ((375)['$===']($case)) { + self.act = 149;;} + else if ((437)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 147;;} - else if ((367)['$===']($case)) { + self.act = 152;;} + else if ((82)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 151;;} - else if ((377)['$===']($case)) { + self.act = 153;;} + else if ((403)['$===']($case)) { self.te = $rb_plus(p, 1);; - self.act = 152;;} - else if ((156)['$===']($case)) { + self.act = 155;;} + else if ((428)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 158;;} + else if ((425)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 159;;} + else if ((394)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 160;;} + else if ((406)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 161;;} + else if ((398)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 163;;} + else if ((405)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.act = 164;;} + else if ((170)['$===']($case)) { self.newline_s = p;; @@ -35856,12 +41023,12 @@ if (chars == null) chars = nil; p = $rb_plus(p, 1); _goto_level = _out; continue;;; - } else { + } else { current_literal.$infer_indent_level(line); self.herebody_s = self.te; }; - } else { + } else { if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { @@ -35875,9 +41042,9 @@ if (chars == null) chars = nil; p = $rb_minus(self.herebody_s, 1); self.herebody_s = nil;}; }; - if ($truthy(($truthy($o = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $o))) { + if ($truthy(($truthy($b = current_literal['$words?']()) ? self['$eof_codepoint?'](self.source_pts['$[]'](p))['$!']() : $b))) { current_literal.$extend_space(self.ts, self.te) - } else { + } else { current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); @@ -35885,10 +41052,10 @@ if (chars == null) chars = nil; self.escape_s = p; self.escape = nil;;} - else if ((106)['$===']($case)) { + else if ((118)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -35899,20 +41066,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($o = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $o))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($o = self.escape) ? $o : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((132)['$===']($case)) { + else if ((145)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -35923,20 +41094,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($o = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $o))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($o = self.escape) ? $o : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((328)['$===']($case)) { + else if ((355)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -35944,25 +41119,21 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($o = self.escape) ? $o : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($o = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((111)['$===']($case)) { + else if ((123)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; @@ -35973,20 +41144,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($p = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $p))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($p = self.escape) ? $p : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((137)['$===']($case)) { + else if ((150)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; @@ -35997,20 +41172,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($p = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $p))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($p = self.escape) ? $p : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((333)['$===']($case)) { + else if ((360)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; @@ -36018,26 +41197,24 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($p = self.escape) ? $p : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($p = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((110)['$===']($case)) { + else if ((116)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; self.te = p; p = $rb_minus(p, 1); @@ -36045,21 +41222,27 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($q = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $q))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($q = self.escape) ? $q : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((136)['$===']($case)) { + else if ((143)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; self.te = p; p = $rb_minus(p, 1); @@ -36067,43 +41250,47 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($q = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $q))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($q = self.escape) ? $q : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((332)['$===']($case)) { + else if ((353)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($q = self.escape) ? $q : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($q = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((108)['$===']($case)) { + else if ((122)['$===']($case)) { - self.escape = "\u007F";; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; @@ -36113,19 +41300,25 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($r = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $r))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($r = self.escape) ? $r : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((134)['$===']($case)) { + else if ((149)['$===']($case)) { - self.escape = "\u007F";; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; @@ -36135,45 +41328,47 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($r = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $r))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($r = self.escape) ? $r : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((330)['$===']($case)) { + else if ((359)['$===']($case)) { - self.escape = "\u007F";; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($r = self.escape) ? $r : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($r = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((104)['$===']($case)) { + else if ((120)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = "\u007F";; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; self.te = p; p = $rb_minus(p, 1); @@ -36181,21 +41376,25 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($s = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $s))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($s = self.escape) ? $s : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((130)['$===']($case)) { + else if ((147)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = "\u007F";; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; self.te = p; p = $rb_minus(p, 1); @@ -36203,41 +41402,41 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($s = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $s))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($s = self.escape) ? $s : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((326)['$===']($case)) { + else if ((357)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = "\u007F";; - self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($s = self.escape) ? $s : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($s = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((114)['$===']($case)) { + else if ((127)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; @@ -36249,17 +41448,21 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($t = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $t))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($t = self.escape) ? $t : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((140)['$===']($case)) { + else if ((154)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; @@ -36271,17 +41474,21 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($t = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $t))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($t = self.escape) ? $t : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((336)['$===']($case)) { + else if ((364)['$===']($case)) { self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; @@ -36290,22 +41497,18 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($t = self.escape) ? $t : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($t = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((98)['$===']($case)) { + else if ((110)['$===']($case)) { self.escape_s = p; self.escape = nil;; @@ -36318,17 +41521,21 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($u = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $u))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($u = self.escape) ? $u : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((125)['$===']($case)) { + else if ((138)['$===']($case)) { self.escape_s = p; self.escape = nil;; @@ -36341,17 +41548,21 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($u = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $u))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($u = self.escape) ? $u : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((321)['$===']($case)) { + else if ((348)['$===']($case)) { self.escape_s = p; self.escape = nil;; @@ -36361,75 +41572,71 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($u = self.escape) ? $u : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($u = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((69)['$===']($case)) { + else if ((61)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.newline_s = p;;} - else if ((192)['$===']($case)) { + else if ((207)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((207)['$===']($case)) { + else if ((222)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((219)['$===']($case)) { + else if ((234)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((241)['$===']($case)) { + else if ((256)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; @@ -36437,120 +41644,135 @@ if (chars == null) chars = nil; p = $rb_minus(p, 1); - self.cs = 766; + self.cs = 774; _goto_level = _again; continue;;;;;} - else if ((256)['$===']($case)) { + else if ((271)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((268)['$===']($case)) { + else if ((283)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((292)['$===']($case)) { + else if ((309)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((354)['$===']($case)) { + else if ((381)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((364)['$===']($case)) { + else if ((391)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((384)['$===']($case)) { + else if ((413)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((85)['$===']($case)) { + else if ((97)['$===']($case)) { self.sharp_s = $rb_minus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { return p }; return nil; })());; self.te = p; p = $rb_minus(p, 1);;} - else if ((427)['$===']($case)) { + else if ((468)['$===']($case)) { self.num_base = 10; self.num_digits_s = self.ts;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_22 = function(chars){var self = TMP_22.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22));;} - else if ((397)['$===']($case)) { + self.num_xfrm = $send(self, 'lambda', [], ($$29 = function(chars){var self = $$29.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$29.$$s = self, $$29.$$arity = 1, $$29));;} + else if ((432)['$===']($case)) { self.num_base = 8; self.num_digits_s = self.ts;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_23 = function(chars){var self = TMP_23.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_23.$$s = self, TMP_23.$$arity = 1, TMP_23));;} - else if ((409)['$===']($case)) { + self.num_xfrm = $send(self, 'lambda', [], ($$30 = function(chars){var self = $$30.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$30.$$s = self, $$30.$$arity = 1, $$30));;} + else if ((447)['$===']($case)) { self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_24 = function(chars){var self = TMP_24.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_24.$$s = self, TMP_24.$$arity = 1, TMP_24));; + self.num_xfrm = $send(self, 'lambda', [], ($$31 = function(chars){var self = $$31.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$31.$$s = self, $$31.$$arity = 1, $$31));; self.te = p; p = $rb_minus(p, 1); @@ -36558,11 +41780,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($v = ($truthy($w = digits['$empty?']()) ? self.num_base['$=='](8) : $w)) ? self['$version?'](18) : $v))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($v = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -36570,20 +41792,25 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((404)['$===']($case)) { + else if ((440)['$===']($case)) { self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_25 = function(chars){var self = TMP_25.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tFLOAT", self.$Float(chars))}, TMP_25.$$s = self, TMP_25.$$arity = 1, TMP_25));; + self.num_xfrm = $send(self, 'lambda', [], ($$32 = function(chars){var self = $$32.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tFLOAT", self.$Float(chars));}, $$32.$$s = self, $$32.$$arity = 1, $$32));; self.te = p; p = $rb_minus(p, 1); @@ -36593,20 +41820,25 @@ if (chars == null) chars = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((401)['$===']($case)) { + else if ((436)['$===']($case)) { self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_26 = function(chars){var self = TMP_26.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tFLOAT", self.$Float(chars))}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26));; + self.num_xfrm = $send(self, 'lambda', [], ($$33 = function(chars){var self = $$33.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tFLOAT", self.$Float(chars));}, $$33.$$s = self, $$33.$$arity = 1, $$33));; self.te = p; p = $rb_minus(p, 1); @@ -36616,20 +41848,27 @@ if (chars == null) chars = nil; self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((247)['$===']($case)) { + else if ((262)['$===']($case)) { self.te = $rb_plus(p, 1);; self.newline_s = p;; - self.act = 74;;} + self.act = 75;;} + else if ((81)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.newline_s = p;; + + self.act = 158;;} else if ((35)['$===']($case)) { self.te = $rb_plus(p, 1);; @@ -36639,7 +41878,7 @@ if (chars == null) chars = nil; p = self.herebody_s; self.herebody_s = nil;};; - self.act = 73;;} + self.act = 74;;} else if ((46)['$===']($case)) { self.te = $rb_plus(p, 1);; @@ -36649,51 +41888,72 @@ if (chars == null) chars = nil; p = self.herebody_s; self.herebody_s = nil;};; - self.act = 81;;} - else if ((72)['$===']($case)) { + self.act = 82;;} + else if ((430)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil;};; + + self.act = 158;;} + else if ((65)['$===']($case)) { self.te = $rb_plus(p, 1);; self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { return $rb_minus(p, 2) - } else { + } else { + return p + }; return nil; })());; + + self.act = 95;;} + else if ((85)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { + return $rb_minus(p, 2) + } else { return p }; return nil; })());; - self.act = 134;;} + self.act = 142;;} else if ((37)['$===']($case)) { self.te = $rb_plus(p, 1);; tm = p;; - self.act = 68;;} - else if ((347)['$===']($case)) { + self.act = 69;;} + else if ((374)['$===']($case)) { self.te = $rb_plus(p, 1);; tm = p;; - self.act = 115;;} - else if ((346)['$===']($case)) { + self.act = 122;;} + else if ((373)['$===']($case)) { self.te = $rb_plus(p, 1);; tm = p;; - self.act = 116;;} - else if ((428)['$===']($case)) { + self.act = 123;;} + else if ((469)['$===']($case)) { self.te = $rb_plus(p, 1);; self.num_base = 10; self.num_digits_s = self.ts;; - self.act = 141;;} - else if ((109)['$===']($case)) { + self.act = 149;;} + else if ((121)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36706,20 +41966,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($v = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $v))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($v = self.escape) ? $v : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((135)['$===']($case)) { + else if ((148)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36732,20 +41996,24 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($v = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $v))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($v = self.escape) ? $v : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((331)['$===']($case)) { + else if ((358)['$===']($case)) { codepoint = self.source_pts['$[]']($rb_minus(p, 1)); - if ($truthy((self.escape = Opal.const_get_relative($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { + if ($truthy((self.escape = $$($nesting, 'ESCAPES')['$[]'](codepoint))['$nil?']())) { self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1)))};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36755,24 +42023,22 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($v = self.escape) ? $v : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($v = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((107)['$===']($case)) { + else if ((119)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36784,19 +42050,25 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($w = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $w))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($w = self.escape) ? $w : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((133)['$===']($case)) { + else if ((146)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36808,19 +42080,25 @@ if (chars == null) chars = nil; current_literal = self.$literal(); escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); if ($truthy(current_literal['$munge_escape?'](escaped_char))) { - if ($truthy(($truthy($w = current_literal['$regexp?']()) ? Opal.const_get_relative($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $w))) { + if ($truthy(($truthy($b = current_literal['$regexp?']()) ? $$($nesting, 'REGEXP_META_CHARACTERS').$match(escaped_char) : $b))) { current_literal.$extend_string(self.$tok(), self.ts, self.te) - } else { + } else { current_literal.$extend_string(escaped_char, self.ts, self.te) } + } else if ($truthy(($truthy($b = current_literal['$squiggly_heredoc?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if ($truthy(($truthy($b = current_literal['$supports_line_continuation_via_slash?']()) ? escaped_char['$==']("\n".$freeze()) : $b))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) } else if ($truthy(current_literal['$regexp?']())) { current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) - } else { - current_literal.$extend_string(($truthy($w = self.escape) ? $w : self.$tok()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy($b = self.escape) ? $b : self.$tok()), self.ts, self.te) };;;} - else if ((329)['$===']($case)) { + else if ((356)['$===']($case)) { - self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr();; + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if ($truthy(($truthy($b = $rb_ge(self.version, 27)) ? ($truthy($c = $range(0, 8, false)['$include?'](self.escape.$ord())) ? $c : $range(14, 31, false)['$include?'](self.escape.$ord())) : $b))) { + self.$diagnostic("fatal", "invalid_escape")};; self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; @@ -36829,31 +42107,32 @@ if (chars == null) chars = nil; self.te = p; p = $rb_minus(p, 1); - value = ($truthy($w = self.escape) ? $w : self.$tok($rb_plus(self.ts, 1))); + value = ($truthy($b = self.escape) ? $b : self.$tok($rb_plus(self.ts, 1))); if ($truthy(self['$version?'](18))) { - if ($truthy((($w = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.$emit("tINTEGER", value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))['$[]'](0).$ord()) - } else { - self.$emit("tINTEGER", value['$[]'](0).$ord()) - } - } else { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { self.$emit("tCHARACTER", value) }; - self.cs = 766; + self.cs = 774; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((423)['$===']($case)) { + else if ((464)['$===']($case)) { self.num_base = 16; self.num_digits_s = p;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_27 = function(chars){var self = TMP_27.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27));; + self.num_xfrm = $send(self, 'lambda', [], ($$34 = function(chars){var self = $$34.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$34.$$s = self, $$34.$$arity = 1, $$34));; self.te = p; p = $rb_minus(p, 1); @@ -36861,11 +42140,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -36873,23 +42152,28 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((417)['$===']($case)) { + else if ((458)['$===']($case)) { self.num_base = 10; self.num_digits_s = p;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_28 = function(chars){var self = TMP_28.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28));; + self.num_xfrm = $send(self, 'lambda', [], ($$35 = function(chars){var self = $$35.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$35.$$s = self, $$35.$$arity = 1, $$35));; self.te = p; p = $rb_minus(p, 1); @@ -36897,11 +42181,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -36909,23 +42193,28 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((420)['$===']($case)) { + else if ((461)['$===']($case)) { self.num_base = 8; self.num_digits_s = p;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_29 = function(chars){var self = TMP_29.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_29.$$s = self, TMP_29.$$arity = 1, TMP_29));; + self.num_xfrm = $send(self, 'lambda', [], ($$36 = function(chars){var self = $$36.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$36.$$s = self, $$36.$$arity = 1, $$36));; self.te = p; p = $rb_minus(p, 1); @@ -36933,11 +42222,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -36945,23 +42234,28 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((414)['$===']($case)) { + else if ((455)['$===']($case)) { self.num_base = 2; self.num_digits_s = p;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_30 = function(chars){var self = TMP_30.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_30.$$s = self, TMP_30.$$arity = 1, TMP_30));; + self.num_xfrm = $send(self, 'lambda', [], ($$37 = function(chars){var self = $$37.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$37.$$s = self, $$37.$$arity = 1, $$37));; self.te = p; p = $rb_minus(p, 1); @@ -36969,11 +42263,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -36981,23 +42275,28 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((426)['$===']($case)) { + else if ((467)['$===']($case)) { self.num_base = 10; self.num_digits_s = self.ts;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_31 = function(chars){var self = TMP_31.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31));; + self.num_xfrm = $send(self, 'lambda', [], ($$38 = function(chars){var self = $$38.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$38.$$s = self, $$38.$$arity = 1, $$38));; self.te = p; p = $rb_minus(p, 1); @@ -37005,11 +42304,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -37017,23 +42316,28 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; p = $rb_plus(p, 1); _goto_level = _out; continue;;;;;} - else if ((396)['$===']($case)) { + else if ((431)['$===']($case)) { self.num_base = 8; self.num_digits_s = self.ts;; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_32 = function(chars){var self = TMP_32.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_32.$$s = self, TMP_32.$$arity = 1, TMP_32));; + self.num_xfrm = $send(self, 'lambda', [], ($$39 = function(chars){var self = $$39.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$39.$$s = self, $$39.$$arity = 1, $$39));; self.te = p; p = $rb_minus(p, 1); @@ -37041,11 +42345,11 @@ if (chars == null) chars = nil; digits = self.$tok(self.num_digits_s, self.num_suffix_s); if ($truthy(digits['$end_with?']("_".$freeze()))) { self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) - } else if ($truthy(($truthy($x = ($truthy($y = digits['$empty?']()) ? self.num_base['$=='](8) : $y)) ? self['$version?'](18) : $x))) { + } else if ($truthy(($truthy($b = ($truthy($c = digits['$empty?']()) ? self.num_base['$=='](8) : $c)) ? self['$version?'](18) : $b))) { digits = "0".$freeze() } else if ($truthy(digits['$empty?']())) { self.$diagnostic("error", "empty_numeric") - } else if ($truthy((($x = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { + } else if ($truthy((($b = self.num_base['$=='](8)) ? (invalid_idx = digits.$index(/[89]/)) : self.num_base['$=='](8)))) { invalid_s = $rb_plus(self.num_digits_s, invalid_idx); self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1)));}; @@ -37053,7 +42357,7 @@ if (chars == null) chars = nil; self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); p = $rb_minus(self.num_suffix_s, 1); - } else { + } else { self.num_xfrm.$call(digits.$to_i(self.num_base)) }; @@ -37071,19 +42375,37 @@ if (chars == null) chars = nil; tm = p;; - self.act = 68;;} - else if ((433)['$===']($case)) { + self.act = 69;;} + else if ((62)['$===']($case)) { + + self.te = $rb_plus(p, 1);; + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, (function() {if (p['$=='](pe)) { + return $rb_minus(p, 2) + } else { + return p + }; return nil; })());; + + self.act = 95;;} + else if ((474)['$===']($case)) { self.te = $rb_plus(p, 1);; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_33 = function(chars){var self = TMP_33.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_33.$$s = self, TMP_33.$$arity = 1, TMP_33));; + self.num_xfrm = $send(self, 'lambda', [], ($$40 = function(chars){var self = $$40.$$s || this; + - self.act = 143;;} - else if ((429)['$===']($case)) { + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$40.$$s = self, $$40.$$arity = 1, $$40));; + + self.act = 151;;} + else if ((470)['$===']($case)) { self.te = $rb_plus(p, 1);; @@ -37092,12 +42414,17 @@ if (chars == null) chars = nil; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_34 = function(chars){var self = TMP_34.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34));; + self.num_xfrm = $send(self, 'lambda', [], ($$41 = function(chars){var self = $$41.$$s || this; + - self.act = 143;;} - else if ((399)['$===']($case)) { + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$41.$$s = self, $$41.$$arity = 1, $$41));; + + self.act = 151;;} + else if ((434)['$===']($case)) { self.te = $rb_plus(p, 1);; @@ -37106,15 +42433,20 @@ if (chars == null) chars = nil; self.num_suffix_s = p;; - self.num_xfrm = $send(self, 'lambda', [], (TMP_35 = function(chars){var self = TMP_35.$$s || this; -if (chars == null) chars = nil; - return self.$emit("tINTEGER", chars)}, TMP_35.$$s = self, TMP_35.$$arity = 1, TMP_35));; + self.num_xfrm = $send(self, 'lambda', [], ($$42 = function(chars){var self = $$42.$$s || this; + + + + if (chars == null) { + chars = nil; + }; + return self.$emit("tINTEGER", chars);}, $$42.$$s = self, $$42.$$arity = 1, $$42));; - self.act = 143;;}};}; + self.act = 151;;}};}; if ($truthy($rb_le(_goto_level, _again))) { $case = _lex_to_state_actions['$[]'](self.cs); - if ((79)['$===']($case)) { + if ((91)['$===']($case)) { self.ts = nil;}; if (self.cs['$=='](0)) { @@ -37140,214 +42472,227 @@ if (chars == null) chars = nil; return self.token_queue.$shift() } else if (self.cs['$=='](klass.$lex_error())) { return [false, ["$error".$freeze(), self.$range($rb_minus(p, 1), p)]] - } else { + } else { eof = self.source_pts.$size(); return [false, ["$eof".$freeze(), self.$range(eof, eof)]]; }; - }, TMP_Lexer_advance_36.$$arity = 0); + }, $Lexer_advance$13.$$arity = 0); self.$protected(); - Opal.defn(self, '$eof_codepoint?', TMP_Lexer_eof_codepoint$q_37 = function(point) { + Opal.def(self, '$eof_codepoint?', $Lexer_eof_codepoint$ques$43 = function(point) { var self = this; return [4, 26, 0]['$include?'](point) - }, TMP_Lexer_eof_codepoint$q_37.$$arity = 1); + }, $Lexer_eof_codepoint$ques$43.$$arity = 1); - Opal.defn(self, '$version?', TMP_Lexer_version$q_38 = function($a_rest) { - var self = this, versions; + Opal.def(self, '$version?', $Lexer_version$ques$44 = function($a) { + var $post_args, versions, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - versions = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - versions[$arg_idx - 0] = arguments[$arg_idx]; - } - return versions['$include?'](self.version) - }, TMP_Lexer_version$q_38.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + versions = $post_args;; + return versions['$include?'](self.version); + }, $Lexer_version$ques$44.$$arity = -1); - Opal.defn(self, '$stack_pop', TMP_Lexer_stack_pop_39 = function $$stack_pop() { + Opal.def(self, '$stack_pop', $Lexer_stack_pop$45 = function $$stack_pop() { var self = this; self.top = $rb_minus(self.top, 1); return self.stack['$[]'](self.top); - }, TMP_Lexer_stack_pop_39.$$arity = 0); - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - - Opal.defn(self, '$encode_escape', TMP_Lexer_encode_escape_40 = function $$encode_escape(ord) { - var self = this; - - return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding()) - }, TMP_Lexer_encode_escape_40.$$arity = 1) - } else { - - Opal.defn(self, '$encode_escape', TMP_Lexer_encode_escape_41 = function $$encode_escape(ord) { - var self = this; + }, $Lexer_stack_pop$45.$$arity = 0); + + Opal.def(self, '$encode_escape', $Lexer_encode_escape$46 = function $$encode_escape(ord) { + var self = this; - return ord.$chr() - }, TMP_Lexer_encode_escape_41.$$arity = 1) - }; + return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding()) + }, $Lexer_encode_escape$46.$$arity = 1); - Opal.defn(self, '$tok', TMP_Lexer_tok_42 = function $$tok(s, e) { + Opal.def(self, '$tok', $Lexer_tok$47 = function $$tok(s, e) { var self = this; + + if (s == null) { s = self.ts; - } + }; + if (e == null) { e = self.te; - } - return self.source_buffer.$slice(Opal.Range.$new(s,e, true)) - }, TMP_Lexer_tok_42.$$arity = -1); + }; + return self.source_buffer.$slice(Opal.Range.$new(s,e, true)); + }, $Lexer_tok$47.$$arity = -1); - Opal.defn(self, '$range', TMP_Lexer_range_43 = function $$range(s, e) { + Opal.def(self, '$range', $Lexer_range$48 = function $$range(s, e) { var self = this; + + if (s == null) { s = self.ts; - } + }; + if (e == null) { e = self.te; - } - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Source'), 'Range').$new(self.source_buffer, s, e) - }, TMP_Lexer_range_43.$$arity = -1); + }; + return $$$($$$($$($nesting, 'Parser'), 'Source'), 'Range').$new(self.source_buffer, s, e); + }, $Lexer_range$48.$$arity = -1); - Opal.defn(self, '$emit', TMP_Lexer_emit_44 = function $$emit(type, value, s, e) { + Opal.def(self, '$emit', $Lexer_emit$49 = function $$emit(type, value, s, e) { var self = this, token = nil; + + if (value == null) { value = self.$tok(); - } + }; + if (s == null) { s = self.ts; - } + }; + if (e == null) { e = self.te; - } - + }; token = [type, [value, self.$range(s, e)]]; self.token_queue.$push(token); if ($truthy(self.tokens)) { self.tokens.$push(token)}; return token; - }, TMP_Lexer_emit_44.$$arity = -2); + }, $Lexer_emit$49.$$arity = -2); - Opal.defn(self, '$emit_table', TMP_Lexer_emit_table_45 = function $$emit_table(table, s, e) { + Opal.def(self, '$emit_table', $Lexer_emit_table$50 = function $$emit_table(table, s, e) { var self = this, value = nil; + + if (s == null) { s = self.ts; - } + }; + if (e == null) { e = self.te; - } - + }; value = self.$tok(s, e); return self.$emit(table['$[]'](value), value, s, e); - }, TMP_Lexer_emit_table_45.$$arity = -2); + }, $Lexer_emit_table$50.$$arity = -2); - Opal.defn(self, '$emit_do', TMP_Lexer_emit_do_46 = function $$emit_do(do_block) { + Opal.def(self, '$emit_do', $Lexer_emit_do$51 = function $$emit_do(do_block) { var $a, self = this; + + if (do_block == null) { do_block = false; - } + }; if ($truthy(self.cond['$active?']())) { return self.$emit("kDO_COND", "do".$freeze()) } else if ($truthy(($truthy($a = self.cmdarg['$active?']()) ? $a : do_block))) { return self.$emit("kDO_BLOCK", "do".$freeze()) - } else { + } else { return self.$emit("kDO", "do".$freeze()) - } - }, TMP_Lexer_emit_do_46.$$arity = -1); + }; + }, $Lexer_emit_do$51.$$arity = -1); - Opal.defn(self, '$arg_or_cmdarg', TMP_Lexer_arg_or_cmdarg_47 = function $$arg_or_cmdarg() { + Opal.def(self, '$arg_or_cmdarg', $Lexer_arg_or_cmdarg$52 = function $$arg_or_cmdarg(cmd_state) { var self = this; - if ($truthy(self.command_state)) { + if ($truthy(cmd_state)) { return self.$class().$lex_en_expr_cmdarg() - } else { + } else { return self.$class().$lex_en_expr_arg() } - }, TMP_Lexer_arg_or_cmdarg_47.$$arity = 0); + }, $Lexer_arg_or_cmdarg$52.$$arity = 1); - Opal.defn(self, '$emit_comment', TMP_Lexer_emit_comment_48 = function $$emit_comment(s, e) { + Opal.def(self, '$emit_comment', $Lexer_emit_comment$53 = function $$emit_comment(s, e) { var self = this; + + if (s == null) { s = self.ts; - } + }; + if (e == null) { e = self.te; - } - + }; if ($truthy(self.comments)) { - self.comments.$push(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Source'), 'Comment').$new(self.$range(s, e)))}; + self.comments.$push($$$($$$($$($nesting, 'Parser'), 'Source'), 'Comment').$new(self.$range(s, e)))}; if ($truthy(self.tokens)) { self.tokens.$push(["tCOMMENT", [self.$tok(s, e), self.$range(s, e)]])}; return nil; - }, TMP_Lexer_emit_comment_48.$$arity = -1); + }, $Lexer_emit_comment$53.$$arity = -1); - Opal.defn(self, '$diagnostic', TMP_Lexer_diagnostic_49 = function $$diagnostic(type, reason, arguments$, location, highlights) { + Opal.def(self, '$diagnostic', $Lexer_diagnostic$54 = function $$diagnostic(type, reason, arguments$, location, highlights) { var self = this; + + if (arguments$ == null) { arguments$ = nil; - } + }; + if (location == null) { location = self.$range(); - } + }; + if (highlights == null) { highlights = []; - } - return self.diagnostics.$process(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Diagnostic').$new(type, reason, arguments$, location, highlights)) - }, TMP_Lexer_diagnostic_49.$$arity = -3); + }; + return self.diagnostics.$process($$$($$($nesting, 'Parser'), 'Diagnostic').$new(type, reason, arguments$, location, highlights)); + }, $Lexer_diagnostic$54.$$arity = -3); - Opal.defn(self, '$push_literal', TMP_Lexer_push_literal_50 = function $$push_literal($a_rest) { - var $b, self = this, args, new_literal = nil; + Opal.def(self, '$push_literal', $Lexer_push_literal$55 = function $$push_literal($a) { + var $post_args, args, self = this, new_literal = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - new_literal = $send(Opal.const_get_relative($nesting, 'Literal'), 'new', [self].concat(Opal.to_a(args))); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + new_literal = $send($$($nesting, 'Literal'), 'new', [self].concat(Opal.to_a(args))); self.literal_stack.$push(new_literal); - if ($truthy(($truthy($b = new_literal['$words?']()) ? new_literal['$backslash_delimited?']() : $b))) { - if ($truthy(new_literal['$interpolate?']())) { + return self.$next_state_for_literal(new_literal); + }, $Lexer_push_literal$55.$$arity = -1); + + Opal.def(self, '$next_state_for_literal', $Lexer_next_state_for_literal$56 = function $$next_state_for_literal(literal) { + var $a, self = this; + + if ($truthy(($truthy($a = literal['$words?']()) ? literal['$backslash_delimited?']() : $a))) { + if ($truthy(literal['$interpolate?']())) { return self.$class().$lex_en_interp_backslash_delimited_words() - } else { + } else { return self.$class().$lex_en_plain_backslash_delimited_words() } - } else if ($truthy(($truthy($b = new_literal['$words?']()) ? new_literal['$backslash_delimited?']()['$!']() : $b))) { - if ($truthy(new_literal['$interpolate?']())) { + } else if ($truthy(($truthy($a = literal['$words?']()) ? literal['$backslash_delimited?']()['$!']() : $a))) { + if ($truthy(literal['$interpolate?']())) { return self.$class().$lex_en_interp_words() - } else { + } else { return self.$class().$lex_en_plain_words() } - } else if ($truthy(($truthy($b = new_literal['$words?']()['$!']()) ? new_literal['$backslash_delimited?']() : $b))) { - if ($truthy(new_literal['$interpolate?']())) { + } else if ($truthy(($truthy($a = literal['$words?']()['$!']()) ? literal['$backslash_delimited?']() : $a))) { + if ($truthy(literal['$interpolate?']())) { return self.$class().$lex_en_interp_backslash_delimited() - } else { + } else { return self.$class().$lex_en_plain_backslash_delimited() } - } else if ($truthy(new_literal['$interpolate?']())) { + } else if ($truthy(literal['$interpolate?']())) { return self.$class().$lex_en_interp_string() - } else { + } else { return self.$class().$lex_en_plain_string() - }; - }, TMP_Lexer_push_literal_50.$$arity = -1); + } + }, $Lexer_next_state_for_literal$56.$$arity = 1); - Opal.defn(self, '$literal', TMP_Lexer_literal_51 = function $$literal() { + Opal.def(self, '$literal', $Lexer_literal$57 = function $$literal() { var self = this; return self.literal_stack.$last() - }, TMP_Lexer_literal_51.$$arity = 0); + }, $Lexer_literal$57.$$arity = 0); - Opal.defn(self, '$pop_literal', TMP_Lexer_pop_literal_52 = function $$pop_literal() { + Opal.def(self, '$pop_literal', $Lexer_pop_literal$58 = function $$pop_literal() { var self = this, old_literal = nil; @@ -37355,24 +42700,28 @@ if (chars == null) chars = nil; self.dedent_level = old_literal.$dedent_level(); if (old_literal.$type()['$==']("tREGEXP_BEG")) { return self.$class().$lex_en_regexp_modifiers() - } else { + } else { return self.$class().$lex_en_expr_end() }; - }, TMP_Lexer_pop_literal_52.$$arity = 0); - Opal.const_set($nesting[0], 'PUNCTUATION', $hash2(["=", "&", "|", "!", "^", "+", "-", "*", "/", "%", "~", ",", ";", ".", "..", "...", "[", "]", "(", ")", "?", ":", "&&", "||", "-@", "+@", "~@", "**", "->", "=~", "!~", "==", "!=", ">", ">>", ">=", "<", "<<", "<=", "=>", "::", "===", "<=>", "[]", "[]=", "{", "}", "`", "!@", "&."], {"=": "tEQL", "&": "tAMPER2", "|": "tPIPE", "!": "tBANG", "^": "tCARET", "+": "tPLUS", "-": "tMINUS", "*": "tSTAR2", "/": "tDIVIDE", "%": "tPERCENT", "~": "tTILDE", ",": "tCOMMA", ";": "tSEMI", ".": "tDOT", "..": "tDOT2", "...": "tDOT3", "[": "tLBRACK2", "]": "tRBRACK", "(": "tLPAREN2", ")": "tRPAREN", "?": "tEH", ":": "tCOLON", "&&": "tANDOP", "||": "tOROP", "-@": "tUMINUS", "+@": "tUPLUS", "~@": "tTILDE", "**": "tPOW", "->": "tLAMBDA", "=~": "tMATCH", "!~": "tNMATCH", "==": "tEQ", "!=": "tNEQ", ">": "tGT", ">>": "tRSHFT", ">=": "tGEQ", "<": "tLT", "<<": "tLSHFT", "<=": "tLEQ", "=>": "tASSOC", "::": "tCOLON2", "===": "tEQQ", "<=>": "tCMP", "[]": "tAREF", "[]=": "tASET", "{": "tLCURLY", "}": "tRCURLY", "`": "tBACK_REF2", "!@": "tBANG", "&.": "tANDDOT"})); + }, $Lexer_pop_literal$58.$$arity = 0); + Opal.const_set($nesting[0], 'PUNCTUATION', $hash2(["=", "&", "|", "!", "^", "+", "-", "*", "/", "%", "~", ",", ";", ".", "..", "...", "[", "]", "(", ")", "?", ":", "&&", "||", "-@", "+@", "~@", "**", "->", "=~", "!~", "==", "!=", ">", ">>", ">=", "<", "<<", "<=", "=>", "::", "===", "<=>", "[]", "[]=", "{", "}", "`", "!@", "&.", ".:"], {"=": "tEQL", "&": "tAMPER2", "|": "tPIPE", "!": "tBANG", "^": "tCARET", "+": "tPLUS", "-": "tMINUS", "*": "tSTAR2", "/": "tDIVIDE", "%": "tPERCENT", "~": "tTILDE", ",": "tCOMMA", ";": "tSEMI", ".": "tDOT", "..": "tDOT2", "...": "tDOT3", "[": "tLBRACK2", "]": "tRBRACK", "(": "tLPAREN2", ")": "tRPAREN", "?": "tEH", ":": "tCOLON", "&&": "tANDOP", "||": "tOROP", "-@": "tUMINUS", "+@": "tUPLUS", "~@": "tTILDE", "**": "tPOW", "->": "tLAMBDA", "=~": "tMATCH", "!~": "tNMATCH", "==": "tEQ", "!=": "tNEQ", ">": "tGT", ">>": "tRSHFT", ">=": "tGEQ", "<": "tLT", "<<": "tLSHFT", "<=": "tLEQ", "=>": "tASSOC", "::": "tCOLON2", "===": "tEQQ", "<=>": "tCMP", "[]": "tAREF", "[]=": "tASET", "{": "tLCURLY", "}": "tRCURLY", "`": "tBACK_REF2", "!@": "tBANG", "&.": "tANDDOT", ".:": "tMETHREF"})); Opal.const_set($nesting[0], 'PUNCTUATION_BEGIN', $hash2(["&", "*", "**", "+", "-", "::", "(", "{", "["], {"&": "tAMPER", "*": "tSTAR", "**": "tDSTAR", "+": "tUPLUS", "-": "tUMINUS", "::": "tCOLON3", "(": "tLPAREN", "{": "tLBRACE", "[": "tLBRACK"})); Opal.const_set($nesting[0], 'KEYWORDS', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF_MOD", "unless": "kUNLESS_MOD", "while": "kWHILE_MOD", "until": "kUNTIL_MOD", "rescue": "kRESCUE_MOD", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); - Opal.const_set($nesting[0], 'KEYWORDS_BEGIN', $hash2(["if", "unless", "while", "until", "rescue", "defined?"], {"if": "kIF", "unless": "kUNLESS", "while": "kWHILE", "until": "kUNTIL", "rescue": "kRESCUE", "defined?": "kDEFINED"})); - return $send(["class", "module", "def", "undef", "begin", "end", "then", "elsif", "else", "ensure", "case", "when", "for", "break", "next", "redo", "retry", "in", "do", "return", "yield", "super", "self", "nil", "true", "false", "and", "or", "not", "alias", "__FILE__", "__LINE__", "__ENCODING__"], 'each', [], (TMP_Lexer_53 = function(keyword){var self = TMP_Lexer_53.$$s || this; -if (keyword == null) keyword = nil; - - $writer = [keyword, (($writer = [keyword, "" + "k" + (keyword.$upcase())]), $send(Opal.const_get_relative($nesting, 'KEYWORDS'), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; - $send(Opal.const_get_relative($nesting, 'KEYWORDS_BEGIN'), '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_Lexer_53.$$s = self, TMP_Lexer_53.$$arity = 1, TMP_Lexer_53)); - })(Opal.const_get_relative($nesting, 'Parser'), null, $nesting) + Opal.const_set($nesting[0], 'KEYWORDS_BEGIN', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF", "unless": "kUNLESS", "while": "kWHILE", "until": "kUNTIL", "rescue": "kRESCUE", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); + return $send(["class", "module", "def", "undef", "begin", "end", "then", "elsif", "else", "ensure", "case", "when", "for", "break", "next", "redo", "retry", "in", "do", "return", "yield", "super", "self", "nil", "true", "false", "and", "or", "not", "alias", "__FILE__", "__LINE__", "__ENCODING__"], 'each', [], ($Lexer$59 = function(keyword){var self = $Lexer$59.$$s || this; + + + + if (keyword == null) { + keyword = nil; + }; + $writer = [keyword, (($writer = [keyword, "" + "k" + (keyword.$upcase())]), $send($$($nesting, 'KEYWORDS'), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send($$($nesting, 'KEYWORDS_BEGIN'), '[]=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, $Lexer$59.$$s = self, $Lexer$59.$$arity = 1, $Lexer$59)); + })($$($nesting, 'Parser'), null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/lexer/literal"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -37383,60 +42732,63 @@ Opal.modules["parser/lexer/literal"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$attr_reader', '$attr_accessor', '$coerce_encoding', '$include?', '$send', '$+', '$[]', '$fetch', '$==', '$!', '$heredoc?', '$start_with?', '$freeze', '$clear_buffer', '$emit_start_tok', '$type', '$words?', '$=~', '$delimiter?', '$-', '$extend_space', '$!=', '$flush_string', '$emit', '$each_char', '$===', '$%', '$nil?', '$>', '$empty?', '$extend_content', '$protected', '$lstrip', '$force_encoding', '$dup', '$encoding', '$source', '$source_buffer', '$length']); + Opal.add_stubs(['$attr_reader', '$attr_accessor', '$coerce_encoding', '$include?', '$send', '$+', '$[]', '$fetch', '$==', '$!', '$heredoc?', '$start_with?', '$freeze', '$clear_buffer', '$emit_start_tok', '$type', '$words?', '$=~', '$delimiter?', '$-', '$extend_space', '$!=', '$flush_string', '$emit', '$each_char', '$===', '$%', '$nil?', '$>', '$<<', '$empty?', '$extend_content', '$protected', '$lstrip', '$b', '$dup', '$force_encoding', '$encoding', '$source', '$source_buffer', '$length']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Literal(){}; - var self = $Literal = $klass($base, $super, 'Literal', $Literal); + var self = $klass($base, $super, 'Literal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Literal_initialize_1, TMP_Literal_interpolate$q_2, TMP_Literal_words$q_3, TMP_Literal_regexp$q_4, TMP_Literal_heredoc$q_5, TMP_Literal_backslash_delimited$q_6, TMP_Literal_type_7, TMP_Literal_munge_escape$q_8, TMP_Literal_nest_and_try_closing_9, TMP_Literal_infer_indent_level_11, TMP_Literal_start_interp_brace_12, TMP_Literal_end_interp_brace_and_try_closing_13, TMP_Literal_extend_string_14, TMP_Literal_flush_string_15, TMP_Literal_extend_content_16, TMP_Literal_extend_space_17, TMP_Literal_delimiter$q_18, TMP_Literal_coerce_encoding_19, TMP_Literal_clear_buffer_20, TMP_Literal_emit_start_tok_21, TMP_Literal_emit_22; + var $nesting = [self].concat($parent_nesting), $Literal_initialize$1, $Literal_interpolate$ques$2, $Literal_words$ques$3, $Literal_regexp$ques$4, $Literal_heredoc$ques$5, $Literal_plain_heredoc$ques$6, $Literal_squiggly_heredoc$ques$7, $Literal_backslash_delimited$ques$8, $Literal_type$9, $Literal_munge_escape$ques$10, $Literal_nest_and_try_closing$11, $Literal_infer_indent_level$12, $Literal_start_interp_brace$14, $Literal_end_interp_brace_and_try_closing$15, $Literal_extend_string$16, $Literal_flush_string$17, $Literal_extend_content$18, $Literal_extend_space$19, $Literal_supports_line_continuation_via_slash$ques$20, $Literal_delimiter$ques$21, $Literal_coerce_encoding$22, $Literal_clear_buffer$23, $Literal_emit_start_tok$24, $Literal_emit$25; - def.lexer = def.start_tok = def.str_type = def.monolithic = def.interpolate = def.heredoc_e = def.end_delim = def.start_delim = def.nesting = def.label_allowed = def.buffer = def.str_s = def.dedent_body = def.interp_braces = def.buffer_s = def.buffer_e = def.space_emitted = def.indent = nil; + self.$$prototype.lexer = self.$$prototype.start_tok = self.$$prototype.str_type = self.$$prototype.monolithic = self.$$prototype.interpolate = self.$$prototype.heredoc_e = self.$$prototype.dedent_body = self.$$prototype.end_delim = self.$$prototype.start_delim = self.$$prototype.nesting = self.$$prototype.label_allowed = self.$$prototype.buffer = self.$$prototype.str_s = self.$$prototype.interp_braces = self.$$prototype.buffer_s = self.$$prototype.buffer_e = self.$$prototype.space_emitted = self.$$prototype.indent = nil; Opal.const_set($nesting[0], 'DELIMITERS', $hash2(["(", "[", "{", "<"], {"(": ")".$force_encoding("ASCII-8BIT"), "[": "]".$force_encoding("ASCII-8BIT"), "{": "}".$force_encoding("ASCII-8BIT"), "<": ">".$force_encoding("ASCII-8BIT")})); Opal.const_set($nesting[0], 'TYPES', $hash2(["'", "<<'", "%q", "\"", "<<\"", "%", "%Q", "%w", "%W", "%i", "%I", ":'", "%s", ":\"", "/", "%r", "%x", "`", "<<`"], {"'": ["tSTRING_BEG", false], "<<'": ["tSTRING_BEG", false], "%q": ["tSTRING_BEG", false], "\"": ["tSTRING_BEG", true], "<<\"": ["tSTRING_BEG", true], "%": ["tSTRING_BEG", true], "%Q": ["tSTRING_BEG", true], "%w": ["tQWORDS_BEG", false], "%W": ["tWORDS_BEG", true], "%i": ["tQSYMBOLS_BEG", false], "%I": ["tSYMBOLS_BEG", true], ":'": ["tSYMBEG", false], "%s": ["tSYMBEG", false], ":\"": ["tSYMBEG", true], "/": ["tREGEXP_BEG", true], "%r": ["tREGEXP_BEG", true], "%x": ["tXSTRING_BEG", true], "`": ["tXSTRING_BEG", true], "<<`": ["tXSTRING_BEG", true]})); self.$attr_reader("heredoc_e", "str_s", "dedent_level"); self.$attr_accessor("saved_herebody_s"); - Opal.defn(self, '$initialize', TMP_Literal_initialize_1 = function $$initialize(lexer, str_type, delimiter, str_s, heredoc_e, indent, dedent_body, label_allowed) { + Opal.def(self, '$initialize', $Literal_initialize$1 = function $$initialize(lexer, str_type, delimiter, str_s, heredoc_e, indent, dedent_body, label_allowed) { var $a, $b, self = this; + + if (heredoc_e == null) { heredoc_e = nil; - } + }; + if (indent == null) { indent = false; - } + }; + if (dedent_body == null) { dedent_body = false; - } + }; + if (label_allowed == null) { label_allowed = false; - } - + }; self.lexer = lexer; self.nesting = 1; str_type = self.$coerce_encoding(str_type); delimiter = self.$coerce_encoding(delimiter); - if ($truthy(Opal.const_get_relative($nesting, 'TYPES')['$include?'](str_type))) { - } else { + if ($truthy($$($nesting, 'TYPES')['$include?'](str_type))) { + } else { lexer.$send("diagnostic", "error", "unexpected_percent_str", $hash2(["type"], {"type": str_type}), self.lexer.$send("range", str_s, $rb_plus(str_s, 2))) }; self.str_type = str_type; self.str_s = str_s; - $b = Opal.const_get_relative($nesting, 'TYPES')['$[]'](str_type), $a = Opal.to_ary($b), (self.start_tok = ($a[0] == null ? nil : $a[0])), (self.interpolate = ($a[1] == null ? nil : $a[1])), $b; - self.start_delim = (function() {if ($truthy(Opal.const_get_relative($nesting, 'DELIMITERS')['$include?'](delimiter))) { + $b = $$($nesting, 'TYPES')['$[]'](str_type), $a = Opal.to_ary($b), (self.start_tok = ($a[0] == null ? nil : $a[0])), (self.interpolate = ($a[1] == null ? nil : $a[1])), $b; + self.start_delim = (function() {if ($truthy($$($nesting, 'DELIMITERS')['$include?'](delimiter))) { return delimiter - } else { + } else { return nil }; return nil; })(); - self.end_delim = Opal.const_get_relative($nesting, 'DELIMITERS').$fetch(delimiter, delimiter); + self.end_delim = $$($nesting, 'DELIMITERS').$fetch(delimiter, delimiter); self.heredoc_e = heredoc_e; self.indent = indent; self.label_allowed = label_allowed; @@ -37450,66 +42802,79 @@ Opal.modules["parser/lexer/literal"] = function(Opal) { self.$clear_buffer(); if ($truthy(self.monolithic)) { return nil - } else { + } else { return self.$emit_start_tok() }; - }, TMP_Literal_initialize_1.$$arity = -5); + }, $Literal_initialize$1.$$arity = -5); - Opal.defn(self, '$interpolate?', TMP_Literal_interpolate$q_2 = function() { + Opal.def(self, '$interpolate?', $Literal_interpolate$ques$2 = function() { var self = this; return self.interpolate - }, TMP_Literal_interpolate$q_2.$$arity = 0); + }, $Literal_interpolate$ques$2.$$arity = 0); - Opal.defn(self, '$words?', TMP_Literal_words$q_3 = function() { + Opal.def(self, '$words?', $Literal_words$ques$3 = function() { var $a, $b, $c, self = this; return ($truthy($a = ($truthy($b = ($truthy($c = self.$type()['$==']("tWORDS_BEG")) ? $c : self.$type()['$==']("tQWORDS_BEG"))) ? $b : self.$type()['$==']("tSYMBOLS_BEG"))) ? $a : self.$type()['$==']("tQSYMBOLS_BEG")) - }, TMP_Literal_words$q_3.$$arity = 0); + }, $Literal_words$ques$3.$$arity = 0); - Opal.defn(self, '$regexp?', TMP_Literal_regexp$q_4 = function() { + Opal.def(self, '$regexp?', $Literal_regexp$ques$4 = function() { var self = this; return self.$type()['$==']("tREGEXP_BEG") - }, TMP_Literal_regexp$q_4.$$arity = 0); + }, $Literal_regexp$ques$4.$$arity = 0); - Opal.defn(self, '$heredoc?', TMP_Literal_heredoc$q_5 = function() { + Opal.def(self, '$heredoc?', $Literal_heredoc$ques$5 = function() { var self = this; return self.heredoc_e['$!']()['$!']() - }, TMP_Literal_heredoc$q_5.$$arity = 0); + }, $Literal_heredoc$ques$5.$$arity = 0); + + Opal.def(self, '$plain_heredoc?', $Literal_plain_heredoc$ques$6 = function() { + var $a, self = this; + + return ($truthy($a = self['$heredoc?']()) ? self.dedent_body['$!']() : $a) + }, $Literal_plain_heredoc$ques$6.$$arity = 0); + + Opal.def(self, '$squiggly_heredoc?', $Literal_squiggly_heredoc$ques$7 = function() { + var $a, self = this; + + return ($truthy($a = self['$heredoc?']()) ? self.dedent_body : $a) + }, $Literal_squiggly_heredoc$ques$7.$$arity = 0); - Opal.defn(self, '$backslash_delimited?', TMP_Literal_backslash_delimited$q_6 = function() { + Opal.def(self, '$backslash_delimited?', $Literal_backslash_delimited$ques$8 = function() { var self = this; return self.end_delim['$==']("\\".$force_encoding("ASCII-8BIT").$freeze()) - }, TMP_Literal_backslash_delimited$q_6.$$arity = 0); + }, $Literal_backslash_delimited$ques$8.$$arity = 0); - Opal.defn(self, '$type', TMP_Literal_type_7 = function $$type() { + Opal.def(self, '$type', $Literal_type$9 = function $$type() { var self = this; return self.start_tok - }, TMP_Literal_type_7.$$arity = 0); + }, $Literal_type$9.$$arity = 0); - Opal.defn(self, '$munge_escape?', TMP_Literal_munge_escape$q_8 = function(character) { + Opal.def(self, '$munge_escape?', $Literal_munge_escape$ques$10 = function(character) { var $a, self = this; character = self.$coerce_encoding(character); if ($truthy(($truthy($a = self['$words?']()) ? character['$=~'](/[ \t\v\r\f\n]/) : $a))) { return true - } else { + } else { return ["\\".$force_encoding("ASCII-8BIT").$freeze(), self.start_delim, self.end_delim]['$include?'](character) }; - }, TMP_Literal_munge_escape$q_8.$$arity = 1); + }, $Literal_munge_escape$ques$10.$$arity = 1); - Opal.defn(self, '$nest_and_try_closing', TMP_Literal_nest_and_try_closing_9 = function $$nest_and_try_closing(delimiter, ts, te, lookahead) { + Opal.def(self, '$nest_and_try_closing', $Literal_nest_and_try_closing$11 = function $$nest_and_try_closing(delimiter, ts, te, lookahead) { var $a, $b, $c, $d, self = this; + + if (lookahead == null) { lookahead = nil; - } - + }; delimiter = self.$coerce_encoding(delimiter); if ($truthy(($truthy($a = self.start_delim) ? self.start_delim['$=='](delimiter) : $a))) { self.nesting = $rb_plus(self.nesting, 1) @@ -37525,65 +42890,70 @@ Opal.modules["parser/lexer/literal"] = function(Opal) { return self.$emit("tLABEL_END", self.end_delim, ts, $rb_plus(te, 1)); } else if ($truthy(self.monolithic)) { return self.$emit("tSTRING", self.buffer, self.str_s, te) - } else { + } else { if ($truthy(self['$heredoc?']())) { - } else { + } else { self.$flush_string() }; return self.$emit("tSTRING_END", self.end_delim, ts, te); }; - } else { + } else { return nil }; - }, TMP_Literal_nest_and_try_closing_9.$$arity = -4); + }, $Literal_nest_and_try_closing$11.$$arity = -4); - Opal.defn(self, '$infer_indent_level', TMP_Literal_infer_indent_level_11 = function $$infer_indent_level(line) { - var TMP_10, self = this, indent_level = nil; + Opal.def(self, '$infer_indent_level', $Literal_infer_indent_level$12 = function $$infer_indent_level(line) { + var $$13, self = this, indent_level = nil; if ($truthy(self.dedent_body['$!']())) { return nil}; indent_level = 0; - return (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], (TMP_10 = function(char$){var self = TMP_10.$$s || this, $a, $case = nil; + return (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], ($$13 = function(char$){var self = $$13.$$s || this, $a, $case = nil; if (self.dedent_level == null) self.dedent_level = nil; -if (char$ == null) char$ = nil; - return (function() {$case = char$; + + + + if (char$ == null) { + char$ = nil; + }; + return (function() {$case = char$; if (" "['$===']($case)) {return (indent_level = $rb_plus(indent_level, 1))} else if ("\t"['$===']($case)) {return (indent_level = $rb_plus(indent_level, $rb_minus(8, indent_level['$%'](8))))} else { if ($truthy(($truthy($a = self.dedent_level['$nil?']()) ? $a : $rb_gt(self.dedent_level, indent_level)))) { self.dedent_level = indent_level}; - Opal.brk(nil, $brk);}})()}, TMP_10.$$s = self, TMP_10.$$brk = $brk, TMP_10.$$arity = 1, TMP_10)) + Opal.brk(nil, $brk);}})();}, $$13.$$s = self, $$13.$$brk = $brk, $$13.$$arity = 1, $$13)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - }, TMP_Literal_infer_indent_level_11.$$arity = 1); + }, $Literal_infer_indent_level$12.$$arity = 1); - Opal.defn(self, '$start_interp_brace', TMP_Literal_start_interp_brace_12 = function $$start_interp_brace() { + Opal.def(self, '$start_interp_brace', $Literal_start_interp_brace$14 = function $$start_interp_brace() { var self = this; return (self.interp_braces = $rb_plus(self.interp_braces, 1)) - }, TMP_Literal_start_interp_brace_12.$$arity = 0); + }, $Literal_start_interp_brace$14.$$arity = 0); - Opal.defn(self, '$end_interp_brace_and_try_closing', TMP_Literal_end_interp_brace_and_try_closing_13 = function $$end_interp_brace_and_try_closing() { + Opal.def(self, '$end_interp_brace_and_try_closing', $Literal_end_interp_brace_and_try_closing$15 = function $$end_interp_brace_and_try_closing() { var self = this; self.interp_braces = $rb_minus(self.interp_braces, 1); return self.interp_braces['$=='](0);; - }, TMP_Literal_end_interp_brace_and_try_closing_13.$$arity = 0); + }, $Literal_end_interp_brace_and_try_closing$15.$$arity = 0); - Opal.defn(self, '$extend_string', TMP_Literal_extend_string_14 = function $$extend_string(string, ts, te) { + Opal.def(self, '$extend_string', $Literal_extend_string$16 = function $$extend_string(string, ts, te) { var $a, self = this; self.buffer_s = ($truthy($a = self.buffer_s) ? $a : ts); self.buffer_e = te; - return (self.buffer = $rb_plus(self.buffer, string)); - }, TMP_Literal_extend_string_14.$$arity = 3); + return self.buffer['$<<'](string); + }, $Literal_extend_string$16.$$arity = 3); - Opal.defn(self, '$flush_string', TMP_Literal_flush_string_15 = function $$flush_string() { + Opal.def(self, '$flush_string', $Literal_flush_string$17 = function $$flush_string() { var self = this; @@ -37593,216 +42963,259 @@ if (char$ == null) char$ = nil; self.monolithic = false;}; if ($truthy(self.buffer['$empty?']())) { return nil - } else { + } else { self.$emit("tSTRING_CONTENT", self.buffer, self.buffer_s, self.buffer_e); self.$clear_buffer(); return self.$extend_content(); }; - }, TMP_Literal_flush_string_15.$$arity = 0); + }, $Literal_flush_string$17.$$arity = 0); - Opal.defn(self, '$extend_content', TMP_Literal_extend_content_16 = function $$extend_content() { + Opal.def(self, '$extend_content', $Literal_extend_content$18 = function $$extend_content() { var self = this; return (self.space_emitted = false) - }, TMP_Literal_extend_content_16.$$arity = 0); + }, $Literal_extend_content$18.$$arity = 0); - Opal.defn(self, '$extend_space', TMP_Literal_extend_space_17 = function $$extend_space(ts, te) { + Opal.def(self, '$extend_space', $Literal_extend_space$19 = function $$extend_space(ts, te) { var self = this; self.$flush_string(); if ($truthy(self.space_emitted)) { return nil - } else { + } else { self.$emit("tSPACE", nil, ts, te); return (self.space_emitted = true); }; - }, TMP_Literal_extend_space_17.$$arity = 2); + }, $Literal_extend_space$19.$$arity = 2); + + Opal.def(self, '$supports_line_continuation_via_slash?', $Literal_supports_line_continuation_via_slash$ques$20 = function() { + var $a, self = this; + + return ($truthy($a = self['$words?']()['$!']()) ? self.interpolate : $a) + }, $Literal_supports_line_continuation_via_slash$ques$20.$$arity = 0); self.$protected(); - Opal.defn(self, '$delimiter?', TMP_Literal_delimiter$q_18 = function(delimiter) { + Opal.def(self, '$delimiter?', $Literal_delimiter$ques$21 = function(delimiter) { var self = this; if ($truthy(self.indent)) { return self.end_delim['$=='](delimiter.$lstrip()) - } else { + } else { return self.end_delim['$=='](delimiter) } - }, TMP_Literal_delimiter$q_18.$$arity = 1); + }, $Literal_delimiter$ques$21.$$arity = 1); - Opal.defn(self, '$coerce_encoding', TMP_Literal_coerce_encoding_19 = function $$coerce_encoding(string) { - var $a, self = this; + Opal.def(self, '$coerce_encoding', $Literal_coerce_encoding$22 = function $$coerce_encoding(string) { + var self = this; - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - return string.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY')) - } else { - return string - } - }, TMP_Literal_coerce_encoding_19.$$arity = 1); + return string.$b() + }, $Literal_coerce_encoding$22.$$arity = 1); - Opal.defn(self, '$clear_buffer', TMP_Literal_clear_buffer_20 = function $$clear_buffer() { - var $a, self = this; + Opal.def(self, '$clear_buffer', $Literal_clear_buffer$23 = function $$clear_buffer() { + var self = this; - self.buffer = "".$force_encoding("ASCII-8BIT"); - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding())}; + self.buffer = "".$force_encoding("ASCII-8BIT").$dup(); + self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding()); self.buffer_s = nil; return (self.buffer_e = nil); - }, TMP_Literal_clear_buffer_20.$$arity = 0); + }, $Literal_clear_buffer$23.$$arity = 0); - Opal.defn(self, '$emit_start_tok', TMP_Literal_emit_start_tok_21 = function $$emit_start_tok() { + Opal.def(self, '$emit_start_tok', $Literal_emit_start_tok$24 = function $$emit_start_tok() { var $a, self = this, str_e = nil; str_e = ($truthy($a = self.heredoc_e) ? $a : $rb_plus(self.str_s, self.str_type.$length())); return self.$emit(self.start_tok, self.str_type, self.str_s, str_e); - }, TMP_Literal_emit_start_tok_21.$$arity = 0); - return (Opal.defn(self, '$emit', TMP_Literal_emit_22 = function $$emit(token, type, s, e) { + }, $Literal_emit_start_tok$24.$$arity = 0); + return (Opal.def(self, '$emit', $Literal_emit$25 = function $$emit(token, type, s, e) { var self = this; return self.lexer.$send("emit", token, type, s, e) - }, TMP_Literal_emit_22.$$arity = 4), nil) && 'emit'; - })(Opal.const_get_relative($nesting, 'Lexer'), null, $nesting) + }, $Literal_emit$25.$$arity = 4), nil) && 'emit'; + })($$($nesting, 'Lexer'), null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/lexer/stack_state"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$freeze', '$clear', '$|', '$<<', '$&', '$>>', '$==', '$push', '$pop', '$[]', '$to_s']); + Opal.add_stubs(['$freeze', '$clear', '$|', '$<<', '$&', '$>>', '$==', '$[]', '$to_s']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $StackState(){}; - var self = $StackState = $klass($base, $super, 'StackState', $StackState); + var self = $klass($base, $super, 'StackState'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_StackState_initialize_1, TMP_StackState_clear_2, TMP_StackState_push_3, TMP_StackState_pop_4, TMP_StackState_lexpop_5, TMP_StackState_active$q_6, TMP_StackState_to_s_7; + var $nesting = [self].concat($parent_nesting), $StackState_initialize$1, $StackState_clear$2, $StackState_push$3, $StackState_pop$4, $StackState_lexpop$5, $StackState_active$ques$6, $StackState_empty$ques$7, $StackState_to_s$8; - def.stack = def.name = nil; + self.$$prototype.stack = self.$$prototype.name = nil; - Opal.defn(self, '$initialize', TMP_StackState_initialize_1 = function $$initialize(name) { + Opal.def(self, '$initialize', $StackState_initialize$1 = function $$initialize(name) { var self = this; self.name = name.$freeze(); return self.$clear(); - }, TMP_StackState_initialize_1.$$arity = 1); + }, $StackState_initialize$1.$$arity = 1); - Opal.defn(self, '$clear', TMP_StackState_clear_2 = function $$clear() { + Opal.def(self, '$clear', $StackState_clear$2 = function $$clear() { var self = this; return (self.stack = 0) - }, TMP_StackState_clear_2.$$arity = 0); + }, $StackState_clear$2.$$arity = 0); - Opal.defn(self, '$push', TMP_StackState_push_3 = function $$push(bit) { + Opal.def(self, '$push', $StackState_push$3 = function $$push(bit) { var self = this, bit_value = nil; bit_value = (function() {if ($truthy(bit)) { return 1 - } else { + } else { return 0 }; return nil; })(); self.stack = self.stack['$<<'](1)['$|'](bit_value); return bit; - }, TMP_StackState_push_3.$$arity = 1); + }, $StackState_push$3.$$arity = 1); - Opal.defn(self, '$pop', TMP_StackState_pop_4 = function $$pop() { + Opal.def(self, '$pop', $StackState_pop$4 = function $$pop() { var self = this, bit_value = nil; bit_value = self.stack['$&'](1); self.stack = self.stack['$>>'](1); return bit_value['$=='](1); - }, TMP_StackState_pop_4.$$arity = 0); + }, $StackState_pop$4.$$arity = 0); - Opal.defn(self, '$lexpop', TMP_StackState_lexpop_5 = function $$lexpop() { - var $a, self = this; + Opal.def(self, '$lexpop', $StackState_lexpop$5 = function $$lexpop() { + var self = this; - return self.$push(($truthy($a = self.$pop()) ? $a : self.$pop())) - }, TMP_StackState_lexpop_5.$$arity = 0); + + self.stack = self.stack['$>>'](1)['$|'](self.stack['$&'](1)); + return self.stack['$[]'](0)['$=='](1); + }, $StackState_lexpop$5.$$arity = 0); - Opal.defn(self, '$active?', TMP_StackState_active$q_6 = function() { + Opal.def(self, '$active?', $StackState_active$ques$6 = function() { var self = this; return self.stack['$[]'](0)['$=='](1) - }, TMP_StackState_active$q_6.$$arity = 0); + }, $StackState_active$ques$6.$$arity = 0); + + Opal.def(self, '$empty?', $StackState_empty$ques$7 = function() { + var self = this; + + return self.stack['$=='](0) + }, $StackState_empty$ques$7.$$arity = 0); - Opal.defn(self, '$to_s', TMP_StackState_to_s_7 = function $$to_s() { + Opal.def(self, '$to_s', $StackState_to_s$8 = function $$to_s() { var self = this; return "" + "[" + (self.stack.$to_s(2)) + " <= " + (self.name) + "]" - }, TMP_StackState_to_s_7.$$arity = 0); + }, $StackState_to_s$8.$$arity = 0); return Opal.alias(self, "inspect", "to_s"); - })(Opal.const_get_relative($nesting, 'Lexer'), null, $nesting) + })($$($nesting, 'Lexer'), null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/lexer/dedenter"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + function $rb_ge(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$-', '$length', '$each_with_index', '$chars', '$==', '$>=', '$slice!', '$+', '$===', '$%']); + Opal.add_stubs(['$-', '$length', '$each_with_index', '$chars', '$==', '$slice!', '$+', '$insert', '$>=', '$===', '$%']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Dedenter(){}; - var self = $Dedenter = $klass($base, $super, 'Dedenter', $Dedenter); + var self = $klass($base, $super, 'Dedenter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Dedenter_initialize_1, TMP_Dedenter_dedent_3, TMP_Dedenter_interrupt_4; + var $nesting = [self].concat($parent_nesting), $Dedenter_initialize$1, $Dedenter_dedent$2, $Dedenter_interrupt$4; - def.at_line_begin = nil; + self.$$prototype.at_line_begin = nil; - Opal.defn(self, '$initialize', TMP_Dedenter_initialize_1 = function $$initialize(dedent_level) { + Opal.def(self, '$initialize', $Dedenter_initialize$1 = function $$initialize(dedent_level) { var self = this; self.dedent_level = dedent_level; self.at_line_begin = true; return (self.indent_level = 0); - }, TMP_Dedenter_initialize_1.$$arity = 1); + }, $Dedenter_initialize$1.$$arity = 1); - Opal.defn(self, '$dedent', TMP_Dedenter_dedent_3 = function $$dedent(string) { - var TMP_2, self = this, space_begin = nil, space_end = nil, offset = nil, last_index = nil; + Opal.def(self, '$dedent', $Dedenter_dedent$2 = function $$dedent(string) { + var $$3, self = this, space_begin = nil, space_end = nil, offset = nil, last_index = nil, escape = nil, _at_line_begin = nil; space_begin = (space_end = (offset = 0)); last_index = $rb_minus(string.$length(), 1); - $send(string.$chars(), 'each_with_index', [], (TMP_2 = function(char$, index){var self = TMP_2.$$s || this, $a, $case = nil; + escape = false; + _at_line_begin = nil; + $send(string.$chars(), 'each_with_index', [], ($$3 = function(char$, index){var self = $$3.$$s || this, $a, $case = nil; if (self.at_line_begin == null) self.at_line_begin = nil; if (self.indent_level == null) self.indent_level = nil; if (self.dedent_level == null) self.dedent_level = nil; -if (char$ == null) char$ = nil;if (index == null) index = nil; - if ($truthy(self.at_line_begin)) { + + + + if (char$ == null) { + char$ = nil; + }; + + if (index == null) { + index = nil; + }; + if (char$['$==']("\\")) { + + escape = true; + string['$slice!']($rb_minus(index, offset)); + offset = $rb_plus(offset, 1); + _at_line_begin = self.at_line_begin; + return (self.at_line_begin = false); + } else if ($truthy(escape)) { + + if (char$['$==']("\n")) { + + string['$slice!']($rb_minus(index, offset)); + offset = $rb_plus(offset, 1); + self.at_line_begin = true; + space_begin = (space_end = $rb_minus(index, offset)); + self.indent_level = 0; + } else if (char$['$==']("n")) { + + string['$slice!']($rb_minus(index, offset)); + string.$insert($rb_minus(index, offset), "\n"); + } else { + + self.at_line_begin = _at_line_begin; + escape = false; + return $$3.apply(null, $slice.call(arguments)); + }; + return (escape = false); + } else if ($truthy(self.at_line_begin)) { if ($truthy(($truthy($a = char$['$==']("\n")) ? $a : $rb_ge(self.indent_level, self.dedent_level)))) { string['$slice!'](Opal.Range.$new(space_begin,space_end, true)); - offset = $rb_plus(offset, $rb_minus($rb_minus(space_end, space_begin), 1)); - self.at_line_begin = false; - if (char$['$==']("\n")) { - return TMP_2.apply(null, $slice.call(arguments))};}; + offset = $rb_plus(offset, $rb_minus(space_end, space_begin)); + self.at_line_begin = false;}; return (function() {$case = char$; if (" "['$===']($case)) { self.indent_level = $rb_plus(self.indent_level, 1); @@ -37816,23 +43229,97 @@ if (char$ == null) char$ = nil;if (index == null) index = nil; self.at_line_begin = true; self.indent_level = 0; return (space_begin = (space_end = $rb_plus($rb_minus(index, offset), 1))); - } else { + } else { return nil - }}, TMP_2.$$s = self, TMP_2.$$arity = 2, TMP_2)); + };}, $$3.$$s = self, $$3.$$arity = 2, $$3)); if ($truthy(self.at_line_begin)) { string['$slice!'](Opal.Range.$new(space_begin, space_end, false))}; return nil; - }, TMP_Dedenter_dedent_3.$$arity = 1); - return (Opal.defn(self, '$interrupt', TMP_Dedenter_interrupt_4 = function $$interrupt() { + }, $Dedenter_dedent$2.$$arity = 1); + return (Opal.def(self, '$interrupt', $Dedenter_interrupt$4 = function $$interrupt() { var self = this; return (self.at_line_begin = false) - }, TMP_Dedenter_interrupt_4.$$arity = 0), nil) && 'interrupt'; - })(Opal.const_get_relative($nesting, 'Lexer'), null, $nesting) + }, $Dedenter_interrupt$4.$$arity = 0), nil) && 'interrupt'; + })($$($nesting, 'Lexer'), null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/lexer/max_numparam_stack"] = function(Opal) { + function $rb_ge(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$set', '$>=', '$top', '$max', '$last', '$push', '$pop', '$private']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MaxNumparamStack'); + + var $nesting = [self].concat($parent_nesting), $MaxNumparamStack_initialize$1, $MaxNumparamStack_cant_have_numparams$excl$2, $MaxNumparamStack_can_have_numparams$ques$3, $MaxNumparamStack_register$4, $MaxNumparamStack_top$5, $MaxNumparamStack_push$6, $MaxNumparamStack_pop$7, $MaxNumparamStack_set$8; + + self.$$prototype.stack = nil; + + + Opal.def(self, '$initialize', $MaxNumparamStack_initialize$1 = function $$initialize() { + var self = this; + + return (self.stack = []) + }, $MaxNumparamStack_initialize$1.$$arity = 0); + + Opal.def(self, '$cant_have_numparams!', $MaxNumparamStack_cant_have_numparams$excl$2 = function() { + var self = this; + + return self.$set(-1) + }, $MaxNumparamStack_cant_have_numparams$excl$2.$$arity = 0); + + Opal.def(self, '$can_have_numparams?', $MaxNumparamStack_can_have_numparams$ques$3 = function() { + var self = this; + + return $rb_ge(self.$top(), 0) + }, $MaxNumparamStack_can_have_numparams$ques$3.$$arity = 0); + + Opal.def(self, '$register', $MaxNumparamStack_register$4 = function $$register(numparam) { + var self = this; + + return self.$set([self.$top(), numparam].$max()) + }, $MaxNumparamStack_register$4.$$arity = 1); + + Opal.def(self, '$top', $MaxNumparamStack_top$5 = function $$top() { + var self = this; + + return self.stack.$last() + }, $MaxNumparamStack_top$5.$$arity = 0); + + Opal.def(self, '$push', $MaxNumparamStack_push$6 = function $$push() { + var self = this; + + return self.stack.$push(0) + }, $MaxNumparamStack_push$6.$$arity = 0); + + Opal.def(self, '$pop', $MaxNumparamStack_pop$7 = function $$pop() { + var self = this; + + return self.stack.$pop() + }, $MaxNumparamStack_pop$7.$$arity = 0); + self.$private(); + return (Opal.def(self, '$set', $MaxNumparamStack_set$8 = function $$set(value) { + var self = this; + + + self.stack.$pop(); + return self.stack.$push(value); + }, $MaxNumparamStack_set$8.$$arity = 1), nil) && 'set'; + })($$($nesting, 'Lexer'), null, $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["parser/builders/default"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -37846,169 +43333,191 @@ Opal.modules["parser/builders/default"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - Opal.add_stubs(['$attr_accessor', '$n0', '$token_map', '$numeric', '$n', '$value', '$new', '$loc', '$private', '$updated', '$-@', '$join', '$expression', '$string_value', '$delimited_string_map', '$unquoted_map', '$collapse_string_parts?', '$nil?', '$first', '$children', '$string_map', '$prefix_string_map', '$to_sym', '$collection_map', '$==', '$version', '$empty?', '$diagnostic', '$!', '$type', '$dedent', '$each', '$interrupt', '$map', '$uniq', '$sort', '$each_char', '$to_proc', '$static_regexp', '$message', '$<<', '$regexp_map', '$unary_op_map', '$===', '$binary_op_map', '$!=', '$%', '$size', '$last', '$each_slice', '$pair_keyword_map', '$pair_quoted_map', '$symbol_compose', '$variable_map', '$name', '$source_buffer', '$dup', '$line', '$declared?', '$static_env', '$var_send_map', '$constant_map', '$in_def?', '$declare', '$with_expression', '$with_operator', '$join_exprs', '$[]', '$module_definition_map', '$definition_map', '$keyword_map', '$check_duplicate_args', '$arg_prefix_map', '$kwarg_map', '$emit_procarg0', '$class', '$resize', '$-', '$end', '$call_type_for_dot', '$send_map', '$emit_lambda', '$expr_map', '$keyword', '$include?', '$block_map', '$array', '$+', '$send_index_map', '$send_binary_op_map', '$static_regexp_node', '$names', '$send_unary_op_map', '$check_condition', '$condition_map', '$keyword_mod_map', '$ternary_map', '$for_map', '$>', '$count', '$rescue_body_map', '$any?', '$eh_keyword_map', '$push', '$none?', '$one?', '$begin', '$<=', '$[]=', '$arg_name_collides?', '$begin_pos', '$end_pos', '$start_with?', '$static_string', '$encode', '$valid_encoding?', '$process', '$diagnostics', '$send']); + Opal.add_stubs(['$attr_accessor', '$n0', '$token_map', '$numeric', '$n', '$value', '$new', '$loc', '$private', '$===', '$+@', '$-@', '$updated', '$join', '$expression', '$string_value', '$delimited_string_map', '$unquoted_map', '$collapse_string_parts?', '$nil?', '$first', '$children', '$string_map', '$prefix_string_map', '$to_sym', '$collection_map', '$==', '$version', '$empty?', '$diagnostic', '$!', '$type', '$dedent', '$each', '$interrupt', '$map', '$uniq', '$sort', '$each_char', '$to_proc', '$static_regexp', '$message', '$<<', '$regexp_map', '$unary_op_map', '$binary_op_map', '$!=', '$%', '$size', '$last', '$each_slice', '$pair_keyword_map', '$pair_quoted_map', '$symbol_compose', '$range_map', '$variable_map', '$to_i', '$name', '$source_buffer', '$dup', '$line', '$emit_encoding', '$class', '$declared?', '$static_env', '$var_send_map', '$constant_map', '$dynamic_const_definition_allowed?', '$context', '$declare', '$with_expression', '$with_operator', '$join_exprs', '$[]', '$module_definition_map', '$definition_map', '$keyword_map', '$check_duplicate_args', '$arg_prefix_map', '$kwarg_map', '$emit_procarg0', '$emit_arg_inside_procarg0', '$location', '$resize', '$-', '$end', '$call_type_for_dot', '$send_map', '$emit_lambda', '$expr_map', '$keyword', '$include?', '$block_map', '$array', '$+', '$emit_index', '$index_map', '$send_index_map', '$send_binary_op_map', '$static_regexp_node', '$names', '$send_unary_op_map', '$check_condition', '$condition_map', '$keyword_mod_map', '$ternary_map', '$for_map', '$>', '$count', '$rescue_body_map', '$any?', '$eh_keyword_map', '$push', '$none?', '$one?', '$begin', '$<=', '$check_duplicate_arg', '$is_a?', '$[]=', '$arg_name_collides?', '$with', '$begin_pos', '$end_pos', '$adjust', '$start_with?', '$static_string', '$encode', '$valid_encoding?', '$process', '$diagnostics', '$send']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Default(){}; - var self = $Default = $klass($base, $super, 'Default', $Default); + var self = $klass($base, $super, 'Default'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Default_initialize_2, TMP_Default_nil_3, TMP_Default_true_4, TMP_Default_false_5, TMP_Default_integer_6, TMP_Default_float_7, TMP_Default_rational_8, TMP_Default_complex_9, TMP_Default_numeric_10, TMP_Default_negate_11, TMP_Default___LINE___12, TMP_Default_string_13, TMP_Default_string_internal_14, TMP_Default_string_compose_15, TMP_Default_character_16, TMP_Default___FILE___17, TMP_Default_symbol_18, TMP_Default_symbol_internal_19, TMP_Default_symbol_compose_20, TMP_Default_xstring_compose_21, TMP_Default_dedent_string_23, TMP_Default_regexp_options_24, TMP_Default_regexp_compose_25, TMP_Default_array_26, TMP_Default_splat_27, TMP_Default_word_28, TMP_Default_words_compose_29, TMP_Default_symbols_compose_31, TMP_Default_pair_32, TMP_Default_pair_list_18_34, TMP_Default_pair_keyword_35, TMP_Default_pair_quoted_36, TMP_Default_kwsplat_37, TMP_Default_associate_38, TMP_Default_range_inclusive_39, TMP_Default_range_exclusive_40, TMP_Default_self_41, TMP_Default_ident_42, TMP_Default_ivar_43, TMP_Default_gvar_44, TMP_Default_cvar_45, TMP_Default_back_ref_46, TMP_Default_nth_ref_47, TMP_Default_accessible_48, TMP_Default_const_49, TMP_Default_const_global_50, TMP_Default_const_fetch_51, TMP_Default___ENCODING___52, TMP_Default_assignable_53, TMP_Default_const_op_assignable_54, TMP_Default_assign_55, TMP_Default_op_assign_56, TMP_Default_multi_lhs_57, TMP_Default_multi_assign_58, TMP_Default_def_class_59, TMP_Default_def_sclass_60, TMP_Default_def_module_61, TMP_Default_def_method_62, TMP_Default_def_singleton_63, TMP_Default_undef_method_64, TMP_Default_alias_65, TMP_Default_args_66, TMP_Default_arg_67, TMP_Default_optarg_68, TMP_Default_restarg_69, TMP_Default_kwarg_70, TMP_Default_kwoptarg_71, TMP_Default_kwrestarg_72, TMP_Default_shadowarg_73, TMP_Default_blockarg_74, TMP_Default_procarg0_75, TMP_Default_arg_expr_76, TMP_Default_restarg_expr_77, TMP_Default_blockarg_expr_78, TMP_Default_objc_kwarg_79, TMP_Default_objc_restarg_80, TMP_Default_call_type_for_dot_81, TMP_Default_call_method_82, TMP_Default_call_lambda_83, TMP_Default_block_84, TMP_Default_block_pass_85, TMP_Default_objc_varargs_86, TMP_Default_attr_asgn_87, TMP_Default_index_88, TMP_Default_index_asgn_89, TMP_Default_binary_op_90, TMP_Default_match_op_92, TMP_Default_unary_op_93, TMP_Default_not_op_94, TMP_Default_logical_op_95, TMP_Default_condition_96, TMP_Default_condition_mod_97, TMP_Default_ternary_98, TMP_Default_when_99, TMP_Default_case_100, TMP_Default_loop_101, TMP_Default_loop_mod_102, TMP_Default_for_103, TMP_Default_keyword_cmd_104, TMP_Default_preexe_105, TMP_Default_postexe_106, TMP_Default_rescue_body_107, TMP_Default_begin_body_108, TMP_Default_compstmt_109, TMP_Default_begin_110, TMP_Default_begin_keyword_111, TMP_Default_check_condition_112, TMP_Default_check_duplicate_args_114, TMP_Default_arg_name_collides$q_115, TMP_Default_n_116, TMP_Default_n0_117, TMP_Default_join_exprs_118, TMP_Default_token_map_119, TMP_Default_delimited_string_map_120, TMP_Default_prefix_string_map_121, TMP_Default_unquoted_map_122, TMP_Default_pair_keyword_map_123, TMP_Default_pair_quoted_map_124, TMP_Default_expr_map_125, TMP_Default_collection_map_126, TMP_Default_string_map_127, TMP_Default_regexp_map_128, TMP_Default_constant_map_129, TMP_Default_variable_map_130, TMP_Default_binary_op_map_131, TMP_Default_unary_op_map_132, TMP_Default_arg_prefix_map_133, TMP_Default_kwarg_map_134, TMP_Default_module_definition_map_135, TMP_Default_definition_map_136, TMP_Default_send_map_137, TMP_Default_var_send_map_138, TMP_Default_send_binary_op_map_139, TMP_Default_send_unary_op_map_140, TMP_Default_send_index_map_141, TMP_Default_block_map_142, TMP_Default_keyword_map_143, TMP_Default_keyword_mod_map_144, TMP_Default_condition_map_145, TMP_Default_ternary_map_146, TMP_Default_for_map_147, TMP_Default_rescue_body_map_148, TMP_Default_eh_keyword_map_149, TMP_Default_static_string_151, TMP_Default_static_regexp_152, TMP_Default_static_regexp_node_153, TMP_Default_collapse_string_parts$q_154, TMP_Default_value_155, $a, TMP_Default_string_value_156, TMP_Default_loc_157, TMP_Default_diagnostic_158; + var $nesting = [self].concat($parent_nesting), $Default_initialize$2, $Default_nil$3, $Default_true$4, $Default_false$5, $Default_integer$6, $Default_float$7, $Default_rational$8, $Default_complex$9, $Default_numeric$10, $Default_unary_num$11, $Default___LINE__$12, $Default_string$13, $Default_string_internal$14, $Default_string_compose$15, $Default_character$16, $Default___FILE__$17, $Default_symbol$18, $Default_symbol_internal$19, $Default_symbol_compose$20, $Default_xstring_compose$21, $Default_dedent_string$22, $Default_regexp_options$24, $Default_regexp_compose$25, $Default_array$26, $Default_splat$27, $Default_word$28, $Default_words_compose$29, $Default_symbols_compose$30, $Default_pair$32, $Default_pair_list_18$33, $Default_pair_keyword$35, $Default_pair_quoted$36, $Default_kwsplat$37, $Default_associate$38, $Default_range_inclusive$39, $Default_range_exclusive$40, $Default_self$41, $Default_ident$42, $Default_ivar$43, $Default_gvar$44, $Default_cvar$45, $Default_numparam$46, $Default_back_ref$47, $Default_nth_ref$48, $Default_accessible$49, $Default_const$50, $Default_const_global$51, $Default_const_fetch$52, $Default___ENCODING__$53, $Default_assignable$54, $Default_const_op_assignable$55, $Default_assign$56, $Default_op_assign$57, $Default_multi_lhs$58, $Default_multi_assign$59, $Default_def_class$60, $Default_def_sclass$61, $Default_def_module$62, $Default_def_method$63, $Default_def_singleton$64, $Default_undef_method$65, $Default_alias$66, $Default_args$67, $Default_numargs$68, $Default_arg$69, $Default_optarg$70, $Default_restarg$71, $Default_kwarg$72, $Default_kwoptarg$73, $Default_kwrestarg$74, $Default_kwnilarg$75, $Default_shadowarg$76, $Default_blockarg$77, $Default_procarg0$78, $Default_arg_expr$79, $Default_restarg_expr$80, $Default_blockarg_expr$81, $Default_objc_kwarg$82, $Default_objc_restarg$83, $Default_call_type_for_dot$84, $Default_call_method$85, $Default_call_lambda$86, $Default_block$87, $Default_block_pass$88, $Default_objc_varargs$89, $Default_attr_asgn$90, $Default_index$91, $Default_index_asgn$92, $Default_binary_op$93, $Default_match_op$94, $Default_unary_op$96, $Default_not_op$97, $Default_method_ref$98, $Default_logical_op$99, $Default_condition$100, $Default_condition_mod$101, $Default_ternary$102, $Default_when$103, $Default_case$104, $Default_loop$105, $Default_loop_mod$106, $Default_for$107, $Default_keyword_cmd$108, $Default_preexe$109, $Default_postexe$110, $Default_rescue_body$111, $Default_begin_body$112, $Default_compstmt$113, $Default_begin$114, $Default_begin_keyword$115, $Default_check_condition$116, $Default_check_duplicate_args$117, $Default_check_duplicate_arg$119, $Default_arg_name_collides$ques$120, $Default_n$121, $Default_n0$122, $Default_join_exprs$123, $Default_token_map$124, $Default_delimited_string_map$125, $Default_prefix_string_map$126, $Default_unquoted_map$127, $Default_pair_keyword_map$128, $Default_pair_quoted_map$129, $Default_expr_map$130, $Default_collection_map$131, $Default_string_map$132, $Default_regexp_map$133, $Default_constant_map$134, $Default_variable_map$135, $Default_binary_op_map$136, $Default_unary_op_map$137, $Default_range_map$138, $Default_arg_prefix_map$139, $Default_kwarg_map$140, $Default_module_definition_map$141, $Default_definition_map$142, $Default_send_map$143, $Default_var_send_map$144, $Default_send_binary_op_map$145, $Default_send_unary_op_map$146, $Default_index_map$147, $Default_send_index_map$148, $Default_block_map$149, $Default_keyword_map$150, $Default_keyword_mod_map$151, $Default_condition_map$152, $Default_ternary_map$153, $Default_for_map$154, $Default_rescue_body_map$155, $Default_eh_keyword_map$156, $Default_static_string$157, $Default_static_regexp$159, $Default_static_regexp_node$160, $Default_collapse_string_parts$ques$161, $Default_value$162, $Default_string_value$163, $Default_loc$164, $Default_diagnostic$165; - def.parser = def.emit_file_line_as_literals = nil; + self.$$prototype.parser = self.$$prototype.emit_file_line_as_literals = nil; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("emit_lambda") })(Opal.get_singleton_class(self), $nesting); self.emit_lambda = false; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$attr_accessor("emit_procarg0") })(Opal.get_singleton_class(self), $nesting); self.emit_procarg0 = false; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_modernize_1; + var $nesting = [self].concat($parent_nesting); + + return self.$attr_accessor("emit_encoding") + })(Opal.get_singleton_class(self), $nesting); + self.emit_encoding = false; + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting); + + return self.$attr_accessor("emit_index") + })(Opal.get_singleton_class(self), $nesting); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting); - return (Opal.defn(self, '$modernize', TMP_modernize_1 = function $$modernize() { + return self.$attr_accessor("emit_arg_inside_procarg0") + })(Opal.get_singleton_class(self), $nesting); + self.emit_index = false; + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $modernize$1; + + return (Opal.def(self, '$modernize', $modernize$1 = function $$modernize() { var self = this; self.emit_lambda = true; - return (self.emit_procarg0 = true); - }, TMP_modernize_1.$$arity = 0), nil) && 'modernize' + self.emit_procarg0 = true; + self.emit_encoding = true; + self.emit_index = true; + return (self.emit_arg_inside_procarg0 = true); + }, $modernize$1.$$arity = 0), nil) && 'modernize' })(Opal.get_singleton_class(self), $nesting); self.$attr_accessor("parser"); self.$attr_accessor("emit_file_line_as_literals"); - Opal.defn(self, '$initialize', TMP_Default_initialize_2 = function $$initialize() { + Opal.def(self, '$initialize', $Default_initialize$2 = function $$initialize() { var self = this; return (self.emit_file_line_as_literals = true) - }, TMP_Default_initialize_2.$$arity = 0); + }, $Default_initialize$2.$$arity = 0); - Opal.defn(self, '$nil', TMP_Default_nil_3 = function $$nil(nil_t) { + Opal.def(self, '$nil', $Default_nil$3 = function $$nil(nil_t) { var self = this; return self.$n0("nil", self.$token_map(nil_t)) - }, TMP_Default_nil_3.$$arity = 1); + }, $Default_nil$3.$$arity = 1); - Opal.defn(self, '$true', TMP_Default_true_4 = function(true_t) { + Opal.def(self, '$true', $Default_true$4 = function(true_t) { var self = this; return self.$n0("true", self.$token_map(true_t)) - }, TMP_Default_true_4.$$arity = 1); + }, $Default_true$4.$$arity = 1); - Opal.defn(self, '$false', TMP_Default_false_5 = function(false_t) { + Opal.def(self, '$false', $Default_false$5 = function(false_t) { var self = this; return self.$n0("false", self.$token_map(false_t)) - }, TMP_Default_false_5.$$arity = 1); + }, $Default_false$5.$$arity = 1); - Opal.defn(self, '$integer', TMP_Default_integer_6 = function $$integer(integer_t) { + Opal.def(self, '$integer', $Default_integer$6 = function $$integer(integer_t) { var self = this; return self.$numeric("int", integer_t) - }, TMP_Default_integer_6.$$arity = 1); + }, $Default_integer$6.$$arity = 1); - Opal.defn(self, '$float', TMP_Default_float_7 = function(float_t) { + Opal.def(self, '$float', $Default_float$7 = function(float_t) { var self = this; return self.$numeric("float", float_t) - }, TMP_Default_float_7.$$arity = 1); + }, $Default_float$7.$$arity = 1); - Opal.defn(self, '$rational', TMP_Default_rational_8 = function $$rational(rational_t) { + Opal.def(self, '$rational', $Default_rational$8 = function $$rational(rational_t) { var self = this; return self.$numeric("rational", rational_t) - }, TMP_Default_rational_8.$$arity = 1); + }, $Default_rational$8.$$arity = 1); - Opal.defn(self, '$complex', TMP_Default_complex_9 = function $$complex(complex_t) { + Opal.def(self, '$complex', $Default_complex$9 = function $$complex(complex_t) { var self = this; return self.$numeric("complex", complex_t) - }, TMP_Default_complex_9.$$arity = 1); + }, $Default_complex$9.$$arity = 1); - Opal.defn(self, '$numeric', TMP_Default_numeric_10 = function $$numeric(kind, token) { + Opal.def(self, '$numeric', $Default_numeric$10 = function $$numeric(kind, token) { var self = this; - return self.$n(kind, [self.$value(token)], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(nil, self.$loc(token))) - }, TMP_Default_numeric_10.$$arity = 2); + return self.$n(kind, [self.$value(token)], $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(nil, self.$loc(token))) + }, $Default_numeric$10.$$arity = 2); self.$private("numeric"); - Opal.defn(self, '$negate', TMP_Default_negate_11 = function $$negate(uminus_t, numeric) { - var $a, self = this, value = nil, operator_loc = nil; + Opal.def(self, '$unary_num', $Default_unary_num$11 = function $$unary_num(unary_t, numeric) { + var $a, self = this, value = nil, operator_loc = nil, $case = nil; $a = [].concat(Opal.to_a(numeric)), (value = ($a[0] == null ? nil : $a[0])), $a; - operator_loc = self.$loc(uminus_t); - return numeric.$updated(nil, [value['$-@']()], $hash2(["location"], {"location": Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(operator_loc, operator_loc.$join(numeric.$loc().$expression()))})); - }, TMP_Default_negate_11.$$arity = 2); + operator_loc = self.$loc(unary_t); + $case = self.$value(unary_t); + if ("+"['$===']($case)) {value = value['$+@']()} + else if ("-"['$===']($case)) {value = value['$-@']()}; + return numeric.$updated(nil, [value], $hash2(["location"], {"location": $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(operator_loc, operator_loc.$join(numeric.$loc().$expression()))})); + }, $Default_unary_num$11.$$arity = 2); - Opal.defn(self, '$__LINE__', TMP_Default___LINE___12 = function $$__LINE__(__LINE__t) { + Opal.def(self, '$__LINE__', $Default___LINE__$12 = function $$__LINE__(__LINE__t) { var self = this; return self.$n0("__LINE__", self.$token_map(__LINE__t)) - }, TMP_Default___LINE___12.$$arity = 1); + }, $Default___LINE__$12.$$arity = 1); - Opal.defn(self, '$string', TMP_Default_string_13 = function $$string(string_t) { + Opal.def(self, '$string', $Default_string$13 = function $$string(string_t) { var self = this; return self.$n("str", [self.$string_value(string_t)], self.$delimited_string_map(string_t)) - }, TMP_Default_string_13.$$arity = 1); + }, $Default_string$13.$$arity = 1); - Opal.defn(self, '$string_internal', TMP_Default_string_internal_14 = function $$string_internal(string_t) { + Opal.def(self, '$string_internal', $Default_string_internal$14 = function $$string_internal(string_t) { var self = this; return self.$n("str", [self.$string_value(string_t)], self.$unquoted_map(string_t)) - }, TMP_Default_string_internal_14.$$arity = 1); + }, $Default_string_internal$14.$$arity = 1); - Opal.defn(self, '$string_compose', TMP_Default_string_compose_15 = function $$string_compose(begin_t, parts, end_t) { + Opal.def(self, '$string_compose', $Default_string_compose$15 = function $$string_compose(begin_t, parts, end_t) { var $a, self = this; if ($truthy(self['$collapse_string_parts?'](parts))) { if ($truthy(($truthy($a = begin_t['$nil?']()) ? end_t['$nil?']() : $a))) { return parts.$first() - } else { + } else { return self.$n("str", parts.$first().$children(), self.$string_map(begin_t, parts, end_t)) } - } else { + } else { return self.$n("dstr", [].concat(Opal.to_a(parts)), self.$string_map(begin_t, parts, end_t)) } - }, TMP_Default_string_compose_15.$$arity = 3); + }, $Default_string_compose$15.$$arity = 3); - Opal.defn(self, '$character', TMP_Default_character_16 = function $$character(char_t) { + Opal.def(self, '$character', $Default_character$16 = function $$character(char_t) { var self = this; return self.$n("str", [self.$string_value(char_t)], self.$prefix_string_map(char_t)) - }, TMP_Default_character_16.$$arity = 1); + }, $Default_character$16.$$arity = 1); - Opal.defn(self, '$__FILE__', TMP_Default___FILE___17 = function $$__FILE__(__FILE__t) { + Opal.def(self, '$__FILE__', $Default___FILE__$17 = function $$__FILE__(__FILE__t) { var self = this; return self.$n0("__FILE__", self.$token_map(__FILE__t)) - }, TMP_Default___FILE___17.$$arity = 1); + }, $Default___FILE__$17.$$arity = 1); - Opal.defn(self, '$symbol', TMP_Default_symbol_18 = function $$symbol(symbol_t) { + Opal.def(self, '$symbol', $Default_symbol$18 = function $$symbol(symbol_t) { var self = this; return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$prefix_string_map(symbol_t)) - }, TMP_Default_symbol_18.$$arity = 1); + }, $Default_symbol$18.$$arity = 1); - Opal.defn(self, '$symbol_internal', TMP_Default_symbol_internal_19 = function $$symbol_internal(symbol_t) { + Opal.def(self, '$symbol_internal', $Default_symbol_internal$19 = function $$symbol_internal(symbol_t) { var self = this; return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$unquoted_map(symbol_t)) - }, TMP_Default_symbol_internal_19.$$arity = 1); + }, $Default_symbol_internal$19.$$arity = 1); - Opal.defn(self, '$symbol_compose', TMP_Default_symbol_compose_20 = function $$symbol_compose(begin_t, parts, end_t) { + Opal.def(self, '$symbol_compose', $Default_symbol_compose$20 = function $$symbol_compose(begin_t, parts, end_t) { var $a, self = this, str = nil; if ($truthy(self['$collapse_string_parts?'](parts))) { @@ -38017,50 +43526,55 @@ Opal.modules["parser/builders/default"] = function(Opal) { return self.$n("sym", [str.$children().$first().$to_sym()], self.$collection_map(begin_t, str.$loc().$expression(), end_t)); } else if ($truthy((($a = self.parser.$version()['$=='](18)) ? parts['$empty?']() : self.parser.$version()['$=='](18)))) { return self.$diagnostic("error", "empty_symbol", nil, self.$loc(begin_t).$join(self.$loc(end_t))) - } else { + } else { return self.$n("dsym", [].concat(Opal.to_a(parts)), self.$collection_map(begin_t, parts, end_t)) } - }, TMP_Default_symbol_compose_20.$$arity = 3); + }, $Default_symbol_compose$20.$$arity = 3); - Opal.defn(self, '$xstring_compose', TMP_Default_xstring_compose_21 = function $$xstring_compose(begin_t, parts, end_t) { + Opal.def(self, '$xstring_compose', $Default_xstring_compose$21 = function $$xstring_compose(begin_t, parts, end_t) { var self = this; return self.$n("xstr", [].concat(Opal.to_a(parts)), self.$string_map(begin_t, parts, end_t)) - }, TMP_Default_xstring_compose_21.$$arity = 3); + }, $Default_xstring_compose$21.$$arity = 3); - Opal.defn(self, '$dedent_string', TMP_Default_dedent_string_23 = function $$dedent_string(node, dedent_level) { - var $a, TMP_22, self = this, dedenter = nil, str = nil; + Opal.def(self, '$dedent_string', $Default_dedent_string$22 = function $$dedent_string(node, dedent_level) { + var $a, $$23, self = this, dedenter = nil, str = nil; if ($truthy(dedent_level['$nil?']()['$!']())) { - dedenter = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Lexer'), 'Dedenter').$new(dedent_level); + dedenter = $$$($$($nesting, 'Lexer'), 'Dedenter').$new(dedent_level); if (node.$type()['$==']("str")) { str = node.$children().$first(); dedenter.$dedent(str); } else if ($truthy(($truthy($a = node.$type()['$==']("dstr")) ? $a : node.$type()['$==']("xstr")))) { - $send(node.$children(), 'each', [], (TMP_22 = function(str_node){var self = TMP_22.$$s || this; -if (str_node == null) str_node = nil; - if (str_node.$type()['$==']("str")) { + $send(node.$children(), 'each', [], ($$23 = function(str_node){var self = $$23.$$s || this; + + + + if (str_node == null) { + str_node = nil; + }; + if (str_node.$type()['$==']("str")) { str = str_node.$children().$first(); return dedenter.$dedent(str); - } else { + } else { return dedenter.$interrupt() - }}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22))};}; + };}, $$23.$$s = self, $$23.$$arity = 1, $$23))};}; return node; - }, TMP_Default_dedent_string_23.$$arity = 2); + }, $Default_dedent_string$22.$$arity = 2); - Opal.defn(self, '$regexp_options', TMP_Default_regexp_options_24 = function $$regexp_options(regopt_t) { + Opal.def(self, '$regexp_options', $Default_regexp_options$24 = function $$regexp_options(regopt_t) { var self = this, options = nil; options = $send(self.$value(regopt_t).$each_char().$sort().$uniq(), 'map', [], "to_sym".$to_proc()); return self.$n("regopt", options, self.$token_map(regopt_t)); - }, TMP_Default_regexp_options_24.$$arity = 1); + }, $Default_regexp_options$24.$$arity = 1); - Opal.defn(self, '$regexp_compose', TMP_Default_regexp_compose_25 = function $$regexp_compose(begin_t, parts, end_t, options) { + Opal.def(self, '$regexp_compose', $Default_regexp_compose$25 = function $$regexp_compose(begin_t, parts, end_t, options) { var self = this, e = nil; @@ -38068,221 +43582,247 @@ if (str_node == null) str_node = nil; try { self.$static_regexp(parts, options) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'RegexpError')])) {e = $err; + if (Opal.rescue($err, [$$($nesting, 'RegexpError')])) {e = $err; try { self.$diagnostic("error", "invalid_regexp", $hash2(["message"], {"message": e.$message()}), self.$loc(begin_t).$join(self.$loc(end_t))) } finally { Opal.pop_exception() } } else { throw $err; } };; return self.$n("regexp", parts['$<<'](options), self.$regexp_map(begin_t, end_t, options)); - }, TMP_Default_regexp_compose_25.$$arity = 4); + }, $Default_regexp_compose$25.$$arity = 4); - Opal.defn(self, '$array', TMP_Default_array_26 = function $$array(begin_t, elements, end_t) { + Opal.def(self, '$array', $Default_array$26 = function $$array(begin_t, elements, end_t) { var self = this; return self.$n("array", elements, self.$collection_map(begin_t, elements, end_t)) - }, TMP_Default_array_26.$$arity = 3); + }, $Default_array$26.$$arity = 3); - Opal.defn(self, '$splat', TMP_Default_splat_27 = function $$splat(star_t, arg) { + Opal.def(self, '$splat', $Default_splat$27 = function $$splat(star_t, arg) { var self = this; + + if (arg == null) { arg = nil; - } + }; if ($truthy(arg['$nil?']())) { return self.$n0("splat", self.$unary_op_map(star_t)) - } else { + } else { return self.$n("splat", [arg], self.$unary_op_map(star_t, arg)) - } - }, TMP_Default_splat_27.$$arity = -2); + }; + }, $Default_splat$27.$$arity = -2); - Opal.defn(self, '$word', TMP_Default_word_28 = function $$word(parts) { + Opal.def(self, '$word', $Default_word$28 = function $$word(parts) { var self = this; if ($truthy(self['$collapse_string_parts?'](parts))) { return parts.$first() - } else { + } else { return self.$n("dstr", [].concat(Opal.to_a(parts)), self.$collection_map(nil, parts, nil)) } - }, TMP_Default_word_28.$$arity = 1); + }, $Default_word$28.$$arity = 1); - Opal.defn(self, '$words_compose', TMP_Default_words_compose_29 = function $$words_compose(begin_t, parts, end_t) { + Opal.def(self, '$words_compose', $Default_words_compose$29 = function $$words_compose(begin_t, parts, end_t) { var self = this; return self.$n("array", [].concat(Opal.to_a(parts)), self.$collection_map(begin_t, parts, end_t)) - }, TMP_Default_words_compose_29.$$arity = 3); + }, $Default_words_compose$29.$$arity = 3); - Opal.defn(self, '$symbols_compose', TMP_Default_symbols_compose_31 = function $$symbols_compose(begin_t, parts, end_t) { - var TMP_30, self = this; + Opal.def(self, '$symbols_compose', $Default_symbols_compose$30 = function $$symbols_compose(begin_t, parts, end_t) { + var $$31, self = this; - parts = $send(parts, 'map', [], (TMP_30 = function(part){var self = TMP_30.$$s || this, $a, $case = nil, value = nil; -if (part == null) part = nil; - return (function() {$case = part.$type(); + parts = $send(parts, 'map', [], ($$31 = function(part){var self = $$31.$$s || this, $a, $case = nil, value = nil; + + + + if (part == null) { + part = nil; + }; + return (function() {$case = part.$type(); if ("str"['$===']($case)) { $a = [].concat(Opal.to_a(part)), (value = ($a[0] == null ? nil : $a[0])), $a; return part.$updated("sym", [value.$to_sym()]);} else if ("dstr"['$===']($case)) {return part.$updated("dsym")} - else {return part}})()}, TMP_30.$$s = self, TMP_30.$$arity = 1, TMP_30)); + else {return part}})();}, $$31.$$s = self, $$31.$$arity = 1, $$31)); return self.$n("array", [].concat(Opal.to_a(parts)), self.$collection_map(begin_t, parts, end_t)); - }, TMP_Default_symbols_compose_31.$$arity = 3); + }, $Default_symbols_compose$30.$$arity = 3); - Opal.defn(self, '$pair', TMP_Default_pair_32 = function $$pair(key, assoc_t, value) { + Opal.def(self, '$pair', $Default_pair$32 = function $$pair(key, assoc_t, value) { var self = this; return self.$n("pair", [key, value], self.$binary_op_map(key, assoc_t, value)) - }, TMP_Default_pair_32.$$arity = 3); + }, $Default_pair$32.$$arity = 3); - Opal.defn(self, '$pair_list_18', TMP_Default_pair_list_18_34 = function $$pair_list_18(list) { - var TMP_33, self = this; + Opal.def(self, '$pair_list_18', $Default_pair_list_18$33 = function $$pair_list_18(list) { + var $$34, self = this; if ($truthy(list.$size()['$%'](2)['$!='](0))) { return self.$diagnostic("error", "odd_hash", nil, list.$last().$loc().$expression()) - } else { - return $send(list.$each_slice(2), 'map', [], (TMP_33 = function(key, value){var self = TMP_33.$$s || this; -if (key == null) key = nil;if (value == null) value = nil; - return self.$n("pair", [key, value], self.$binary_op_map(key, nil, value))}, TMP_33.$$s = self, TMP_33.$$arity = 2, TMP_33)) + } else { + return $send(list.$each_slice(2), 'map', [], ($$34 = function(key, value){var self = $$34.$$s || this; + + + + if (key == null) { + key = nil; + }; + + if (value == null) { + value = nil; + }; + return self.$n("pair", [key, value], self.$binary_op_map(key, nil, value));}, $$34.$$s = self, $$34.$$arity = 2, $$34)) } - }, TMP_Default_pair_list_18_34.$$arity = 1); + }, $Default_pair_list_18$33.$$arity = 1); - Opal.defn(self, '$pair_keyword', TMP_Default_pair_keyword_35 = function $$pair_keyword(key_t, value) { + Opal.def(self, '$pair_keyword', $Default_pair_keyword$35 = function $$pair_keyword(key_t, value) { var $a, $b, self = this, key_map = nil, pair_map = nil, key = nil; $b = self.$pair_keyword_map(key_t, value), $a = Opal.to_ary($b), (key_map = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; key = self.$n("sym", [self.$value(key_t).$to_sym()], key_map); return self.$n("pair", [key, value], pair_map); - }, TMP_Default_pair_keyword_35.$$arity = 2); + }, $Default_pair_keyword$35.$$arity = 2); - Opal.defn(self, '$pair_quoted', TMP_Default_pair_quoted_36 = function $$pair_quoted(begin_t, parts, end_t, value) { + Opal.def(self, '$pair_quoted', $Default_pair_quoted$36 = function $$pair_quoted(begin_t, parts, end_t, value) { var $a, $b, self = this, pair_map = nil, key = nil; $b = self.$pair_quoted_map(begin_t, end_t, value), $a = Opal.to_ary($b), (end_t = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; key = self.$symbol_compose(begin_t, parts, end_t); return self.$n("pair", [key, value], pair_map); - }, TMP_Default_pair_quoted_36.$$arity = 4); + }, $Default_pair_quoted$36.$$arity = 4); - Opal.defn(self, '$kwsplat', TMP_Default_kwsplat_37 = function $$kwsplat(dstar_t, arg) { + Opal.def(self, '$kwsplat', $Default_kwsplat$37 = function $$kwsplat(dstar_t, arg) { var self = this; return self.$n("kwsplat", [arg], self.$unary_op_map(dstar_t, arg)) - }, TMP_Default_kwsplat_37.$$arity = 2); + }, $Default_kwsplat$37.$$arity = 2); - Opal.defn(self, '$associate', TMP_Default_associate_38 = function $$associate(begin_t, pairs, end_t) { + Opal.def(self, '$associate', $Default_associate$38 = function $$associate(begin_t, pairs, end_t) { var self = this; return self.$n("hash", [].concat(Opal.to_a(pairs)), self.$collection_map(begin_t, pairs, end_t)) - }, TMP_Default_associate_38.$$arity = 3); + }, $Default_associate$38.$$arity = 3); - Opal.defn(self, '$range_inclusive', TMP_Default_range_inclusive_39 = function $$range_inclusive(lhs, dot2_t, rhs) { + Opal.def(self, '$range_inclusive', $Default_range_inclusive$39 = function $$range_inclusive(lhs, dot2_t, rhs) { var self = this; - return self.$n("irange", [lhs, rhs], self.$binary_op_map(lhs, dot2_t, rhs)) - }, TMP_Default_range_inclusive_39.$$arity = 3); + return self.$n("irange", [lhs, rhs], self.$range_map(lhs, dot2_t, rhs)) + }, $Default_range_inclusive$39.$$arity = 3); - Opal.defn(self, '$range_exclusive', TMP_Default_range_exclusive_40 = function $$range_exclusive(lhs, dot3_t, rhs) { + Opal.def(self, '$range_exclusive', $Default_range_exclusive$40 = function $$range_exclusive(lhs, dot3_t, rhs) { var self = this; - return self.$n("erange", [lhs, rhs], self.$binary_op_map(lhs, dot3_t, rhs)) - }, TMP_Default_range_exclusive_40.$$arity = 3); + return self.$n("erange", [lhs, rhs], self.$range_map(lhs, dot3_t, rhs)) + }, $Default_range_exclusive$40.$$arity = 3); - Opal.defn(self, '$self', TMP_Default_self_41 = function $$self(token) { + Opal.def(self, '$self', $Default_self$41 = function $$self(token) { var self = this; return self.$n0("self", self.$token_map(token)) - }, TMP_Default_self_41.$$arity = 1); + }, $Default_self$41.$$arity = 1); - Opal.defn(self, '$ident', TMP_Default_ident_42 = function $$ident(token) { + Opal.def(self, '$ident', $Default_ident$42 = function $$ident(token) { var self = this; return self.$n("ident", [self.$value(token).$to_sym()], self.$variable_map(token)) - }, TMP_Default_ident_42.$$arity = 1); + }, $Default_ident$42.$$arity = 1); - Opal.defn(self, '$ivar', TMP_Default_ivar_43 = function $$ivar(token) { + Opal.def(self, '$ivar', $Default_ivar$43 = function $$ivar(token) { var self = this; return self.$n("ivar", [self.$value(token).$to_sym()], self.$variable_map(token)) - }, TMP_Default_ivar_43.$$arity = 1); + }, $Default_ivar$43.$$arity = 1); - Opal.defn(self, '$gvar', TMP_Default_gvar_44 = function $$gvar(token) { + Opal.def(self, '$gvar', $Default_gvar$44 = function $$gvar(token) { var self = this; return self.$n("gvar", [self.$value(token).$to_sym()], self.$variable_map(token)) - }, TMP_Default_gvar_44.$$arity = 1); + }, $Default_gvar$44.$$arity = 1); - Opal.defn(self, '$cvar', TMP_Default_cvar_45 = function $$cvar(token) { + Opal.def(self, '$cvar', $Default_cvar$45 = function $$cvar(token) { var self = this; return self.$n("cvar", [self.$value(token).$to_sym()], self.$variable_map(token)) - }, TMP_Default_cvar_45.$$arity = 1); + }, $Default_cvar$45.$$arity = 1); - Opal.defn(self, '$back_ref', TMP_Default_back_ref_46 = function $$back_ref(token) { + Opal.def(self, '$numparam', $Default_numparam$46 = function $$numparam(token) { + var self = this; + + return self.$n("numparam", [self.$value(token).$to_i()], self.$variable_map(token)) + }, $Default_numparam$46.$$arity = 1); + + Opal.def(self, '$back_ref', $Default_back_ref$47 = function $$back_ref(token) { var self = this; return self.$n("back_ref", [self.$value(token).$to_sym()], self.$token_map(token)) - }, TMP_Default_back_ref_46.$$arity = 1); + }, $Default_back_ref$47.$$arity = 1); - Opal.defn(self, '$nth_ref', TMP_Default_nth_ref_47 = function $$nth_ref(token) { + Opal.def(self, '$nth_ref', $Default_nth_ref$48 = function $$nth_ref(token) { var self = this; return self.$n("nth_ref", [self.$value(token)], self.$token_map(token)) - }, TMP_Default_nth_ref_47.$$arity = 1); + }, $Default_nth_ref$48.$$arity = 1); - Opal.defn(self, '$accessible', TMP_Default_accessible_48 = function $$accessible(node) { + Opal.def(self, '$accessible', $Default_accessible$49 = function $$accessible(node) { var $a, self = this, $case = nil, name = nil; return (function() {$case = node.$type(); if ("__FILE__"['$===']($case)) {if ($truthy(self.emit_file_line_as_literals)) { return self.$n("str", [node.$loc().$expression().$source_buffer().$name()], node.$loc().$dup()) - } else { + } else { return node }} else if ("__LINE__"['$===']($case)) {if ($truthy(self.emit_file_line_as_literals)) { return self.$n("int", [node.$loc().$expression().$line()], node.$loc().$dup()) - } else { + } else { + return node + }} + else if ("__ENCODING__"['$===']($case)) {if ($truthy(self.$class().$emit_encoding()['$!']())) { + return self.$n("const", [self.$n("const", [nil, "Encoding"], nil), "UTF_8"], node.$loc().$dup()) + } else { return node }} - else if ("__ENCODING__"['$===']($case)) {return self.$n("const", [self.$n("const", [nil, "Encoding"], nil), "UTF_8"], node.$loc().$dup())} else if ("ident"['$===']($case)) { $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; if ($truthy(self.parser.$static_env()['$declared?'](name))) { return node.$updated("lvar") - } else { + } else { $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; return self.$n("send", [nil, name], self.$var_send_map(node)); };} else {return node}})() - }, TMP_Default_accessible_48.$$arity = 1); + }, $Default_accessible$49.$$arity = 1); - Opal.defn(self, '$const', TMP_Default_const_49 = function(name_t) { + Opal.def(self, '$const', $Default_const$50 = function(name_t) { var self = this; return self.$n("const", [nil, self.$value(name_t).$to_sym()], self.$constant_map(nil, nil, name_t)) - }, TMP_Default_const_49.$$arity = 1); + }, $Default_const$50.$$arity = 1); - Opal.defn(self, '$const_global', TMP_Default_const_global_50 = function $$const_global(t_colon3, name_t) { + Opal.def(self, '$const_global', $Default_const_global$51 = function $$const_global(t_colon3, name_t) { var self = this, cbase = nil; cbase = self.$n0("cbase", self.$token_map(t_colon3)); return self.$n("const", [cbase, self.$value(name_t).$to_sym()], self.$constant_map(cbase, t_colon3, name_t)); - }, TMP_Default_const_global_50.$$arity = 2); + }, $Default_const_global$51.$$arity = 2); - Opal.defn(self, '$const_fetch', TMP_Default_const_fetch_51 = function $$const_fetch(scope, t_colon2, name_t) { + Opal.def(self, '$const_fetch', $Default_const_fetch$52 = function $$const_fetch(scope, t_colon2, name_t) { var self = this; return self.$n("const", [scope, self.$value(name_t).$to_sym()], self.$constant_map(scope, t_colon2, name_t)) - }, TMP_Default_const_fetch_51.$$arity = 3); + }, $Default_const_fetch$52.$$arity = 3); - Opal.defn(self, '$__ENCODING__', TMP_Default___ENCODING___52 = function $$__ENCODING__(__ENCODING__t) { + Opal.def(self, '$__ENCODING__', $Default___ENCODING__$53 = function $$__ENCODING__(__ENCODING__t) { var self = this; return self.$n0("__ENCODING__", self.$token_map(__ENCODING__t)) - }, TMP_Default___ENCODING___52.$$arity = 1); + }, $Default___ENCODING__$53.$$arity = 1); - Opal.defn(self, '$assignable', TMP_Default_assignable_53 = function $$assignable(node) { + Opal.def(self, '$assignable', $Default_assignable$54 = function $$assignable(node) { var $a, self = this, $case = nil, name = nil; return (function() {$case = node.$type(); @@ -38290,8 +43830,10 @@ if (key == null) key = nil;if (value == null) value = nil; else if ("ivar"['$===']($case)) {return node.$updated("ivasgn")} else if ("gvar"['$===']($case)) {return node.$updated("gvasgn")} else if ("const"['$===']($case)) { - if ($truthy(self.parser['$in_def?']())) { - self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression())}; + if ($truthy(self.parser.$context()['$dynamic_const_definition_allowed?']())) { + } else { + self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression()) + }; return node.$updated("casgn");} else if ("ident"['$===']($case)) { $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; @@ -38300,211 +43842,236 @@ if (key == null) key = nil;if (value == null) value = nil; else if ("nil"['$===']($case) || "self"['$===']($case) || "true"['$===']($case) || "false"['$===']($case) || "__FILE__"['$===']($case) || "__LINE__"['$===']($case) || "__ENCODING__"['$===']($case)) {return self.$diagnostic("error", "invalid_assignment", nil, node.$loc().$expression())} else if ("back_ref"['$===']($case) || "nth_ref"['$===']($case)) {return self.$diagnostic("error", "backref_assignment", nil, node.$loc().$expression())} else { return nil }})() - }, TMP_Default_assignable_53.$$arity = 1); + }, $Default_assignable$54.$$arity = 1); - Opal.defn(self, '$const_op_assignable', TMP_Default_const_op_assignable_54 = function $$const_op_assignable(node) { + Opal.def(self, '$const_op_assignable', $Default_const_op_assignable$55 = function $$const_op_assignable(node) { var self = this; return node.$updated("casgn") - }, TMP_Default_const_op_assignable_54.$$arity = 1); + }, $Default_const_op_assignable$55.$$arity = 1); - Opal.defn(self, '$assign', TMP_Default_assign_55 = function $$assign(lhs, eql_t, rhs) { + Opal.def(self, '$assign', $Default_assign$56 = function $$assign(lhs, eql_t, rhs) { var self = this; return lhs['$<<'](rhs).$updated(nil, nil, $hash2(["location"], {"location": lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs, rhs))})) - }, TMP_Default_assign_55.$$arity = 3); + }, $Default_assign$56.$$arity = 3); - Opal.defn(self, '$op_assign', TMP_Default_op_assign_56 = function $$op_assign(lhs, op_t, rhs) { + Opal.def(self, '$op_assign', $Default_op_assign$57 = function $$op_assign(lhs, op_t, rhs) { var self = this, $case = nil, operator = nil, source_map = nil; return (function() {$case = lhs.$type(); - if ("gvasgn"['$===']($case) || "ivasgn"['$===']($case) || "lvasgn"['$===']($case) || "cvasgn"['$===']($case) || "casgn"['$===']($case) || "send"['$===']($case) || "csend"['$===']($case)) { + if ("gvasgn"['$===']($case) || "ivasgn"['$===']($case) || "lvasgn"['$===']($case) || "cvasgn"['$===']($case) || "casgn"['$===']($case) || "send"['$===']($case) || "csend"['$===']($case) || "index"['$===']($case)) { operator = self.$value(op_t)['$[]']($range(0, -1, false)).$to_sym(); source_map = lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs, rhs)); + if (lhs.$type()['$==']("index")) { + lhs = lhs.$updated("indexasgn")}; return (function() {$case = operator; if ("&&"['$===']($case)) {return self.$n("and_asgn", [lhs, rhs], source_map)} else if ("||"['$===']($case)) {return self.$n("or_asgn", [lhs, rhs], source_map)} else {return self.$n("op_asgn", [lhs, operator, rhs], source_map)}})();} else if ("back_ref"['$===']($case) || "nth_ref"['$===']($case)) {return self.$diagnostic("error", "backref_assignment", nil, lhs.$loc().$expression())} else { return nil }})() - }, TMP_Default_op_assign_56.$$arity = 3); + }, $Default_op_assign$57.$$arity = 3); - Opal.defn(self, '$multi_lhs', TMP_Default_multi_lhs_57 = function $$multi_lhs(begin_t, items, end_t) { + Opal.def(self, '$multi_lhs', $Default_multi_lhs$58 = function $$multi_lhs(begin_t, items, end_t) { var self = this; return self.$n("mlhs", [].concat(Opal.to_a(items)), self.$collection_map(begin_t, items, end_t)) - }, TMP_Default_multi_lhs_57.$$arity = 3); + }, $Default_multi_lhs$58.$$arity = 3); - Opal.defn(self, '$multi_assign', TMP_Default_multi_assign_58 = function $$multi_assign(lhs, eql_t, rhs) { + Opal.def(self, '$multi_assign', $Default_multi_assign$59 = function $$multi_assign(lhs, eql_t, rhs) { var self = this; return self.$n("masgn", [lhs, rhs], self.$binary_op_map(lhs, eql_t, rhs)) - }, TMP_Default_multi_assign_58.$$arity = 3); + }, $Default_multi_assign$59.$$arity = 3); - Opal.defn(self, '$def_class', TMP_Default_def_class_59 = function $$def_class(class_t, name, lt_t, superclass, body, end_t) { + Opal.def(self, '$def_class', $Default_def_class$60 = function $$def_class(class_t, name, lt_t, superclass, body, end_t) { var self = this; return self.$n("class", [name, superclass, body], self.$module_definition_map(class_t, name, lt_t, end_t)) - }, TMP_Default_def_class_59.$$arity = 6); + }, $Default_def_class$60.$$arity = 6); - Opal.defn(self, '$def_sclass', TMP_Default_def_sclass_60 = function $$def_sclass(class_t, lshft_t, expr, body, end_t) { + Opal.def(self, '$def_sclass', $Default_def_sclass$61 = function $$def_sclass(class_t, lshft_t, expr, body, end_t) { var self = this; return self.$n("sclass", [expr, body], self.$module_definition_map(class_t, nil, lshft_t, end_t)) - }, TMP_Default_def_sclass_60.$$arity = 5); + }, $Default_def_sclass$61.$$arity = 5); - Opal.defn(self, '$def_module', TMP_Default_def_module_61 = function $$def_module(module_t, name, body, end_t) { + Opal.def(self, '$def_module', $Default_def_module$62 = function $$def_module(module_t, name, body, end_t) { var self = this; return self.$n("module", [name, body], self.$module_definition_map(module_t, name, nil, end_t)) - }, TMP_Default_def_module_61.$$arity = 4); + }, $Default_def_module$62.$$arity = 4); - Opal.defn(self, '$def_method', TMP_Default_def_method_62 = function $$def_method(def_t, name_t, args, body, end_t) { + Opal.def(self, '$def_method', $Default_def_method$63 = function $$def_method(def_t, name_t, args, body, end_t) { var self = this; return self.$n("def", [self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, nil, name_t, end_t)) - }, TMP_Default_def_method_62.$$arity = 5); + }, $Default_def_method$63.$$arity = 5); - Opal.defn(self, '$def_singleton', TMP_Default_def_singleton_63 = function $$def_singleton(def_t, definee, dot_t, name_t, args, body, end_t) { + Opal.def(self, '$def_singleton', $Default_def_singleton$64 = function $$def_singleton(def_t, definee, dot_t, name_t, args, body, end_t) { var self = this, $case = nil; return (function() {$case = definee.$type(); if ("int"['$===']($case) || "str"['$===']($case) || "dstr"['$===']($case) || "sym"['$===']($case) || "dsym"['$===']($case) || "regexp"['$===']($case) || "array"['$===']($case) || "hash"['$===']($case)) {return self.$diagnostic("error", "singleton_literal", nil, definee.$loc().$expression())} else {return self.$n("defs", [definee, self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, dot_t, name_t, end_t))}})() - }, TMP_Default_def_singleton_63.$$arity = 7); + }, $Default_def_singleton$64.$$arity = 7); - Opal.defn(self, '$undef_method', TMP_Default_undef_method_64 = function $$undef_method(undef_t, names) { + Opal.def(self, '$undef_method', $Default_undef_method$65 = function $$undef_method(undef_t, names) { var self = this; return self.$n("undef", [].concat(Opal.to_a(names)), self.$keyword_map(undef_t, nil, names, nil)) - }, TMP_Default_undef_method_64.$$arity = 2); + }, $Default_undef_method$65.$$arity = 2); - Opal.defn(self, '$alias', TMP_Default_alias_65 = function $$alias(alias_t, to, from) { + Opal.def(self, '$alias', $Default_alias$66 = function $$alias(alias_t, to, from) { var self = this; return self.$n("alias", [to, from], self.$keyword_map(alias_t, nil, [to, from], nil)) - }, TMP_Default_alias_65.$$arity = 3); + }, $Default_alias$66.$$arity = 3); - Opal.defn(self, '$args', TMP_Default_args_66 = function $$args(begin_t, args, end_t, check_args) { + Opal.def(self, '$args', $Default_args$67 = function $$args(begin_t, args, end_t, check_args) { var self = this; + + if (check_args == null) { check_args = true; - } - + }; if ($truthy(check_args)) { args = self.$check_duplicate_args(args)}; return self.$n("args", args, self.$collection_map(begin_t, args, end_t)); - }, TMP_Default_args_66.$$arity = -4); + }, $Default_args$67.$$arity = -4); + + Opal.def(self, '$numargs', $Default_numargs$68 = function $$numargs(max_numparam) { + var self = this; + + return self.$n("numargs", [max_numparam], nil) + }, $Default_numargs$68.$$arity = 1); - Opal.defn(self, '$arg', TMP_Default_arg_67 = function $$arg(name_t) { + Opal.def(self, '$arg', $Default_arg$69 = function $$arg(name_t) { var self = this; return self.$n("arg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)) - }, TMP_Default_arg_67.$$arity = 1); + }, $Default_arg$69.$$arity = 1); - Opal.defn(self, '$optarg', TMP_Default_optarg_68 = function $$optarg(name_t, eql_t, value) { + Opal.def(self, '$optarg', $Default_optarg$70 = function $$optarg(name_t, eql_t, value) { var self = this; return self.$n("optarg", [self.$value(name_t).$to_sym(), value], self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression()))) - }, TMP_Default_optarg_68.$$arity = 3); + }, $Default_optarg$70.$$arity = 3); - Opal.defn(self, '$restarg', TMP_Default_restarg_69 = function $$restarg(star_t, name_t) { + Opal.def(self, '$restarg', $Default_restarg$71 = function $$restarg(star_t, name_t) { var self = this; + + if (name_t == null) { name_t = nil; - } + }; if ($truthy(name_t)) { return self.$n("restarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(star_t, name_t)) - } else { + } else { return self.$n0("restarg", self.$arg_prefix_map(star_t)) - } - }, TMP_Default_restarg_69.$$arity = -2); + }; + }, $Default_restarg$71.$$arity = -2); - Opal.defn(self, '$kwarg', TMP_Default_kwarg_70 = function $$kwarg(name_t) { + Opal.def(self, '$kwarg', $Default_kwarg$72 = function $$kwarg(name_t) { var self = this; return self.$n("kwarg", [self.$value(name_t).$to_sym()], self.$kwarg_map(name_t)) - }, TMP_Default_kwarg_70.$$arity = 1); + }, $Default_kwarg$72.$$arity = 1); - Opal.defn(self, '$kwoptarg', TMP_Default_kwoptarg_71 = function $$kwoptarg(name_t, value) { + Opal.def(self, '$kwoptarg', $Default_kwoptarg$73 = function $$kwoptarg(name_t, value) { var self = this; return self.$n("kwoptarg", [self.$value(name_t).$to_sym(), value], self.$kwarg_map(name_t, value)) - }, TMP_Default_kwoptarg_71.$$arity = 2); + }, $Default_kwoptarg$73.$$arity = 2); - Opal.defn(self, '$kwrestarg', TMP_Default_kwrestarg_72 = function $$kwrestarg(dstar_t, name_t) { + Opal.def(self, '$kwrestarg', $Default_kwrestarg$74 = function $$kwrestarg(dstar_t, name_t) { var self = this; + + if (name_t == null) { name_t = nil; - } + }; if ($truthy(name_t)) { return self.$n("kwrestarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(dstar_t, name_t)) - } else { + } else { return self.$n0("kwrestarg", self.$arg_prefix_map(dstar_t)) - } - }, TMP_Default_kwrestarg_72.$$arity = -2); + }; + }, $Default_kwrestarg$74.$$arity = -2); + + Opal.def(self, '$kwnilarg', $Default_kwnilarg$75 = function $$kwnilarg(dstar_t, nil_t) { + var self = this; + + return self.$n0("kwnilarg", self.$arg_prefix_map(dstar_t, nil_t)) + }, $Default_kwnilarg$75.$$arity = 2); - Opal.defn(self, '$shadowarg', TMP_Default_shadowarg_73 = function $$shadowarg(name_t) { + Opal.def(self, '$shadowarg', $Default_shadowarg$76 = function $$shadowarg(name_t) { var self = this; return self.$n("shadowarg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)) - }, TMP_Default_shadowarg_73.$$arity = 1); + }, $Default_shadowarg$76.$$arity = 1); - Opal.defn(self, '$blockarg', TMP_Default_blockarg_74 = function $$blockarg(amper_t, name_t) { + Opal.def(self, '$blockarg', $Default_blockarg$77 = function $$blockarg(amper_t, name_t) { var self = this; return self.$n("blockarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(amper_t, name_t)) - }, TMP_Default_blockarg_74.$$arity = 2); + }, $Default_blockarg$77.$$arity = 2); - Opal.defn(self, '$procarg0', TMP_Default_procarg0_75 = function $$procarg0(arg) { - var self = this; + Opal.def(self, '$procarg0', $Default_procarg0$78 = function $$procarg0(arg) { + var $a, self = this; if ($truthy(self.$class().$emit_procarg0())) { - return arg.$updated("procarg0") + if ($truthy((($a = arg.$type()['$==']("arg")) ? self.$class().$emit_arg_inside_procarg0() : arg.$type()['$==']("arg")))) { + return self.$n("procarg0", [arg], $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(nil, nil, arg.$location().$expression())) } else { + return arg.$updated("procarg0") + } + } else { return arg } - }, TMP_Default_procarg0_75.$$arity = 1); + }, $Default_procarg0$78.$$arity = 1); - Opal.defn(self, '$arg_expr', TMP_Default_arg_expr_76 = function $$arg_expr(expr) { + Opal.def(self, '$arg_expr', $Default_arg_expr$79 = function $$arg_expr(expr) { var self = this; if (expr.$type()['$==']("lvasgn")) { return expr.$updated("arg") - } else { + } else { return self.$n("arg_expr", [expr], expr.$loc().$dup()) } - }, TMP_Default_arg_expr_76.$$arity = 1); + }, $Default_arg_expr$79.$$arity = 1); - Opal.defn(self, '$restarg_expr', TMP_Default_restarg_expr_77 = function $$restarg_expr(star_t, expr) { + Opal.def(self, '$restarg_expr', $Default_restarg_expr$80 = function $$restarg_expr(star_t, expr) { var self = this; + + if (expr == null) { expr = nil; - } + }; if ($truthy(expr['$nil?']())) { return self.$n0("restarg", self.$token_map(star_t)) } else if (expr.$type()['$==']("lvasgn")) { return expr.$updated("restarg") - } else { + } else { return self.$n("restarg_expr", [expr], expr.$loc().$dup()) - } - }, TMP_Default_restarg_expr_77.$$arity = -2); + }; + }, $Default_restarg_expr$80.$$arity = -2); - Opal.defn(self, '$blockarg_expr', TMP_Default_blockarg_expr_78 = function $$blockarg_expr(amper_t, expr) { + Opal.def(self, '$blockarg_expr', $Default_blockarg_expr$81 = function $$blockarg_expr(amper_t, expr) { var self = this; if (expr.$type()['$==']("lvasgn")) { return expr.$updated("blockarg") - } else { + } else { return self.$n("blockarg_expr", [expr], expr.$loc().$dup()) } - }, TMP_Default_blockarg_expr_78.$$arity = 2); + }, $Default_blockarg_expr$81.$$arity = 2); - Opal.defn(self, '$objc_kwarg', TMP_Default_objc_kwarg_79 = function $$objc_kwarg(kwname_t, assoc_t, name_t) { + Opal.def(self, '$objc_kwarg', $Default_objc_kwarg$82 = function $$objc_kwarg(kwname_t, assoc_t, name_t) { var self = this, kwname_l = nil, operator_l = nil; @@ -38513,70 +44080,75 @@ if (key == null) key = nil;if (value == null) value = nil; kwname_l = kwname_l.$resize($rb_minus(kwname_l.$size(), 1)); operator_l = kwname_l.$end().$resize(1); - } else { + } else { operator_l = self.$loc(assoc_t) }; - return self.$n("objc_kwarg", [self.$value(kwname_t).$to_sym(), self.$value(name_t).$to_sym()], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'ObjcKwarg').$new(kwname_l, operator_l, self.$loc(name_t), kwname_l.$join(self.$loc(name_t)))); - }, TMP_Default_objc_kwarg_79.$$arity = 3); + return self.$n("objc_kwarg", [self.$value(kwname_t).$to_sym(), self.$value(name_t).$to_sym()], $$$($$$($$($nesting, 'Source'), 'Map'), 'ObjcKwarg').$new(kwname_l, operator_l, self.$loc(name_t), kwname_l.$join(self.$loc(name_t)))); + }, $Default_objc_kwarg$82.$$arity = 3); - Opal.defn(self, '$objc_restarg', TMP_Default_objc_restarg_80 = function $$objc_restarg(star_t, name) { + Opal.def(self, '$objc_restarg', $Default_objc_restarg$83 = function $$objc_restarg(star_t, name) { var self = this; + + if (name == null) { name = nil; - } + }; if ($truthy(name['$nil?']())) { return self.$n0("restarg", self.$arg_prefix_map(star_t)) } else if (name.$type()['$==']("arg")) { return name.$updated("restarg", nil, $hash2(["location"], {"location": name.$loc().$with_operator(self.$loc(star_t))})) - } else { + } else { return self.$n("objc_restarg", [name], self.$unary_op_map(star_t, name)) - } - }, TMP_Default_objc_restarg_80.$$arity = -2); + }; + }, $Default_objc_restarg$83.$$arity = -2); - Opal.defn(self, '$call_type_for_dot', TMP_Default_call_type_for_dot_81 = function $$call_type_for_dot(dot_t) { + Opal.def(self, '$call_type_for_dot', $Default_call_type_for_dot$84 = function $$call_type_for_dot(dot_t) { var $a, self = this; if ($truthy(($truthy($a = dot_t['$nil?']()['$!']()) ? self.$value(dot_t)['$==']("anddot") : $a))) { return "csend" - } else { + } else { return "send" } - }, TMP_Default_call_type_for_dot_81.$$arity = 1); + }, $Default_call_type_for_dot$84.$$arity = 1); - Opal.defn(self, '$call_method', TMP_Default_call_method_82 = function $$call_method(receiver, dot_t, selector_t, lparen_t, args, rparen_t) { + Opal.def(self, '$call_method', $Default_call_method$85 = function $$call_method(receiver, dot_t, selector_t, lparen_t, args, rparen_t) { var self = this, type = nil; + + if (lparen_t == null) { lparen_t = nil; - } + }; + if (args == null) { args = []; - } + }; + if (rparen_t == null) { rparen_t = nil; - } - + }; type = self.$call_type_for_dot(dot_t); if ($truthy(selector_t['$nil?']())) { return self.$n(type, [receiver, "call"].concat(Opal.to_a(args)), self.$send_map(receiver, dot_t, nil, lparen_t, args, rparen_t)) - } else { + } else { return self.$n(type, [receiver, self.$value(selector_t).$to_sym()].concat(Opal.to_a(args)), self.$send_map(receiver, dot_t, selector_t, lparen_t, args, rparen_t)) }; - }, TMP_Default_call_method_82.$$arity = -4); + }, $Default_call_method$85.$$arity = -4); - Opal.defn(self, '$call_lambda', TMP_Default_call_lambda_83 = function $$call_lambda(lambda_t) { + Opal.def(self, '$call_lambda', $Default_call_lambda$86 = function $$call_lambda(lambda_t) { var self = this; if ($truthy(self.$class().$emit_lambda())) { return self.$n0("lambda", self.$expr_map(self.$loc(lambda_t))) - } else { + } else { return self.$n("send", [nil, "lambda"], self.$send_map(nil, nil, lambda_t)) } - }, TMP_Default_call_lambda_83.$$arity = 1); + }, $Default_call_lambda$86.$$arity = 1); - Opal.defn(self, '$block', TMP_Default_block_84 = function $$block(method_call, begin_t, args, body, end_t) { - var $a, self = this, _receiver = nil, _selector = nil, call_args = nil, last_arg = nil, actual_send = nil, block = nil; + Opal.def(self, '$block', $Default_block$87 = function $$block(method_call, begin_t, args, body, end_t) { + var $a, self = this, _receiver = nil, _selector = nil, call_args = nil, last_arg = nil, block_type = nil, actual_send = nil, block = nil; $a = [].concat(Opal.to_a(method_call)), (_receiver = ($a[0] == null ? nil : $a[0])), (_selector = ($a[1] == null ? nil : $a[1])), (call_args = $slice.call($a, 2)), $a; @@ -38585,53 +44157,68 @@ if (key == null) key = nil;if (value == null) value = nil; last_arg = call_args.$last(); if ($truthy(($truthy($a = last_arg) ? last_arg.$type()['$==']("block_pass") : $a))) { self.$diagnostic("error", "block_and_blockarg", nil, last_arg.$loc().$expression(), [self.$loc(begin_t)])}; - if ($truthy(["send", "csend", "super", "zsuper", "lambda"]['$include?'](method_call.$type()))) { - return self.$n("block", [method_call, args, body], self.$block_map(method_call.$loc().$expression(), begin_t, end_t)) - } else { + if (args.$type()['$==']("numargs")) { + + block_type = "numblock"; + args = args.$children()['$[]'](0); + } else { + block_type = "block" + }; + if ($truthy(["send", "csend", "index", "super", "zsuper", "lambda"]['$include?'](method_call.$type()))) { + return self.$n(block_type, [method_call, args, body], self.$block_map(method_call.$loc().$expression(), begin_t, end_t)) + } else { $a = [].concat(Opal.to_a(method_call)), (actual_send = ($a[0] == null ? nil : $a[0])), $a; - block = self.$n("block", [actual_send, args, body], self.$block_map(actual_send.$loc().$expression(), begin_t, end_t)); + block = self.$n(block_type, [actual_send, args, body], self.$block_map(actual_send.$loc().$expression(), begin_t, end_t)); return self.$n(method_call.$type(), [block], method_call.$loc().$with_expression(self.$join_exprs(method_call, block))); }; - }, TMP_Default_block_84.$$arity = 5); + }, $Default_block$87.$$arity = 5); - Opal.defn(self, '$block_pass', TMP_Default_block_pass_85 = function $$block_pass(amper_t, arg) { + Opal.def(self, '$block_pass', $Default_block_pass$88 = function $$block_pass(amper_t, arg) { var self = this; return self.$n("block_pass", [arg], self.$unary_op_map(amper_t, arg)) - }, TMP_Default_block_pass_85.$$arity = 2); + }, $Default_block_pass$88.$$arity = 2); - Opal.defn(self, '$objc_varargs', TMP_Default_objc_varargs_86 = function $$objc_varargs(pair, rest_of_varargs) { + Opal.def(self, '$objc_varargs', $Default_objc_varargs$89 = function $$objc_varargs(pair, rest_of_varargs) { var $a, self = this, value = nil, first_vararg = nil, vararg_array = nil; $a = [].concat(Opal.to_a(pair)), (value = ($a[0] == null ? nil : $a[0])), (first_vararg = ($a[1] == null ? nil : $a[1])), $a; vararg_array = self.$array(nil, [first_vararg].concat(Opal.to_a(rest_of_varargs)), nil).$updated("objc_varargs"); return pair.$updated(nil, [value, vararg_array], $hash2(["location"], {"location": pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))})); - }, TMP_Default_objc_varargs_86.$$arity = 2); + }, $Default_objc_varargs$89.$$arity = 2); - Opal.defn(self, '$attr_asgn', TMP_Default_attr_asgn_87 = function $$attr_asgn(receiver, dot_t, selector_t) { + Opal.def(self, '$attr_asgn', $Default_attr_asgn$90 = function $$attr_asgn(receiver, dot_t, selector_t) { var self = this, method_name = nil, type = nil; method_name = $rb_plus(self.$value(selector_t), "=").$to_sym(); type = self.$call_type_for_dot(dot_t); return self.$n(type, [receiver, method_name], self.$send_map(receiver, dot_t, selector_t)); - }, TMP_Default_attr_asgn_87.$$arity = 3); + }, $Default_attr_asgn$90.$$arity = 3); - Opal.defn(self, '$index', TMP_Default_index_88 = function $$index(receiver, lbrack_t, indexes, rbrack_t) { + Opal.def(self, '$index', $Default_index$91 = function $$index(receiver, lbrack_t, indexes, rbrack_t) { var self = this; - return self.$n("send", [receiver, "[]"].concat(Opal.to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) - }, TMP_Default_index_88.$$arity = 4); + if ($truthy(self.$class().$emit_index())) { + return self.$n("index", [receiver].concat(Opal.to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]"].concat(Opal.to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + } + }, $Default_index$91.$$arity = 4); - Opal.defn(self, '$index_asgn', TMP_Default_index_asgn_89 = function $$index_asgn(receiver, lbrack_t, indexes, rbrack_t) { + Opal.def(self, '$index_asgn', $Default_index_asgn$92 = function $$index_asgn(receiver, lbrack_t, indexes, rbrack_t) { var self = this; - return self.$n("send", [receiver, "[]="].concat(Opal.to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) - }, TMP_Default_index_asgn_89.$$arity = 4); + if ($truthy(self.$class().$emit_index())) { + return self.$n("indexasgn", [receiver].concat(Opal.to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]="].concat(Opal.to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + } + }, $Default_index_asgn$92.$$arity = 4); - Opal.defn(self, '$binary_op', TMP_Default_binary_op_90 = function $$binary_op(receiver, operator_t, arg) { + Opal.def(self, '$binary_op', $Default_binary_op$93 = function $$binary_op(receiver, operator_t, arg) { var self = this, source_map = nil, operator = nil, method_call = nil; @@ -38646,26 +44233,31 @@ if (key == null) key = nil;if (value == null) value = nil; if ($truthy(["!=", "!~"]['$include?'](operator))) { return self.$n("not", [method_call], self.$expr_map(source_map.$expression()))};}; return self.$n("send", [receiver, self.$value(operator_t).$to_sym(), arg], source_map); - }, TMP_Default_binary_op_90.$$arity = 3); + }, $Default_binary_op$93.$$arity = 3); - Opal.defn(self, '$match_op', TMP_Default_match_op_92 = function $$match_op(receiver, match_t, arg) { - var TMP_91, self = this, source_map = nil, regexp = nil; + Opal.def(self, '$match_op', $Default_match_op$94 = function $$match_op(receiver, match_t, arg) { + var $$95, self = this, source_map = nil, regexp = nil; source_map = self.$send_binary_op_map(receiver, match_t, arg); if ($truthy((regexp = self.$static_regexp_node(receiver)))) { - $send(regexp.$names(), 'each', [], (TMP_91 = function(name){var self = TMP_91.$$s || this; + $send(regexp.$names(), 'each', [], ($$95 = function(name){var self = $$95.$$s || this; if (self.parser == null) self.parser = nil; -if (name == null) name = nil; - return self.parser.$static_env().$declare(name)}, TMP_91.$$s = self, TMP_91.$$arity = 1, TMP_91)); + + + + if (name == null) { + name = nil; + }; + return self.parser.$static_env().$declare(name);}, $$95.$$s = self, $$95.$$arity = 1, $$95)); return self.$n("match_with_lvasgn", [receiver, arg], source_map); - } else { + } else { return self.$n("send", [receiver, "=~", arg], source_map) }; - }, TMP_Default_match_op_92.$$arity = 3); + }, $Default_match_op$94.$$arity = 3); - Opal.defn(self, '$unary_op', TMP_Default_unary_op_93 = function $$unary_op(op_t, receiver) { + Opal.def(self, '$unary_op', $Default_unary_op$96 = function $$unary_op(op_t, receiver) { var self = this, $case = nil, method = nil; @@ -38673,152 +44265,170 @@ if (name == null) name = nil; if ("+"['$===']($case) || "-"['$===']($case)) {method = $rb_plus(self.$value(op_t), "@")} else {method = self.$value(op_t)}; return self.$n("send", [receiver, method.$to_sym()], self.$send_unary_op_map(op_t, receiver)); - }, TMP_Default_unary_op_93.$$arity = 2); + }, $Default_unary_op$96.$$arity = 2); - Opal.defn(self, '$not_op', TMP_Default_not_op_94 = function $$not_op(not_t, begin_t, receiver, end_t) { + Opal.def(self, '$not_op', $Default_not_op$97 = function $$not_op(not_t, begin_t, receiver, end_t) { var self = this, nil_node = nil; + + if (begin_t == null) { begin_t = nil; - } + }; + if (receiver == null) { receiver = nil; - } + }; + if (end_t == null) { end_t = nil; - } + }; if (self.parser.$version()['$=='](18)) { - return self.$n("not", [receiver], self.$unary_op_map(not_t, receiver)) + return self.$n("not", [self.$check_condition(receiver)], self.$unary_op_map(not_t, receiver)) } else if ($truthy(receiver['$nil?']())) { nil_node = self.$n0("begin", self.$collection_map(begin_t, nil, end_t)); return self.$n("send", [nil_node, "!"], self.$send_unary_op_map(not_t, nil_node)); - } else { - return self.$n("send", [receiver, "!"], self.$send_map(nil, nil, not_t, begin_t, [receiver], end_t)) - } - }, TMP_Default_not_op_94.$$arity = -2); + } else { + return self.$n("send", [self.$check_condition(receiver), "!"], self.$send_map(nil, nil, not_t, begin_t, [receiver], end_t)) + }; + }, $Default_not_op$97.$$arity = -2); + + Opal.def(self, '$method_ref', $Default_method_ref$98 = function $$method_ref(receiver, dot_t, selector_t) { + var self = this; + + return self.$n("meth_ref", [receiver, self.$value(selector_t).$to_sym()], self.$send_map(receiver, dot_t, selector_t, nil, [], nil)) + }, $Default_method_ref$98.$$arity = 3); - Opal.defn(self, '$logical_op', TMP_Default_logical_op_95 = function $$logical_op(type, lhs, op_t, rhs) { + Opal.def(self, '$logical_op', $Default_logical_op$99 = function $$logical_op(type, lhs, op_t, rhs) { var self = this; return self.$n(type, [lhs, rhs], self.$binary_op_map(lhs, op_t, rhs)) - }, TMP_Default_logical_op_95.$$arity = 4); + }, $Default_logical_op$99.$$arity = 4); - Opal.defn(self, '$condition', TMP_Default_condition_96 = function $$condition(cond_t, cond, then_t, if_true, else_t, if_false, end_t) { + Opal.def(self, '$condition', $Default_condition$100 = function $$condition(cond_t, cond, then_t, if_true, else_t, if_false, end_t) { var self = this; return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$condition_map(cond_t, cond, then_t, if_true, else_t, if_false, end_t)) - }, TMP_Default_condition_96.$$arity = 7); + }, $Default_condition$100.$$arity = 7); - Opal.defn(self, '$condition_mod', TMP_Default_condition_mod_97 = function $$condition_mod(if_true, if_false, cond_t, cond) { + Opal.def(self, '$condition_mod', $Default_condition_mod$101 = function $$condition_mod(if_true, if_false, cond_t, cond) { var $a, self = this; return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$keyword_mod_map(($truthy($a = if_true) ? $a : if_false), cond_t, cond)) - }, TMP_Default_condition_mod_97.$$arity = 4); + }, $Default_condition_mod$101.$$arity = 4); - Opal.defn(self, '$ternary', TMP_Default_ternary_98 = function $$ternary(cond, question_t, if_true, colon_t, if_false) { + Opal.def(self, '$ternary', $Default_ternary$102 = function $$ternary(cond, question_t, if_true, colon_t, if_false) { var self = this; return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$ternary_map(cond, question_t, if_true, colon_t, if_false)) - }, TMP_Default_ternary_98.$$arity = 5); + }, $Default_ternary$102.$$arity = 5); - Opal.defn(self, '$when', TMP_Default_when_99 = function $$when(when_t, patterns, then_t, body) { + Opal.def(self, '$when', $Default_when$103 = function $$when(when_t, patterns, then_t, body) { var self = this, children = nil; children = patterns['$<<'](body); return self.$n("when", children, self.$keyword_map(when_t, then_t, children, nil)); - }, TMP_Default_when_99.$$arity = 4); + }, $Default_when$103.$$arity = 4); - Opal.defn(self, '$case', TMP_Default_case_100 = function(case_t, expr, when_bodies, else_t, else_body, end_t) { + Opal.def(self, '$case', $Default_case$104 = function(case_t, expr, when_bodies, else_t, else_body, end_t) { var self = this; return self.$n("case", [expr].concat(Opal.to_a(when_bodies['$<<'](else_body))), self.$condition_map(case_t, expr, nil, nil, else_t, else_body, end_t)) - }, TMP_Default_case_100.$$arity = 6); + }, $Default_case$104.$$arity = 6); - Opal.defn(self, '$loop', TMP_Default_loop_101 = function $$loop(type, keyword_t, cond, do_t, body, end_t) { + Opal.def(self, '$loop', $Default_loop$105 = function $$loop(type, keyword_t, cond, do_t, body, end_t) { var self = this; return self.$n(type, [self.$check_condition(cond), body], self.$keyword_map(keyword_t, do_t, nil, end_t)) - }, TMP_Default_loop_101.$$arity = 6); + }, $Default_loop$105.$$arity = 6); - Opal.defn(self, '$loop_mod', TMP_Default_loop_mod_102 = function $$loop_mod(type, body, keyword_t, cond) { + Opal.def(self, '$loop_mod', $Default_loop_mod$106 = function $$loop_mod(type, body, keyword_t, cond) { var self = this; if (body.$type()['$==']("kwbegin")) { type = "" + (type) + "_post"}; return self.$n(type, [self.$check_condition(cond), body], self.$keyword_mod_map(body, keyword_t, cond)); - }, TMP_Default_loop_mod_102.$$arity = 4); + }, $Default_loop_mod$106.$$arity = 4); - Opal.defn(self, '$for', TMP_Default_for_103 = function(for_t, iterator, in_t, iteratee, do_t, body, end_t) { + Opal.def(self, '$for', $Default_for$107 = function(for_t, iterator, in_t, iteratee, do_t, body, end_t) { var self = this; return self.$n("for", [iterator, iteratee, body], self.$for_map(for_t, in_t, do_t, end_t)) - }, TMP_Default_for_103.$$arity = 7); + }, $Default_for$107.$$arity = 7); - Opal.defn(self, '$keyword_cmd', TMP_Default_keyword_cmd_104 = function $$keyword_cmd(type, keyword_t, lparen_t, args, rparen_t) { + Opal.def(self, '$keyword_cmd', $Default_keyword_cmd$108 = function $$keyword_cmd(type, keyword_t, lparen_t, args, rparen_t) { var $a, self = this, last_arg = nil; + + if (lparen_t == null) { lparen_t = nil; - } + }; + if (args == null) { args = []; - } + }; + if (rparen_t == null) { rparen_t = nil; - } - + }; if ($truthy((($a = type['$==']("yield")) ? $rb_gt(args.$count(), 0) : type['$==']("yield")))) { last_arg = args.$last(); if (last_arg.$type()['$==']("block_pass")) { self.$diagnostic("error", "block_given_to_yield", nil, self.$loc(keyword_t), [last_arg.$loc().$expression()])};}; return self.$n(type, args, self.$keyword_map(keyword_t, lparen_t, args, rparen_t)); - }, TMP_Default_keyword_cmd_104.$$arity = -3); + }, $Default_keyword_cmd$108.$$arity = -3); - Opal.defn(self, '$preexe', TMP_Default_preexe_105 = function $$preexe(preexe_t, lbrace_t, compstmt, rbrace_t) { + Opal.def(self, '$preexe', $Default_preexe$109 = function $$preexe(preexe_t, lbrace_t, compstmt, rbrace_t) { var self = this; return self.$n("preexe", [compstmt], self.$keyword_map(preexe_t, lbrace_t, [], rbrace_t)) - }, TMP_Default_preexe_105.$$arity = 4); + }, $Default_preexe$109.$$arity = 4); - Opal.defn(self, '$postexe', TMP_Default_postexe_106 = function $$postexe(postexe_t, lbrace_t, compstmt, rbrace_t) { + Opal.def(self, '$postexe', $Default_postexe$110 = function $$postexe(postexe_t, lbrace_t, compstmt, rbrace_t) { var self = this; return self.$n("postexe", [compstmt], self.$keyword_map(postexe_t, lbrace_t, [], rbrace_t)) - }, TMP_Default_postexe_106.$$arity = 4); + }, $Default_postexe$110.$$arity = 4); - Opal.defn(self, '$rescue_body', TMP_Default_rescue_body_107 = function $$rescue_body(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt) { + Opal.def(self, '$rescue_body', $Default_rescue_body$111 = function $$rescue_body(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt) { var self = this; return self.$n("resbody", [exc_list, exc_var, compound_stmt], self.$rescue_body_map(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt)) - }, TMP_Default_rescue_body_107.$$arity = 6); + }, $Default_rescue_body$111.$$arity = 6); - Opal.defn(self, '$begin_body', TMP_Default_begin_body_108 = function $$begin_body(compound_stmt, rescue_bodies, else_t, else_, ensure_t, ensure_) { + Opal.def(self, '$begin_body', $Default_begin_body$112 = function $$begin_body(compound_stmt, rescue_bodies, else_t, else_, ensure_t, ensure_) { var self = this, statements = nil; + + if (rescue_bodies == null) { rescue_bodies = []; - } + }; + if (else_t == null) { else_t = nil; - } + }; + if (else_ == null) { else_ = nil; - } + }; + if (ensure_t == null) { ensure_t = nil; - } + }; + if (ensure_ == null) { ensure_ = nil; - } - + }; if ($truthy(rescue_bodies['$any?']())) { if ($truthy(else_t)) { compound_stmt = self.$n("rescue", [compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies, [else_]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, else_t, else_)) - } else { + } else { compound_stmt = self.$n("rescue", [compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies, [nil]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, nil, nil)) } } else if ($truthy(else_t)) { @@ -38827,7 +44437,7 @@ if (name == null) name = nil; if ($truthy(compound_stmt['$nil?']()['$!']())) { if (compound_stmt.$type()['$==']("begin")) { statements = $rb_plus(statements, compound_stmt.$children()) - } else { + } else { statements.$push(compound_stmt) }}; statements.$push(self.$n("begin", [else_], self.$collection_map(else_t, [else_], nil))); @@ -38835,54 +44445,54 @@ if (name == null) name = nil; if ($truthy(ensure_t)) { compound_stmt = self.$n("ensure", [compound_stmt, ensure_], self.$eh_keyword_map(compound_stmt, ensure_t, [ensure_], nil, nil))}; return compound_stmt; - }, TMP_Default_begin_body_108.$$arity = -2); + }, $Default_begin_body$112.$$arity = -2); - Opal.defn(self, '$compstmt', TMP_Default_compstmt_109 = function $$compstmt(statements) { + Opal.def(self, '$compstmt', $Default_compstmt$113 = function $$compstmt(statements) { var self = this; return (function() { if ($truthy(statements['$none?']())) {return nil} else if ($truthy(statements['$one?']())) {return statements.$first()} else {return self.$n("begin", statements, self.$collection_map(nil, statements, nil))}})() - }, TMP_Default_compstmt_109.$$arity = 1); + }, $Default_compstmt$113.$$arity = 1); - Opal.defn(self, '$begin', TMP_Default_begin_110 = function $$begin(begin_t, body, end_t) { + Opal.def(self, '$begin', $Default_begin$114 = function $$begin(begin_t, body, end_t) { var $a, $b, $c, self = this; if ($truthy(body['$nil?']())) { return self.$n0("begin", self.$collection_map(begin_t, nil, end_t)) } else if ($truthy(($truthy($a = body.$type()['$==']("mlhs")) ? $a : ($truthy($b = (($c = body.$type()['$==']("begin")) ? body.$loc().$begin()['$nil?']() : body.$type()['$==']("begin"))) ? body.$loc().$end()['$nil?']() : $b)))) { return self.$n(body.$type(), body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) - } else { + } else { return self.$n("begin", [body], self.$collection_map(begin_t, [body], end_t)) } - }, TMP_Default_begin_110.$$arity = 3); + }, $Default_begin$114.$$arity = 3); - Opal.defn(self, '$begin_keyword', TMP_Default_begin_keyword_111 = function $$begin_keyword(begin_t, body, end_t) { + Opal.def(self, '$begin_keyword', $Default_begin_keyword$115 = function $$begin_keyword(begin_t, body, end_t) { var $a, $b, self = this; if ($truthy(body['$nil?']())) { return self.$n0("kwbegin", self.$collection_map(begin_t, nil, end_t)) } else if ($truthy(($truthy($a = (($b = body.$type()['$==']("begin")) ? body.$loc().$begin()['$nil?']() : body.$type()['$==']("begin"))) ? body.$loc().$end()['$nil?']() : $a))) { return self.$n("kwbegin", body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) - } else { + } else { return self.$n("kwbegin", [body], self.$collection_map(begin_t, [body], end_t)) } - }, TMP_Default_begin_keyword_111.$$arity = 3); + }, $Default_begin_keyword$115.$$arity = 3); self.$private(); - Opal.defn(self, '$check_condition', TMP_Default_check_condition_112 = function $$check_condition(cond) { + Opal.def(self, '$check_condition', $Default_check_condition$116 = function $$check_condition(cond) { var $a, self = this, $case = nil, lhs = nil, rhs = nil, type = nil; return (function() {$case = cond.$type(); if ("masgn"['$===']($case)) {if ($truthy($rb_le(self.parser.$version(), 23))) { return self.$diagnostic("error", "masgn_as_condition", nil, cond.$loc().$expression()) - } else { - return nil + } else { + return cond }} else if ("begin"['$===']($case)) {if (cond.$children().$count()['$=='](1)) { return cond.$updated(nil, [self.$check_condition(cond.$children().$last())]) - } else { + } else { return cond }} else if ("and"['$===']($case) || "or"['$===']($case) || "irange"['$===']($case) || "erange"['$===']($case)) { @@ -38893,258 +44503,303 @@ if (name == null) name = nil; else { return nil }})(); if ($truthy(($truthy($a = ["and", "or"]['$include?'](cond.$type())) ? self.parser.$version()['$=='](18) : $a))) { return cond - } else { + } else { return cond.$updated(type, [self.$check_condition(lhs), self.$check_condition(rhs)]) };} else if ("regexp"['$===']($case)) {return self.$n("match_current_line", [cond], self.$expr_map(cond.$loc().$expression()))} else {return cond}})() - }, TMP_Default_check_condition_112.$$arity = 1); + }, $Default_check_condition$116.$$arity = 1); - Opal.defn(self, '$check_duplicate_args', TMP_Default_check_duplicate_args_114 = function $$check_duplicate_args(args, map) { - var TMP_113, self = this; + Opal.def(self, '$check_duplicate_args', $Default_check_duplicate_args$117 = function $$check_duplicate_args(args, map) { + var $$118, self = this; + + if (map == null) { map = $hash2([], {}); - } - return $send(args, 'each', [], (TMP_113 = function(this_arg){var self = TMP_113.$$s || this, $a, $case = nil, this_name = nil, that_arg = nil, that_name = nil, $writer = nil; -if (this_arg == null) this_arg = nil; - return (function() {$case = this_arg.$type(); - if ("arg"['$===']($case) || "optarg"['$===']($case) || "restarg"['$===']($case) || "blockarg"['$===']($case) || "kwarg"['$===']($case) || "kwoptarg"['$===']($case) || "kwrestarg"['$===']($case) || "shadowarg"['$===']($case) || "procarg0"['$===']($case)) { - $a = [].concat(Opal.to_a(this_arg)), (this_name = ($a[0] == null ? nil : $a[0])), $a; - that_arg = map['$[]'](this_name); - $a = [].concat(Opal.to_a(that_arg)), (that_name = ($a[0] == null ? nil : $a[0])), $a; - if ($truthy(that_arg['$nil?']())) { - - $writer = [this_name, this_arg]; - $send(map, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)]; - } else if ($truthy(self['$arg_name_collides?'](this_name, that_name))) { - return self.$diagnostic("error", "duplicate_argument", nil, this_arg.$loc().$name(), [that_arg.$loc().$name()]) - } else { - return nil - };} + }; + return $send(args, 'each', [], ($$118 = function(this_arg){var self = $$118.$$s || this, $case = nil; + + + + if (this_arg == null) { + this_arg = nil; + }; + return (function() {$case = this_arg.$type(); + if ("arg"['$===']($case) || "optarg"['$===']($case) || "restarg"['$===']($case) || "blockarg"['$===']($case) || "kwarg"['$===']($case) || "kwoptarg"['$===']($case) || "kwrestarg"['$===']($case) || "shadowarg"['$===']($case)) {return self.$check_duplicate_arg(this_arg, map)} + else if ("procarg0"['$===']($case)) {if ($truthy(this_arg.$children()['$[]'](0)['$is_a?']($$($nesting, 'Symbol')))) { + return self.$check_duplicate_arg(this_arg, map) + } else { + return self.$check_duplicate_args(this_arg.$children(), map) + }} else if ("mlhs"['$===']($case)) {return self.$check_duplicate_args(this_arg.$children(), map)} - else { return nil }})()}, TMP_113.$$s = self, TMP_113.$$arity = 1, TMP_113)) - }, TMP_Default_check_duplicate_args_114.$$arity = -2); + else { return nil }})();}, $$118.$$s = self, $$118.$$arity = 1, $$118)); + }, $Default_check_duplicate_args$117.$$arity = -2); - Opal.defn(self, '$arg_name_collides?', TMP_Default_arg_name_collides$q_115 = function(this_name, that_name) { + Opal.def(self, '$check_duplicate_arg', $Default_check_duplicate_arg$119 = function $$check_duplicate_arg(this_arg, map) { + var $a, self = this, this_name = nil, that_arg = nil, that_name = nil, $writer = nil; + + + + if (map == null) { + map = $hash2([], {}); + }; + $a = [].concat(Opal.to_a(this_arg)), (this_name = ($a[0] == null ? nil : $a[0])), $a; + that_arg = map['$[]'](this_name); + $a = [].concat(Opal.to_a(that_arg)), (that_name = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy(that_arg['$nil?']())) { + + $writer = [this_name, this_arg]; + $send(map, '[]=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(self['$arg_name_collides?'](this_name, that_name))) { + return self.$diagnostic("error", "duplicate_argument", nil, this_arg.$loc().$name(), [that_arg.$loc().$name()]) + } else { + return nil + }; + }, $Default_check_duplicate_arg$119.$$arity = -2); + + Opal.def(self, '$arg_name_collides?', $Default_arg_name_collides$ques$120 = function(this_name, that_name) { var $a, $b, self = this, $case = nil; return (function() {$case = self.parser.$version(); if ((18)['$===']($case)) {return this_name['$=='](that_name)} else if ((19)['$===']($case)) {return ($truthy($a = this_name['$!=']("_")) ? this_name['$=='](that_name) : $a)} else {return ($truthy($a = ($truthy($b = this_name) ? this_name['$[]'](0)['$!=']("_") : $b)) ? this_name['$=='](that_name) : $a)}})() - }, TMP_Default_arg_name_collides$q_115.$$arity = 2); + }, $Default_arg_name_collides$ques$120.$$arity = 2); - Opal.defn(self, '$n', TMP_Default_n_116 = function $$n(type, children, source_map) { + Opal.def(self, '$n', $Default_n$121 = function $$n(type, children, source_map) { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": source_map})) - }, TMP_Default_n_116.$$arity = 3); + return $$$($$($nesting, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": source_map})) + }, $Default_n$121.$$arity = 3); - Opal.defn(self, '$n0', TMP_Default_n0_117 = function $$n0(type, source_map) { + Opal.def(self, '$n0', $Default_n0$122 = function $$n0(type, source_map) { var self = this; return self.$n(type, [], source_map) - }, TMP_Default_n0_117.$$arity = 2); + }, $Default_n0$122.$$arity = 2); - Opal.defn(self, '$join_exprs', TMP_Default_join_exprs_118 = function $$join_exprs(left_expr, right_expr) { + Opal.def(self, '$join_exprs', $Default_join_exprs$123 = function $$join_exprs(left_expr, right_expr) { var self = this; return left_expr.$loc().$expression().$join(right_expr.$loc().$expression()) - }, TMP_Default_join_exprs_118.$$arity = 2); + }, $Default_join_exprs$123.$$arity = 2); - Opal.defn(self, '$token_map', TMP_Default_token_map_119 = function $$token_map(token) { + Opal.def(self, '$token_map', $Default_token_map$124 = function $$token_map(token) { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map').$new(self.$loc(token)) - }, TMP_Default_token_map_119.$$arity = 1); + return $$$($$($nesting, 'Source'), 'Map').$new(self.$loc(token)) + }, $Default_token_map$124.$$arity = 1); - Opal.defn(self, '$delimited_string_map', TMP_Default_delimited_string_map_120 = function $$delimited_string_map(string_t) { + Opal.def(self, '$delimited_string_map', $Default_delimited_string_map$125 = function $$delimited_string_map(string_t) { var self = this, str_range = nil, begin_l = nil, end_l = nil; str_range = self.$loc(string_t); - begin_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(str_range.$source_buffer(), str_range.$begin_pos(), $rb_plus(str_range.$begin_pos(), 1)); - end_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(str_range.$source_buffer(), $rb_minus(str_range.$end_pos(), 1), str_range.$end_pos()); - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(begin_l, end_l, self.$loc(string_t)); - }, TMP_Default_delimited_string_map_120.$$arity = 1); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + end_l = str_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(str_range.$end_pos(), 1)})); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(begin_l, end_l, self.$loc(string_t)); + }, $Default_delimited_string_map$125.$$arity = 1); - Opal.defn(self, '$prefix_string_map', TMP_Default_prefix_string_map_121 = function $$prefix_string_map(symbol) { + Opal.def(self, '$prefix_string_map', $Default_prefix_string_map$126 = function $$prefix_string_map(symbol) { var self = this, str_range = nil, begin_l = nil; str_range = self.$loc(symbol); - begin_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(str_range.$source_buffer(), str_range.$begin_pos(), $rb_plus(str_range.$begin_pos(), 1)); - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(begin_l, nil, self.$loc(symbol)); - }, TMP_Default_prefix_string_map_121.$$arity = 1); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(begin_l, nil, self.$loc(symbol)); + }, $Default_prefix_string_map$126.$$arity = 1); - Opal.defn(self, '$unquoted_map', TMP_Default_unquoted_map_122 = function $$unquoted_map(token) { + Opal.def(self, '$unquoted_map', $Default_unquoted_map$127 = function $$unquoted_map(token) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(nil, nil, self.$loc(token)) - }, TMP_Default_unquoted_map_122.$$arity = 1); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(nil, nil, self.$loc(token)) + }, $Default_unquoted_map$127.$$arity = 1); - Opal.defn(self, '$pair_keyword_map', TMP_Default_pair_keyword_map_123 = function $$pair_keyword_map(key_t, value_e) { + Opal.def(self, '$pair_keyword_map', $Default_pair_keyword_map$128 = function $$pair_keyword_map(key_t, value_e) { var self = this, key_range = nil, key_l = nil, colon_l = nil; key_range = self.$loc(key_t); - key_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(key_range.$source_buffer(), key_range.$begin_pos(), $rb_minus(key_range.$end_pos(), 1)); - colon_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(key_range.$source_buffer(), $rb_minus(key_range.$end_pos(), 1), key_range.$end_pos()); - return [Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(nil, nil, key_l), Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(colon_l, key_range.$join(value_e.$loc().$expression()))]; - }, TMP_Default_pair_keyword_map_123.$$arity = 2); + key_l = key_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); + colon_l = key_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(key_range.$end_pos(), 1)})); + return [$$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(nil, nil, key_l), $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(colon_l, key_range.$join(value_e.$loc().$expression()))]; + }, $Default_pair_keyword_map$128.$$arity = 2); - Opal.defn(self, '$pair_quoted_map', TMP_Default_pair_quoted_map_124 = function $$pair_quoted_map(begin_t, end_t, value_e) { + Opal.def(self, '$pair_quoted_map', $Default_pair_quoted_map$129 = function $$pair_quoted_map(begin_t, end_t, value_e) { var self = this, end_l = nil, quote_l = nil, colon_l = nil; end_l = self.$loc(end_t); - quote_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(end_l.$source_buffer(), $rb_minus(end_l.$end_pos(), 2), $rb_minus(end_l.$end_pos(), 1)); - colon_l = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(end_l.$source_buffer(), $rb_minus(end_l.$end_pos(), 1), end_l.$end_pos()); - return [[self.$value(end_t), quote_l], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(colon_l, self.$loc(begin_t).$join(value_e.$loc().$expression()))]; - }, TMP_Default_pair_quoted_map_124.$$arity = 3); + quote_l = end_l.$with($hash2(["begin_pos", "end_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 2), "end_pos": $rb_minus(end_l.$end_pos(), 1)})); + colon_l = end_l.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 1)})); + return [[self.$value(end_t), quote_l], $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(colon_l, self.$loc(begin_t).$join(value_e.$loc().$expression()))]; + }, $Default_pair_quoted_map$129.$$arity = 3); - Opal.defn(self, '$expr_map', TMP_Default_expr_map_125 = function $$expr_map(loc) { + Opal.def(self, '$expr_map', $Default_expr_map$130 = function $$expr_map(loc) { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map').$new(loc) - }, TMP_Default_expr_map_125.$$arity = 1); + return $$$($$($nesting, 'Source'), 'Map').$new(loc) + }, $Default_expr_map$130.$$arity = 1); - Opal.defn(self, '$collection_map', TMP_Default_collection_map_126 = function $$collection_map(begin_t, parts, end_t) { + Opal.def(self, '$collection_map', $Default_collection_map$131 = function $$collection_map(begin_t, parts, end_t) { var $a, self = this, expr_l = nil; if ($truthy(($truthy($a = begin_t['$nil?']()) ? $a : end_t['$nil?']()))) { if ($truthy(parts['$any?']())) { - expr_l = self.$join_exprs(parts.$first(), parts.$last())} - } else { + expr_l = self.$join_exprs(parts.$first(), parts.$last()) + } else if ($truthy(begin_t['$nil?']()['$!']())) { + expr_l = self.$loc(begin_t) + } else if ($truthy(end_t['$nil?']()['$!']())) { + expr_l = self.$loc(end_t)} + } else { expr_l = self.$loc(begin_t).$join(self.$loc(end_t)) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), expr_l); - }, TMP_Default_collection_map_126.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), expr_l); + }, $Default_collection_map$131.$$arity = 3); - Opal.defn(self, '$string_map', TMP_Default_string_map_127 = function $$string_map(begin_t, parts, end_t) { + Opal.def(self, '$string_map', $Default_string_map$132 = function $$string_map(begin_t, parts, end_t) { var $a, self = this, expr_l = nil; if ($truthy(($truthy($a = begin_t) ? self.$value(begin_t)['$start_with?']("<<") : $a))) { if ($truthy(parts['$any?']())) { expr_l = self.$join_exprs(parts.$first(), parts.$last()) - } else { + } else { expr_l = self.$loc(end_t).$begin() }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Heredoc').$new(self.$loc(begin_t), expr_l, self.$loc(end_t)); - } else { + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Heredoc').$new(self.$loc(begin_t), expr_l, self.$loc(end_t)); + } else { return self.$collection_map(begin_t, parts, end_t) } - }, TMP_Default_string_map_127.$$arity = 3); + }, $Default_string_map$132.$$arity = 3); - Opal.defn(self, '$regexp_map', TMP_Default_regexp_map_128 = function $$regexp_map(begin_t, end_t, options_e) { + Opal.def(self, '$regexp_map', $Default_regexp_map$133 = function $$regexp_map(begin_t, end_t, options_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), self.$loc(begin_t).$join(options_e.$loc().$expression())) - }, TMP_Default_regexp_map_128.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), self.$loc(begin_t).$join(options_e.$loc().$expression())) + }, $Default_regexp_map$133.$$arity = 3); - Opal.defn(self, '$constant_map', TMP_Default_constant_map_129 = function $$constant_map(scope, colon2_t, name_t) { + Opal.def(self, '$constant_map', $Default_constant_map$134 = function $$constant_map(scope, colon2_t, name_t) { var self = this, expr_l = nil; if ($truthy(scope['$nil?']())) { expr_l = self.$loc(name_t) - } else { + } else { expr_l = scope.$loc().$expression().$join(self.$loc(name_t)) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Constant').$new(self.$loc(colon2_t), self.$loc(name_t), expr_l); - }, TMP_Default_constant_map_129.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Constant').$new(self.$loc(colon2_t), self.$loc(name_t), expr_l); + }, $Default_constant_map$134.$$arity = 3); - Opal.defn(self, '$variable_map', TMP_Default_variable_map_130 = function $$variable_map(name_t) { + Opal.def(self, '$variable_map', $Default_variable_map$135 = function $$variable_map(name_t) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Variable').$new(self.$loc(name_t)) - }, TMP_Default_variable_map_130.$$arity = 1); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Variable').$new(self.$loc(name_t)) + }, $Default_variable_map$135.$$arity = 1); - Opal.defn(self, '$binary_op_map', TMP_Default_binary_op_map_131 = function $$binary_op_map(left_e, op_t, right_e) { + Opal.def(self, '$binary_op_map', $Default_binary_op_map$136 = function $$binary_op_map(left_e, op_t, right_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(self.$loc(op_t), self.$join_exprs(left_e, right_e)) - }, TMP_Default_binary_op_map_131.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(self.$loc(op_t), self.$join_exprs(left_e, right_e)) + }, $Default_binary_op_map$136.$$arity = 3); - Opal.defn(self, '$unary_op_map', TMP_Default_unary_op_map_132 = function $$unary_op_map(op_t, arg_e) { + Opal.def(self, '$unary_op_map', $Default_unary_op_map$137 = function $$unary_op_map(op_t, arg_e) { var self = this, expr_l = nil; + + if (arg_e == null) { arg_e = nil; - } - + }; if ($truthy(arg_e['$nil?']())) { expr_l = self.$loc(op_t) - } else { + } else { expr_l = self.$loc(op_t).$join(arg_e.$loc().$expression()) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); - }, TMP_Default_unary_op_map_132.$$arity = -2); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, $Default_unary_op_map$137.$$arity = -2); - Opal.defn(self, '$arg_prefix_map', TMP_Default_arg_prefix_map_133 = function $$arg_prefix_map(op_t, name_t) { + Opal.def(self, '$range_map', $Default_range_map$138 = function $$range_map(start_e, op_t, end_e) { + var $a, self = this, expr_l = nil; + + + if ($truthy(($truthy($a = start_e) ? end_e : $a))) { + expr_l = self.$join_exprs(start_e, end_e) + } else if ($truthy(start_e)) { + expr_l = start_e.$loc().$expression().$join(self.$loc(op_t)) + } else if ($truthy(end_e)) { + expr_l = self.$loc(op_t).$join(end_e.$loc().$expression())}; + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, $Default_range_map$138.$$arity = 3); + + Opal.def(self, '$arg_prefix_map', $Default_arg_prefix_map$139 = function $$arg_prefix_map(op_t, name_t) { var self = this, expr_l = nil; + + if (name_t == null) { name_t = nil; - } - + }; if ($truthy(name_t['$nil?']())) { expr_l = self.$loc(op_t) - } else { + } else { expr_l = self.$loc(op_t).$join(self.$loc(name_t)) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Variable').$new(self.$loc(name_t), expr_l); - }, TMP_Default_arg_prefix_map_133.$$arity = -2); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Variable').$new(self.$loc(name_t), expr_l); + }, $Default_arg_prefix_map$139.$$arity = -2); - Opal.defn(self, '$kwarg_map', TMP_Default_kwarg_map_134 = function $$kwarg_map(name_t, value_e) { + Opal.def(self, '$kwarg_map', $Default_kwarg_map$140 = function $$kwarg_map(name_t, value_e) { var self = this, label_range = nil, name_range = nil, expr_l = nil; + + if (value_e == null) { value_e = nil; - } - + }; label_range = self.$loc(name_t); - name_range = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Range').$new(label_range.$source_buffer(), label_range.$begin_pos(), $rb_minus(label_range.$end_pos(), 1)); + name_range = label_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); if ($truthy(value_e)) { expr_l = self.$loc(name_t).$join(value_e.$loc().$expression()) - } else { + } else { expr_l = self.$loc(name_t) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Variable').$new(name_range, expr_l); - }, TMP_Default_kwarg_map_134.$$arity = -2); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Variable').$new(name_range, expr_l); + }, $Default_kwarg_map$140.$$arity = -2); - Opal.defn(self, '$module_definition_map', TMP_Default_module_definition_map_135 = function $$module_definition_map(keyword_t, name_e, operator_t, end_t) { + Opal.def(self, '$module_definition_map', $Default_module_definition_map$141 = function $$module_definition_map(keyword_t, name_e, operator_t, end_t) { var self = this, name_l = nil; if ($truthy(name_e)) { name_l = name_e.$loc().$expression()}; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), name_l, self.$loc(end_t)); - }, TMP_Default_module_definition_map_135.$$arity = 4); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), name_l, self.$loc(end_t)); + }, $Default_module_definition_map$141.$$arity = 4); - Opal.defn(self, '$definition_map', TMP_Default_definition_map_136 = function $$definition_map(keyword_t, operator_t, name_t, end_t) { + Opal.def(self, '$definition_map', $Default_definition_map$142 = function $$definition_map(keyword_t, operator_t, name_t, end_t) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), self.$loc(end_t)) - }, TMP_Default_definition_map_136.$$arity = 4); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), self.$loc(end_t)) + }, $Default_definition_map$142.$$arity = 4); - Opal.defn(self, '$send_map', TMP_Default_send_map_137 = function $$send_map(receiver_e, dot_t, selector_t, begin_t, args, end_t) { + Opal.def(self, '$send_map', $Default_send_map$143 = function $$send_map(receiver_e, dot_t, selector_t, begin_t, args, end_t) { var self = this, begin_l = nil, end_l = nil; + + if (begin_t == null) { begin_t = nil; - } + }; + if (args == null) { args = []; - } + }; + if (end_t == null) { end_t = nil; - } - + }; if ($truthy(receiver_e)) { begin_l = receiver_e.$loc().$expression() } else if ($truthy(selector_t)) { @@ -39155,46 +44810,52 @@ if (this_arg == null) this_arg = nil; end_l = args.$last().$loc().$expression() } else if ($truthy(selector_t)) { end_l = self.$loc(selector_t)}; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Send').$new(self.$loc(dot_t), self.$loc(selector_t), self.$loc(begin_t), self.$loc(end_t), begin_l.$join(end_l)); - }, TMP_Default_send_map_137.$$arity = -4); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Send').$new(self.$loc(dot_t), self.$loc(selector_t), self.$loc(begin_t), self.$loc(end_t), begin_l.$join(end_l)); + }, $Default_send_map$143.$$arity = -4); - Opal.defn(self, '$var_send_map', TMP_Default_var_send_map_138 = function $$var_send_map(variable_e) { + Opal.def(self, '$var_send_map', $Default_var_send_map$144 = function $$var_send_map(variable_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Send').$new(nil, variable_e.$loc().$expression(), nil, nil, variable_e.$loc().$expression()) - }, TMP_Default_var_send_map_138.$$arity = 1); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Send').$new(nil, variable_e.$loc().$expression(), nil, nil, variable_e.$loc().$expression()) + }, $Default_var_send_map$144.$$arity = 1); - Opal.defn(self, '$send_binary_op_map', TMP_Default_send_binary_op_map_139 = function $$send_binary_op_map(lhs_e, selector_t, rhs_e) { + Opal.def(self, '$send_binary_op_map', $Default_send_binary_op_map$145 = function $$send_binary_op_map(lhs_e, selector_t, rhs_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, self.$join_exprs(lhs_e, rhs_e)) - }, TMP_Default_send_binary_op_map_139.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, self.$join_exprs(lhs_e, rhs_e)) + }, $Default_send_binary_op_map$145.$$arity = 3); - Opal.defn(self, '$send_unary_op_map', TMP_Default_send_unary_op_map_140 = function $$send_unary_op_map(selector_t, arg_e) { + Opal.def(self, '$send_unary_op_map', $Default_send_unary_op_map$146 = function $$send_unary_op_map(selector_t, arg_e) { var self = this, expr_l = nil; if ($truthy(arg_e['$nil?']())) { expr_l = self.$loc(selector_t) - } else { + } else { expr_l = self.$loc(selector_t).$join(arg_e.$loc().$expression()) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, expr_l); - }, TMP_Default_send_unary_op_map_140.$$arity = 2); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, expr_l); + }, $Default_send_unary_op_map$146.$$arity = 2); - Opal.defn(self, '$send_index_map', TMP_Default_send_index_map_141 = function $$send_index_map(receiver_e, lbrack_t, rbrack_t) { + Opal.def(self, '$index_map', $Default_index_map$147 = function $$index_map(receiver_e, lbrack_t, rbrack_t) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(lbrack_t).$join(self.$loc(rbrack_t)), nil, nil, receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) - }, TMP_Default_send_index_map_141.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Index').$new(self.$loc(lbrack_t), self.$loc(rbrack_t), receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, $Default_index_map$147.$$arity = 3); - Opal.defn(self, '$block_map', TMP_Default_block_map_142 = function $$block_map(receiver_l, begin_t, end_t) { + Opal.def(self, '$send_index_map', $Default_send_index_map$148 = function $$send_index_map(receiver_e, lbrack_t, rbrack_t) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), receiver_l.$join(self.$loc(end_t))) - }, TMP_Default_block_map_142.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Send').$new(nil, self.$loc(lbrack_t).$join(self.$loc(rbrack_t)), nil, nil, receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, $Default_send_index_map$148.$$arity = 3); - Opal.defn(self, '$keyword_map', TMP_Default_keyword_map_143 = function $$keyword_map(keyword_t, begin_t, args, end_t) { + Opal.def(self, '$block_map', $Default_block_map$149 = function $$block_map(receiver_l, begin_t, end_t) { + var self = this; + + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), receiver_l.$join(self.$loc(end_t))) + }, $Default_block_map$149.$$arity = 3); + + Opal.def(self, '$keyword_map', $Default_keyword_map$150 = function $$keyword_map(keyword_t, begin_t, args, end_t) { var $a, self = this, end_l = nil; @@ -39205,19 +44866,19 @@ if (this_arg == null) this_arg = nil; end_l = args.$last().$loc().$expression() } else if ($truthy(($truthy($a = args['$any?']()) ? $rb_gt(args.$count(), 1) : $a))) { end_l = args['$[]'](-2).$loc().$expression() - } else { + } else { end_l = self.$loc(keyword_t) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); - }, TMP_Default_keyword_map_143.$$arity = 4); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, $Default_keyword_map$150.$$arity = 4); - Opal.defn(self, '$keyword_mod_map', TMP_Default_keyword_mod_map_144 = function $$keyword_mod_map(pre_e, keyword_t, post_e) { + Opal.def(self, '$keyword_mod_map', $Default_keyword_mod_map$151 = function $$keyword_mod_map(pre_e, keyword_t, post_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), nil, nil, self.$join_exprs(pre_e, post_e)) - }, TMP_Default_keyword_mod_map_144.$$arity = 3); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), nil, nil, self.$join_exprs(pre_e, post_e)) + }, $Default_keyword_mod_map$151.$$arity = 3); - Opal.defn(self, '$condition_map', TMP_Default_condition_map_145 = function $$condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t) { + Opal.def(self, '$condition_map', $Default_condition_map$152 = function $$condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t) { var $a, self = this, end_l = nil; @@ -39231,25 +44892,25 @@ if (this_arg == null) this_arg = nil; end_l = body_e.$loc().$expression() } else if ($truthy(self.$loc(begin_t))) { end_l = self.$loc(begin_t) - } else { + } else { end_l = cond_e.$loc().$expression() }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(else_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); - }, TMP_Default_condition_map_145.$$arity = 7); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(else_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, $Default_condition_map$152.$$arity = 7); - Opal.defn(self, '$ternary_map', TMP_Default_ternary_map_146 = function $$ternary_map(begin_e, question_t, mid_e, colon_t, end_e) { + Opal.def(self, '$ternary_map', $Default_ternary_map$153 = function $$ternary_map(begin_e, question_t, mid_e, colon_t, end_e) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Ternary').$new(self.$loc(question_t), self.$loc(colon_t), self.$join_exprs(begin_e, end_e)) - }, TMP_Default_ternary_map_146.$$arity = 5); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Ternary').$new(self.$loc(question_t), self.$loc(colon_t), self.$join_exprs(begin_e, end_e)) + }, $Default_ternary_map$153.$$arity = 5); - Opal.defn(self, '$for_map', TMP_Default_for_map_147 = function $$for_map(keyword_t, in_t, begin_t, end_t) { + Opal.def(self, '$for_map', $Default_for_map$154 = function $$for_map(keyword_t, in_t, begin_t, end_t) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'For').$new(self.$loc(keyword_t), self.$loc(in_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(self.$loc(end_t))) - }, TMP_Default_for_map_147.$$arity = 4); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'For').$new(self.$loc(keyword_t), self.$loc(in_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(self.$loc(end_t))) + }, $Default_for_map$154.$$arity = 4); - Opal.defn(self, '$rescue_body_map', TMP_Default_rescue_body_map_148 = function $$rescue_body_map(keyword_t, exc_list_e, assoc_t, exc_var_e, then_t, compstmt_e) { + Opal.def(self, '$rescue_body_map', $Default_rescue_body_map$155 = function $$rescue_body_map(keyword_t, exc_list_e, assoc_t, exc_var_e, then_t, compstmt_e) { var $a, self = this, end_l = nil; @@ -39263,204 +44924,297 @@ if (this_arg == null) this_arg = nil; end_l = exc_list_e.$loc().$expression()}; if ($truthy(end_l['$nil?']())) { end_l = self.$loc(keyword_t)}; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'RescueBody').$new(self.$loc(keyword_t), self.$loc(assoc_t), self.$loc(then_t), self.$loc(keyword_t).$join(end_l)); - }, TMP_Default_rescue_body_map_148.$$arity = 6); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'RescueBody').$new(self.$loc(keyword_t), self.$loc(assoc_t), self.$loc(then_t), self.$loc(keyword_t).$join(end_l)); + }, $Default_rescue_body_map$155.$$arity = 6); - Opal.defn(self, '$eh_keyword_map', TMP_Default_eh_keyword_map_149 = function $$eh_keyword_map(compstmt_e, keyword_t, body_es, else_t, else_e) { + Opal.def(self, '$eh_keyword_map', $Default_eh_keyword_map$156 = function $$eh_keyword_map(compstmt_e, keyword_t, body_es, else_t, else_e) { var self = this, begin_l = nil, end_l = nil; if ($truthy(compstmt_e['$nil?']())) { if ($truthy(keyword_t['$nil?']())) { begin_l = body_es.$first().$loc().$expression() - } else { + } else { begin_l = self.$loc(keyword_t) } - } else { + } else { begin_l = compstmt_e.$loc().$expression() }; if ($truthy(else_t)) { if ($truthy(else_e['$nil?']())) { end_l = self.$loc(else_t) - } else { + } else { end_l = else_e.$loc().$expression() } } else if ($truthy(body_es.$last()['$nil?']()['$!']())) { end_l = body_es.$last().$loc().$expression() - } else { + } else { end_l = self.$loc(keyword_t) }; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), nil, self.$loc(else_t), nil, begin_l.$join(end_l)); - }, TMP_Default_eh_keyword_map_149.$$arity = 5); + return $$$($$$($$($nesting, 'Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), nil, self.$loc(else_t), nil, begin_l.$join(end_l)); + }, $Default_eh_keyword_map$156.$$arity = 5); - Opal.defn(self, '$static_string', TMP_Default_static_string_151 = function $$static_string(nodes) {try { + Opal.def(self, '$static_string', $Default_static_string$157 = function $$static_string(nodes) {try { - var TMP_150, self = this; + var $$158, self = this; - return $send(nodes, 'map', [], (TMP_150 = function(node){var self = TMP_150.$$s || this, $case = nil, string = nil; -if (node == null) node = nil; - return (function() {$case = node.$type(); + return $send(nodes, 'map', [], ($$158 = function(node){var self = $$158.$$s || this, $case = nil, string = nil; + + + + if (node == null) { + node = nil; + }; + return (function() {$case = node.$type(); if ("str"['$===']($case)) {return node.$children()['$[]'](0)} else if ("begin"['$===']($case)) {if ($truthy((string = self.$static_string(node.$children())))) { return string - } else { + } else { Opal.ret(nil) }} - else {Opal.ret(nil)}})()}, TMP_150.$$s = self, TMP_150.$$arity = 1, TMP_150)).$join() + else {Opal.ret(nil)}})();}, $$158.$$s = self, $$158.$$arity = 1, $$158)).$join() } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Default_static_string_151.$$arity = 1); + }, $Default_static_string$157.$$arity = 1); - Opal.defn(self, '$static_regexp', TMP_Default_static_regexp_152 = function $$static_regexp(parts, options) { - var $a, self = this, source = nil; + Opal.def(self, '$static_regexp', $Default_static_regexp$159 = function $$static_regexp(parts, options) { + var self = this, source = nil; source = self.$static_string(parts); if ($truthy(source['$nil?']())) { return nil}; - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - source = (function() { - if ($truthy(options.$children()['$include?']("u"))) {return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8'))} - else if ($truthy(options.$children()['$include?']("e"))) {return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'EUC_JP'))} - else if ($truthy(options.$children()['$include?']("s"))) {return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'WINDOWS_31J'))} - else if ($truthy(options.$children()['$include?']("n"))) {return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'BINARY'))} - else {return source}})()}; - return Opal.const_get_relative($nesting, 'Regexp').$new(source, (function() {if ($truthy(options.$children()['$include?']("x"))) { - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Regexp'), 'EXTENDED') - } else { + source = (function() { + if ($truthy(options.$children()['$include?']("u"))) {return source.$encode($$$($$($nesting, 'Encoding'), 'UTF_8'))} + else if ($truthy(options.$children()['$include?']("e"))) {return source.$encode($$$($$($nesting, 'Encoding'), 'EUC_JP'))} + else if ($truthy(options.$children()['$include?']("s"))) {return source.$encode($$$($$($nesting, 'Encoding'), 'WINDOWS_31J'))} + else if ($truthy(options.$children()['$include?']("n"))) {return source.$encode($$$($$($nesting, 'Encoding'), 'BINARY'))} + else {return source}})(); + return $$($nesting, 'Regexp').$new(source, (function() {if ($truthy(options.$children()['$include?']("x"))) { + return $$$($$($nesting, 'Regexp'), 'EXTENDED') + } else { return nil }; return nil; })()); - }, TMP_Default_static_regexp_152.$$arity = 2); + }, $Default_static_regexp$159.$$arity = 2); - Opal.defn(self, '$static_regexp_node', TMP_Default_static_regexp_node_153 = function $$static_regexp_node(node) { + Opal.def(self, '$static_regexp_node', $Default_static_regexp_node$160 = function $$static_regexp_node(node) { var $a, self = this, parts = nil, options = nil; if (node.$type()['$==']("regexp")) { $a = [node.$children()['$[]']($range(0, -2, false)), node.$children()['$[]'](-1)], (parts = $a[0]), (options = $a[1]), $a; return self.$static_regexp(parts, options); - } else { + } else { return nil } - }, TMP_Default_static_regexp_node_153.$$arity = 1); + }, $Default_static_regexp_node$160.$$arity = 1); - Opal.defn(self, '$collapse_string_parts?', TMP_Default_collapse_string_parts$q_154 = function(parts) { + Opal.def(self, '$collapse_string_parts?', $Default_collapse_string_parts$ques$161 = function(parts) { var $a, self = this; return ($truthy($a = parts['$one?']()) ? ["str", "dstr"]['$include?'](parts.$first().$type()) : $a) - }, TMP_Default_collapse_string_parts$q_154.$$arity = 1); + }, $Default_collapse_string_parts$ques$161.$$arity = 1); - Opal.defn(self, '$value', TMP_Default_value_155 = function $$value(token) { + Opal.def(self, '$value', $Default_value$162 = function $$value(token) { var self = this; return token['$[]'](0) - }, TMP_Default_value_155.$$arity = 1); - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - - Opal.defn(self, '$string_value', TMP_Default_string_value_156 = function $$string_value(token) { - var self = this; + }, $Default_value$162.$$arity = 1); + + Opal.def(self, '$string_value', $Default_string_value$163 = function $$string_value(token) { + var self = this; - - if ($truthy(token['$[]'](0)['$valid_encoding?']())) { - } else { - self.$diagnostic("error", "invalid_encoding", nil, token['$[]'](1)) - }; - return token['$[]'](0); - }, TMP_Default_string_value_156.$$arity = 1) + + if ($truthy(token['$[]'](0)['$valid_encoding?']())) { } else { - Opal.alias(self, "string_value", "value") - }; + self.$diagnostic("error", "invalid_encoding", nil, token['$[]'](1)) + }; + return token['$[]'](0); + }, $Default_string_value$163.$$arity = 1); - Opal.defn(self, '$loc', TMP_Default_loc_157 = function $$loc(token) { + Opal.def(self, '$loc', $Default_loc$164 = function $$loc(token) { var $a, self = this; if ($truthy(($truthy($a = token) ? token['$[]'](0) : $a))) { return token['$[]'](1) - } else { + } else { return nil } - }, TMP_Default_loc_157.$$arity = 1); - return (Opal.defn(self, '$diagnostic', TMP_Default_diagnostic_158 = function $$diagnostic(type, reason, arguments$, location, highlights) { + }, $Default_loc$164.$$arity = 1); + return (Opal.def(self, '$diagnostic', $Default_diagnostic$165 = function $$diagnostic(type, reason, arguments$, location, highlights) { var self = this; + + if (highlights == null) { highlights = []; - } - - self.parser.$diagnostics().$process(Opal.const_get_relative($nesting, 'Diagnostic').$new(type, reason, arguments$, location, highlights)); + }; + self.parser.$diagnostics().$process($$($nesting, 'Diagnostic').$new(type, reason, arguments$, location, highlights)); if (type['$==']("error")) { return self.parser.$send("yyerror") - } else { + } else { return nil }; - }, TMP_Default_diagnostic_158.$$arity = -5), nil) && 'diagnostic'; - })(Opal.const_get_relative($nesting, 'Builders'), null, $nesting) + }, $Default_diagnostic$165.$$arity = -5), nil) && 'diagnostic'; + })($$($nesting, 'Builders'), null, $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/context"] = function(Opal) { + function $rb_gt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + + Opal.add_stubs(['$attr_reader', '$freeze', '$<<', '$pop', '$clear', '$==', '$last', '$include?', '$rindex', '$stack', '$nil?', '$!', '$>']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Context'); + + var $nesting = [self].concat($parent_nesting), $Context_initialize$1, $Context_push$2, $Context_pop$3, $Context_reset$4, $Context_in_class$ques$5, $Context_indirectly_in_def$ques$6, $Context_class_definition_allowed$ques$7, $Context_in_block$ques$9, $Context_in_lambda$ques$10; + + self.$$prototype.stack = nil; + + self.$attr_reader("stack"); + + Opal.def(self, '$initialize', $Context_initialize$1 = function $$initialize() { + var self = this; + + + self.stack = []; + return self.$freeze(); + }, $Context_initialize$1.$$arity = 0); + + Opal.def(self, '$push', $Context_push$2 = function $$push(state) { + var self = this; + + return self.stack['$<<'](state) + }, $Context_push$2.$$arity = 1); + + Opal.def(self, '$pop', $Context_pop$3 = function $$pop() { + var self = this; + + return self.stack.$pop() + }, $Context_pop$3.$$arity = 0); + + Opal.def(self, '$reset', $Context_reset$4 = function $$reset() { + var self = this; + + return self.stack.$clear() + }, $Context_reset$4.$$arity = 0); + + Opal.def(self, '$in_class?', $Context_in_class$ques$5 = function() { + var self = this; + + return self.stack.$last()['$==']("class") + }, $Context_in_class$ques$5.$$arity = 0); + + Opal.def(self, '$indirectly_in_def?', $Context_indirectly_in_def$ques$6 = function() { + var $a, self = this; + + return ($truthy($a = self.stack['$include?']("def")) ? $a : self.stack['$include?']("defs")) + }, $Context_indirectly_in_def$ques$6.$$arity = 0); + + Opal.def(self, '$class_definition_allowed?', $Context_class_definition_allowed$ques$7 = function() { + var $$8, $a, $b, self = this, def_index = nil, sclass_index = nil; + + + def_index = $send(self.$stack(), 'rindex', [], ($$8 = function(item){var self = $$8.$$s || this; + + + + if (item == null) { + item = nil; + }; + return ["def", "defs"]['$include?'](item);}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + sclass_index = self.$stack().$rindex("sclass"); + return ($truthy($a = def_index['$nil?']()) ? $a : ($truthy($b = sclass_index['$nil?']()['$!']()) ? $rb_gt(sclass_index, def_index) : $b)); + }, $Context_class_definition_allowed$ques$7.$$arity = 0); + Opal.alias(self, "module_definition_allowed?", "class_definition_allowed?"); + Opal.alias(self, "dynamic_const_definition_allowed?", "class_definition_allowed?"); + + Opal.def(self, '$in_block?', $Context_in_block$ques$9 = function() { + var self = this; + + return self.stack.$last()['$==']("block") + }, $Context_in_block$ques$9.$$arity = 0); + return (Opal.def(self, '$in_lambda?', $Context_in_lambda$ques$10 = function() { + var self = this; + + return self.stack.$last()['$==']("lambda") + }, $Context_in_lambda$ques$10.$$arity = 0), nil) && 'in_lambda?'; + })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/base"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $hash2 = Opal.hash2; - Opal.add_stubs(['$default_parser', '$setup_source_buffer', '$default_encoding', '$parse', '$parse_with_comments', '$read', '$new', '$all_errors_are_fatal=', '$diagnostics', '$-', '$ignore_warnings=', '$lambda', '$puts', '$render', '$consumer=', '$respond_to?', '$force_encoding', '$dup', '$==', '$name', '$raw_source=', '$source=', '$private_class_method', '$attr_reader', '$version', '$diagnostics=', '$static_env=', '$parser=', '$class', '$[]', '$reset', '$source_buffer=', '$do_parse', '$comments=', '$comments', '$tokens=', '$!', '$raise', '$tokens', '$>', '$private', '$advance', '$===', '$diagnostic', '$map', '$process', '$yyerror', '$token_to_str']); + Opal.add_stubs(['$default_parser', '$setup_source_buffer', '$default_encoding', '$parse', '$parse_with_comments', '$read', '$new', '$all_errors_are_fatal=', '$diagnostics', '$-', '$ignore_warnings=', '$lambda', '$puts', '$render', '$consumer=', '$force_encoding', '$dup', '$==', '$name', '$raw_source=', '$source=', '$private_class_method', '$attr_reader', '$version', '$diagnostics=', '$static_env=', '$context=', '$parser=', '$class', '$[]', '$reset', '$source_buffer=', '$do_parse', '$comments=', '$comments', '$tokens=', '$!', '$raise', '$tokens', '$private', '$advance', '$===', '$diagnostic', '$map', '$process', '$yyerror', '$token_to_str']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Base(){}; - var self = $Base = $klass($base, $super, 'Base', $Base); + var self = $klass($base, $super, 'Base'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Base_parse_1, TMP_Base_parse_with_comments_2, TMP_Base_parse_file_3, TMP_Base_parse_file_with_comments_4, TMP_Base_default_parser_6, TMP_Base_setup_source_buffer_7, TMP_Base_initialize_8, TMP_Base_reset_9, TMP_Base_parse_10, TMP_Base_parse_with_comments_11, TMP_Base_tokenize_12, TMP_Base_in_def$q_13, TMP_Base_next_token_14, TMP_Base_check_kwarg_name_15, TMP_Base_diagnostic_17, TMP_Base_on_error_18; + var $nesting = [self].concat($parent_nesting), $Base_parse$1, $Base_parse_with_comments$2, $Base_parse_file$3, $Base_parse_file_with_comments$4, $Base_default_parser$5, $Base_setup_source_buffer$7, $Base_initialize$8, $Base_reset$9, $Base_parse$10, $Base_parse_with_comments$11, $Base_tokenize$12, $Base_next_token$13, $Base_check_kwarg_name$14, $Base_diagnostic$15, $Base_on_error$17; - def.diagnostics = def.lexer = def.static_env = def.builder = def.def_level = nil; + self.$$prototype.diagnostics = self.$$prototype.lexer = self.$$prototype.static_env = self.$$prototype.context = self.$$prototype.builder = nil; - Opal.defs(self, '$parse', TMP_Base_parse_1 = function $$parse(string, file, line) { + Opal.defs(self, '$parse', $Base_parse$1 = function $$parse(string, file, line) { var self = this, parser = nil, source_buffer = nil; + + if (file == null) { file = "(string)"; - } + }; + if (line == null) { line = 1; - } - + }; parser = self.$default_parser(); source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); return parser.$parse(source_buffer); - }, TMP_Base_parse_1.$$arity = -2); - Opal.defs(self, '$parse_with_comments', TMP_Base_parse_with_comments_2 = function $$parse_with_comments(string, file, line) { + }, $Base_parse$1.$$arity = -2); + Opal.defs(self, '$parse_with_comments', $Base_parse_with_comments$2 = function $$parse_with_comments(string, file, line) { var self = this, parser = nil, source_buffer = nil; + + if (file == null) { file = "(string)"; - } + }; + if (line == null) { line = 1; - } - + }; parser = self.$default_parser(); source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); return parser.$parse_with_comments(source_buffer); - }, TMP_Base_parse_with_comments_2.$$arity = -2); - Opal.defs(self, '$parse_file', TMP_Base_parse_file_3 = function $$parse_file(filename) { + }, $Base_parse_with_comments$2.$$arity = -2); + Opal.defs(self, '$parse_file', $Base_parse_file$3 = function $$parse_file(filename) { var self = this; - return self.$parse(Opal.const_get_relative($nesting, 'File').$read(filename), filename) - }, TMP_Base_parse_file_3.$$arity = 1); - Opal.defs(self, '$parse_file_with_comments', TMP_Base_parse_file_with_comments_4 = function $$parse_file_with_comments(filename) { + return self.$parse($$($nesting, 'File').$read(filename), filename) + }, $Base_parse_file$3.$$arity = 1); + Opal.defs(self, '$parse_file_with_comments', $Base_parse_file_with_comments$4 = function $$parse_file_with_comments(filename) { var self = this; - return self.$parse_with_comments(Opal.const_get_relative($nesting, 'File').$read(filename), filename) - }, TMP_Base_parse_file_with_comments_4.$$arity = 1); - Opal.defs(self, '$default_parser', TMP_Base_default_parser_6 = function $$default_parser() { - var TMP_5, self = this, parser = nil, $writer = nil; + return self.$parse_with_comments($$($nesting, 'File').$read(filename), filename) + }, $Base_parse_file_with_comments$4.$$arity = 1); + Opal.defs(self, '$default_parser', $Base_default_parser$5 = function $$default_parser() { + var $$6, self = this, parser = nil, $writer = nil; parser = self.$new(); @@ -39473,50 +45227,57 @@ Opal.modules["parser/base"] = function(Opal) { $send(parser.$diagnostics(), 'ignore_warnings=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - $writer = [$send(self, 'lambda', [], (TMP_5 = function(diagnostic){var self = TMP_5.$$s || this; + $writer = [$send(self, 'lambda', [], ($$6 = function(diagnostic){var self = $$6.$$s || this; if ($gvars.stderr == null) $gvars.stderr = nil; -if (diagnostic == null) diagnostic = nil; - return $gvars.stderr.$puts(diagnostic.$render())}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5))]; + + + + if (diagnostic == null) { + diagnostic = nil; + }; + return $gvars.stderr.$puts(diagnostic.$render());}, $$6.$$s = self, $$6.$$arity = 1, $$6))]; $send(parser.$diagnostics(), 'consumer=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return parser; - }, TMP_Base_default_parser_6.$$arity = 0); - Opal.defs(self, '$setup_source_buffer', TMP_Base_setup_source_buffer_7 = function $$setup_source_buffer(file, line, string, encoding) { + }, $Base_default_parser$5.$$arity = 0); + Opal.defs(self, '$setup_source_buffer', $Base_setup_source_buffer$7 = function $$setup_source_buffer(file, line, string, encoding) { var self = this, source_buffer = nil, $writer = nil; - if ($truthy(string['$respond_to?']("force_encoding"))) { - string = string.$dup().$force_encoding(encoding)}; - source_buffer = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Buffer').$new(file, line); + string = string.$dup().$force_encoding(encoding); + source_buffer = $$$($$($nesting, 'Source'), 'Buffer').$new(file, line); if (self.$name()['$==']("Parser::Ruby18")) { $writer = [string]; $send(source_buffer, 'raw_source=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; - } else { + } else { $writer = [string]; $send(source_buffer, 'source=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; return source_buffer; - }, TMP_Base_setup_source_buffer_7.$$arity = 4); + }, $Base_setup_source_buffer$7.$$arity = 4); self.$private_class_method("setup_source_buffer"); self.$attr_reader("diagnostics"); self.$attr_reader("builder"); self.$attr_reader("static_env"); self.$attr_reader("source_buffer"); + self.$attr_reader("context"); - Opal.defn(self, '$initialize', TMP_Base_initialize_8 = function $$initialize(builder) { + Opal.def(self, '$initialize', $Base_initialize$8 = function $$initialize(builder) { var $a, self = this, $writer = nil; - if (builder == null) { - builder = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Builders'), 'Default').$new(); - } - self.diagnostics = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Diagnostic'), 'Engine').$new(); - self.static_env = Opal.const_get_relative($nesting, 'StaticEnvironment').$new(); - self.lexer = Opal.const_get_relative($nesting, 'Lexer').$new(self.$version()); + + if (builder == null) { + builder = $$$($$$($$($nesting, 'Parser'), 'Builders'), 'Default').$new(); + }; + self.diagnostics = $$$($$($nesting, 'Diagnostic'), 'Engine').$new(); + self.static_env = $$($nesting, 'StaticEnvironment').$new(); + self.context = $$($nesting, 'Context').$new(); + self.lexer = $$($nesting, 'Lexer').$new(self.$version()); $writer = [self.diagnostics]; $send(self.lexer, 'diagnostics=', Opal.to_a($writer)); @@ -39525,28 +45286,33 @@ if (diagnostic == null) diagnostic = nil; $writer = [self.static_env]; $send(self.lexer, 'static_env=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.context]; + $send(self.lexer, 'context=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; self.builder = builder; $writer = [self]; $send(self.builder, 'parser=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = Opal.const_get_qualified(self.$class(), 'Racc_debug_parser')) ? Opal.const_get_relative($nesting, 'ENV')['$[]']("RACC_DEBUG") : $a))) { + self.last_token = nil; + if ($truthy(($truthy($a = $$$(self.$class(), 'Racc_debug_parser')) ? $$($nesting, 'ENV')['$[]']("RACC_DEBUG") : $a))) { self.yydebug = true}; return self.$reset(); - }, TMP_Base_initialize_8.$$arity = -1); + }, $Base_initialize$8.$$arity = -1); - Opal.defn(self, '$reset', TMP_Base_reset_9 = function $$reset() { + Opal.def(self, '$reset', $Base_reset$9 = function $$reset() { var self = this; self.source_buffer = nil; - self.def_level = 0; self.lexer.$reset(); self.static_env.$reset(); + self.context.$reset(); return self; - }, TMP_Base_reset_9.$$arity = 0); + }, $Base_reset$9.$$arity = 0); - Opal.defn(self, '$parse', TMP_Base_parse_10 = function $$parse(source_buffer) { + Opal.def(self, '$parse', $Base_parse$10 = function $$parse(source_buffer) { var self = this, $writer = nil; return (function() { try { @@ -39560,9 +45326,9 @@ if (diagnostic == null) diagnostic = nil; } finally { ((self.source_buffer = nil), (($writer = [nil]), $send(self.lexer, 'source_buffer=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) }; })() - }, TMP_Base_parse_10.$$arity = 1); + }, $Base_parse$10.$$arity = 1); - Opal.defn(self, '$parse_with_comments', TMP_Base_parse_with_comments_11 = function $$parse_with_comments(source_buffer) { + Opal.def(self, '$parse_with_comments', $Base_parse_with_comments$11 = function $$parse_with_comments(source_buffer) { var self = this, $writer = nil; return (function() { try { @@ -39575,14 +45341,16 @@ if (diagnostic == null) diagnostic = nil; } finally { (($writer = [nil]), $send(self.lexer, 'comments=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) }; })() - }, TMP_Base_parse_with_comments_11.$$arity = 1); + }, $Base_parse_with_comments$11.$$arity = 1); - Opal.defn(self, '$tokenize', TMP_Base_tokenize_12 = function $$tokenize(source_buffer, recover) { + Opal.def(self, '$tokenize', $Base_tokenize$12 = function $$tokenize(source_buffer, recover) { var self = this, $writer = nil, ast = nil; + + if (recover == null) { recover = false; - } + }; return (function() { try { @@ -39597,7 +45365,7 @@ if (diagnostic == null) diagnostic = nil; try { ast = self.$parse(source_buffer) } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'SyntaxError')])) { + if (Opal.rescue($err, [$$$($$($nesting, 'Parser'), 'SyntaxError')])) { try { if ($truthy(recover['$!']())) { self.$raise()} @@ -39607,151 +45375,254 @@ if (diagnostic == null) diagnostic = nil; return [ast, self.lexer.$comments(), self.lexer.$tokens()]; } finally { ((($writer = [nil]), $send(self.lexer, 'tokens=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]), (($writer = [nil]), $send(self.lexer, 'comments=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) - }; })() - }, TMP_Base_tokenize_12.$$arity = -2); - - Opal.defn(self, '$in_def?', TMP_Base_in_def$q_13 = function() { - var self = this; - - return $rb_gt(self.def_level, 0) - }, TMP_Base_in_def$q_13.$$arity = 0); + }; })(); + }, $Base_tokenize$12.$$arity = -2); self.$private(); - Opal.defn(self, '$next_token', TMP_Base_next_token_14 = function $$next_token() { - var self = this; + Opal.def(self, '$next_token', $Base_next_token$13 = function $$next_token() { + var self = this, token = nil; - return self.lexer.$advance() - }, TMP_Base_next_token_14.$$arity = 0); + + token = self.lexer.$advance(); + self.last_token = token; + return token; + }, $Base_next_token$13.$$arity = 0); - Opal.defn(self, '$check_kwarg_name', TMP_Base_check_kwarg_name_15 = function $$check_kwarg_name(name_t) { + Opal.def(self, '$check_kwarg_name', $Base_check_kwarg_name$14 = function $$check_kwarg_name(name_t) { var self = this, $case = nil; return (function() {$case = name_t['$[]'](0); if (/^[a-z_]/['$===']($case)) {return nil} else if (/^[A-Z]/['$===']($case)) {return self.$diagnostic("error", "argument_const", nil, name_t)} else { return nil }})() - }, TMP_Base_check_kwarg_name_15.$$arity = 1); + }, $Base_check_kwarg_name$14.$$arity = 1); - Opal.defn(self, '$diagnostic', TMP_Base_diagnostic_17 = function $$diagnostic(level, reason, arguments$, location_t, highlights_ts) { - var $a, $b, TMP_16, self = this, _ = nil, location = nil, highlights = nil; + Opal.def(self, '$diagnostic', $Base_diagnostic$15 = function $$diagnostic(level, reason, arguments$, location_t, highlights_ts) { + var $a, $b, $$16, self = this, _ = nil, location = nil, highlights = nil; + + if (highlights_ts == null) { highlights_ts = []; - } - + }; $b = location_t, $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; - highlights = $send(highlights_ts, 'map', [], (TMP_16 = function(token){var self = TMP_16.$$s || this, $c, $d, range = nil; -if (token == null) token = nil; + highlights = $send(highlights_ts, 'map', [], ($$16 = function(token){var self = $$16.$$s || this, $c, $d, range = nil; + + + if (token == null) { + token = nil; + }; $d = token, $c = Opal.to_ary($d), (_ = ($c[0] == null ? nil : $c[0])), (range = ($c[1] == null ? nil : $c[1])), $d; - return range;}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16)); - self.diagnostics.$process(Opal.const_get_relative($nesting, 'Diagnostic').$new(level, reason, arguments$, location, highlights)); + return range;}, $$16.$$s = self, $$16.$$arity = 1, $$16)); + self.diagnostics.$process($$($nesting, 'Diagnostic').$new(level, reason, arguments$, location, highlights)); if (level['$==']("error")) { return self.$yyerror() - } else { + } else { return nil }; - }, TMP_Base_diagnostic_17.$$arity = -5); - return (Opal.defn(self, '$on_error', TMP_Base_on_error_18 = function $$on_error(error_token_id, error_value, value_stack) { + }, $Base_diagnostic$15.$$arity = -5); + return (Opal.def(self, '$on_error', $Base_on_error$17 = function $$on_error(error_token_id, error_value, value_stack) { var $a, $b, self = this, token_name = nil, _ = nil, location = nil; token_name = self.$token_to_str(error_token_id); $b = error_value, $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; - return self.diagnostics.$process(Opal.const_get_relative($nesting, 'Diagnostic').$new("error", "unexpected_token", $hash2(["token"], {"token": token_name}), location)); - }, TMP_Base_on_error_18.$$arity = 3), nil) && 'on_error'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Racc'), 'Parser'), $nesting) + return self.diagnostics.$process($$($nesting, 'Diagnostic').$new("error", "unexpected_token", $hash2(["token"], {"token": token_name}), location)); + }, $Base_on_error$17.$$arity = 3), nil) && 'on_error'; + })($nesting[0], $$$($$($nesting, 'Racc'), 'Parser'), $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["parser/rewriter"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; - Opal.add_stubs(['$new', '$process', '$include?', '$type', '$remove', '$insert_before', '$insert_after', '$replace']); + Opal.add_stubs(['$new', '$process', '$include?', '$type', '$remove', '$wrap', '$insert_before', '$insert_after', '$replace', '$freeze', '$join', '$extend', '$warn_of_deprecation', '$class', '$warned_of_deprecation=', '$-']); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Rewriter(){}; - var self = $Rewriter = $klass($base, $super, 'Rewriter', $Rewriter); + var self = $klass($base, $super, 'Rewriter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rewriter_rewrite_1, TMP_Rewriter_assignment$q_2, TMP_Rewriter_remove_3, TMP_Rewriter_insert_before_4, TMP_Rewriter_insert_after_5, TMP_Rewriter_replace_6; + var $nesting = [self].concat($parent_nesting), $Rewriter_rewrite$1, $Rewriter_assignment$ques$2, $Rewriter_remove$3, $Rewriter_wrap$4, $Rewriter_insert_before$5, $Rewriter_insert_after$6, $Rewriter_replace$7, $Rewriter_initialize$8; - def.source_rewriter = nil; + self.$$prototype.source_rewriter = nil; - Opal.defn(self, '$rewrite', TMP_Rewriter_rewrite_1 = function $$rewrite(source_buffer, ast) { + Opal.def(self, '$rewrite', $Rewriter_rewrite$1 = function $$rewrite(source_buffer, ast) { var self = this; - self.source_rewriter = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Source'), 'Rewriter').$new(source_buffer); + self.source_rewriter = $$$($$($nesting, 'Source'), 'Rewriter').$new(source_buffer); self.$process(ast); return self.source_rewriter.$process(); - }, TMP_Rewriter_rewrite_1.$$arity = 2); + }, $Rewriter_rewrite$1.$$arity = 2); - Opal.defn(self, '$assignment?', TMP_Rewriter_assignment$q_2 = function(node) { + Opal.def(self, '$assignment?', $Rewriter_assignment$ques$2 = function(node) { var self = this; return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) - }, TMP_Rewriter_assignment$q_2.$$arity = 1); + }, $Rewriter_assignment$ques$2.$$arity = 1); - Opal.defn(self, '$remove', TMP_Rewriter_remove_3 = function $$remove(range) { + Opal.def(self, '$remove', $Rewriter_remove$3 = function $$remove(range) { var self = this; return self.source_rewriter.$remove(range) - }, TMP_Rewriter_remove_3.$$arity = 1); + }, $Rewriter_remove$3.$$arity = 1); + + Opal.def(self, '$wrap', $Rewriter_wrap$4 = function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, $Rewriter_wrap$4.$$arity = 3); - Opal.defn(self, '$insert_before', TMP_Rewriter_insert_before_4 = function $$insert_before(range, content) { + Opal.def(self, '$insert_before', $Rewriter_insert_before$5 = function $$insert_before(range, content) { var self = this; return self.source_rewriter.$insert_before(range, content) - }, TMP_Rewriter_insert_before_4.$$arity = 2); + }, $Rewriter_insert_before$5.$$arity = 2); - Opal.defn(self, '$insert_after', TMP_Rewriter_insert_after_5 = function $$insert_after(range, content) { + Opal.def(self, '$insert_after', $Rewriter_insert_after$6 = function $$insert_after(range, content) { var self = this; return self.source_rewriter.$insert_after(range, content) - }, TMP_Rewriter_insert_after_5.$$arity = 2); - return (Opal.defn(self, '$replace', TMP_Rewriter_replace_6 = function $$replace(range, content) { + }, $Rewriter_insert_after$6.$$arity = 2); + + Opal.def(self, '$replace', $Rewriter_replace$7 = function $$replace(range, content) { var self = this; return self.source_rewriter.$replace(range, content) - }, TMP_Rewriter_replace_6.$$arity = 2), nil) && 'replace'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'AST'), 'Processor'), $nesting) + }, $Rewriter_replace$7.$$arity = 2); + Opal.const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Rewriter is deprecated.", "Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()); + self.$extend($$($nesting, 'Deprecation')); + return (Opal.def(self, '$initialize', $Rewriter_initialize$8 = function $$initialize($a) { + var $post_args, $iter = $Rewriter_initialize$8.$$p, $yield = $iter || nil, self = this, $writer = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + if ($iter) $Rewriter_initialize$8.$$p = null; + // Prepare super implicit arguments + for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { + $zuper[$zuper_i] = arguments[$zuper_i]; + } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + self.$class().$warn_of_deprecation(); + + $writer = [true]; + $send($$$($$($nesting, 'Source'), 'Rewriter'), 'warned_of_deprecation=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Rewriter_initialize$8, false), $zuper, $iter); + }, $Rewriter_initialize$8.$$arity = -1), nil) && 'initialize'; + })($nesting[0], $$$($$$($$($nesting, 'Parser'), 'AST'), 'Processor'), $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/tree_rewriter"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $hash = Opal.hash; + + Opal.add_stubs(['$new', '$process', '$include?', '$type', '$remove', '$wrap', '$insert_before', '$insert_after', '$replace']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $TreeRewriter_rewrite$1, $TreeRewriter_assignment$ques$2, $TreeRewriter_remove$3, $TreeRewriter_wrap$4, $TreeRewriter_insert_before$5, $TreeRewriter_insert_after$6, $TreeRewriter_replace$7; + + self.$$prototype.source_rewriter = nil; + + + Opal.def(self, '$rewrite', $TreeRewriter_rewrite$1 = function $$rewrite(source_buffer, ast, $kwargs) { + var policy, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + policy = Opal.kwrestargs($kwargs, {});; + self.source_rewriter = $$$($$$($$($nesting, 'Parser'), 'Source'), 'TreeRewriter').$new(source_buffer, Opal.to_hash(policy)); + self.$process(ast); + return self.source_rewriter.$process(); + }, $TreeRewriter_rewrite$1.$$arity = -3); + + Opal.def(self, '$assignment?', $TreeRewriter_assignment$ques$2 = function(node) { + var self = this; + + return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) + }, $TreeRewriter_assignment$ques$2.$$arity = 1); + + Opal.def(self, '$remove', $TreeRewriter_remove$3 = function $$remove(range) { + var self = this; + + return self.source_rewriter.$remove(range) + }, $TreeRewriter_remove$3.$$arity = 1); + + Opal.def(self, '$wrap', $TreeRewriter_wrap$4 = function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, $TreeRewriter_wrap$4.$$arity = 3); + + Opal.def(self, '$insert_before', $TreeRewriter_insert_before$5 = function $$insert_before(range, content) { + var self = this; + + return self.source_rewriter.$insert_before(range, content) + }, $TreeRewriter_insert_before$5.$$arity = 2); + + Opal.def(self, '$insert_after', $TreeRewriter_insert_after$6 = function $$insert_after(range, content) { + var self = this; + + return self.source_rewriter.$insert_after(range, content) + }, $TreeRewriter_insert_after$6.$$arity = 2); + return (Opal.def(self, '$replace', $TreeRewriter_replace$7 = function $$replace(range, content) { + var self = this; + + return self.source_rewriter.$replace(range, content) + }, $TreeRewriter_replace$7.$$arity = 2), nil) && 'replace'; + })($nesting[0], $$$($$$($$($nesting, 'Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["parser"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $module = Opal.module; - Opal.add_stubs(['$require', '$<', '$raise']); + Opal.add_stubs(['$=~', '$require', '$raise']); + if ($truthy($$($nesting, 'RUBY_VERSION')['$=~'](/^1\.[89]\./))) { + + self.$require("parser/version"); + self.$raise($$($nesting, 'LoadError'), "" + "parser v" + ($$$($$($nesting, 'Parser'), 'VERSION')) + " cannot run on Ruby " + ($$($nesting, 'RUBY_VERSION')) + ".\n" + "Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n");}; self.$require("set"); self.$require("racc/parser"); self.$require("ast"); - if ($truthy($rb_lt(Opal.const_get_relative($nesting, 'RUBY_VERSION'), "1.9"))) { - self.$require("parser/compatibility/ruby1_8")}; - if ($truthy($rb_lt(Opal.const_get_relative($nesting, 'RUBY_VERSION'), "2.0"))) { - self.$require("parser/compatibility/ruby1_9")}; return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Parser_check_for_encoding_support_1; + var $nesting = [self].concat($parent_nesting); self.$require("parser/version"); self.$require("parser/messages"); + self.$require("parser/deprecation"); (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$require("parser/ast/node"); @@ -39759,9 +45630,9 @@ Opal.modules["parser"] = function(Opal) { self.$require("parser/meta"); })($nesting[0], $nesting); (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Source'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$require("parser/source/buffer"); @@ -39770,6 +45641,8 @@ Opal.modules["parser"] = function(Opal) { self.$require("parser/source/comment/associator"); self.$require("parser/source/rewriter"); self.$require("parser/source/rewriter/action"); + self.$require("parser/source/tree_rewriter"); + self.$require("parser/source/tree_rewriter/action"); self.$require("parser/source/map"); self.$require("parser/source/map/operator"); self.$require("parser/source/map/collection"); @@ -39778,6 +45651,7 @@ Opal.modules["parser"] = function(Opal) { self.$require("parser/source/map/keyword"); self.$require("parser/source/map/definition"); self.$require("parser/source/map/send"); + self.$require("parser/source/map/index"); self.$require("parser/source/map/condition"); self.$require("parser/source/map/ternary"); self.$require("parser/source/map/for"); @@ -39794,194 +45668,230 @@ Opal.modules["parser"] = function(Opal) { self.$require("parser/lexer/literal"); self.$require("parser/lexer/stack_state"); self.$require("parser/lexer/dedenter"); + self.$require("parser/lexer/max_numparam_stack"); (function($base, $parent_nesting) { - var $Builders, self = $Builders = $module($base, 'Builders'); + var self = $module($base, 'Builders'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); self.$require("parser/builders/default") })($nesting[0], $nesting); + self.$require("parser/context"); self.$require("parser/base"); self.$require("parser/rewriter"); - Opal.defs(self, '$check_for_encoding_support', TMP_Parser_check_for_encoding_support_1 = function $$check_for_encoding_support() { - var $a, self = this; - - if ($truthy((($a = Opal.const_get_relative($nesting, 'Encoding', 'skip_raise')) ? 'constant' : nil))) { - return nil - } else { - return self.$raise(Opal.const_get_relative($nesting, 'RuntimeError'), "Parsing 1.9 and later versions of Ruby is not supported on 1.8 due to the lack of Encoding support") - } - }, TMP_Parser_check_for_encoding_support_1.$$arity = 0); + self.$require("parser/tree_rewriter"); })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["parser/ruby23"] = function(Opal) { +/* Generated by Opal 1.0.5 */ +Opal.modules["parser/ruby25"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash = Opal.hash; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash = Opal.hash; - Opal.add_stubs(['$require', '$check_for_encoding_support', '$new', '$each', '$split', '$empty?', '$to_i', '$[]=', '$-', '$+', '$compstmt', '$[]', '$<<', '$preexe', '$!', '$nil?', '$diagnostic', '$begin_body', '$state=', '$alias', '$gvar', '$back_ref', '$undef_method', '$condition_mod', '$loop_mod', '$rescue_body', '$postexe', '$multi_assign', '$op_assign', '$index', '$call_method', '$const_op_assignable', '$const_fetch', '$assign', '$array', '$logical_op', '$not_op', '$extend_dynamic', '$unextend', '$block', '$keyword_cmd', '$multi_lhs', '$begin', '$push', '$splat', '$concat', '$assignable', '$index_asgn', '$attr_asgn', '$const_global', '$const', '$symbol', '$range_inclusive', '$range_exclusive', '$binary_op', '$unary_op', '$match_op', '$ternary', '$associate', '$dup', '$cmdarg', '$cmdarg=', '$block_pass', '$clear', '$begin_keyword', '$call_lambda', '$condition', '$cond', '$pop', '$loop', '$case', '$for', '$extend_static', '$push_cmdarg', '$in_def?', '$def_class', '$pop_cmdarg', '$def_sclass', '$def_module', '$def_method', '$def_singleton', '$arg', '$restarg', '$==', '$size', '$procarg0', '$args', '$declare', '$shadowarg', '$lexpop', '$when', '$string_compose', '$dedent_string', '$dedent_level', '$string', '$character', '$xstring_compose', '$regexp_options', '$regexp_compose', '$words_compose', '$word', '$symbols_compose', '$string_internal', '$symbol_internal', '$ivar', '$cvar', '$symbol_compose', '$negate', '$integer', '$float', '$rational', '$complex', '$ident', '$nil', '$self', '$true', '$false', '$__FILE__', '$__LINE__', '$__ENCODING__', '$accessible', '$nth_ref', '$in_kwarg', '$in_kwarg=', '$check_kwarg_name', '$kwoptarg', '$kwarg', '$kwrestarg', '$optarg', '$blockarg', '$pair', '$pair_keyword', '$pair_quoted', '$kwsplat', '$yyerrok']); + Opal.add_stubs(['$require', '$new', '$each', '$split', '$empty?', '$to_i', '$[]=', '$-', '$+', '$compstmt', '$[]', '$<<', '$preexe', '$!', '$nil?', '$diagnostic', '$begin_body', '$state=', '$alias', '$gvar', '$back_ref', '$undef_method', '$condition_mod', '$loop_mod', '$rescue_body', '$postexe', '$multi_assign', '$assign', '$array', '$op_assign', '$index', '$call_method', '$const_op_assignable', '$const_fetch', '$logical_op', '$not_op', '$push', '$cond', '$pop', '$block', '$keyword_cmd', '$multi_lhs', '$begin', '$splat', '$concat', '$assignable', '$index_asgn', '$attr_asgn', '$const_global', '$const', '$symbol', '$range_inclusive', '$range_exclusive', '$binary_op', '$unary_op', '$match_op', '$ternary', '$associate', '$==', '$cmdarg', '$block_pass', '$begin_keyword', '$call_lambda', '$condition', '$loop', '$case', '$for', '$extend_static', '$class_definition_allowed?', '$def_class', '$unextend', '$def_sclass', '$module_definition_allowed?', '$def_module', '$def_method', '$def_singleton', '$in_class?', '$arg', '$restarg', '$size', '$procarg0', '$args', '$declare', '$shadowarg', '$extend_dynamic', '$when', '$string_compose', '$dedent_string', '$dedent_level', '$string', '$character', '$xstring_compose', '$regexp_options', '$regexp_compose', '$words_compose', '$word', '$symbols_compose', '$string_internal', '$symbol_internal', '$ivar', '$cvar', '$symbol_compose', '$respond_to?', '$negate', '$unary_num', '$integer', '$float', '$rational', '$complex', '$ident', '$nil', '$self', '$true', '$false', '$__FILE__', '$__LINE__', '$__ENCODING__', '$accessible', '$nth_ref', '$in_kwarg', '$in_kwarg=', '$check_kwarg_name', '$kwoptarg', '$kwarg', '$kwrestarg', '$optarg', '$blockarg', '$pair', '$pair_keyword', '$pair_quoted', '$kwsplat', '$yyerrok']); self.$require("racc/parser.rb"); self.$require("parser"); - Opal.const_get_relative($nesting, 'Parser').$check_for_encoding_support(); return (function($base, $parent_nesting) { - var $Parser, self = $Parser = $module($base, 'Parser'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Ruby23(){}; - var self = $Ruby23 = $klass($base, $super, 'Ruby23', $Ruby23); + var self = $klass($base, $super, 'Ruby25'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Ruby23_version_1, TMP_Ruby23_default_encoding_2, TMP_Ruby23_3, TMP_Ruby23_5, TMP_Ruby23_7, TMP_Ruby23_9, TMP_Ruby23__reduce_2_11, TMP_Ruby23__reduce_3_12, TMP_Ruby23__reduce_4_13, TMP_Ruby23__reduce_5_14, TMP_Ruby23__reduce_6_15, TMP_Ruby23__reduce_8_16, TMP_Ruby23__reduce_9_17, TMP_Ruby23__reduce_10_18, TMP_Ruby23__reduce_11_19, TMP_Ruby23__reduce_12_20, TMP_Ruby23__reduce_13_21, TMP_Ruby23__reduce_14_22, TMP_Ruby23__reduce_16_23, TMP_Ruby23__reduce_17_24, TMP_Ruby23__reduce_18_25, TMP_Ruby23__reduce_19_26, TMP_Ruby23__reduce_20_27, TMP_Ruby23__reduce_21_28, TMP_Ruby23__reduce_22_29, TMP_Ruby23__reduce_23_30, TMP_Ruby23__reduce_24_31, TMP_Ruby23__reduce_25_32, TMP_Ruby23__reduce_26_33, TMP_Ruby23__reduce_27_34, TMP_Ruby23__reduce_28_35, TMP_Ruby23__reduce_30_36, TMP_Ruby23__reduce_31_37, TMP_Ruby23__reduce_32_38, TMP_Ruby23__reduce_33_39, TMP_Ruby23__reduce_34_40, TMP_Ruby23__reduce_35_41, TMP_Ruby23__reduce_36_42, TMP_Ruby23__reduce_37_43, TMP_Ruby23__reduce_38_44, TMP_Ruby23__reduce_39_45, TMP_Ruby23__reduce_41_46, TMP_Ruby23__reduce_42_47, TMP_Ruby23__reduce_44_48, TMP_Ruby23__reduce_45_49, TMP_Ruby23__reduce_46_50, TMP_Ruby23__reduce_47_51, TMP_Ruby23__reduce_53_52, TMP_Ruby23__reduce_54_53, TMP_Ruby23__reduce_55_54, TMP_Ruby23__reduce_57_55, TMP_Ruby23__reduce_58_56, TMP_Ruby23__reduce_59_57, TMP_Ruby23__reduce_60_58, TMP_Ruby23__reduce_61_59, TMP_Ruby23__reduce_62_60, TMP_Ruby23__reduce_63_61, TMP_Ruby23__reduce_64_62, TMP_Ruby23__reduce_65_63, TMP_Ruby23__reduce_66_64, TMP_Ruby23__reduce_67_65, TMP_Ruby23__reduce_68_66, TMP_Ruby23__reduce_69_67, TMP_Ruby23__reduce_70_68, TMP_Ruby23__reduce_71_69, TMP_Ruby23__reduce_73_70, TMP_Ruby23__reduce_74_71, TMP_Ruby23__reduce_75_72, TMP_Ruby23__reduce_76_73, TMP_Ruby23__reduce_77_74, TMP_Ruby23__reduce_78_75, TMP_Ruby23__reduce_79_76, TMP_Ruby23__reduce_80_77, TMP_Ruby23__reduce_81_78, TMP_Ruby23__reduce_83_79, TMP_Ruby23__reduce_84_80, TMP_Ruby23__reduce_85_81, TMP_Ruby23__reduce_86_82, TMP_Ruby23__reduce_87_83, TMP_Ruby23__reduce_88_84, TMP_Ruby23__reduce_89_85, TMP_Ruby23__reduce_90_86, TMP_Ruby23__reduce_91_87, TMP_Ruby23__reduce_92_88, TMP_Ruby23__reduce_93_89, TMP_Ruby23__reduce_94_90, TMP_Ruby23__reduce_95_91, TMP_Ruby23__reduce_96_92, TMP_Ruby23__reduce_97_93, TMP_Ruby23__reduce_98_94, TMP_Ruby23__reduce_99_95, TMP_Ruby23__reduce_100_96, TMP_Ruby23__reduce_101_97, TMP_Ruby23__reduce_102_98, TMP_Ruby23__reduce_103_99, TMP_Ruby23__reduce_104_100, TMP_Ruby23__reduce_105_101, TMP_Ruby23__reduce_106_102, TMP_Ruby23__reduce_108_103, TMP_Ruby23__reduce_109_104, TMP_Ruby23__reduce_110_105, TMP_Ruby23__reduce_116_106, TMP_Ruby23__reduce_120_107, TMP_Ruby23__reduce_121_108, TMP_Ruby23__reduce_122_109, TMP_Ruby23__reduce_194_110, TMP_Ruby23__reduce_195_111, TMP_Ruby23__reduce_196_112, TMP_Ruby23__reduce_197_113, TMP_Ruby23__reduce_198_114, TMP_Ruby23__reduce_199_115, TMP_Ruby23__reduce_200_116, TMP_Ruby23__reduce_201_117, TMP_Ruby23__reduce_202_118, TMP_Ruby23__reduce_203_119, TMP_Ruby23__reduce_204_120, TMP_Ruby23__reduce_205_121, TMP_Ruby23__reduce_206_122, TMP_Ruby23__reduce_207_123, TMP_Ruby23__reduce_208_124, TMP_Ruby23__reduce_209_125, TMP_Ruby23__reduce_210_126, TMP_Ruby23__reduce_211_127, TMP_Ruby23__reduce_212_128, TMP_Ruby23__reduce_213_129, TMP_Ruby23__reduce_214_130, TMP_Ruby23__reduce_215_131, TMP_Ruby23__reduce_216_132, TMP_Ruby23__reduce_217_133, TMP_Ruby23__reduce_218_134, TMP_Ruby23__reduce_219_135, TMP_Ruby23__reduce_220_136, TMP_Ruby23__reduce_221_137, TMP_Ruby23__reduce_222_138, TMP_Ruby23__reduce_223_139, TMP_Ruby23__reduce_224_140, TMP_Ruby23__reduce_225_141, TMP_Ruby23__reduce_226_142, TMP_Ruby23__reduce_227_143, TMP_Ruby23__reduce_228_144, TMP_Ruby23__reduce_229_145, TMP_Ruby23__reduce_230_146, TMP_Ruby23__reduce_231_147, TMP_Ruby23__reduce_232_148, TMP_Ruby23__reduce_233_149, TMP_Ruby23__reduce_234_150, TMP_Ruby23__reduce_235_151, TMP_Ruby23__reduce_236_152, TMP_Ruby23__reduce_241_153, TMP_Ruby23__reduce_242_154, TMP_Ruby23__reduce_243_155, TMP_Ruby23__reduce_244_156, TMP_Ruby23__reduce_246_157, TMP_Ruby23__reduce_249_158, TMP_Ruby23__reduce_250_159, TMP_Ruby23__reduce_251_160, TMP_Ruby23__reduce_252_161, TMP_Ruby23__reduce_253_162, TMP_Ruby23__reduce_254_163, TMP_Ruby23__reduce_255_164, TMP_Ruby23__reduce_256_165, TMP_Ruby23__reduce_257_166, TMP_Ruby23__reduce_258_167, TMP_Ruby23__reduce_259_168, TMP_Ruby23__reduce_260_169, TMP_Ruby23__reduce_261_170, TMP_Ruby23__reduce_262_171, TMP_Ruby23__reduce_263_172, TMP_Ruby23__reduce_264_173, TMP_Ruby23__reduce_265_174, TMP_Ruby23__reduce_267_175, TMP_Ruby23__reduce_268_176, TMP_Ruby23__reduce_269_177, TMP_Ruby23__reduce_280_178, TMP_Ruby23__reduce_281_179, TMP_Ruby23__reduce_282_180, TMP_Ruby23__reduce_283_181, TMP_Ruby23__reduce_284_182, TMP_Ruby23__reduce_285_183, TMP_Ruby23__reduce_286_184, TMP_Ruby23__reduce_287_185, TMP_Ruby23__reduce_288_186, TMP_Ruby23__reduce_289_187, TMP_Ruby23__reduce_290_188, TMP_Ruby23__reduce_291_189, TMP_Ruby23__reduce_292_190, TMP_Ruby23__reduce_293_191, TMP_Ruby23__reduce_294_192, TMP_Ruby23__reduce_295_193, TMP_Ruby23__reduce_296_194, TMP_Ruby23__reduce_297_195, TMP_Ruby23__reduce_298_196, TMP_Ruby23__reduce_299_197, TMP_Ruby23__reduce_300_198, TMP_Ruby23__reduce_302_199, TMP_Ruby23__reduce_303_200, TMP_Ruby23__reduce_304_201, TMP_Ruby23__reduce_305_202, TMP_Ruby23__reduce_306_203, TMP_Ruby23__reduce_307_204, TMP_Ruby23__reduce_308_205, TMP_Ruby23__reduce_309_206, TMP_Ruby23__reduce_310_207, TMP_Ruby23__reduce_311_208, TMP_Ruby23__reduce_312_209, TMP_Ruby23__reduce_313_210, TMP_Ruby23__reduce_314_211, TMP_Ruby23__reduce_315_212, TMP_Ruby23__reduce_316_213, TMP_Ruby23__reduce_317_214, TMP_Ruby23__reduce_318_215, TMP_Ruby23__reduce_319_216, TMP_Ruby23__reduce_320_217, TMP_Ruby23__reduce_321_218, TMP_Ruby23__reduce_322_219, TMP_Ruby23__reduce_323_220, TMP_Ruby23__reduce_324_221, TMP_Ruby23__reduce_325_222, TMP_Ruby23__reduce_326_223, TMP_Ruby23__reduce_327_224, TMP_Ruby23__reduce_328_225, TMP_Ruby23__reduce_329_226, TMP_Ruby23__reduce_330_227, TMP_Ruby23__reduce_331_228, TMP_Ruby23__reduce_335_229, TMP_Ruby23__reduce_339_230, TMP_Ruby23__reduce_341_231, TMP_Ruby23__reduce_344_232, TMP_Ruby23__reduce_345_233, TMP_Ruby23__reduce_346_234, TMP_Ruby23__reduce_347_235, TMP_Ruby23__reduce_349_236, TMP_Ruby23__reduce_350_237, TMP_Ruby23__reduce_351_238, TMP_Ruby23__reduce_352_239, TMP_Ruby23__reduce_353_240, TMP_Ruby23__reduce_354_241, TMP_Ruby23__reduce_355_242, TMP_Ruby23__reduce_356_243, TMP_Ruby23__reduce_357_244, TMP_Ruby23__reduce_358_245, TMP_Ruby23__reduce_359_246, TMP_Ruby23__reduce_360_247, TMP_Ruby23__reduce_361_248, TMP_Ruby23__reduce_362_249, TMP_Ruby23__reduce_363_250, TMP_Ruby23__reduce_364_251, TMP_Ruby23__reduce_365_252, TMP_Ruby23__reduce_366_253, TMP_Ruby23__reduce_367_254, TMP_Ruby23__reduce_369_255, TMP_Ruby23__reduce_370_256, TMP_Ruby23__reduce_371_257, TMP_Ruby23__reduce_372_258, TMP_Ruby23__reduce_373_259, TMP_Ruby23__reduce_374_260, TMP_Ruby23__reduce_375_261, TMP_Ruby23__reduce_376_262, TMP_Ruby23__reduce_378_263, TMP_Ruby23__reduce_379_264, TMP_Ruby23__reduce_380_265, TMP_Ruby23__reduce_381_266, TMP_Ruby23__reduce_382_267, TMP_Ruby23__reduce_383_268, TMP_Ruby23__reduce_384_269, TMP_Ruby23__reduce_385_270, TMP_Ruby23__reduce_386_271, TMP_Ruby23__reduce_387_272, TMP_Ruby23__reduce_389_273, TMP_Ruby23__reduce_390_274, TMP_Ruby23__reduce_391_275, TMP_Ruby23__reduce_392_276, TMP_Ruby23__reduce_393_277, TMP_Ruby23__reduce_394_278, TMP_Ruby23__reduce_395_279, TMP_Ruby23__reduce_396_280, TMP_Ruby23__reduce_397_281, TMP_Ruby23__reduce_398_282, TMP_Ruby23__reduce_399_283, TMP_Ruby23__reduce_400_284, TMP_Ruby23__reduce_401_285, TMP_Ruby23__reduce_402_286, TMP_Ruby23__reduce_403_287, TMP_Ruby23__reduce_404_288, TMP_Ruby23__reduce_405_289, TMP_Ruby23__reduce_406_290, TMP_Ruby23__reduce_407_291, TMP_Ruby23__reduce_408_292, TMP_Ruby23__reduce_409_293, TMP_Ruby23__reduce_410_294, TMP_Ruby23__reduce_411_295, TMP_Ruby23__reduce_412_296, TMP_Ruby23__reduce_413_297, TMP_Ruby23__reduce_414_298, TMP_Ruby23__reduce_415_299, TMP_Ruby23__reduce_416_300, TMP_Ruby23__reduce_418_301, TMP_Ruby23__reduce_419_302, TMP_Ruby23__reduce_420_303, TMP_Ruby23__reduce_423_304, TMP_Ruby23__reduce_425_305, TMP_Ruby23__reduce_430_306, TMP_Ruby23__reduce_431_307, TMP_Ruby23__reduce_432_308, TMP_Ruby23__reduce_433_309, TMP_Ruby23__reduce_434_310, TMP_Ruby23__reduce_435_311, TMP_Ruby23__reduce_436_312, TMP_Ruby23__reduce_437_313, TMP_Ruby23__reduce_438_314, TMP_Ruby23__reduce_439_315, TMP_Ruby23__reduce_440_316, TMP_Ruby23__reduce_441_317, TMP_Ruby23__reduce_442_318, TMP_Ruby23__reduce_443_319, TMP_Ruby23__reduce_444_320, TMP_Ruby23__reduce_445_321, TMP_Ruby23__reduce_446_322, TMP_Ruby23__reduce_447_323, TMP_Ruby23__reduce_448_324, TMP_Ruby23__reduce_449_325, TMP_Ruby23__reduce_450_326, TMP_Ruby23__reduce_451_327, TMP_Ruby23__reduce_452_328, TMP_Ruby23__reduce_453_329, TMP_Ruby23__reduce_454_330, TMP_Ruby23__reduce_455_331, TMP_Ruby23__reduce_456_332, TMP_Ruby23__reduce_457_333, TMP_Ruby23__reduce_458_334, TMP_Ruby23__reduce_459_335, TMP_Ruby23__reduce_460_336, TMP_Ruby23__reduce_461_337, TMP_Ruby23__reduce_462_338, TMP_Ruby23__reduce_463_339, TMP_Ruby23__reduce_464_340, TMP_Ruby23__reduce_466_341, TMP_Ruby23__reduce_467_342, TMP_Ruby23__reduce_468_343, TMP_Ruby23__reduce_469_344, TMP_Ruby23__reduce_470_345, TMP_Ruby23__reduce_471_346, TMP_Ruby23__reduce_472_347, TMP_Ruby23__reduce_473_348, TMP_Ruby23__reduce_474_349, TMP_Ruby23__reduce_475_350, TMP_Ruby23__reduce_476_351, TMP_Ruby23__reduce_477_352, TMP_Ruby23__reduce_478_353, TMP_Ruby23__reduce_479_354, TMP_Ruby23__reduce_480_355, TMP_Ruby23__reduce_481_356, TMP_Ruby23__reduce_482_357, TMP_Ruby23__reduce_483_358, TMP_Ruby23__reduce_484_359, TMP_Ruby23__reduce_485_360, TMP_Ruby23__reduce_486_361, TMP_Ruby23__reduce_487_362, TMP_Ruby23__reduce_488_363, TMP_Ruby23__reduce_489_364, TMP_Ruby23__reduce_490_365, TMP_Ruby23__reduce_491_366, TMP_Ruby23__reduce_492_367, TMP_Ruby23__reduce_493_368, TMP_Ruby23__reduce_494_369, TMP_Ruby23__reduce_495_370, TMP_Ruby23__reduce_496_371, TMP_Ruby23__reduce_497_372, TMP_Ruby23__reduce_498_373, TMP_Ruby23__reduce_499_374, TMP_Ruby23__reduce_500_375, TMP_Ruby23__reduce_501_376, TMP_Ruby23__reduce_502_377, TMP_Ruby23__reduce_503_378, TMP_Ruby23__reduce_504_379, TMP_Ruby23__reduce_505_380, TMP_Ruby23__reduce_506_381, TMP_Ruby23__reduce_507_382, TMP_Ruby23__reduce_508_383, TMP_Ruby23__reduce_509_384, TMP_Ruby23__reduce_510_385, TMP_Ruby23__reduce_511_386, TMP_Ruby23__reduce_512_387, TMP_Ruby23__reduce_513_388, TMP_Ruby23__reduce_514_389, TMP_Ruby23__reduce_515_390, TMP_Ruby23__reduce_516_391, TMP_Ruby23__reduce_517_392, TMP_Ruby23__reduce_518_393, TMP_Ruby23__reduce_519_394, TMP_Ruby23__reduce_520_395, TMP_Ruby23__reduce_521_396, TMP_Ruby23__reduce_522_397, TMP_Ruby23__reduce_524_398, TMP_Ruby23__reduce_525_399, TMP_Ruby23__reduce_526_400, TMP_Ruby23__reduce_527_401, TMP_Ruby23__reduce_528_402, TMP_Ruby23__reduce_529_403, TMP_Ruby23__reduce_530_404, TMP_Ruby23__reduce_531_405, TMP_Ruby23__reduce_532_406, TMP_Ruby23__reduce_533_407, TMP_Ruby23__reduce_534_408, TMP_Ruby23__reduce_535_409, TMP_Ruby23__reduce_536_410, TMP_Ruby23__reduce_537_411, TMP_Ruby23__reduce_538_412, TMP_Ruby23__reduce_541_413, TMP_Ruby23__reduce_542_414, TMP_Ruby23__reduce_543_415, TMP_Ruby23__reduce_544_416, TMP_Ruby23__reduce_545_417, TMP_Ruby23__reduce_546_418, TMP_Ruby23__reduce_547_419, TMP_Ruby23__reduce_548_420, TMP_Ruby23__reduce_551_421, TMP_Ruby23__reduce_552_422, TMP_Ruby23__reduce_555_423, TMP_Ruby23__reduce_556_424, TMP_Ruby23__reduce_557_425, TMP_Ruby23__reduce_559_426, TMP_Ruby23__reduce_560_427, TMP_Ruby23__reduce_562_428, TMP_Ruby23__reduce_563_429, TMP_Ruby23__reduce_564_430, TMP_Ruby23__reduce_565_431, TMP_Ruby23__reduce_566_432, TMP_Ruby23__reduce_567_433, TMP_Ruby23__reduce_580_434, TMP_Ruby23__reduce_581_435, TMP_Ruby23__reduce_586_436, TMP_Ruby23__reduce_587_437, TMP_Ruby23__reduce_591_438, TMP_Ruby23__reduce_595_439, TMP_Ruby23__reduce_none_440, clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil; + var $nesting = [self].concat($parent_nesting), $Ruby25_version$1, $Ruby25_default_encoding$2, $Ruby25$3, $Ruby25$5, $Ruby25$7, $Ruby25$9, $Ruby25__reduce_2$11, $Ruby25__reduce_3$12, $Ruby25__reduce_4$13, $Ruby25__reduce_5$14, $Ruby25__reduce_6$15, $Ruby25__reduce_8$16, $Ruby25__reduce_9$17, $Ruby25__reduce_10$18, $Ruby25__reduce_11$19, $Ruby25__reduce_12$20, $Ruby25__reduce_13$21, $Ruby25__reduce_14$22, $Ruby25__reduce_15$23, $Ruby25__reduce_17$24, $Ruby25__reduce_18$25, $Ruby25__reduce_19$26, $Ruby25__reduce_20$27, $Ruby25__reduce_21$28, $Ruby25__reduce_22$29, $Ruby25__reduce_23$30, $Ruby25__reduce_24$31, $Ruby25__reduce_25$32, $Ruby25__reduce_26$33, $Ruby25__reduce_27$34, $Ruby25__reduce_28$35, $Ruby25__reduce_29$36, $Ruby25__reduce_31$37, $Ruby25__reduce_32$38, $Ruby25__reduce_33$39, $Ruby25__reduce_35$40, $Ruby25__reduce_36$41, $Ruby25__reduce_37$42, $Ruby25__reduce_38$43, $Ruby25__reduce_39$44, $Ruby25__reduce_40$45, $Ruby25__reduce_41$46, $Ruby25__reduce_42$47, $Ruby25__reduce_44$48, $Ruby25__reduce_47$49, $Ruby25__reduce_48$50, $Ruby25__reduce_49$51, $Ruby25__reduce_50$52, $Ruby25__reduce_53$53, $Ruby25__reduce_54$54, $Ruby25__reduce_58$55, $Ruby25__reduce_59$56, $Ruby25__reduce_60$57, $Ruby25__reduce_62$58, $Ruby25__reduce_63$59, $Ruby25__reduce_64$60, $Ruby25__reduce_65$61, $Ruby25__reduce_66$62, $Ruby25__reduce_67$63, $Ruby25__reduce_68$64, $Ruby25__reduce_69$65, $Ruby25__reduce_70$66, $Ruby25__reduce_71$67, $Ruby25__reduce_72$68, $Ruby25__reduce_73$69, $Ruby25__reduce_74$70, $Ruby25__reduce_75$71, $Ruby25__reduce_76$72, $Ruby25__reduce_78$73, $Ruby25__reduce_79$74, $Ruby25__reduce_80$75, $Ruby25__reduce_81$76, $Ruby25__reduce_82$77, $Ruby25__reduce_83$78, $Ruby25__reduce_84$79, $Ruby25__reduce_85$80, $Ruby25__reduce_86$81, $Ruby25__reduce_88$82, $Ruby25__reduce_89$83, $Ruby25__reduce_90$84, $Ruby25__reduce_91$85, $Ruby25__reduce_92$86, $Ruby25__reduce_93$87, $Ruby25__reduce_94$88, $Ruby25__reduce_95$89, $Ruby25__reduce_96$90, $Ruby25__reduce_97$91, $Ruby25__reduce_98$92, $Ruby25__reduce_99$93, $Ruby25__reduce_100$94, $Ruby25__reduce_101$95, $Ruby25__reduce_102$96, $Ruby25__reduce_103$97, $Ruby25__reduce_104$98, $Ruby25__reduce_105$99, $Ruby25__reduce_106$100, $Ruby25__reduce_107$101, $Ruby25__reduce_108$102, $Ruby25__reduce_109$103, $Ruby25__reduce_110$104, $Ruby25__reduce_111$105, $Ruby25__reduce_113$106, $Ruby25__reduce_114$107, $Ruby25__reduce_115$108, $Ruby25__reduce_121$109, $Ruby25__reduce_125$110, $Ruby25__reduce_126$111, $Ruby25__reduce_127$112, $Ruby25__reduce_199$113, $Ruby25__reduce_200$114, $Ruby25__reduce_201$115, $Ruby25__reduce_202$116, $Ruby25__reduce_203$117, $Ruby25__reduce_204$118, $Ruby25__reduce_205$119, $Ruby25__reduce_206$120, $Ruby25__reduce_207$121, $Ruby25__reduce_208$122, $Ruby25__reduce_209$123, $Ruby25__reduce_210$124, $Ruby25__reduce_211$125, $Ruby25__reduce_212$126, $Ruby25__reduce_213$127, $Ruby25__reduce_214$128, $Ruby25__reduce_215$129, $Ruby25__reduce_216$130, $Ruby25__reduce_217$131, $Ruby25__reduce_218$132, $Ruby25__reduce_219$133, $Ruby25__reduce_220$134, $Ruby25__reduce_221$135, $Ruby25__reduce_222$136, $Ruby25__reduce_224$137, $Ruby25__reduce_225$138, $Ruby25__reduce_226$139, $Ruby25__reduce_227$140, $Ruby25__reduce_228$141, $Ruby25__reduce_229$142, $Ruby25__reduce_230$143, $Ruby25__reduce_231$144, $Ruby25__reduce_232$145, $Ruby25__reduce_233$146, $Ruby25__reduce_234$147, $Ruby25__reduce_235$148, $Ruby25__reduce_236$149, $Ruby25__reduce_242$150, $Ruby25__reduce_243$151, $Ruby25__reduce_247$152, $Ruby25__reduce_248$153, $Ruby25__reduce_250$154, $Ruby25__reduce_251$155, $Ruby25__reduce_252$156, $Ruby25__reduce_254$157, $Ruby25__reduce_257$158, $Ruby25__reduce_258$159, $Ruby25__reduce_259$160, $Ruby25__reduce_260$161, $Ruby25__reduce_261$162, $Ruby25__reduce_262$163, $Ruby25__reduce_263$164, $Ruby25__reduce_264$165, $Ruby25__reduce_265$166, $Ruby25__reduce_266$167, $Ruby25__reduce_267$168, $Ruby25__reduce_268$169, $Ruby25__reduce_269$170, $Ruby25__reduce_270$171, $Ruby25__reduce_271$172, $Ruby25__reduce_272$173, $Ruby25__reduce_273$174, $Ruby25__reduce_275$175, $Ruby25__reduce_276$176, $Ruby25__reduce_277$177, $Ruby25__reduce_288$178, $Ruby25__reduce_289$179, $Ruby25__reduce_290$180, $Ruby25__reduce_291$181, $Ruby25__reduce_292$182, $Ruby25__reduce_293$183, $Ruby25__reduce_294$184, $Ruby25__reduce_295$185, $Ruby25__reduce_296$186, $Ruby25__reduce_297$187, $Ruby25__reduce_298$188, $Ruby25__reduce_299$189, $Ruby25__reduce_300$190, $Ruby25__reduce_301$191, $Ruby25__reduce_302$192, $Ruby25__reduce_303$193, $Ruby25__reduce_304$194, $Ruby25__reduce_305$195, $Ruby25__reduce_306$196, $Ruby25__reduce_307$197, $Ruby25__reduce_309$198, $Ruby25__reduce_310$199, $Ruby25__reduce_311$200, $Ruby25__reduce_312$201, $Ruby25__reduce_313$202, $Ruby25__reduce_314$203, $Ruby25__reduce_315$204, $Ruby25__reduce_316$205, $Ruby25__reduce_317$206, $Ruby25__reduce_318$207, $Ruby25__reduce_319$208, $Ruby25__reduce_320$209, $Ruby25__reduce_321$210, $Ruby25__reduce_322$211, $Ruby25__reduce_323$212, $Ruby25__reduce_324$213, $Ruby25__reduce_325$214, $Ruby25__reduce_326$215, $Ruby25__reduce_327$216, $Ruby25__reduce_328$217, $Ruby25__reduce_329$218, $Ruby25__reduce_330$219, $Ruby25__reduce_331$220, $Ruby25__reduce_332$221, $Ruby25__reduce_334$222, $Ruby25__reduce_337$223, $Ruby25__reduce_341$224, $Ruby25__reduce_343$225, $Ruby25__reduce_346$226, $Ruby25__reduce_347$227, $Ruby25__reduce_348$228, $Ruby25__reduce_349$229, $Ruby25__reduce_351$230, $Ruby25__reduce_352$231, $Ruby25__reduce_353$232, $Ruby25__reduce_354$233, $Ruby25__reduce_355$234, $Ruby25__reduce_356$235, $Ruby25__reduce_357$236, $Ruby25__reduce_358$237, $Ruby25__reduce_359$238, $Ruby25__reduce_360$239, $Ruby25__reduce_361$240, $Ruby25__reduce_362$241, $Ruby25__reduce_363$242, $Ruby25__reduce_364$243, $Ruby25__reduce_365$244, $Ruby25__reduce_366$245, $Ruby25__reduce_367$246, $Ruby25__reduce_368$247, $Ruby25__reduce_369$248, $Ruby25__reduce_371$249, $Ruby25__reduce_372$250, $Ruby25__reduce_373$251, $Ruby25__reduce_374$252, $Ruby25__reduce_375$253, $Ruby25__reduce_376$254, $Ruby25__reduce_377$255, $Ruby25__reduce_378$256, $Ruby25__reduce_380$257, $Ruby25__reduce_381$258, $Ruby25__reduce_382$259, $Ruby25__reduce_383$260, $Ruby25__reduce_384$261, $Ruby25__reduce_385$262, $Ruby25__reduce_386$263, $Ruby25__reduce_387$264, $Ruby25__reduce_388$265, $Ruby25__reduce_389$266, $Ruby25__reduce_391$267, $Ruby25__reduce_392$268, $Ruby25__reduce_393$269, $Ruby25__reduce_394$270, $Ruby25__reduce_395$271, $Ruby25__reduce_396$272, $Ruby25__reduce_397$273, $Ruby25__reduce_398$274, $Ruby25__reduce_399$275, $Ruby25__reduce_400$276, $Ruby25__reduce_401$277, $Ruby25__reduce_402$278, $Ruby25__reduce_403$279, $Ruby25__reduce_404$280, $Ruby25__reduce_405$281, $Ruby25__reduce_406$282, $Ruby25__reduce_407$283, $Ruby25__reduce_408$284, $Ruby25__reduce_409$285, $Ruby25__reduce_410$286, $Ruby25__reduce_411$287, $Ruby25__reduce_412$288, $Ruby25__reduce_413$289, $Ruby25__reduce_414$290, $Ruby25__reduce_415$291, $Ruby25__reduce_416$292, $Ruby25__reduce_417$293, $Ruby25__reduce_418$294, $Ruby25__reduce_419$295, $Ruby25__reduce_420$296, $Ruby25__reduce_421$297, $Ruby25__reduce_422$298, $Ruby25__reduce_423$299, $Ruby25__reduce_424$300, $Ruby25__reduce_425$301, $Ruby25__reduce_427$302, $Ruby25__reduce_428$303, $Ruby25__reduce_429$304, $Ruby25__reduce_432$305, $Ruby25__reduce_434$306, $Ruby25__reduce_439$307, $Ruby25__reduce_440$308, $Ruby25__reduce_441$309, $Ruby25__reduce_442$310, $Ruby25__reduce_443$311, $Ruby25__reduce_444$312, $Ruby25__reduce_445$313, $Ruby25__reduce_446$314, $Ruby25__reduce_447$315, $Ruby25__reduce_448$316, $Ruby25__reduce_449$317, $Ruby25__reduce_450$318, $Ruby25__reduce_451$319, $Ruby25__reduce_452$320, $Ruby25__reduce_453$321, $Ruby25__reduce_454$322, $Ruby25__reduce_455$323, $Ruby25__reduce_456$324, $Ruby25__reduce_457$325, $Ruby25__reduce_458$326, $Ruby25__reduce_459$327, $Ruby25__reduce_460$328, $Ruby25__reduce_461$329, $Ruby25__reduce_462$330, $Ruby25__reduce_463$331, $Ruby25__reduce_464$332, $Ruby25__reduce_465$333, $Ruby25__reduce_466$334, $Ruby25__reduce_467$335, $Ruby25__reduce_468$336, $Ruby25__reduce_469$337, $Ruby25__reduce_470$338, $Ruby25__reduce_471$339, $Ruby25__reduce_472$340, $Ruby25__reduce_473$341, $Ruby25__reduce_475$342, $Ruby25__reduce_476$343, $Ruby25__reduce_477$344, $Ruby25__reduce_478$345, $Ruby25__reduce_479$346, $Ruby25__reduce_480$347, $Ruby25__reduce_481$348, $Ruby25__reduce_482$349, $Ruby25__reduce_483$350, $Ruby25__reduce_484$351, $Ruby25__reduce_485$352, $Ruby25__reduce_486$353, $Ruby25__reduce_487$354, $Ruby25__reduce_488$355, $Ruby25__reduce_489$356, $Ruby25__reduce_490$357, $Ruby25__reduce_491$358, $Ruby25__reduce_492$359, $Ruby25__reduce_493$360, $Ruby25__reduce_494$361, $Ruby25__reduce_495$362, $Ruby25__reduce_496$363, $Ruby25__reduce_497$364, $Ruby25__reduce_498$365, $Ruby25__reduce_499$366, $Ruby25__reduce_500$367, $Ruby25__reduce_501$368, $Ruby25__reduce_502$369, $Ruby25__reduce_503$370, $Ruby25__reduce_504$371, $Ruby25__reduce_505$372, $Ruby25__reduce_506$373, $Ruby25__reduce_507$374, $Ruby25__reduce_508$375, $Ruby25__reduce_509$376, $Ruby25__reduce_510$377, $Ruby25__reduce_511$378, $Ruby25__reduce_512$379, $Ruby25__reduce_513$380, $Ruby25__reduce_514$381, $Ruby25__reduce_515$382, $Ruby25__reduce_516$383, $Ruby25__reduce_517$384, $Ruby25__reduce_518$385, $Ruby25__reduce_519$386, $Ruby25__reduce_520$387, $Ruby25__reduce_521$388, $Ruby25__reduce_522$389, $Ruby25__reduce_523$390, $Ruby25__reduce_524$391, $Ruby25__reduce_525$392, $Ruby25__reduce_526$393, $Ruby25__reduce_527$394, $Ruby25__reduce_528$395, $Ruby25__reduce_529$396, $Ruby25__reduce_530$397, $Ruby25__reduce_531$398, $Ruby25__reduce_533$399, $Ruby25__reduce_534$400, $Ruby25__reduce_535$401, $Ruby25__reduce_536$402, $Ruby25__reduce_537$403, $Ruby25__reduce_538$404, $Ruby25__reduce_539$405, $Ruby25__reduce_540$406, $Ruby25__reduce_541$407, $Ruby25__reduce_542$408, $Ruby25__reduce_543$409, $Ruby25__reduce_544$410, $Ruby25__reduce_545$411, $Ruby25__reduce_546$412, $Ruby25__reduce_547$413, $Ruby25__reduce_550$414, $Ruby25__reduce_551$415, $Ruby25__reduce_552$416, $Ruby25__reduce_553$417, $Ruby25__reduce_554$418, $Ruby25__reduce_555$419, $Ruby25__reduce_556$420, $Ruby25__reduce_557$421, $Ruby25__reduce_560$422, $Ruby25__reduce_561$423, $Ruby25__reduce_564$424, $Ruby25__reduce_565$425, $Ruby25__reduce_566$426, $Ruby25__reduce_568$427, $Ruby25__reduce_569$428, $Ruby25__reduce_571$429, $Ruby25__reduce_572$430, $Ruby25__reduce_573$431, $Ruby25__reduce_574$432, $Ruby25__reduce_575$433, $Ruby25__reduce_576$434, $Ruby25__reduce_589$435, $Ruby25__reduce_590$436, $Ruby25__reduce_595$437, $Ruby25__reduce_596$438, $Ruby25__reduce_600$439, $Ruby25__reduce_604$440, $Ruby25__reduce_none$441, clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil; - def.builder = def.lexer = def.static_env = def.def_level = nil; + self.$$prototype.builder = self.$$prototype.lexer = self.$$prototype.context = self.$$prototype.last_token = self.$$prototype.static_env = nil; - Opal.defn(self, '$version', TMP_Ruby23_version_1 = function $$version() { + Opal.def(self, '$version', $Ruby25_version$1 = function $$version() { var self = this; - return 23 - }, TMP_Ruby23_version_1.$$arity = 0); + return 25 + }, $Ruby25_version$1.$$arity = 0); - Opal.defn(self, '$default_encoding', TMP_Ruby23_default_encoding_2 = function $$default_encoding() { + Opal.def(self, '$default_encoding', $Ruby25_default_encoding$2 = function $$default_encoding() { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8') - }, TMP_Ruby23_default_encoding_2.$$arity = 0); - clist = ["-474,216,217,216,217,214,-97,-474,-474,-474,-286,570,-474,-474,-474", "212,-474,270,219,610,647,647,263,570,-474,612,-474,-474,-474,270,582", "270,-488,109,583,-98,-474,-474,570,-474,-474,-474,-474,-474,570,570", "-97,-98,-105,-105,-286,-104,-96,-83,-104,646,646,529,270,220,528,121", "-105,-69,647,814,-474,-474,-474,-474,-474,-474,-474,-474,-474,-474,-474", "-474,-474,-474,213,265,-474,-474,-474,609,-474,-474,715,-97,-474,611", "-100,-474,-474,220,-474,220,-474,646,-474,206,-474,-474,269,-474,-474", "-474,-474,-474,-100,-474,-477,-474,-102,-88,269,-102,269,-477,-477,-477", "265,-101,-477,-477,-477,-474,-477,113,-474,-474,-474,-474,112,-474,-477", "-474,-477,-477,-477,113,-474,-474,-89,269,112,-91,-477,-477,-103,-477", "-477,-477,-477,-477,113,-99,-96,841,-95,112,113,113,-97,-98,-105,112", "112,-97,-98,-105,-104,715,813,-101,-99,-104,-477,-477,-477,-477,-477", "-477,-477,-477,-477,-477,-477,-477,-477,-477,113,207,-477,-477,-477", "112,-477,-477,-571,-91,-477,208,-93,-477,-477,715,-477,-103,-477,113", "-477,-91,-477,-477,112,-477,-477,-477,-477,-477,-289,-477,-489,-477", "-93,-572,-100,-289,-289,-289,-102,-100,647,-289,-289,-102,-289,-477", "-571,-101,-477,-477,-477,-477,-101,-477,215,-477,216,217,446,-91,-477", "-477,-91,259,-289,-289,-90,-289,-289,-289,-289,-289,-91,318,-103,646", "-93,-474,-92,-103,-572,-99,529,113,-474,531,-99,-98,112,517,-92,-90", "216,217,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289", "-289,-289,319,769,-289,-289,-289,-477,630,-105,-93,113,-289,-93,-477", "-289,112,805,-94,576,-289,220,-289,-93,-289,-289,-90,-289,-289,-289", "-289,-289,597,-289,-575,-289,-474,-571,-92,79,-104,-575,-575,-575,220", "216,217,-575,-575,-289,-575,80,-289,-289,388,-94,401,-289,113,-575,-100", "81,445,112,-289,-103,-90,-568,-488,-90,-575,-575,-477,-575,-575,-575", "-575,-575,-92,-90,113,-92,216,217,447,112,550,770,547,546,545,-92,548", "91,92,448,599,598,595,219,-575,-575,-575,-575,-575,-575,-575,-575,-575", "-575,-575,-575,-575,-575,479,-88,-575,-575,-575,-474,631,91,92,597,-575", "-97,-474,-575,113,859,488,-568,-575,112,-575,-474,-575,-575,-489,-575", "-575,-575,-575,-575,-102,-575,-575,-575,597,550,597,547,546,545,-568", "548,-484,113,490,-569,492,-575,112,-484,-575,-575,-575,-92,832,-575", "500,93,94,-575,-575,-575,-575,-101,-575,-575,-575,-68,-575,220,-474", "-89,-99,599,598,595,-483,-575,-575,-575,-575,-98,113,-483,503,93,94", "112,-575,-575,662,-575,-575,-575,-575,-575,504,-477,599,598,599,598", "597,529,-477,597,531,-484,746,-569,748,597,529,-477,511,531,274,955", "-575,-575,-575,-575,-575,-575,-575,-575,-575,-575,-575,-575,-575,-575", "-569,220,-575,-575,-575,220,771,-575,978,-483,-575,597,517,-575,-575", "597,-575,-485,-575,265,-575,625,-575,-575,-485,-575,-575,-575,-575,-575", "-477,-575,-575,-575,599,598,600,599,598,602,514,-482,518,599,598,604", "240,-575,-482,220,-575,-575,-575,-575,532,-575,533,-575,-289,-95,216", "217,-575,-101,492,-289,-289,-289,-91,-104,-289,-289,-289,576,-289,599", "598,608,-100,599,598,613,-485,398,-289,-289,-289,390,400,399,566,565", "626,580,-289,-289,581,-289,-289,-289,-289,-289,589,212,614,-332,-482", "212,-479,-480,211,617,-332,-481,443,-479,-480,836,805,209,-481,-332", "-261,444,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289,-289", "-289,-289,619,-93,-289,-289,-289,240,772,-289,-486,220,-289,-102,212", "-289,-289,-486,-289,623,-289,263,-289,755,-289,-289,-486,-289,-289,-289", "-289,-289,213,-289,-332,-289,213,-479,-480,237,-487,624,-481,239,238", "265,240,-487,634,-289,836,805,-289,-289,-289,-289,-487,-289,637,-289", "-409,240,240,240,-289,-103,240,-409,-409,-409,-90,555,-409,-409,-409", "-486,-409,220,237,213,-99,558,239,238,220,-409,-409,-409,740,741,220", "-83,742,107,108,666,-409,-409,220,-409,-409,-409,-409,-409,550,-487", "547,546,545,212,548,522,677,682,566,565,510,683,550,559,547,546,545", "685,548,508,-409,-409,-409,-409,-409,-409,-409,-409,-409,-409,-409,-409", "-409,-409,689,701,-409,-409,-409,692,693,-409,695,265,-409,697,699,-409", "-409,701,-409,707,-409,708,-409,709,-409,-409,704,-409,-409,-409,-409", "-409,-296,-409,-409,-409,213,711,576,-296,-296,-296,718,735,-296,-296", "-296,-279,-296,-409,745,749,-409,-409,-279,-409,750,-409,-296,-296,-262", "756,479,-279,-409,479,220,774,-296,-296,259,-296,-296,-296,-296,-296", "490,492,798,212,677,212,220,265,265,677,520,550,579,547,546,545,240", "548,805,444,220,577,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296", "-296,-296,-296,-296,-279,220,-296,-296,-296,830,220,-296,805,274,-296", "840,701,-296,-296,220,-296,220,-296,849,-296,704,-296,-296,-263,-296", "-296,-296,-296,-296,-280,-296,213,-296,213,858,861,-280,-280,-280,692", "864,-280,-280,-280,212,-280,-296,866,868,-296,-296,585,-296,870,-296", "-280,-280,-280,220,872,587,-296,873,876,878,-280,-280,879,-280,-280", "-280,-280,-280,677,-290,881,-290,-261,212,885,887,-290,890,-290,692", "937,892,894,896,898,-290,898,-290,220,587,-280,-280,-280,-280,-280,-280", "-280,-280,-280,-280,-280,-280,-280,-280,213,212,-280,-280,-280,904,906", "-280,937,908,-280,914,917,-280,-280,220,-280,587,-280,921,-280,-264", "-280,-280,931,-280,-280,-280,-280,-280,-290,-280,-290,-280,213,938,555", "550,212,547,546,545,939,548,948,984,558,-280,949,-575,-280,-280,-280", "-280,982,-280,-244,-280,957,959,960,965,-280,-244,-244,-244,213,735", "-244,-244,-244,692,-244,968,701,240,970,972,974,566,565,-244,-244,-244", "559,934,974,547,546,545,985,548,-244,-244,986,-244,-244,-244,-244,-244", "898,-575,898,213,898,991,957,237,-575,-572,-571,239,238,-571,235,236", "682,-575,957,1010,1011,1012,-244,-244,-244,-244,-244,-244,-244,-244", "-244,-244,-244,-244,-244,-244,-575,974,-244,-244,-244,-289,974,-244", "974,265,-244,220,-289,-244,-244,898,-244,-572,-244,957,-244,-289,-244", "-244,974,-244,-244,-244,-244,-244,-575,-244,-244,-244,,550,,547,546", "545,,548,-289,,,,,-244,,-289,-244,-244,-576,-244,-572,-244,,,-289,-576", "-576,-576,-244,,-576,-576,-576,,-576,240,-289,,701,,,,,-576,-576,-576", "-576,903,,,,254,255,,-576,-576,,-576,-576,-576,-576,-576,550,,547,546", "545,237,548,243,,239,238,-289,235,236,,,241,,242,,,,-576,-576,-576,-576", "-576,-576,-576,-576,-576,-576,-576,-576,-576,-576,,701,-576,-576,-576", "240,,-576,,,-576,,,-576,-576,,-576,,-576,,-576,,-576,-576,,-576,-576", "-576,-576,-576,,-576,-576,-576,,,,237,,,,239,238,,235,236,,-576,,,-576", "-576,-576,-576,,-576,-577,-576,,,,,-576,-577,-577,-577,,,-577,-577,-577", "240,-577,934,,547,546,545,,548,,-577,-577,-577,-577,,,254,255,,,,-577", "-577,,-577,-577,-577,-577,-577,,,,237,,243,,239,238,,235,236,,,241,", "242,116,117,118,119,120,-577,-577,-577,-577,-577,-577,-577,-577,-577", "-577,-577,-577,-577,-577,,,-577,-577,-577,,,-577,,,-577,,,-577,-577", ",-577,,-577,,-577,,-577,-577,,-577,-577,-577,-577,-577,,-577,-577,-577", "116,117,118,119,120,,,,550,,547,546,545,-577,548,,-577,-577,-577,-577", ",-577,-244,-577,,,,,-577,-244,-244,-244,,,-244,-244,-244,550,-244,547", "546,545,555,548,,701,,-244,-244,,,,558,,,,240,,-244,-244,,-244,-244", "-244,-244,-244,116,117,118,119,120,,254,255,553,,550,,547,546,545,555", "548,563,562,566,565,,237,,559,558,239,238,,235,236,,,-244,,,,,240,,-244", ",,,,265,-244,553,536,,220,,,,254,255,563,562,566,565,,,,559,,,,,-244", "-244,237,,243,,239,238,,235,236,,,,,-244,,,-244,,,,,-244,5,69,70,71", "9,57,-244,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100", "102,103,,,19,,,,,635,8,45,7,10,105,104,106,95,56,97,96,98,,99,107,108", ",91,92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,233,234", ",,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247", "245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,-238,,,62", ",81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,", ",,29,28,27,101,100,102,103,,,19,,,,,620,8,45,294,10,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251,246,248,256", "257,252,253,,233,234,,,254,255,,40,,,296,,,58,59,,,60,,35,237,,243,44", "239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,", "80,88,,258,,,,,62,,81,93,94,5,69,70,71,9,57,,,,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,635,8,45,7,10,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251", "246,248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58,59,,,60,,35", "237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,", "67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45", "294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244", "249,250,251,246,248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58", "59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70,71,9,57", ",,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,", ",19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,240,244,249,250,251,246,248,256,257,252,253,,233,234,,,254,255", ",40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20", "242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292", "69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101", "100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,233", "234,,,254,255,,40,,,296,,,58,59,,,60,,35,237,,243,44,239,238,,235,236", "247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62", ",81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,", ",,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251,246,248,256,257", "252,253,,233,234,,,254,255,,40,,,296,,,58,59,,,60,,35,237,,243,44,239", "238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88", "220,258,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251", "246,248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58,59,,,60,,35", "237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,258,,,,,62,,81,93,94,5,69,70,71,9,57,,,,63,64,,,,67", ",65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,7", "10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249", "250,251,246,248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58,59", ",,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70,71,9,57,,", ",63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19", ",,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43", "41,240,244,249,250,251,246,248,256,257,252,253,,233,234,,,254,255,,40", ",,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242", ",,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70", "71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102", "103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,233,234,,,254", "255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241", "20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292", "69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101", "100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,233", "234,,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236", "247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62", ",81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,", ",,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251,246,248,256,257", "252,253,,233,234,,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239", "238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",258,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30", "31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104", "106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251,246", "248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58,59,,,60,,35,237", ",243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86,85", "87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67", ",65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,294", "10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249", "250,251,246,248,256,257,252,253,,233,234,,,254,255,,40,,,33,,,58,59", ",,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70,71,9,57,,", ",63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19", ",,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43", "41,240,244,249,250,251,246,248,256,257,252,253,,233,234,,,254,255,,40", ",,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242", ",,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292,69,70", "71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102", "103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,233,234,,,254", "255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241", "20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,258,,,,,62,,81,93,94,292", "69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101", "100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,240,244,249,250,251,246,248,256,257,252,253,,-596", "-596,,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236", "247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,550,,547,546", "545,62,548,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31", "72,73,,,,,701,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104", "106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,244,249,250,251,246", "248,256,257,252,253,,-596,-596,,,254,255,,40,,,33,,,58,59,,,60,,35,237", ",243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86,85", "87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65", "66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,294,10", "105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,-596,-596", "-596,-596,246,248,,,-596,-596,,,,,,254,255,,40,,,33,,,58,59,,,60,,35", "237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64,,,,67", ",65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,294", "10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,240,,,,,,", ",,,,,,,,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235", "236,,,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81", "93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96", "98,,99,107,108,,91,92,42,43,41,240,,,,,,,,,,,,,,,,254,255,,40,,,33,", ",58,59,,,60,,35,237,,243,44,239,238,,235,236,,,241,20,242,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", "240,-596,-596,-596,-596,246,248,,,-596,-596,,,,,,254,255,,40,,,33,,", "58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71,9,57", ",,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,", ",19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,240,-596,-596,-596,-596,246,248,,,-596,-596,,,,,,254,255,,40,", ",33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20,242", ",,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71", "9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102", "103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,240,-596,-596,-596,-596,246,248,,,-596,-596,,,,,,254,255", ",40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241,20", "242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69", "70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100", "102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108", ",91,92,42,43,41,240,-596,-596,-596,-596,246,248,,,-596,-596,,,,,,254", "255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247,245,241", "20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292", "69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101", "100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,240,-596,-596,-596,-596,246,248,,,-596,-596,,,,", ",254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247", "245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93", "94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28", "27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,240,244,249,250,251,246,248,,,252,253,,", ",,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236,247", "245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93", "94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28", "27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,240,244,249,250,251,246,248,256,,252,253", ",,,,,254,255,,40,,,33,,,58,59,,,60,,35,237,,243,44,239,238,,235,236", "247,245,241,20,242,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81", "93,94,292,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,19,,,,,,8,45,294,10,105,104,106,95,56,97,96", "98,,99,107,108,,91,92,42,43,41,240,,,,,,,,,,,,,,,,254,255,,40,,,33,", ",58,59,,,60,,35,237,,243,44,239,238,,235,236,,,,20,,,,,89,79,82,83,", "84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,292,69,70,71,9,57,,,,63,64", ",,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,", "8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,", ",,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,69,70,71,9,57,,,,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,8,45,7,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,", ",,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,", "84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,", ",225,,,231,,,58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83", ",84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,", ",225,,,231,,,58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83", ",84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,", ",225,,,231,,,58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83", ",84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,309,,", "105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,,,,,,,,", ",,,305,,,301,,,58,59,,,60,,300,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85", "87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312", "72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,309,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,305,,,231", ",,58,59,,,60,,,550,,547,546,545,555,548,,,,,,,,,558,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,317,,553,62,,81,93,94,69,70,71,,57,566,565,,63", "64,559,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103", ",,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43", "41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,", ",89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64", ",,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232", ",,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,", ",,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,", ",,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,", ",,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,,,44,,,287,,,,,,230,,,,,89,284", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,287,,,,,,230,,,,,89", "284,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,", ",67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45", ",,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,", ",,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,", "231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,", ",80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73", ",,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96", "98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59", ",,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,113,", ",,,112,62,,81,93,94,69,70,71,,57,,,,63,64,,,,67,,65,66,68,311,312,72", "73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,309,,,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,350,,,33,,,58", "59,,,60,,35,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69", "70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308", "314,101,100,102,103,,,232,,,,,,,309,,,105,104,106,355,56,97,96,356,", "99,107,108,,91,92,,,315,,,,,,,,,,,,,,,,,362,,,357,,,231,,,58,59,,,60", ",,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62", "57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101", "100,102,103,,,232,,,,,,,309,,,105,104,106,355,56,97,96,356,,99,107,108", ",91,92,,,315,,,,,,,,,,,,,,,,,,,,357,,,231,,,58,59,,,60,,,550,,547,546", "545,555,548,,,,,,,,,558,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,553", "62,,81,93,94,69,70,71,9,57,566,565,,63,64,559,,,67,,65,66,68,30,31,72", "73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,7,10,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,", ",58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,,,390,62,,81,93,94,69,70,71,,57,,,,63,64,,,,67,,65,66,68,30,31", "72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99", "107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,", ",,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71", "62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100", "102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92", "42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,69,70,71,9,57,,,,63,64", ",,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,", "8,45,,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,406,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,", "231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,", ",,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73", ",,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87", ",,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72", "73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99", "107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,406", ",,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71", "62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100", "102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92", "42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85", "87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31", "72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", "220,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58", "59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44", ",,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100", "102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,", ",,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,", "232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,", ",,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,", ",,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,", "84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311", "312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225", ",,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87", ",,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72", "73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231", ",,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58", "59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44", ",,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100", "102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,", ",,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,", "232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,", ",,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,", ",,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,", "84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311", "312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225", ",,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87", ",,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72", "73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231", ",,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58", "59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44", ",,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92", "42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287", ",,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81", "93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103", ",,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287", ",,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81", "93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103", ",,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287", ",,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,220,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100", "102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,", ",,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,", "232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,69,70,71,9,57,,,,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,8,45,,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,", ",,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",309,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,", ",,,,,,,,,,305,,,231,,,58,59,,,60,,,550,,547,546,545,555,548,,,,,,,,", "558,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,506,,553,62,,81,93,94,69", "70,71,,57,566,565,,63,64,559,,,67,,65,66,68,311,312,72,73,,,,,,307,308", "314,101,100,102,103,,,232,,,,,,,309,,,105,104,106,95,56,97,96,98,,99", "107,108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,305,,,301,,,58,59,,,60,,,,,", ",,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81", "93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,522,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85", "87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31", "72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99", "107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,", ",,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71", "62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100", "102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92", "42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,", "232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,", ",,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89", "284,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,", ",67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,", ",,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,", ",,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,", ",,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45", ",,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,", ",,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,", "84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66", "68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,", ",,,,,225,,,231,,,58,59,,,60,,659,,281,,44,,,287,,,,,,230,,,,,89,284", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,281,,44,,,287,,,,,,230,,,,", "89,284,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64", ",,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232", ",,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,", ",,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,69,70,71,9,57,,,,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,", ",,,8,45,294,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,,,390,62,,81,93,94,69,70,71,,57,", ",,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103", ",,232,,,,,,,309,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,315", ",,,,,,,,,,,,,,,,,,,305,,,301,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82", "83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65", "66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,", ",,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287,,,,,,230,,,,,89,284", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",309,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,", ",,,,,,,,,,305,,,301,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105", "104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,", ",,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86", "85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311", "312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104", "106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225", ",,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87", ",,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72", "73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58", "59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,", ",69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", "286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59", ",,60,,659,,,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,", "80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73", ",,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,", "307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96", "98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59", ",,60,,283,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286", "99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286", "99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",283,,281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,", "307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96", "98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59", ",,60,,753,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,659,", "281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,,,,69", "70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308", "314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,286", "99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,,", ",69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28", "27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44", ",,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,", ",,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,", ",,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,", ",105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,", ",,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,", "231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,", ",,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72", "73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231", ",,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58", "59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,", ",,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307", "308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98", ",99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60", ",,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,309,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,305,,,301,,,58,59,,,60,,,,,,,,,", ",,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,309,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92", ",,315,,,,,,,,,,,,,,,,,,,,305,,,301,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,406,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,", "105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,", ",,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,", "231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,", ",80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73", ",,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88", ",,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29", "28,27,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99", "107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,", ",,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71", "62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44", ",,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57", "81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100", "102,103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91", "92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,", ",,230,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102", "103,,,232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230", ",,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63", "64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,", "232,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41", ",,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89", "79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,", "67,,65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,", ",,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,", ",,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79", "82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67", ",65,66,68,311,312,72,73,,,,,,307,308,314,101,100,102,103,,,232,,,,,", ",309,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,315,,,,,,,,,", ",,,,,,,,,,875,,,231,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84", "86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68", "30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106", "95,56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,", "231,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,", ",80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73", ",,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56", "97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,659,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95,56,97", "96,98,286,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,", "58,59,,,60,,,,281,,44,,,287,,,,,,230,,,,,89,284,82,83,,84,86,85,87,", ",,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72", "73,,,,,,307,308,314,101,100,102,103,,,232,,,,,,,45,,,105,104,106,95", "56,97,96,98,,99,107,108,,91,92,42,43,41,,,,,,,,,,,,,,,,,,,,225,,,231", ",,58,59,,,60,,,,,,44,,,,,,,,,230,,,,,89,79,82,83,,84,86,85,87,,,,,80", "88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,", ",,,307,308,314,101,100,102,103,,,232,,,,,,,309,,,105,104,106,95,56,97", "96,98,,99,107,108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,875,,,231,,,58,59", ",,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70", "71,62,57,81,93,94,63,64,,,,67,,65,66,68,311,312,72,73,,,,,,307,308,314", "101,100,102,103,,,232,,,,,,,309,,,105,104,106,95,56,97,96,98,,99,107", "108,,91,92,,,315,,,,,,,,,,,,,,,,,,,,945,,,231,,,58,59,,,60,,,,,,,,,", ",,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93", "94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,", ",232,,,,,,,45,,,105,104,106,95,56,97,96,98,286,99,107,108,,91,92,42", "43,41,,,,,,,,,,,,,,,,,,,,225,,,231,,,58,59,,,60,,283,,281,,44,,,287", ",,,,,230,,,,,89,284,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94", "173,184,174,197,170,190,180,179,200,201,195,178,177,172,198,202,203", "182,171,185,189,191,183,176,,,,192,199,194,193,186,196,181,169,188,187", ",,,,,168,175,166,167,163,164,165,124,126,123,,125,,,,,,,,157,158,,154", "136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,,,,,,,,,151", "150,,135,156,153,152,161,148,149,143,141,133,155,134,,,162,89,,,,,,", ",,,,,,,88,173,184,174,197,170,190,180,179,200,201,195,178,177,172,198", "202,203,182,171,185,189,191,183,176,,,,192,199,194,193,186,196,181,169", "188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125,,,,,,,,157,158", ",154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,,,,,", ",,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,,,162,89", ",,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201,195,178,177", "172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193,186,196", "181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125,,,,,", ",,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147", ",,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134", ",,162,89,,,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201,195", "178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193", "186,196,181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125", ",,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146", "147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155", "134,,,162,89,,,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201", "195,178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194", "373,372,374,371,169,188,187,,,,,,168,175,166,167,368,369,370,366,126", "97,96,367,,99,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,", ",159,160,146,147,,,,,,378,,,,,,,,151,150,,135,156,153,152,161,148,149", "143,141,133,155,134,,,162,173,184,174,197,170,190,180,179,200,201,195", "178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193", "186,196,181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125", ",,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146", "147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155", "134,415,419,162,,416,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139", "140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161", "148,149,143,141,133,155,134,422,426,162,,421,,,,,,,,157,158,,154,136", "137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151", "150,,135,156,153,152,161,148,149,143,141,133,155,134,477,419,162,,478", ",,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146", "147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155", "134,638,419,162,,639,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139", "140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161", "148,149,143,141,133,155,134,640,426,162,,641,,,,,,,,157,158,,154,136", "137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151", "150,,135,156,153,152,161,148,149,143,141,133,155,134,670,419,162,,671", ",,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146", "147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133", "155,134,673,426,162,,674,,,,,,,,157,158,,154,136,137,138,145,142,144", ",,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152", "161,148,149,143,141,133,155,134,638,419,162,,639,,,,,,,,157,158,,154", "136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,", ",151,150,,135,156,153,152,161,148,149,143,141,133,155,134,640,426,162", ",641,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160", "146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141", "133,155,134,721,419,162,,722,,,,,,,,157,158,,154,136,137,138,145,142", "144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153", "152,161,148,149,143,141,133,155,134,723,426,162,,724,,,,,,,,157,158", ",154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265,", ",,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,726,426", "162,,727,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159", "160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161,148,149,143", "141,133,155,134,477,419,162,,478,,,,,,,,157,158,,154,136,137,138,145", "142,144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156", "153,152,161,148,149,143,141,133,155,134,980,426,162,,979,,,,,,,,157", "158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265", ",,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,1003", "419,162,,1004,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140", ",,,159,160,146,147,,,,,,265,,,,,,,,151,150,,135,156,153,152,161,148", "149,143,141,133,155,134,1005,426,162,,1006,,,,,,,,157,158,,154,136,137", "138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,265,,,,,,,,151,150", ",135,156,153,152,161,148,149,143,141,133,155,134,,550,162,547,546,545", "555,548,,550,,547,546,545,555,548,558,,,,,,,,558,,550,,547,546,545,555", "548,,,,,,553,,,558,,,,,553,563,562,566,565,,,,559,563,562,566,565,,", ",559,553,,550,,547,546,545,555,548,563,562,566,565,,,,559,558,,550,", "547,546,545,555,548,,550,,547,546,545,555,548,558,,,,,553,,,558,,,,", ",563,562,566,565,,,,559,553,,,,,,,,553,563,562,566,565,,,,559,563,562", "566,565,,,550,559,547,546,545,555,548,,550,,547,546,545,555,548,558", ",,,,,,,558,,550,,547,546,545,555,548,,,,,,553,,,558,,,,,553,563,562", "566,565,,,,559,563,562,566,565,,,,559,553,,550,,547,546,545,555,548", ",,566,565,,,,559,558,,550,,547,546,545,555,548,550,,547,546,545,555", "548,,558,,,,,553,,558,,550,,547,546,545,555,548,566,565,,,,559,553,", "558,,,,,553,,563,562,566,565,,,,559,,566,565,,,,559,553,,550,,547,546", "545,555,548,,,566,565,,,,559,558,,550,,547,546,545,555,548,550,,547", "546,545,555,548,,558,,,,,553,,558,,,,,,,,,566,565,,,,559,553,,,,,,,553", ",,,566,565,,,,559,,566,565,,,,559"]; - racc_action_table = (arr = Opal.const_get_qualified('::', 'Array').$new(25163, nil)); + return $$$($$($nesting, 'Encoding'), 'UTF_8') + }, $Ruby25_default_encoding$2.$$arity = 0); + clist = ["-584,579,-110,-108,220,-102,-103,-584,-584,-584,274,-107,274,-584,-584", "222,-584,274,799,622,212,213,212,213,-88,-584,579,-102,819,-108,620", "274,-103,-106,-74,-105,-584,-584,906,-584,-584,-584,-584,-584,-109,-109", "223,579,908,986,-104,-101,-110,798,-105,-107,223,-106,-104,579,579,-110", "538,575,574,537,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584", "-584,-584,-584,-581,269,-584,-584,-584,621,646,725,842,811,-584,212", "213,-584,-581,269,619,273,-584,273,-584,407,-584,-584,273,-584,-584", "-584,-584,-584,-580,-584,-584,-584,-96,-94,223,799,273,115,-110,-108", "-580,-102,114,-110,-108,-584,-102,-107,-584,-584,-584,-584,-107,-584", "-93,818,-99,-584,-584,-584,-584,-106,115,-584,-584,845,-584,114,-103", "-106,798,-105,-100,-103,-106,-584,-105,-95,-95,-101,-109,-96,-98,115", "-97,-109,-584,-584,114,-584,-584,-584,-584,-584,-104,115,115,115,-96", "-104,114,114,114,223,910,212,213,-97,-98,115,115,212,213,394,114,114", "-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584", "913,641,-584,-584,-584,218,646,607,-96,914,-584,-96,267,-584,-95,917", "525,-490,-584,220,-584,-96,-584,-584,-490,-584,-584,-584,-584,-584,115", "-584,-584,-584,559,114,556,555,554,223,557,-489,-580,-97,-98,607,538", "-584,-489,540,-584,-584,-584,-97,-95,-584,921,-95,-107,-584,-584,-584", "-584,-106,-584,-584,-584,-95,-584,115,219,609,608,-109,114,223,-110", "-584,-584,-584,-584,759,-490,-97,-98,115,-97,-98,-584,-584,114,-584", "-584,-584,-584,-584,-97,-98,559,-272,556,555,554,607,557,607,-489,115", "607,609,608,605,114,93,94,811,838,586,-584,-584,-584,-584,-584,-584", "-584,-584,-584,-584,-584,-584,-584,-584,93,94,-584,-584,-584,592,787", "-584,-488,593,-584,607,772,-584,-584,-488,-584,607,-584,958,-584,223", "-584,-584,607,-584,-584,-584,-584,-584,785,-584,-584,-584,786,609,608", "609,608,605,609,608,610,607,1025,757,772,-584,956,-491,-584,-584,-584", "-584,673,-584,-491,-584,-296,95,96,-497,-584,-106,923,-296,-296,-296", "702,-104,-296,-296,-296,-488,-296,609,608,612,95,96,926,609,608,614", "-296,-296,-296,-105,609,608,623,-107,640,-95,-296,-296,641,-296,-296", "-296,-296,-296,864,-104,928,-496,930,609,608,618,842,811,-496,-494,-491", "-492,-498,457,-102,932,-494,-496,-492,223,-296,-296,-296,-296,-296,-296", "-296,-296,-296,-296,-296,-296,-296,-296,934,-96,-296,-296,-296,-98,788", "-296,640,538,-296,-105,540,-296,-296,-107,-296,-493,-296,639,-296,-104", "-296,-296,-493,-296,-296,-296,-296,-296,-296,-296,-496,-296,323,-103", "-110,-296,-296,-296,-494,322,-492,-296,-296,538,-296,-296,540,638,-296", "-296,-296,-296,-486,-296,223,-296,-578,212,213,-486,-296,-108,-498,-105", "-296,-296,-497,-296,-296,-296,-296,-296,958,1003,963,218,746,-297,974", "-483,-493,263,633,218,-297,1003,-483,977,1003,111,267,631,982,-297,-296", "-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-486", "-94,-296,-296,-296,-93,645,-486,983,-486,-296,-103,-578,-296,984,-102", "-486,525,-296,987,-296,900,-296,-296,900,-296,-296,-296,-296,-296,-483", "-296,219,-296,-297,-578,-483,-483,-483,-483,219,900,-483,-483,-483,218", "-483,-296,243,992,-296,-296,595,-99,-483,-296,-483,-483,-483,958,214", "597,-296,-108,-100,-486,-483,-483,702,-483,-483,-483,-483,-483,-109", "-297,997,999,1001,218,240,1003,-297,1003,242,241,589,238,239,243,243", "-297,243,243,1003,587,-483,-483,-483,-483,-483,-483,-483,-483,-483,-483", "-483,-483,-483,-483,219,218,-483,-483,-483,-287,-483,-483,528,223,-483", "223,-287,-483,-483,624,-483,455,-483,627,-483,-287,-483,-483,223,-483", "-483,-483,-483,-483,-297,-483,-486,-483,219,-88,676,223,692,-486,-486", "-486,81,531,-486,-486,-486,-483,-486,211,-483,-483,-483,-483,82,-483", "-486,-483,-486,-486,-486,687,-483,-483,83,210,219,692,-486,-486,-287", "-486,-486,-486,-486,-486,260,261,404,-296,693,218,223,406,405,695,-296", "699,518,702,559,-581,556,555,554,-296,557,516,-486,-486,-486,-486,-486", "-486,-486,-486,-486,-486,-486,-486,-486,-486,259,258,-486,-486,-486", "703,-486,-486,705,707,-486,709,958,-486,-486,711,-486,717,-486,718,-486", "719,-486,-486,905,-486,-486,-486,-486,-486,-296,-486,-296,-486,219,721", "1018,-296,-296,-296,599,726,727,-296,-296,586,-296,-486,729,591,-486", "-486,-486,-486,590,-486,396,-486,-584,746,586,756,-486,-486,650,-269", "-296,-296,760,-296,-296,-296,-296,-296,761,-270,500,-495,542,-296,773", "541,223,487,-495,243,-296,487,526,223,790,-581,791,-495,263,-296,-296", "-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-584", "629,-296,-296,-296,796,645,-584,801,498,-296,500,-580,-296,522,630,-584", "687,-296,223,-296,269,-296,-296,269,-296,-296,-296,-296,-296,-288,-296", "-495,-296,-296,-584,269,-288,-288,-288,223,-581,-288,-288,-288,218,-288", "-296,269,687,-296,-296,454,-296,278,-296,-288,-288,-288,243,-580,455", "-296,-108,811,-584,-288,-288,519,-288,-288,-288,-288,-288,223,-333,223", "218,836,218,634,223,-333,811,976,844,981,209,223,512,511,-333,223,597", "-73,979,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288", "-288,-288,219,218,-288,-288,-288,243,124,-288,217,124,-288,223,243,-288", "-288,-577,-288,215,-288,500,-288,853,-288,-288,498,-288,-288,-288,-288", "-288,-333,-288,219,-288,219,496,-271,240,218,487,223,242,241,222,240", "976,459,-288,242,241,-288,-288,-288,-288,597,-288,-252,-288,863,458", "456,867,-288,-252,-252,-252,219,-483,-252,-252,-252,900,-252,687,-483", "883,-269,564,887,-577,564,-252,-252,-483,891,892,702,567,894,896,567", "898,-252,-252,900,-252,-252,-252,-252,-252,900,223,-577,219,559,,556", "555,554,564,557,751,752,,,753,109,110,,567,575,574,,575,574,568,,243", "568,,,,-483,-252,,-303,,,,,-252,562,-303,-303,-303,269,-252,-303,-303", "-303,,-303,575,574,,,,568,,240,,-303,-303,242,241,,238,239,-252,-252", ",-303,-303,,-303,-303,-303,-303,-303,,,,,-252,,,-252,,,,559,-252,556", "555,554,,557,,-252,,,-303,-303,-303,-303,-303,-303,-303,-303,-303,-303", "-303,-303,-303,-303,,,-303,-303,-303,,,-303,,278,-303,,711,-303,-303", ",-303,,-303,,-303,714,-303,-303,,-303,-303,-303,-303,-303,,-303,-252", "-303,118,119,120,121,122,-252,-252,-252,,,-252,-252,-252,-303,-252,", "-303,-303,,-303,,-303,,-252,-252,-252,,949,-303,556,555,554,,557,-252", "-252,,-252,-252,-252,-252,-252,559,,556,555,554,559,557,556,555,554", "559,557,556,555,554,949,557,556,555,554,,557,-252,-252,-252,-252,-252", "-252,-252,-252,-252,-252,-252,-252,-252,-252,,711,-252,-252,-252,,711", "-252,,269,-252,711,,-252,-252,714,-252,,-252,,-252,,-252,-252,,-252", "-252,-252,-252,-252,,-252,-252,-252,559,,556,555,554,564,557,118,119", "120,121,122,,-252,,567,-252,-252,-586,-252,,-252,,,,-586,-586,-586,-252", ",-586,-586,-586,,-586,243,559,562,556,555,554,,557,-586,-586,-586,-586", ",575,574,,253,254,568,-586,-586,,-586,-586,-586,-586,-586,559,,556,555", "554,240,557,246,,242,241,711,238,239,,,244,,245,,,,-586,-586,-586,-586", "-586,-586,-586,-586,-586,-586,-586,-586,-586,-586,,711,-586,-586,-586", ",,-586,,,-586,,,-586,-586,,-586,,-586,,-586,,-586,-586,,-586,-586,-586", "-586,-586,,-586,-586,-586,,,559,,556,555,554,,557,,,,,-586,,,-586,-586", "-586,-586,,-586,-413,-586,,,,,-586,-413,-413,-413,,,-413,-413,-413,243", "-413,711,118,119,120,121,122,,,-413,-413,-413,,,,253,254,,,,-413,-413", ",-413,-413,-413,-413,-413,,,,240,,246,,242,241,,238,239,,,244,,245,118", "119,120,121,122,-413,-413,-413,-413,-413,-413,-413,-413,-413,-413,-413", "-413,-413,-413,,,-413,-413,-413,,,-413,,269,-413,,,-413,-413,,-413,", "-413,,-413,,-413,-413,,-413,-413,-413,-413,-413,,-413,-413,-413,559", ",556,555,554,564,557,,,,,,,-413,,567,-413,-413,-585,-413,,-413,,,,-585", "-585,-585,-413,,-585,-585,-585,,-585,243,,562,,,,,,-585,-585,-585,-585", ",575,574,,253,254,568,-585,-585,,-585,-585,-585,-585,-585,,,,,,240,", ",,242,241,,238,239,,,,,,,,,-585,-585,-585,-585,-585,-585,-585,-585,-585", "-585,-585,-585,-585,-585,,,-585,-585,-585,,,-585,,,-585,,,-585,-585", ",-585,,-585,,-585,,-585,-585,,-585,-585,-585,-585,-585,,-585,-585,-585", ",,,,,,,,,,,,,-585,,,-585,-585,-585,-585,,-585,,-585,,,,,-585,296,70", "71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102", "104,105,,,19,,,,,635,8,46,298,10,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251,252,,236", "237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239", "259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,-244", ",,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74", ",,,,,75,28,27,103,102,104,105,,,19,,,,,635,8,46,298,10,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261", "255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246", "45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,", ",,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10", "107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248", "249,250,260,261,255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60", ",,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,223,257,,,,,63,,83,95,96,296,70,71,72,9,58", ",,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,", ",19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94", "42,43,41,243,247,248,249,250,260,261,255,256,251,252,,236,237,,,253", "254,,40,,,300,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258", "244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95", "96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28", "27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251", "252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241", ",238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257", ",,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73", "74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261", "255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246", "45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,", ",,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10", "107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248", "249,250,260,261,255,256,251,252,,236,237,,,253,254,,40,,,300,,,59,60", ",,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,", ",64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19", ",,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42", "43,41,243,247,248,249,250,260,261,255,256,251,252,,236,237,,,253,254", ",40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20", "245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95,96,296", "70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,", ",253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259", "258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95", "96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28", "27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251", "252,,-605,-605,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241", ",238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,", ",,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73", "74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,243,-605,-605,-605,-605,260", "261,,,-605,-605,,,,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242", "241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90", ",,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31", "73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,-605,-605,-605,-605", "260,261,,,-605,-605,,,,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246", "45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,", ",,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67", "69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249", "250,260,261,255,256,251,252,,-605,-605,,,253,254,,40,,,33,,,59,60,,", "61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,", "8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", "243,-605,-605,-605,-605,260,261,,,-605,-605,,,,,,253,254,,40,,,33,,", "59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58", ",,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,", ",19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94", "42,43,41,243,247,248,249,250,260,261,255,,251,252,,,,,,253,254,,40,", ",33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245", ",,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72", "9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104", "105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,", "93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,,,253", "254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244", "20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296", "70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,", ",253,254,,40,,,300,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259", "258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95", "96,5,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,243,247,248,249,250,260,261,,,251,252,,,,,,253", "254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244", "20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296", "70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,243,,,,,,,,,,,,,,,,253,254,,40,,,33,,,59,60,,,61", ",35,240,,246,45,242,241,,238,239,,,,20,,,,,91,81,84,85,,86,88,87,89", ",,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67", "69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,,,,,,,,,,,", ",,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,", ",,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70", "71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102", "104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,", ",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,5", "70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45", ",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96", "296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35", ",,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83", "95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75", "28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98", "100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60", ",,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,", ",,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73", "74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33", ",,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30", "31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106", "108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,", "40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87", "89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10", "107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,", ",,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86", "88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,", "68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46", "298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,", ",,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89", ",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73", "74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57", "99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,", ",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99", "98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59", "60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,", ",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75", "28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,", "101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61", ",,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71", "72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318", "103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45", ",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58", "83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102", "104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93", "94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,", ",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95", "96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105", ",,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42", "43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233", ",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89", ",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73", "74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57", "99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,", ",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99", "98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59", "60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,", ",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75", "312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312", "318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,", ",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72", "63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103", "102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,", ",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83", "95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104", "105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94", "42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233", ",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89", ",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73", "74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57", "99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,", ",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99", "98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59", "60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,", ",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75", "312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312", "318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,", ",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72", "63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102", "104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285", ",45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71", "72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,", "285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287", ",285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,223", ",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75", "312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45", ",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58", "83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102", "104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93", "94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,", ",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95", "96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105", ",,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42", "43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233", ",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,", "64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19", ",,,,,8,46,,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43", "41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,", "91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,", "64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19", ",,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43", "41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,", "91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,", ",,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,", ",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233", ",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,", ",,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,", ",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,", ",,,,,,,,,,,,,,936,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106", "108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,", ",,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,", ",,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,", ",,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,", "91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,", ",,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,304,,,,,,,,,,,,,,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,", ",,,,,,,,,,,309,,,234,,,59,60,,,61,,,559,,556,555,554,564,557,,,,,,,", ",567,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,321,,562,63,,83,95,96,70", "71,72,,58,575,574,,64,65,568,,,68,,66,67,69,315,316,73,74,,,,,,75,312", "318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,942,,,234,,,59,60,,,61,,,,,", ",,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83", "95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104", "105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94", ",,319,,,,,,,,,,,,,,,,,,,,936,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,,,285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88", "87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,,10,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,287,,,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,,,,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87", "89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31", "73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57", "99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,", ",75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71", "72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,", ",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,115,,,,,114,63,,83,95", "96,70,71,72,,58,,,,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318", "103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,356,,,33,,,59,60,,,61,,35,,,,,,", ",,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95", "96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105", ",,235,,,,,,,313,,,107,106,108,361,57,99,98,362,,101,109,110,,93,94,", ",319,,,,,,,,,,,,,,,,,368,,,363,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,", ",91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,313,,,107,106,108,361,57,99,98,362,,101,109,110,,93,94,,,319,", ",,,,,,,,,,,,,,,,,,363,,,234,,,59,60,,,61,,,559,,556,555,554,564,557", ",,,,,,,,567,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,562,63,,83,95,96", "70,71,72,9,58,575,574,,64,65,568,,,68,,66,67,69,30,31,73,74,,,,,,75", "28,27,103,102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61", ",35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,396", "63,,83,95,96,70,71,72,,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,", "75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71", "72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,", ",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83", "95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105", ",,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43", "41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,", "91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,", ",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,", ",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,", "8,46,,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,", ",,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,", "107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,", ",,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86", "88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69", "30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87", "89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31", "73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,", ",82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74", ",,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98", "100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60", ",,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45", ",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58", "83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104", "105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94", "42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233", ",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,", ",,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233", ",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,", ",,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,", ",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46", ",,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,", ",,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106", "108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,", "228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87", "89,,,,,82,90,223,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,,,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87", "89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316", "73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305", ",,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,", ",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75", "312,318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61", ",,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63", "58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103", "102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,", ",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83", "95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104", "105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94", ",,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108", "97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228", ",,234,531,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87", "89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31", "73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97", "57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234", ",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,", ",75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100", ",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,", "61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27", "103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45", ",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58", "83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102", "104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,285,,45", ",,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63", "58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103", "102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,", "285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312", "318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,", ",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83", "95,96,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28", "27,103,102,104,105,,,19,,,,,,8,46,,10,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35", ",,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72", "63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102", "104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285", ",45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71", "72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103", "102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110", ",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,", ",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83", "95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104", "105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94", "42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,764,,,,45,,,,,,", ",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95", "96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,", ",19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43", "41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,", "91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,", ",,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,", ",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233", ",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,", ",,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233", ",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64", "65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,,,45,,,,,,,,,233,,,", ",91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,", ",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,", ",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,", ",,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,291,,,,,,233,,,,,91,288", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,,,45,,,291,,,,,,233,,,", ",91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,", ",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,", ",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315", "316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313,,,107,106", "108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309", ",,305,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82", "90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,", ",75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100", "290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60", ",,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,", "82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,", ",,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98", "100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60", ",,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70", "71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312", "318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101", "109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,,559", ",556,555,554,564,557,,,,,,,,,567,,91,81,84,85,,86,88,87,89,,,,,82,90", ",,,,,562,63,,83,95,96,70,71,72,9,58,575,574,,64,65,568,,,68,,66,67,69", "30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107", "106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,", ",,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88", "87,89,,,,,82,90,,,,,,396,63,,83,95,96,70,71,72,,58,,,,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,", ",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85", ",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67", "69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,", ",,,,,,,228,,,234,,,59,60,,,61,,,,285,,45,,,291,,,,,,233,,,,,91,288,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,", ",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,", ",,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,285,,45,,,291,,,,,,233,,,,", "91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65", ",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235", ",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41", ",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91", "81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,", "68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,", ",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,", ",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107", "106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,", ",,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288", "84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68", ",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,", "46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,", ",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84", "85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66", "67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313", ",,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,", ",,,,,,,309,,,234,,,59,60,,,61,,,559,,556,555,554,564,557,,,,,,,,,567", ",91,81,84,85,,86,88,87,89,,,,,82,90,,,,514,,562,63,,83,95,96,70,71,72", ",58,575,574,,64,65,568,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318", "103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109", "110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45", ",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96", "176,187,177,200,173,193,183,182,203,204,198,181,180,175,201,205,206", "185,174,188,192,194,186,179,,,,195,202,197,196,189,199,184,172,191,190", ",,,,,171,178,169,170,166,167,168,127,129,126,,128,,,,,,,,160,161,,157", "139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,,,,,,,,,154", "153,,138,159,156,155,164,151,152,146,144,136,158,137,,,165,91,,,,,,", ",,,,,,,90,176,187,177,200,173,193,183,182,203,204,198,181,180,175,201", "205,206,185,174,188,192,194,186,179,,,,195,202,197,196,189,199,184,172", "191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128,,,,,,,,160,161", ",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,,,,,", ",,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,,,165,91", ",,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204,198,181,180", "175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196,189,199", "184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128,,,,,", ",,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150", ",,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137", ",,165,91,,,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204,198", "181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196", "189,199,184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128", ",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149", "150,,,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158", "137,,,165,91,,,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204", "198,181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197", "379,378,380,377,172,191,190,,,,,,171,178,169,170,374,375,376,372,129", "99,98,373,,101,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,", ",,162,163,149,150,,,,,,384,,,,,,,,154,153,,138,159,156,155,164,151,152", "146,144,136,158,137,,,165,176,187,177,200,173,193,183,182,203,204,198", "181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196", "189,199,184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128", ",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149", "150,559,,556,555,554,564,557,,,,,,,154,153,567,138,159,156,155,164,151", "152,146,144,136,158,137,,,165,,,,,,,562,,1010,438,,,1011,,,572,571,575", "574,,160,161,568,157,139,140,141,148,145,147,,,142,143,,,,162,163,149", "150,,,,,,269,,223,,,,,,154,153,,138,159,156,155,164,151,152,146,144", "136,158,137,651,438,165,,652,,,,,,,,160,161,,157,139,140,141,148,145", "147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156", "155,164,151,152,146,144,136,158,137,683,445,165,,684,,,,,,,,160,161", ",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,", ",,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,1012", "445,165,,1013,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143", ",,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151", "152,146,144,136,158,137,653,445,165,,654,,,,,,,,160,161,,157,139,140", "141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153", ",138,159,156,155,164,151,152,146,144,136,158,137,485,438,165,,486,,", ",,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150", ",,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137", "1007,445,165,,1006,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142", "143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164", "151,152,146,144,136,158,137,653,445,165,,654,,,,,,,,160,161,,157,139", "140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154", "153,,138,159,156,155,164,151,152,146,144,136,158,137,737,445,165,,738", ",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149", "150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136", "158,137,485,438,165,,486,,,,,,,,160,161,,157,139,140,141,148,145,147", ",,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155", "164,151,152,146,144,136,158,137,680,438,165,,681,,,,,,,,160,161,,157", "139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,", ",154,153,,138,159,156,155,164,151,152,146,144,136,158,137,769,445,165", ",768,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163", "149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144", "136,158,137,766,438,165,,767,,,,,,,,160,161,,157,139,140,141,148,145", "147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156", "155,164,151,152,146,144,136,158,137,651,438,165,,652,,,,,,,,160,161", ",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,", ",,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,732,438", "165,,733,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162", "163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146", "144,136,158,137,434,438,165,,435,,,,,,,,160,161,,157,139,140,141,148", "145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159", "156,155,164,151,152,146,144,136,158,137,441,445,165,,440,,,,,,,,160", "161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269", ",,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,734", "445,165,,735,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,", ",,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152", "146,144,136,158,137,,559,165,556,555,554,564,557,,559,,556,555,554,564", "557,567,,,,,,,,567,,559,,556,555,554,564,557,,,,,,562,,,567,,,,,562", "572,571,575,574,,,,568,572,571,575,574,,,,568,562,,559,,556,555,554", "564,557,572,571,575,574,,,,568,567,,559,,556,555,554,564,557,,559,,556", "555,554,564,557,567,,,,,562,,,567,,,,,,572,571,575,574,,,,568,562,,", ",,,,,562,572,571,575,574,,,,568,572,571,575,574,,,559,568,556,555,554", "564,557,559,,556,555,554,564,557,559,567,556,555,554,564,557,559,567", "556,555,554,564,557,,567,,,,,,,567,562,,,,,,,562,,572,571,575,574,,562", ",568,,575,574,,562,,568,,575,574,,,,568,,575,574,,,559,568,556,555,554", "564,557,,559,,556,555,554,564,557,567,,,,,,,,567,,559,,556,555,554,564", "557,,,,,,562,545,,567,,,,,562,572,571,575,574,,,,568,572,571,575,574", ",,,568,562,,,,,,,,,572,571,575,574,,,,568"]; + racc_action_table = (arr = $$$('::', 'Array').$new(24615, nil)); idx = 0; - $send(clist, 'each', [], (TMP_Ruby23_3 = function(str){var self = TMP_Ruby23_3.$$s || this, TMP_4; -if (str == null) str = nil; - return $send(str.$split(",", -1), 'each', [], (TMP_4 = function(i){var self = TMP_4.$$s || this, $writer = nil; -if (i == null) i = nil; + $send(clist, 'each', [], ($Ruby25$3 = function(str){var self = $Ruby25$3.$$s || this, $$4; + + + + if (str == null) { + str = nil; + }; + return $send(str.$split(",", -1), 'each', [], ($$4 = function(i){var self = $$4.$$s || this, $writer = nil; + + + if (i == null) { + i = nil; + }; if ($truthy(i['$empty?']())) { - } else { + } else { $writer = [idx, i.$to_i()]; $send(arr, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; - return (idx = $rb_plus(idx, 1));}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4))}, TMP_Ruby23_3.$$s = self, TMP_Ruby23_3.$$arity = 1, TMP_Ruby23_3)); - clist = ["95,439,439,594,594,15,347,95,95,95,58,340,95,95,95,24,95,26,19,385,475", "483,24,341,95,386,95,95,95,61,357,650,223,1,357,348,95,95,719,95,95", "95,95,95,884,907,942,943,946,351,58,580,15,665,985,475,483,330,310,19", "330,7,15,665,484,687,95,95,95,95,95,95,95,95,95,95,95,95,95,95,24,26", "95,95,95,385,95,95,572,223,95,386,721,95,95,439,95,594,95,484,95,10", "95,95,26,95,95,95,95,95,1003,95,98,95,1004,347,61,722,650,98,98,98,310", "1005,98,98,98,95,98,340,95,95,95,95,340,95,98,95,98,98,98,341,95,95", "348,310,341,670,98,98,1006,98,98,98,98,98,719,1017,351,719,580,719,884", "907,942,943,946,884,907,942,943,946,985,573,687,723,843,985,98,98,98", "98,98,98,98,98,98,98,98,98,98,98,572,12,98,98,98,572,98,98,1005,721", "98,13,671,98,98,844,98,724,98,3,98,670,98,98,3,98,98,98,98,98,421,98", "224,98,722,1006,1003,421,421,421,1004,1003,651,421,421,1004,421,98,723", "1005,98,98,98,98,1005,98,16,98,680,680,226,670,98,98,670,22,421,421", "800,421,421,421,421,421,670,37,1006,651,671,366,673,1006,724,1017,331", "573,366,331,1017,224,573,445,723,843,590,590,421,421,421,421,421,421", "421,421,421,421,421,421,421,421,40,638,421,421,421,367,421,226,671,844", "421,671,367,421,844,912,724,912,421,45,421,671,421,421,800,421,421,421", "421,421,380,421,422,421,366,673,673,77,445,422,422,422,680,17,17,422", "422,421,422,77,421,421,109,421,204,421,290,422,638,77,225,290,421,421", "800,355,38,800,422,422,367,422,422,422,422,422,673,800,590,673,339,339", "227,590,704,639,704,704,704,673,704,41,41,228,380,380,380,232,422,422", "422,422,422,422,422,422,422,422,422,422,422,422,264,38,422,422,422,355", "422,315,315,494,422,38,355,422,344,773,278,355,422,344,422,355,422,422", "39,422,422,422,422,422,639,422,422,422,605,903,607,903,903,903,355,903", "368,847,279,356,282,422,847,368,422,422,640,422,704,422,294,41,41,640", "640,640,422,422,640,640,640,295,640,297,355,39,773,494,494,494,369,640", "640,640,640,39,852,369,298,315,315,852,640,640,494,640,640,640,640,640", "299,356,605,605,607,607,381,334,356,382,334,368,605,356,607,383,686", "356,305,686,308,903,640,640,640,640,640,640,640,640,640,640,640,640", "640,640,356,309,640,640,640,932,640,640,932,369,640,384,319,640,640", "387,640,370,640,314,640,415,640,640,370,640,640,640,640,640,356,640", "640,640,381,381,381,382,382,382,316,371,320,383,383,383,323,640,371", "328,640,640,640,640,332,640,333,640,641,319,525,525,640,640,335,641", "641,641,415,319,641,641,641,345,641,384,384,384,415,387,387,387,370", "123,641,641,641,346,123,123,692,692,416,350,641,641,352,641,641,641", "641,641,361,14,396,46,371,222,372,373,14,402,46,374,222,372,373,710", "710,14,374,46,405,222,641,641,641,641,641,641,641,641,641,641,641,641", "641,641,407,416,641,641,641,451,641,641,302,411,641,416,376,641,641", "302,641,413,641,376,641,621,641,641,302,641,641,641,641,641,14,641,46", "641,222,372,373,451,303,414,374,451,451,423,452,303,431,641,993,993", "641,641,641,641,303,641,441,641,27,453,454,455,641,641,456,27,27,27", "621,689,27,27,27,302,27,481,452,376,621,689,452,452,485,27,27,27,598", "598,501,502,598,598,598,505,27,27,507,27,27,27,27,27,832,303,832,832", "832,304,832,512,515,523,689,689,304,524,553,689,553,553,553,526,553", "304,27,27,27,27,27,27,27,27,27,27,27,27,27,27,538,832,27,27,27,539,541", "27,542,27,27,543,552,27,27,553,27,560,27,564,27,567,27,27,553,27,27", "27,27,27,28,27,27,27,304,569,574,28,28,28,575,592,28,28,28,306,28,27", "602,610,27,27,306,27,612,27,28,28,618,622,627,306,27,632,642,644,28", "28,649,28,28,28,28,28,656,658,664,321,667,349,669,672,675,676,321,701", "349,701,701,701,679,701,681,321,684,349,28,28,28,28,28,28,28,28,28,28", "28,28,28,28,306,688,28,28,28,703,705,28,712,28,28,717,701,28,28,720", "28,729,28,733,28,701,28,28,752,28,28,28,28,28,56,28,321,28,349,757,775", "56,56,56,776,778,56,56,56,359,56,28,779,780,28,28,359,28,782,28,56,56", "56,783,784,359,28,785,789,793,56,56,794,56,56,56,56,56,799,511,803,583", "806,874,807,810,511,815,583,816,874,820,821,823,824,511,826,583,829", "874,56,56,56,56,56,56,56,56,56,56,56,56,56,56,359,936,56,56,56,831,834", "56,936,837,56,846,850,56,56,851,56,936,56,854,56,855,56,56,871,56,56", "56,56,56,511,56,583,56,874,875,861,904,944,904,904,904,877,904,888,944", "861,56,889,726,56,56,56,56,944,56,417,56,905,909,910,916,56,417,417", "417,936,920,417,417,417,922,417,925,904,470,926,927,928,861,861,417", "417,417,861,872,930,872,872,872,945,872,417,417,950,417,417,417,417", "417,951,726,952,944,953,954,956,470,726,979,980,470,470,726,470,470", "981,726,992,994,995,996,417,417,417,417,417,417,417,417,417,417,417", "417,417,417,726,997,417,417,417,674,998,417,999,417,417,1002,674,417", "417,1007,417,674,417,1008,417,674,417,417,1019,417,417,417,417,417,726", "417,417,417,,830,,830,830,830,,830,727,,,,,417,,727,417,417,426,417", "727,417,,,727,426,426,426,417,,426,426,426,,426,461,674,,830,,,,,426", "426,426,426,830,,,,461,461,,426,426,,426,426,426,426,426,955,,955,955", "955,461,955,461,,461,461,727,461,461,,,461,,461,,,,426,426,426,426,426", "426,426,426,426,426,426,426,426,426,,955,426,426,426,471,,426,,,426", ",,426,426,,426,,426,,426,,426,426,,426,426,426,426,426,,426,426,426", ",,,471,,,,471,471,,471,471,,426,,,426,426,426,426,,426,427,426,,,,,426", "427,427,427,,,427,427,427,462,427,978,,978,978,978,,978,,427,427,427", "427,,,462,462,,,,427,427,,427,427,427,427,427,,,,462,,462,,462,462,", "462,462,,,462,,462,6,6,6,6,6,427,427,427,427,427,427,427,427,427,427", "427,427,427,427,,,427,427,427,,,427,,,427,,,427,427,,427,,427,,427,", "427,427,,427,427,427,427,427,,427,427,427,293,293,293,293,293,,,,957", ",957,957,957,427,957,,427,427,427,427,,427,476,427,,,,,427,476,476,476", ",,476,476,476,646,476,646,646,646,646,646,,957,,476,476,,,,646,,,,459", ",476,476,,476,476,476,476,476,499,499,499,499,499,,459,459,646,,338", ",338,338,338,338,338,646,646,646,646,,459,,646,338,459,459,,459,459", ",,476,,,,,457,,476,,,,,476,476,338,338,,646,,,,457,457,338,338,338,338", ",,,338,,,,,476,476,457,,457,,457,457,,457,457,,,,,476,,,476,,,,,476", "0,0,0,0,0,0,476,,,0,0,,,,0,,0,0,0,0,0,0,0,,,,,,0,0,0,0,0,0,0,,,0,,,", ",434,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,0,,0,0,0,0,0,434,434,434,434,434,434", "434,434,434,434,434,,434,434,,,434,434,,0,,,0,,,0,0,,,0,,0,434,,434", "0,434,434,,434,434,434,434,434,0,434,,,,0,0,0,0,,0,0,0,0,,,,,0,0,,434", ",434,,,0,,0,0,0,33,33,33,33,33,33,,,,33,33,,,,33,,33,33,33,33,33,33", "33,,,,,,33,33,33,33,33,33,33,,,33,,,,,410,33,33,33,33,33,33,33,33,33", "33,33,33,,33,33,33,,33,33,33,33,33,410,410,410,410,410,410,410,410,410", "410,410,,410,410,,,410,410,,33,,,33,,,33,33,,,33,,33,410,,410,33,410", "410,,410,410,410,410,410,33,410,,,,33,33,33,33,,33,33,33,33,,,,,33,33", ",410,,,,,33,,33,33,33,121,121,121,121,121,121,,,,121,121,,,,121,,121", "121,121,121,121,121,121,,,,,,121,121,121,121,121,121,121,,,121,,,,,643", "121,121,121,121,121,121,121,121,121,121,121,121,,121,121,121,,121,121", "121,121,121,643,643,643,643,643,643,643,643,643,643,643,,643,643,,,643", "643,,121,,,121,,,121,121,,,121,,121,643,,643,121,643,643,,643,643,643", "643,643,121,643,,,,121,121,121,121,,121,121,121,121,,,,,121,121,,643", ",,,,121,,121,121,121,206,206,206,206,206,206,,,,206,206,,,,206,,206", "206,206,206,206,206,206,,,,,,206,206,206,206,206,206,206,,,206,,,,,", "206,206,206,206,206,206,206,206,206,206,206,206,,206,206,206,,206,206", "206,206,206,21,21,21,21,21,21,21,21,21,21,21,,21,21,,,21,21,,206,,,206", ",,206,206,,,206,,206,21,,21,206,21,21,,21,21,21,21,21,206,21,,,,206", "206,206,206,,206,206,206,206,,,,,206,206,,21,,,,,206,,206,206,206,231", "231,231,231,231,231,,,,231,231,,,,231,,231,231,231,231,231,231,231,", ",,,,231,231,231,231,231,231,231,,,231,,,,,,231,231,231,231,231,231,231", "231,231,231,231,231,,231,231,231,,231,231,231,231,231,276,276,276,276", "276,276,276,276,276,276,276,,276,276,,,276,276,,231,,,231,,,231,231", ",,231,,231,276,,276,231,276,276,,276,276,276,276,276,231,276,,,,231", "231,231,231,,231,231,231,231,,,,,231,231,,276,,,,,231,,231,231,231,296", "296,296,296,296,296,,,,296,296,,,,296,,296,296,296,296,296,296,296,", ",,,,296,296,296,296,296,296,296,,,296,,,,,,296,296,296,296,296,296,296", "296,296,296,296,296,,296,296,296,,296,296,296,296,296,429,429,429,429", "429,429,429,429,429,429,429,,429,429,,,429,429,,296,,,296,,,296,296", ",,296,,296,429,,429,296,429,429,,429,429,429,429,429,296,429,,,,296", "296,296,296,,296,296,296,296,,,,,296,296,,429,,,,,296,,296,296,296,301", "301,301,301,301,301,,,,301,301,,,,301,,301,301,301,301,301,301,301,", ",,,,301,301,301,301,301,301,301,,,301,,,,,,301,301,301,301,301,301,301", "301,301,301,301,301,,301,301,301,,301,301,301,301,301,474,474,474,474", "474,474,474,474,474,474,474,,474,474,,,474,474,,301,,,301,,,301,301", ",,301,,301,474,,474,301,474,474,,474,474,474,474,474,301,474,,,,301", "301,301,301,,301,301,301,301,,,,,301,301,474,474,,,,,301,,301,301,301", "326,326,326,326,326,326,,,,326,326,,,,326,,326,326,326,326,326,326,326", ",,,,,326,326,326,326,326,326,326,,,326,,,,,,326,326,326,326,326,326", "326,326,326,326,326,326,,326,326,326,,326,326,326,326,326,521,521,521", "521,521,521,521,521,521,521,521,,521,521,,,521,521,,326,,,326,,,326", "326,,,326,,326,521,,521,326,521,521,,521,521,521,521,521,326,521,,,", "326,326,326,326,,326,326,326,326,,,,,326,326,,521,,,,,326,,326,326,326", "500,500,500,500,500,500,,,,500,500,,,,500,,500,500,500,500,500,500,500", ",,,,,500,500,500,500,500,500,500,,,500,,,,,,500,500,500,500,500,500", "500,500,500,500,500,500,,500,500,500,,500,500,500,500,500,678,678,678", "678,678,678,678,678,678,678,678,,678,678,,,678,678,,500,,,500,,,500", "500,,,500,,500,678,,678,500,678,678,,678,678,678,678,678,500,678,,,", "500,500,500,500,,500,500,500,500,,,,,500,500,,678,,,,,500,,500,500,500", "568,568,568,568,568,568,,,,568,568,,,,568,,568,568,568,568,568,568,568", ",,,,,568,568,568,568,568,568,568,,,568,,,,,,568,568,568,568,568,568", "568,568,568,568,568,568,,568,568,568,,568,568,568,568,568,754,754,754", "754,754,754,754,754,754,754,754,,754,754,,,754,754,,568,,,568,,,568", "568,,,568,,568,754,,754,568,754,754,,754,754,754,754,754,568,754,,,", "568,568,568,568,,568,568,568,568,,,,,568,568,,754,,,,,568,,568,568,568", "571,571,571,571,571,571,,,,571,571,,,,571,,571,571,571,571,571,571,571", ",,,,,571,571,571,571,571,571,571,,,571,,,,,,571,571,571,571,571,571", "571,571,571,571,571,571,,571,571,571,,571,571,571,571,571,759,759,759", "759,759,759,759,759,759,759,759,,759,759,,,759,759,,571,,,571,,,571", "571,,,571,,571,759,,759,571,759,759,,759,759,759,759,759,571,759,,,", "571,571,571,571,,571,571,571,571,,,,,571,571,,759,,,,,571,,571,571,571", "591,591,591,591,591,591,,,,591,591,,,,591,,591,591,591,591,591,591,591", ",,,,,591,591,591,591,591,591,591,,,591,,,,,,591,591,591,591,591,591", "591,591,591,591,591,591,,591,591,591,,591,591,591,591,591,761,761,761", "761,761,761,761,761,761,761,761,,761,761,,,761,761,,591,,,591,,,591", "591,,,591,,591,761,,761,591,761,761,,761,761,761,761,761,591,761,,,", "591,591,591,591,,591,591,591,591,,,,,591,591,,761,,,,,591,,591,591,591", "648,648,648,648,648,648,,,,648,648,,,,648,,648,648,648,648,648,648,648", ",,,,,648,648,648,648,648,648,648,,,648,,,,,,648,648,648,648,648,648", "648,648,648,648,648,648,,648,648,648,,648,648,648,648,648,764,764,764", "764,764,764,764,764,764,764,764,,764,764,,,764,764,,648,,,648,,,648", "648,,,648,,648,764,,764,648,764,764,,764,764,764,764,764,648,764,,,", "648,648,648,648,,648,648,648,648,,,,,648,648,,764,,,,,648,,648,648,648", "653,653,653,653,653,653,,,,653,653,,,,653,,653,653,653,653,653,653,653", ",,,,,653,653,653,653,653,653,653,,,653,,,,,,653,653,653,653,653,653", "653,653,653,653,653,653,,653,653,653,,653,653,653,653,653,766,766,766", "766,766,766,766,766,766,766,766,,766,766,,,766,766,,653,,,653,,,653", "653,,,653,,653,766,,766,653,766,766,,766,766,766,766,766,653,766,,,", "653,653,653,653,,653,653,653,653,,,,,653,653,,766,,,,,653,,653,653,653", "654,654,654,654,654,654,,,,654,654,,,,654,,654,654,654,654,654,654,654", ",,,,,654,654,654,654,654,654,654,,,654,,,,,,654,654,654,654,654,654", "654,654,654,654,654,654,,654,654,654,,654,654,654,654,654,768,768,768", "768,768,768,768,768,768,768,768,,768,768,,,768,768,,654,,,654,,,654", "654,,,654,,654,768,,768,654,768,768,,768,768,768,768,768,654,768,,,", "654,654,654,654,,654,654,654,654,,,,,654,654,,768,,,,,654,,654,654,654", "730,730,730,730,730,730,,,,730,730,,,,730,,730,730,730,730,730,730,730", ",,,,,730,730,730,730,730,730,730,,,730,,,,,,730,730,730,730,730,730", "730,730,730,730,730,730,,730,730,730,,730,730,730,730,730,857,857,857", "857,857,857,857,857,857,857,857,,857,857,,,857,857,,730,,,730,,,730", "730,,,730,,730,857,,857,730,857,857,,857,857,857,857,857,730,857,,,", "730,730,730,730,,730,730,730,730,,,,,730,730,,857,,,,,730,,730,730,730", "734,734,734,734,734,734,,,,734,734,,,,734,,734,734,734,734,734,734,734", ",,,,,734,734,734,734,734,734,734,,,734,,,,,,734,734,734,734,734,734", "734,734,734,734,734,734,,734,734,734,,734,734,734,734,734,860,860,860", "860,860,860,860,860,860,860,860,,860,860,,,860,860,,734,,,734,,,734", "734,,,734,,734,860,,860,734,860,860,,860,860,860,860,860,734,860,,,", "734,734,734,734,,734,734,734,734,,,,,734,734,,860,,,,,734,,734,734,734", "744,744,744,744,744,744,,,,744,744,,,,744,,744,744,744,744,744,744,744", ",,,,,744,744,744,744,744,744,744,,,744,,,,,,744,744,744,744,744,744", "744,744,744,744,744,744,,744,744,744,,744,744,744,744,744,449,449,449", "449,449,449,449,449,449,449,449,,449,449,,,449,449,,744,,,744,,,744", "744,,,744,,744,449,,449,744,449,449,,449,449,449,449,449,744,449,,,", "744,744,744,744,,744,744,744,744,,,,,744,744,,991,,991,991,991,744,991", "744,744,744,792,792,792,792,792,792,,,,792,792,,,,792,,792,792,792,792", "792,792,792,,,,,991,792,792,792,792,792,792,792,,,792,,,,,,792,792,792", "792,792,792,792,792,792,792,792,792,,792,792,792,,792,792,792,792,792", "450,450,450,450,450,450,450,450,450,450,450,,450,450,,,450,450,,792", ",,792,,,792,792,,,792,,792,450,,450,792,450,450,,450,450,450,450,450", "792,450,,,,792,792,792,792,,792,792,792,792,,,,,792,792,,,,,,,792,,792", "792,792,805,805,805,805,805,805,,,,805,805,,,,805,,805,805,805,805,805", "805,805,,,,,,805,805,805,805,805,805,805,,,805,,,,,,805,805,805,805", "805,805,805,805,805,805,805,805,,805,805,805,,805,805,805,805,805,460", "460,460,460,460,460,460,,,460,460,,,,,,460,460,,805,,,805,,,805,805", ",,805,,805,460,,460,805,460,460,,460,460,460,460,460,805,460,,,,805", "805,805,805,,805,805,805,805,,,,,805,805,,,,,,,805,,805,805,805,813", "813,813,813,813,813,,,,813,813,,,,813,,813,813,813,813,813,813,813,", ",,,,813,813,813,813,813,813,813,,,813,,,,,,813,813,813,813,813,813,813", "813,813,813,813,813,,813,813,813,,813,813,813,813,813,463,,,,,,,,,,", ",,,,,463,463,,813,,,813,,,813,813,,,813,,813,463,,463,813,463,463,,463", "463,,,463,813,463,,,,813,813,813,813,,813,813,813,813,,,,,813,813,,", ",,,,813,,813,813,813,814,814,814,814,814,814,,,,814,814,,,,814,,814", "814,814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,", "814,814,814,814,814,814,814,814,814,814,814,814,,814,814,814,,814,814", "814,814,814,464,,,,,,,,,,,,,,,,464,464,,814,,,814,,,814,814,,,814,,814", "464,,464,814,464,464,,464,464,,,464,814,464,,,,814,814,814,814,,814", "814,814,814,,,,,814,814,,,,,,,814,,814,814,814,838,838,838,838,838,838", ",,,838,838,,,,838,,838,838,838,838,838,838,838,,,,,,838,838,838,838", "838,838,838,,,838,,,,,,838,838,838,838,838,838,838,838,838,838,838,838", ",838,838,838,,838,838,838,838,838,465,465,465,465,465,465,465,,,465", "465,,,,,,465,465,,838,,,838,,,838,838,,,838,,838,465,,465,838,465,465", ",465,465,465,465,465,838,465,,,,838,838,838,838,,838,838,838,838,,,", ",838,838,,,,,,,838,,838,838,838,839,839,839,839,839,839,,,,839,839,", ",,839,,839,839,839,839,839,839,839,,,,,,839,839,839,839,839,839,839", ",,839,,,,,,839,839,839,839,839,839,839,839,839,839,839,839,,839,839", "839,,839,839,839,839,839,466,466,466,466,466,466,466,,,466,466,,,,,", "466,466,,839,,,839,,,839,839,,,839,,839,466,,466,839,466,466,,466,466", "466,466,466,839,466,,,,839,839,839,839,,839,839,839,839,,,,,839,839", ",,,,,,839,,839,839,839,842,842,842,842,842,842,,,,842,842,,,,842,,842", "842,842,842,842,842,842,,,,,,842,842,842,842,842,842,842,,,842,,,,,", "842,842,842,842,842,842,842,842,842,842,842,842,,842,842,842,,842,842", "842,842,842,467,467,467,467,467,467,467,,,467,467,,,,,,467,467,,842", ",,842,,,842,842,,,842,,842,467,,467,842,467,467,,467,467,467,467,467", "842,467,,,,842,842,842,842,,842,842,842,842,,,,,842,842,,,,,,,842,,842", "842,842,848,848,848,848,848,848,,,,848,848,,,,848,,848,848,848,848,848", "848,848,,,,,,848,848,848,848,848,848,848,,,848,,,,,,848,848,848,848", "848,848,848,848,848,848,848,848,,848,848,848,,848,848,848,848,848,468", "468,468,468,468,468,468,,,468,468,,,,,,468,468,,848,,,848,,,848,848", ",,848,,848,468,,468,848,468,468,,468,468,468,468,468,848,468,,,,848", "848,848,848,,848,848,848,848,,,,,848,848,,,,,,,848,,848,848,848,881", "881,881,881,881,881,,,,881,881,,,,881,,881,881,881,881,881,881,881,", ",,,,881,881,881,881,881,881,881,,,881,,,,,,881,881,881,881,881,881,881", "881,881,881,881,881,,881,881,881,,881,881,881,881,881,469,469,469,469", "469,469,469,,,469,469,,,,,,469,469,,881,,,881,,,881,881,,,881,,881,469", ",469,881,469,469,,469,469,469,469,469,881,469,,,,881,881,881,881,,881", "881,881,881,,,,,881,881,,,,,,,881,,881,881,881,941,941,941,941,941,941", ",,,941,941,,,,941,,941,941,941,941,941,941,941,,,,,,941,941,941,941", "941,941,941,,,941,,,,,,941,941,941,941,941,941,941,941,941,941,941,941", ",941,941,941,,941,941,941,941,941,472,472,472,472,472,472,472,,,472", "472,,,,,,472,472,,941,,,941,,,941,941,,,941,,941,472,,472,941,472,472", ",472,472,472,472,472,941,472,,,,941,941,941,941,,941,941,941,941,,,", ",941,941,,,,,,,941,,941,941,941,958,958,958,958,958,958,,,,958,958,", ",,958,,958,958,958,958,958,958,958,,,,,,958,958,958,958,958,958,958", ",,958,,,,,,958,958,958,958,958,958,958,958,958,958,958,958,,958,958", "958,,958,958,958,958,958,473,473,473,473,473,473,473,473,,473,473,,", ",,,473,473,,958,,,958,,,958,958,,,958,,958,473,,473,958,473,473,,473", "473,473,473,473,958,473,,,,958,958,958,958,,958,958,958,958,,,,,958", "958,,,,,,,958,,958,958,958,964,964,964,964,964,964,,,,964,964,,,,964", ",964,964,964,964,964,964,964,,,,,,964,964,964,964,964,964,964,,,964", ",,,,,964,964,964,964,964,964,964,964,964,964,964,964,,964,964,964,,964", "964,964,964,964,458,,,,,,,,,,,,,,,,458,458,,964,,,964,,,964,964,,,964", ",964,458,,458,964,458,458,,458,458,,,,964,,,,,964,964,964,964,,964,964", "964,964,,,,,964,964,,,,,,,964,,964,964,964,966,966,966,966,966,966,", ",,966,966,,,,966,,966,966,966,966,966,966,966,,,,,,966,966,966,966,966", "966,966,,,966,,,,,,966,966,966,966,966,966,966,966,966,966,966,966,", "966,966,966,,966,966,966,966,966,,,,,,,,,,,,,,,,,,,,966,,,966,,,966", "966,,,966,,966,,,,966,,,,,,,,,966,,,,,966,966,966,966,,966,966,966,966", ",,,,966,966,,,,,,,966,,966,966,966,5,5,5,5,5,,,,5,5,,,,5,,5,5,5,5,5", "5,5,,,,,,5,5,5,5,5,5,5,,,5,,,,,,5,5,5,5,5,5,5,5,5,5,5,5,,5,5,5,,5,5", "5,5,5,,,,,,,,,,,,,,,,,,,,5,,,5,,,5,5,,,5,,5,,,,5,,,,,,,,,5,,,,,5,5,5", "5,,5,5,5,5,,,,,5,5,,,,20,20,20,5,20,5,5,5,20,20,,,,20,,20,20,20,20,20", "20,20,,,,,,20,20,20,20,20,20,20,,,20,,,,,,,20,,,20,20,20,20,20,20,20", "20,,20,20,20,,20,20,20,20,20,,,,,,,,,,,,,,,,,,,,20,,,20,,,20,20,,,20", ",,,,,20,,,,,,,,,20,,,,,20,20,20,20,,20,20,20,20,,,,,20,20,,,,29,29,29", "20,29,20,20,20,29,29,,,,29,,29,29,29,29,29,29,29,,,,,,29,29,29,29,29", "29,29,,,29,,,,,,,29,,,29,29,29,29,29,29,29,29,29,29,29,29,,29,29,29", "29,29,,,,,,,,,,,,,,,,,,,,29,,,29,,,29,29,,,29,,29,,29,,29,,,29,,,,,", "29,,,,,29,29,29,29,,29,29,29,29,,,,,29,29,,,,30,30,30,29,30,29,29,29", "30,30,,,,30,,30,30,30,30,30,30,30,,,,,,30,30,30,30,30,30,30,,,30,,,", ",,,30,,,30,30,30,30,30,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,,,,", ",,,,,,,,,,,30,,,30,,,30,30,,,30,,30,,30,,30,,,30,,,,,,30,,,,,30,30,30", "30,,30,30,30,30,,,,,30,30,,,,31,31,31,30,31,30,30,30,31,31,,,,31,,31", "31,31,31,31,31,31,,,,,,31,31,31,31,31,31,31,,,31,,,,,,,31,,,31,31,31", "31,31,31,31,31,31,31,31,31,,31,31,31,31,31,,,,,,,,,,,,,,,,,,,,31,,,31", ",,31,31,,,31,,31,,31,,31,,,31,,,,,,31,,,,,31,31,31,31,,31,31,31,31,", ",,,31,31,,,,34,34,34,31,34,31,31,31,34,34,,,,34,,34,34,34,34,34,34,34", ",,,,,34,34,34,34,34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,,34", "34,34,,34,34,,,34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,,,,,", ",,,,,,,,,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,35,35,35,34,35,34,34", "34,35,35,,,,35,,35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35", ",,,,,,35,,,35,35,35,35,35,35,35,35,,35,35,35,,35,35,,,35,,,,,,,,,,,", ",,,,,,,,35,,,35,,,35,35,,,35,,,697,,697,697,697,697,697,,,,,,,,,697", ",35,35,35,35,,35,35,35,35,,,,,35,35,,,,35,,697,35,,35,35,35,42,42,42", ",42,697,697,,42,42,697,,,42,,42,42,42,42,42,42,42,,,,,,42,42,42,42,42", "42,42,,,42,,,,,,,42,,,42,42,42,42,42,42,42,42,,42,42,42,,42,42,42,42", "42,,,,,,,,,,,,,,,,,,,,42,,,42,,,42,42,,,42,,,,,,42,,,,,,,,,42,,,,,42", "42,42,42,,42,42,42,42,,,,,42,42,,,,43,43,43,42,43,42,42,42,43,43,,,", "43,,43,43,43,43,43,43,43,,,,,,43,43,43,43,43,43,43,,,43,,,,,,,43,,,43", "43,43,43,43,43,43,43,,43,43,43,,43,43,43,43,43,,,,,,,,,,,,,,,,,,,,43", ",,43,,,43,43,,,43,,,,,,43,,,,,,,,,43,,,,,43,43,43,43,,43,43,43,43,,", ",,43,43,,,,44,44,44,43,44,43,43,43,44,44,,,,44,,44,44,44,44,44,44,44", ",,,,,44,44,44,44,44,44,44,,,44,,,,,,,44,,,44,44,44,44,44,44,44,44,,44", "44,44,,44,44,44,44,44,,,,,,,,,,,,,,,,,,,,44,,,44,,,44,44,,,44,,,,,,44", ",,,,,,,,44,,,,,44,44,44,44,,44,44,44,44,,,,,44,44,,,,59,59,59,44,59", "44,44,44,59,59,,,,59,,59,59,59,59,59,59,59,,,,,,59,59,59,59,59,59,59", ",,59,,,,,,,59,,,59,59,59,59,59,59,59,59,59,59,59,59,,59,59,59,59,59", ",,,,,,,,,,,,,,,,,,,59,,,59,,,59,59,,,59,,59,,,,59,,,59,,,,,,59,,,,,59", "59,59,59,,59,59,59,59,,,,,59,59,,,,60,60,60,59,60,59,59,59,60,60,,,", "60,,60,60,60,60,60,60,60,,,,,,60,60,60,60,60,60,60,,,60,,,,,,,60,,,60", "60,60,60,60,60,60,60,60,60,60,60,,60,60,60,60,60,,,,,,,,,,,,,,,,,,,", "60,,,60,,,60,60,,,60,,,,,,60,,,60,,,,,,60,,,,,60,60,60,60,,60,60,60", "60,,,,,60,60,,,,63,63,63,60,63,60,60,60,63,63,,,,63,,63,63,63,63,63", "63,63,,,,,,63,63,63,63,63,63,63,,,63,,,,,,,63,,,63,63,63,63,63,63,63", "63,,63,63,63,,63,63,63,63,63,,,,,,,,,,,,,,,,,,,,63,,,63,,,63,63,,,63", ",,,,,63,,,,,,,,,63,,,,,63,63,63,63,,63,63,63,63,,,,,63,63,,,,64,64,64", "63,64,63,63,63,64,64,,,,64,,64,64,64,64,64,64,64,,,,,,64,64,64,64,64", "64,64,,,64,,,,,,,64,,,64,64,64,64,64,64,64,64,,64,64,64,,64,64,64,64", "64,,,,,,,,,,,,,,,,,,,,64,,,64,,,64,64,,,64,,,,,,64,,,,,,,,,64,,,,,64", "64,64,64,,64,64,64,64,,,,,64,64,,,,67,67,67,64,67,64,64,64,67,67,,,", "67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,,67", "67,67,67,67,67,67,67,,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,,,,,67", ",,67,,,67,67,,,67,,,,,,67,,,,,,,,,67,,,,,67,67,67,67,,67,67,67,67,,", ",,67,67,67,,,,,67,67,,67,67,67,68,68,68,,68,,,,68,68,,,,68,,68,68,68", "68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68,68", "68,68,68,,68,68,68,,68,68,,,68,,,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,", "68,,68,,,,,,,,,,,,,,,,,,68,68,68,68,,68,68,68,68,,,,,68,68,,,,69,69", "69,68,69,68,68,68,69,69,,,,69,,69,69,69,69,69,69,69,,,,,,69,69,69,69", "69,69,69,,,69,,,,,,,69,,,69,69,69,69,69,69,69,69,,69,69,69,,69,69,,", "69,,,,,,,,,,,,,,,,,69,,,69,,,69,,,69,69,,,69,,,,,,,,,,,,,,,,,,,,69,69", "69,69,,69,69,69,69,,,,,69,69,,,,70,70,70,69,70,69,69,69,70,70,,,,70", ",70,70,70,70,70,70,70,,,,,,70,70,70,70,70,70,70,,,70,,,,,,,70,,,70,70", "70,70,70,70,70,70,,70,70,70,,70,70,,,70,,,,,,,,,,,,,,,,,,,,70,,,70,", ",70,70,,,70,,,868,,868,868,868,868,868,,,,,,,,,868,,70,70,70,70,,70", "70,70,70,,,,,70,70,,,,,,868,70,,70,70,70,111,111,111,111,111,868,868", ",111,111,868,,,111,,111,111,111,111,111,111,111,,,,,,111,111,111,111", "111,111,111,,,111,,,,,,111,111,111,111,111,111,111,111,111,111,111,111", ",111,111,111,,111,111,111,111,111,,,,,,,,,,,,,,,,,,,,111,,,111,,,111", "111,,,111,,111,,,,111,,,,,,,,,111,,,,,111,111,111,111,,111,111,111,111", ",,,,111,111,,,,,,111,111,,111,111,111,116,116,116,,116,,,,116,116,,", ",116,,116,116,116,116,116,116,116,,,,,,116,116,116,116,116,116,116,", ",116,,,,,,,116,,,116,116,116,116,116,116,116,116,,116,116,116,,116,116", "116,116,116,,,,,,,,,,,,,,,,,,,,116,,,116,,,116,116,,,116,,,,,,116,,", ",,,,,,116,,,,,116,116,116,116,,116,116,116,116,,,,,116,116,,,,117,117", "117,116,117,116,116,116,117,117,,,,117,,117,117,117,117,117,117,117", ",,,,,117,117,117,117,117,117,117,,,117,,,,,,,117,,,117,117,117,117,117", "117,117,117,,117,117,117,,117,117,117,117,117,,,,,,,,,,,,,,,,,,,,117", ",,117,,,117,117,,,117,,,,,,117,,,,,,,,,117,,,,,117,117,117,117,,117", "117,117,117,,,,,117,117,,,,118,118,118,117,118,117,117,117,118,118,", ",,118,,118,118,118,118,118,118,118,,,,,,118,118,118,118,118,118,118", ",,118,,,,,,,118,,,118,118,118,118,118,118,118,118,,118,118,118,,118", "118,118,118,118,,,,,,,,,,,,,,,,,,,,118,,,118,,,118,118,,,118,,,,,,118", ",,,,,,,,118,,,,,118,118,118,118,,118,118,118,118,,,,,118,118,,,,119", "119,119,118,119,118,118,118,119,119,,,,119,,119,119,119,119,119,119", "119,,,,,,119,119,119,119,119,119,119,,,119,,,,,,,119,,,119,119,119,119", "119,119,119,119,,119,119,119,,119,119,119,119,119,,,,,,,,,,,,,,,,,,", ",119,,,119,,,119,119,,,119,,,,,,119,,,,,,,,,119,,,,,119,119,119,119", ",119,119,119,119,,,,,119,119,,,,,,,119,,119,119,119,120,120,120,120", "120,,,,120,120,,,,120,,120,120,120,120,120,120,120,,,,,,120,120,120", "120,120,120,120,,,120,,,,,,120,120,,120,120,120,120,120,120,120,120", "120,,120,120,120,,120,120,120,120,120,,,,,,,,,,,,,,,,,,,,120,,,120,", ",120,120,,,120,,120,,,,120,,,,,,,,,120,,,,,120,120,120,120,,120,120", "120,120,,,,,120,120,,,,207,207,207,120,207,120,120,120,207,207,,,,207", ",207,207,207,207,207,207,207,,,,,,207,207,207,207,207,207,207,,,207", ",,,,,,207,,,207,207,207,207,207,207,207,207,,207,207,207,,207,207,207", "207,207,,,,,,,,,,,,,,,,,,,,207,,,207,,,207,207,,,207,,207,,,,207,,,", ",,,,,207,,,,,207,207,207,207,,207,207,207,207,,,,,207,207,,,,208,208", "208,207,208,207,207,207,208,208,,,,208,,208,208,208,208,208,208,208", ",,,,,208,208,208,208,208,208,208,,,208,,,,,,,208,,,208,208,208,208,208", "208,208,208,,208,208,208,,208,208,208,208,208,,,,,,,,,,,,,,,,,,,,208", ",,208,,,208,208,,,208,,,,,,208,,,,,,,,,208,,,,,208,208,208,208,,208", "208,208,208,,,,,208,208,,,,209,209,209,208,209,208,208,208,209,209,", ",,209,,209,209,209,209,209,209,209,,,,,,209,209,209,209,209,209,209", ",,209,,,,,,,209,,,209,209,209,209,209,209,209,209,209,209,209,209,,209", "209,209,209,209,,,,,,,,,,,,,,,,,,,,209,,,209,,,209,209,,,209,,209,,209", ",209,,,209,,,,,,209,,,,,209,209,209,209,,209,209,209,209,,,,,209,209", ",,,214,214,214,209,214,209,209,209,214,214,,,,214,,214,214,214,214,214", "214,214,,,,,,214,214,214,214,214,214,214,,,214,,,,,,,214,,,214,214,214", "214,214,214,214,214,,214,214,214,,214,214,214,214,214,,,,,,,,,,,,,,", ",,,,,214,,,214,,,214,214,,,214,,,,,,214,,,,,,,,,214,,,,,214,214,214", "214,,214,214,214,214,,,,,214,214,,,,215,215,215,214,215,214,214,214", "215,215,,,,215,,215,215,215,215,215,215,215,,,,,,215,215,215,215,215", "215,215,,,215,,,,,,,215,,,215,215,215,215,215,215,215,215,,215,215,215", ",215,215,215,215,215,,,,,,,,,,,,,,,,,,,,215,,,215,,,215,215,,,215,,215", ",,,215,,,,,,,,,215,,,,,215,215,215,215,,215,215,215,215,,,,,215,215", ",,,216,216,216,215,216,215,215,215,216,216,,,,216,,216,216,216,216,216", "216,216,,,,,,216,216,216,216,216,216,216,,,216,,,,,,,216,,,216,216,216", "216,216,216,216,216,,216,216,216,,216,216,216,216,216,,,,,,,,,,,,,,", ",,,,,216,,,216,,,216,216,,,216,,,,,,216,,,,,,,,,216,,,,,216,216,216", "216,,216,216,216,216,,,,,216,216,,,,217,217,217,216,217,216,216,216", "217,217,,,,217,,217,217,217,217,217,217,217,,,,,,217,217,217,217,217", "217,217,,,217,,,,,,,217,,,217,217,217,217,217,217,217,217,,217,217,217", ",217,217,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,", ",,,217,,,,,,,,,217,,,,,217,217,217,217,,217,217,217,217,,,,,217,217", ",,,218,218,218,217,218,217,217,217,218,218,,,,218,,218,218,218,218,218", "218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,,218,,,218,218,218", "218,218,218,218,218,,218,218,218,,218,218,218,218,218,,,,,,,,,,,,,,", ",,,,,218,,,218,,,218,218,,,218,,,,,,218,,,,,,,,,218,,,,,218,218,218", "218,,218,218,218,218,,,,,218,218,,,,219,219,219,218,219,218,218,218", "219,219,,,,219,,219,219,219,219,219,219,219,,,,,,219,219,219,219,219", "219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219,219,219", ",219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219,,,219,,", ",,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,,,,,219,219", "219,,,230,230,230,219,230,219,219,219,230,230,,,,230,,230,230,230,230", "230,230,230,,,,,,230,230,230,230,230,230,230,,,230,,,,,,,230,,,230,230", "230,230,230,230,230,230,,230,230,230,,230,230,230,230,230,,,,,,,,,,", ",,,,,,,,,230,,,230,,,230,230,,,230,,,,,,230,,,,,,,,,230,,,,,230,230", "230,230,,230,230,230,230,,,,,230,230,,,,233,233,233,230,233,230,230", "230,233,233,,,,233,,233,233,233,233,233,233,233,,,,,,233,233,233,233", "233,233,233,,,233,,,,,,,233,,,233,233,233,233,233,233,233,233,,233,233", "233,,233,233,233,233,233,,,,,,,,,,,,,,,,,,,,233,,,233,,,233,233,,,233", ",,,,,233,,,,,,,,,233,,,,,233,233,233,233,,233,233,233,233,,,,,233,233", ",,,234,234,234,233,234,233,233,233,234,234,,,,234,,234,234,234,234,234", "234,234,,,,,,234,234,234,234,234,234,234,,,234,,,,,,,234,,,234,234,234", "234,234,234,234,234,,234,234,234,,234,234,234,234,234,,,,,,,,,,,,,,", ",,,,,234,,,234,,,234,234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234", "234,,234,234,234,234,,,,,234,234,,,,235,235,235,234,235,234,234,234", "235,235,,,,235,,235,235,235,235,235,235,235,,,,,,235,235,235,235,235", "235,235,,,235,,,,,,,235,,,235,235,235,235,235,235,235,235,,235,235,235", ",235,235,235,235,235,,,,,,,,,,,,,,,,,,,,235,,,235,,,235,235,,,235,,", ",,,235,,,,,,,,,235,,,,,235,235,235,235,,235,235,235,235,,,,,235,235", ",,,236,236,236,235,236,235,235,235,236,236,,,,236,,236,236,236,236,236", "236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,,,236,,,236,236,236", "236,236,236,236,236,,236,236,236,,236,236,236,236,236,,,,,,,,,,,,,,", ",,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236,,,,,236,236,236", "236,,236,236,236,236,,,,,236,236,,,,237,237,237,236,237,236,236,236", "237,237,,,,237,,237,237,237,237,237,237,237,,,,,,237,237,237,237,237", "237,237,,,237,,,,,,,237,,,237,237,237,237,237,237,237,237,,237,237,237", ",237,237,237,237,237,,,,,,,,,,,,,,,,,,,,237,,,237,,,237,237,,,237,,", ",,,237,,,,,,,,,237,,,,,237,237,237,237,,237,237,237,237,,,,,237,237", ",,,238,238,238,237,238,237,237,237,238,238,,,,238,,238,238,238,238,238", "238,238,,,,,,238,238,238,238,238,238,238,,,238,,,,,,,238,,,238,238,238", "238,238,238,238,238,,238,238,238,,238,238,238,238,238,,,,,,,,,,,,,,", ",,,,,238,,,238,,,238,238,,,238,,,,,,238,,,,,,,,,238,,,,,238,238,238", "238,,238,238,238,238,,,,,238,238,,,,239,239,239,238,239,238,238,238", "239,239,,,,239,,239,239,239,239,239,239,239,,,,,,239,239,239,239,239", "239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239,,239,239,239", ",239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,239,,,239,,", ",,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239,,,,,239,239", ",,,240,240,240,239,240,239,239,239,240,240,,,,240,,240,240,240,240,240", "240,240,,,,,,240,240,240,240,240,240,240,,,240,,,,,,,240,,,240,240,240", "240,240,240,240,240,,240,240,240,,240,240,240,240,240,,,,,,,,,,,,,,", ",,,,,240,,,240,,,240,240,,,240,,,,,,240,,,,,,,,,240,,,,,240,240,240", "240,,240,240,240,240,,,,,240,240,,,,241,241,241,240,241,240,240,240", "241,241,,,,241,,241,241,241,241,241,241,241,,,,,,241,241,241,241,241", "241,241,,,241,,,,,,,241,,,241,241,241,241,241,241,241,241,,241,241,241", ",241,241,241,241,241,,,,,,,,,,,,,,,,,,,,241,,,241,,,241,241,,,241,,", ",,,241,,,,,,,,,241,,,,,241,241,241,241,,241,241,241,241,,,,,241,241", ",,,242,242,242,241,242,241,241,241,242,242,,,,242,,242,242,242,242,242", "242,242,,,,,,242,242,242,242,242,242,242,,,242,,,,,,,242,,,242,242,242", "242,242,242,242,242,,242,242,242,,242,242,242,242,242,,,,,,,,,,,,,,", ",,,,,242,,,242,,,242,242,,,242,,,,,,242,,,,,,,,,242,,,,,242,242,242", "242,,242,242,242,242,,,,,242,242,,,,243,243,243,242,243,242,242,242", "243,243,,,,243,,243,243,243,243,243,243,243,,,,,,243,243,243,243,243", "243,243,,,243,,,,,,,243,,,243,243,243,243,243,243,243,243,,243,243,243", ",243,243,243,243,243,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,243,,,243,,", ",,,243,,,,,,,,,243,,,,,243,243,243,243,,243,243,243,243,,,,,243,243", ",,,244,244,244,243,244,243,243,243,244,244,,,,244,,244,244,244,244,244", "244,244,,,,,,244,244,244,244,244,244,244,,,244,,,,,,,244,,,244,244,244", "244,244,244,244,244,,244,244,244,,244,244,244,244,244,,,,,,,,,,,,,,", ",,,,,244,,,244,,,244,244,,,244,,,,,,244,,,,,,,,,244,,,,,244,244,244", "244,,244,244,244,244,,,,,244,244,,,,245,245,245,244,245,244,244,244", "245,245,,,,245,,245,245,245,245,245,245,245,,,,,,245,245,245,245,245", "245,245,,,245,,,,,,,245,,,245,245,245,245,245,245,245,245,,245,245,245", ",245,245,245,245,245,,,,,,,,,,,,,,,,,,,,245,,,245,,,245,245,,,245,,", ",,,245,,,,,,,,,245,,,,,245,245,245,245,,245,245,245,245,,,,,245,245", ",,,246,246,246,245,246,245,245,245,246,246,,,,246,,246,246,246,246,246", "246,246,,,,,,246,246,246,246,246,246,246,,,246,,,,,,,246,,,246,246,246", "246,246,246,246,246,,246,246,246,,246,246,246,246,246,,,,,,,,,,,,,,", ",,,,,246,,,246,,,246,246,,,246,,,,,,246,,,,,,,,,246,,,,,246,246,246", "246,,246,246,246,246,,,,,246,246,,,,247,247,247,246,247,246,246,246", "247,247,,,,247,,247,247,247,247,247,247,247,,,,,,247,247,247,247,247", "247,247,,,247,,,,,,,247,,,247,247,247,247,247,247,247,247,,247,247,247", ",247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247,,,247,,,247,247,,,247,,", ",,,247,,,,,,,,,247,,,,,247,247,247,247,,247,247,247,247,,,,,247,247", ",,,248,248,248,247,248,247,247,247,248,248,,,,248,,248,248,248,248,248", "248,248,,,,,,248,248,248,248,248,248,248,,,248,,,,,,,248,,,248,248,248", "248,248,248,248,248,,248,248,248,,248,248,248,248,248,,,,,,,,,,,,,,", ",,,,,248,,,248,,,248,248,,,248,,,,,,248,,,,,,,,,248,,,,,248,248,248", "248,,248,248,248,248,,,,,248,248,,,,249,249,249,248,249,248,248,248", "249,249,,,,249,,249,249,249,249,249,249,249,,,,,,249,249,249,249,249", "249,249,,,249,,,,,,,249,,,249,249,249,249,249,249,249,249,,249,249,249", ",249,249,249,249,249,,,,,,,,,,,,,,,,,,,,249,,,249,,,249,249,,,249,,", ",,,249,,,,,,,,,249,,,,,249,249,249,249,,249,249,249,249,,,,,249,249", ",,,250,250,250,249,250,249,249,249,250,250,,,,250,,250,250,250,250,250", "250,250,,,,,,250,250,250,250,250,250,250,,,250,,,,,,,250,,,250,250,250", "250,250,250,250,250,,250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,", ",,,,,250,,,250,,,250,250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250", "250,,250,250,250,250,,,,,250,250,,,,251,251,251,250,251,250,250,250", "251,251,,,,251,,251,251,251,251,251,251,251,,,,,,251,251,251,251,251", "251,251,,,251,,,,,,,251,,,251,251,251,251,251,251,251,251,,251,251,251", ",251,251,251,251,251,,,,,,,,,,,,,,,,,,,,251,,,251,,,251,251,,,251,,", ",,,251,,,,,,,,,251,,,,,251,251,251,251,,251,251,251,251,,,,,251,251", ",,,252,252,252,251,252,251,251,251,252,252,,,,252,,252,252,252,252,252", "252,252,,,,,,252,252,252,252,252,252,252,,,252,,,,,,,252,,,252,252,252", "252,252,252,252,252,,252,252,252,,252,252,252,252,252,,,,,,,,,,,,,,", ",,,,,252,,,252,,,252,252,,,252,,,,,,252,,,,,,,,,252,,,,,252,252,252", "252,,252,252,252,252,,,,,252,252,,,,253,253,253,252,253,252,252,252", "253,253,,,,253,,253,253,253,253,253,253,253,,,,,,253,253,253,253,253", "253,253,,,253,,,,,,,253,,,253,253,253,253,253,253,253,253,,253,253,253", ",253,253,253,253,253,,,,,,,,,,,,,,,,,,,,253,,,253,,,253,253,,,253,,", ",,,253,,,,,,,,,253,,,,,253,253,253,253,,253,253,253,253,,,,,253,253", ",,,254,254,254,253,254,253,253,253,254,254,,,,254,,254,254,254,254,254", "254,254,,,,,,254,254,254,254,254,254,254,,,254,,,,,,,254,,,254,254,254", "254,254,254,254,254,,254,254,254,,254,254,254,254,254,,,,,,,,,,,,,,", ",,,,,254,,,254,,,254,254,,,254,,,,,,254,,,,,,,,,254,,,,,254,254,254", "254,,254,254,254,254,,,,,254,254,,,,255,255,255,254,255,254,254,254", "255,255,,,,255,,255,255,255,255,255,255,255,,,,,,255,255,255,255,255", "255,255,,,255,,,,,,,255,,,255,255,255,255,255,255,255,255,,255,255,255", ",255,255,255,255,255,,,,,,,,,,,,,,,,,,,,255,,,255,,,255,255,,,255,,", ",,,255,,,,,,,,,255,,,,,255,255,255,255,,255,255,255,255,,,,,255,255", ",,,256,256,256,255,256,255,255,255,256,256,,,,256,,256,256,256,256,256", "256,256,,,,,,256,256,256,256,256,256,256,,,256,,,,,,,256,,,256,256,256", "256,256,256,256,256,,256,256,256,,256,256,256,256,256,,,,,,,,,,,,,,", ",,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,,,,256,,,,,256,256,256", "256,,256,256,256,256,,,,,256,256,,,,257,257,257,256,257,256,256,256", "257,257,,,,257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257", "257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257", ",257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,", ",,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257", ",,,258,258,258,257,258,257,257,257,258,258,,,,258,,258,258,258,258,258", "258,258,,,,,,258,258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258", "258,258,258,258,258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,", ",,,,,258,,,258,,,258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258", "258,,258,258,258,258,,,,,258,258,,,,265,265,265,258,265,258,258,258", "265,265,,,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265,265", "265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,265,265,265", "265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265", ",265,,265,,265,,,265,,,,,,265,,,,,265,265,265,265,,265,265,265,265,", ",,,265,265,,,,266,266,266,265,266,265,265,265,266,266,,,,266,,266,266", "266,266,266,266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266", ",,266,266,266,266,266,266,266,266,266,266,266,266,,266,266,266,266,266", ",,,,,,,,,,,,,,,,,,,266,,,266,,,266,266,,,266,,266,,266,,266,,,266,,", ",,,266,,,,,266,266,266,266,,266,266,266,266,,,,,266,266,,,,274,274,274", "266,274,266,266,266,274,274,,,,274,,274,274,274,274,274,274,274,,,,", ",274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274,274", "274,274,274,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274", ",,274,,,274,274,,,274,,274,,274,,274,,,274,,,,,,274,,,,,274,274,274", "274,,274,274,274,274,,,,,274,274,274,,,281,281,281,274,281,274,274,274", "281,281,,,,281,,281,281,281,281,281,281,281,,,,,,281,281,281,281,281", "281,281,,,281,,,,,,,281,,,281,281,281,281,281,281,281,281,,281,281,281", ",281,281,281,281,281,,,,,,,,,,,,,,,,,,,,281,,,281,,,281,281,,,281,,", ",,,281,,,,,,,,,281,,,,,281,281,281,281,,281,281,281,281,,,,,281,281", ",,,283,283,283,281,283,281,281,281,283,283,,,,283,,283,283,283,283,283", "283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283,283", "283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,,,,,", ",,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283,283", "283,,283,283,283,283,,,,,283,283,,,,286,286,286,283,286,283,283,283", "286,286,,,,286,,286,286,286,286,286,286,286,,,,,,286,286,286,286,286", "286,286,,,286,,,,,,,286,,,286,286,286,286,286,286,286,286,,286,286,286", ",286,286,286,286,286,,,,,,,,,,,,,,,,,,,,286,,,286,,,286,286,,,286,,", ",,,286,,,,,,,,,286,,,,,286,286,286,286,,286,286,286,286,,,,,286,286", ",,,287,287,287,286,287,286,286,286,287,287,,,,287,,287,287,287,287,287", "287,287,,,,,,287,287,287,287,287,287,287,,,287,,,,,,,287,,,287,287,287", "287,287,287,287,287,,287,287,287,,287,287,287,287,287,,,,,,,,,,,,,,", ",,,,,287,,,287,,,287,287,,,287,,,,,,287,,,,,,,,,287,,,,,287,287,287", "287,,287,287,287,287,,,,,287,287,,,,,,,287,,287,287,287,292,292,292", "292,292,,,,292,292,,,,292,,292,292,292,292,292,292,292,,,,,,292,292", "292,292,292,292,292,,,292,,,,,,292,292,,292,292,292,292,292,292,292", "292,292,,292,292,292,,292,292,292,292,292,,,,,,,,,,,,,,,,,,,,292,,,292", ",,292,292,,,292,,292,,,,292,,,,,,,,,292,,,,,292,292,292,292,,292,292", "292,292,,,,,292,292,,,,300,300,300,292,300,292,292,292,300,300,,,,300", ",300,300,300,300,300,300,300,,,,,,300,300,300,300,300,300,300,,,300", ",,,,,,300,,,300,300,300,300,300,300,300,300,,300,300,300,,300,300,,", "300,,,,,,,,,,,,,,,,,,,,300,,,300,,,300,300,,,300,,,894,,894,894,894", "894,894,,,,,,,,,894,,300,300,300,300,,300,300,300,300,,,,,300,300,,", ",300,,894,300,,300,300,300,317,317,317,,317,894,894,,317,317,894,,,317", ",317,317,317,317,317,317,317,,,,,,317,317,317,317,317,317,317,,,317", ",,,,,,317,,,317,317,317,317,317,317,317,317,,317,317,317,,317,317,,", "317,,,,,,,,,,,,,,,,,,,,317,,,317,,,317,317,,,317,,,,,,,,,,,,,,,,,,,", "317,317,317,317,,317,317,317,317,,,,,317,317,,,,325,325,325,317,325", "317,317,317,325,325,,,,325,,325,325,325,325,325,325,325,,,,,,325,325", "325,325,325,325,325,,,325,,,,,,,325,,,325,325,325,325,325,325,325,325", ",325,325,325,,325,325,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,325,", "325,325,,,325,,,,,,325,,,,,,,,,325,,,,,325,325,325,325,,325,325,325", "325,,,,,325,325,,,,327,327,327,325,327,325,325,325,327,327,,,,327,,327", "327,327,327,327,327,327,,,,,,327,327,327,327,327,327,327,,,327,,,,,", ",327,,,327,327,327,327,327,327,327,327,,327,327,327,,327,327,327,327", "327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327,327,,,327,,,,,,327,,,,,,,,,327", ",,,,327,327,327,327,,327,327,327,327,,,,,327,327,,,,342,342,342,327", "342,327,327,327,342,342,,,,342,,342,342,342,342,342,342,342,,,,,,342", "342,342,342,342,342,342,,,342,,,,,,,342,,,342,342,342,342,342,342,342", "342,,342,342,342,,342,342,342,342,342,,,,,,,,,,,,,,,,,,,,342,,,342,", ",342,342,,,342,,,,,,342,,,,,,,,,342,,,,,342,342,342,342,,342,342,342", "342,,,,,342,342,,,,343,343,343,342,343,342,342,342,343,343,,,,343,,343", "343,343,343,343,343,343,,,,,,343,343,343,343,343,343,343,,,343,,,,,", ",343,,,343,343,343,343,343,343,343,343,,343,343,343,,343,343,343,343", "343,,,,,,,,,,,,,,,,,,,,343,,,343,,,343,343,,,343,,,,,,343,,,,,,,,,343", ",,,,343,343,343,343,,343,343,343,343,,,,,343,343,,,,362,362,362,343", "362,343,343,343,362,362,,,,362,,362,362,362,362,362,362,362,,,,,,362", "362,362,362,362,362,362,,,362,,,,,,,362,,,362,362,362,362,362,362,362", "362,,362,362,362,,362,362,362,362,362,,,,,,,,,,,,,,,,,,,,362,,,362,", ",362,362,,,362,,,,,,362,,,,,,,,,362,,,,,362,362,362,362,,362,362,362", "362,,,,,362,362,,,,378,378,378,362,378,362,362,362,378,378,,,,378,,378", "378,378,378,378,378,378,,,,,,378,378,378,378,378,378,378,,,378,,,,,", ",378,,,378,378,378,378,378,378,378,378,,378,378,378,,378,378,378,378", "378,,,,,,,,,,,,,,,,,,,,378,,,378,,,378,378,,,378,,,,,,378,,,,,,,,,378", ",,,,378,378,378,378,,378,378,378,378,,,,,378,378,,,,406,406,406,378", "406,378,378,378,406,406,,,,406,,406,406,406,406,406,406,406,,,,,,406", "406,406,406,406,406,406,,,406,,,,,,,406,,,406,406,406,406,406,406,406", "406,,406,406,406,,406,406,406,406,406,,,,,,,,,,,,,,,,,,,,406,,,406,", ",406,406,,,406,,,,,,406,,,,,,,,,406,,,,,406,406,406,406,,406,406,406", "406,,,,,406,406,,,,444,444,444,406,444,406,406,406,444,444,,,,444,,444", "444,444,444,444,444,444,,,,,,444,444,444,444,444,444,444,,,444,,,,,", ",444,,,444,444,444,444,444,444,444,444,444,444,444,444,,444,444,444", "444,444,,,,,,,,,,,,,,,,,,,,444,,,444,,,444,444,,,444,,444,,444,,444", ",,444,,,,,,444,,,,,444,444,444,444,,444,444,444,444,,,,,444,444,,,,446", "446,446,444,446,444,444,444,446,446,,,,446,,446,446,446,446,446,446", "446,,,,,,446,446,446,446,446,446,446,,,446,,,,,,,446,,,446,446,446,446", "446,446,446,446,,446,446,446,,446,446,446,446,446,,,,,,,,,,,,,,,,,,", ",446,,,446,,,446,446,,,446,,,,,,446,,,,,,,,,446,,,,,446,446,446,446", ",446,446,446,446,,,,,446,446,,,,447,447,447,446,447,446,446,446,447", "447,,,,447,,447,447,447,447,447,447,447,,,,,,447,447,447,447,447,447", "447,,,447,,,,,,,447,,,447,447,447,447,447,447,447,447,,447,447,447,", "447,447,447,447,447,,,,,,,,,,,,,,,,,,,,447,,,447,,,447,447,,,447,,,", ",,447,,,,,,,,,447,,,,,447,447,447,447,,447,447,447,447,,,,,447,447,", ",,448,448,448,447,448,447,447,447,448,448,,,,448,,448,448,448,448,448", "448,448,,,,,,448,448,448,448,448,448,448,,,448,,,,,,,448,,,448,448,448", "448,448,448,448,448,,448,448,448,,448,448,448,448,448,,,,,,,,,,,,,,", ",,,,,448,,,448,,,448,448,,,448,,,,,,448,,,,,,,,,448,,,,,448,448,448", "448,,448,448,448,448,,,,,448,448,,,,488,488,488,448,488,448,448,448", "488,488,,,,488,,488,488,488,488,488,488,488,,,,,,488,488,488,488,488", "488,488,,,488,,,,,,,488,,,488,488,488,488,488,488,488,488,488,488,488", "488,,488,488,488,488,488,,,,,,,,,,,,,,,,,,,,488,,,488,,,488,488,,,488", ",488,,488,,488,,,488,,,,,,488,,,,,488,488,488,488,,488,488,488,488,", ",,,488,488,,,,490,490,490,488,490,488,488,488,490,490,,,,490,,490,490", "490,490,490,490,490,,,,,,490,490,490,490,490,490,490,,,490,,,,,,,490", ",,490,490,490,490,490,490,490,490,490,490,490,490,,490,490,490,490,490", ",,,,,,,,,,,,,,,,,,,490,,,490,,,490,490,,,490,,,,490,,490,,,490,,,,,", "490,,,,,490,490,490,490,,490,490,490,490,,,,,490,490,,,,492,492,492", "490,492,490,490,490,492,492,,,,492,,492,492,492,492,492,492,492,,,,", ",492,492,492,492,492,492,492,,,492,,,,,,,492,,,492,492,492,492,492,492", "492,492,,492,492,492,,492,492,492,492,492,,,,,,,,,,,,,,,,,,,,492,,,492", ",,492,492,,,492,,,,,,492,,,,,,,,,492,,,,,492,492,492,492,,492,492,492", "492,,,,,492,492,,,,,,,492,,492,492,492,498,498,498,498,498,,,,498,498", ",,,498,,498,498,498,498,498,498,498,,,,,,498,498,498,498,498,498,498", ",,498,,,,,,498,498,498,498,498,498,498,498,498,498,498,498,,498,498", "498,,498,498,498,498,498,,,,,,,,,,,,,,,,,,,,498,,,498,,,498,498,,,498", ",498,,,,498,,,,,,,,,498,,,,,498,498,498,498,,498,498,498,498,,,,,498", "498,,,,,,498,498,,498,498,498,506,506,506,,506,,,,506,506,,,,506,,506", "506,506,506,506,506,506,,,,,,506,506,506,506,506,506,506,,,506,,,,,", ",506,,,506,506,506,506,506,506,506,506,,506,506,506,,506,506,,,506,", ",,,,,,,,,,,,,,,,,,506,,,506,,,506,506,,,506,,,,,,,,,,,,,,,,,,,,506,506", "506,506,,506,506,506,506,,,,,506,506,,,,508,508,508,506,508,506,506", "506,508,508,,,,508,,508,508,508,508,508,508,508,,,,,,508,508,508,508", "508,508,508,,,508,,,,,,,508,,,508,508,508,508,508,508,508,508,508,508", "508,508,,508,508,508,508,508,,,,,,,,,,,,,,,,,,,,508,,,508,,,508,508", ",,508,,508,,508,,508,,,508,,,,,,508,,,,,508,508,508,508,,508,508,508", "508,,,,,508,508,,,,514,514,514,508,514,508,508,508,514,514,,,,514,,514", "514,514,514,514,514,514,,,,,,514,514,514,514,514,514,514,,,514,,,,,", ",514,,,514,514,514,514,514,514,514,514,,514,514,514,,514,514,,,514,", ",,,,,,,,,,,,,,,,,,514,,,514,,,514,514,,,514,,,,,,,,,,,,,,,,,,,,514,514", "514,514,,514,514,514,514,,,,,514,514,,,,517,517,517,514,517,514,514", "514,517,517,,,,517,,517,517,517,517,517,517,517,,,,,,517,517,517,517", "517,517,517,,,517,,,,,,,517,,,517,517,517,517,517,517,517,517,,517,517", "517,,517,517,517,517,517,,,,,,,,,,,,,,,,,,,,517,,,517,,,517,517,,,517", ",,,,,517,,,,,,,,,517,,,,,517,517,517,517,,517,517,517,517,,,,,517,517", ",,,518,518,518,517,518,517,517,517,518,518,,,,518,,518,518,518,518,518", "518,518,,,,,,518,518,518,518,518,518,518,,,518,,,,,,,518,,,518,518,518", "518,518,518,518,518,,518,518,518,,518,518,518,518,518,,,,,,,,,,,,,,", ",,,,,518,,,518,,,518,518,,,518,,,,,,518,,,,,,,,,518,,,,,518,518,518", "518,,518,518,518,518,,,,,518,518,,,,522,522,522,518,522,518,518,518", "522,522,,,,522,,522,522,522,522,522,522,522,,,,,,522,522,522,522,522", "522,522,,,522,,,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522", ",522,522,522,522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,", ",,,522,,,,,,,,,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522", ",,,528,528,528,522,528,522,522,522,528,528,,,,528,,528,528,528,528,528", "528,528,,,,,,528,528,528,528,528,528,528,,,528,,,,,,,528,,,528,528,528", "528,528,528,528,528,528,528,528,528,,528,528,528,528,528,,,,,,,,,,,", ",,,,,,,,528,,,528,,,528,528,,,528,,528,,,,528,,,528,,,,,,528,,,,,528", "528,528,528,,528,528,528,528,,,,,528,528,,,,531,531,531,528,531,528", "528,528,531,531,,,,531,,531,531,531,531,531,531,531,,,,,,531,531,531", "531,531,531,531,,,531,,,,,,,531,,,531,531,531,531,531,531,531,531,531", "531,531,531,,531,531,531,531,531,,,,,,,,,,,,,,,,,,,,531,,,531,,,531", "531,,,531,,,,,,531,,,531,,,,,,531,,,,,531,531,531,531,,531,531,531,531", ",,,,531,531,,,,556,556,556,531,556,531,531,531,556,556,,,,556,,556,556", "556,556,556,556,556,,,,,,556,556,556,556,556,556,556,,,556,,,,,,,556", ",,556,556,556,556,556,556,556,556,,556,556,556,,556,556,556,556,556", ",,,,,,,,,,,,,,,,,,,556,,,556,,,556,556,,,556,,,,,,556,,,,,,,,,556,,", ",,556,556,556,556,,556,556,556,556,,,,,556,556,,,,576,576,576,556,576", "556,556,556,576,576,,,,576,,576,576,576,576,576,576,576,,,,,,576,576", "576,576,576,576,576,,,576,,,,,,,576,,,576,576,576,576,576,576,576,576", ",576,576,576,,576,576,576,576,576,,,,,,,,,,,,,,,,,,,,576,,,576,,,576", "576,,,576,,576,,,,576,,,,,,,,,576,,,,,576,576,576,576,,576,576,576,576", ",,,,576,576,,,,577,577,577,576,577,576,576,576,577,577,,,,577,,577,577", "577,577,577,577,577,,,,,,577,577,577,577,577,577,577,,,577,,,,,,,577", ",,577,577,577,577,577,577,577,577,577,577,577,577,,577,577,577,577,577", ",,,,,,,,,,,,,,,,,,,577,,,577,,,577,577,,,577,,577,,577,,577,,,577,,", ",,,577,,,,,577,577,577,577,,577,577,577,577,,,,,577,577,,,,587,587,587", "577,587,577,577,577,587,587,,,,587,,587,587,587,587,587,587,587,,,,", ",587,587,587,587,587,587,587,,,587,,,,,,,587,,,587,587,587,587,587,587", "587,587,587,587,587,587,,587,587,587,587,587,,,,,,,,,,,,,,,,,,,,587", ",,587,,,587,587,,,587,,587,,587,,587,,,587,,,,,,587,,,,,587,587,587", "587,,587,587,587,587,,,,,587,587,,,,619,619,619,587,619,587,587,587", "619,619,,,,619,,619,619,619,619,619,619,619,,,,,,619,619,619,619,619", "619,619,,,619,,,,,,,619,,,619,619,619,619,619,619,619,619,,619,619,619", ",619,619,619,619,619,,,,,,,,,,,,,,,,,,,,619,,,619,,,619,619,,,619,,619", ",,,619,,,,,,,,,619,,,,,619,619,619,619,,619,619,619,619,,,,,619,619", ",,,620,620,620,619,620,619,619,619,620,620,,,,620,,620,620,620,620,620", "620,620,,,,,,620,620,620,620,620,620,620,,,620,,,,,,,620,,,620,620,620", "620,620,620,620,620,,620,620,620,,620,620,620,620,620,,,,,,,,,,,,,,", ",,,,,620,,,620,,,620,620,,,620,,,,,,620,,,,,,,,,620,,,,,620,620,620", "620,,620,620,620,620,,,,,620,620,,,,623,623,623,620,623,620,620,620", "623,623,,,,623,,623,623,623,623,623,623,623,,,,,,623,623,623,623,623", "623,623,,,623,,,,,,,623,,,623,623,623,623,623,623,623,623,623,623,623", "623,,623,623,623,623,623,,,,,,,,,,,,,,,,,,,,623,,,623,,,623,623,,,623", ",623,,623,,623,,,623,,,,,,623,,,,,623,623,623,623,,623,623,623,623,", ",,,623,623,,,,624,624,624,623,624,623,623,623,624,624,,,,624,,624,624", "624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624", ",,624,624,624,624,624,624,624,624,624,624,624,624,,624,624,624,624,624", ",,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,,,624,,624,,,624,,,,,", "624,,,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,625,625,625", "624,625,624,624,624,625,625,,,,625,,625,625,625,625,625,625,625,,,,", ",625,625,625,625,625,625,625,,,625,,,,,,,625,,,625,625,625,625,625,625", "625,625,,625,625,625,,625,625,625,625,625,,,,,,,,,,,,,,,,,,,,625,,,625", ",,625,625,,,625,,,,,,625,,,,,,,,,625,,,,,625,625,625,625,,625,625,625", "625,,,,,625,625,,,,626,626,626,625,626,625,625,625,626,626,,,,626,,626", "626,626,626,626,626,626,,,,,,626,626,626,626,626,626,626,,,626,,,,,", ",626,,,626,626,626,626,626,626,626,626,,626,626,626,,626,626,626,626", "626,,,,,,,,,,,,,,,,,,,,626,,,626,,,626,626,,,626,,,,,,626,,,,,,,,,626", ",,,,626,626,626,626,,626,626,626,626,,,,,626,626,,,,630,630,630,626", "630,626,626,626,630,630,,,,630,,630,630,630,630,630,630,630,,,,,,630", "630,630,630,630,630,630,,,630,,,,,,,630,,,630,630,630,630,630,630,630", "630,,630,630,630,,630,630,630,630,630,,,,,,,,,,,,,,,,,,,,630,,,630,", ",630,630,,,630,,,,,,630,,,,,,,,,630,,,,,630,630,630,630,,630,630,630", "630,,,,,630,630,,,,631,631,631,630,631,630,630,630,631,631,,,,631,,631", "631,631,631,631,631,631,,,,,,631,631,631,631,631,631,631,,,631,,,,,", ",631,,,631,631,631,631,631,631,631,631,,631,631,631,,631,631,631,631", "631,,,,,,,,,,,,,,,,,,,,631,,,631,,,631,631,,,631,,,,,,631,,,,,,,,,631", ",,,,631,631,631,631,,631,631,631,631,,,,,631,631,,,,634,634,634,631", "634,631,631,631,634,634,,,,634,,634,634,634,634,634,634,634,,,,,,634", "634,634,634,634,634,634,,,634,,,,,,,634,,,634,634,634,634,634,634,634", "634,,634,634,634,,634,634,634,634,634,,,,,,,,,,,,,,,,,,,,634,,,634,", ",634,634,,,634,,,,,,634,,,,,,,,,634,,,,,634,634,634,634,,634,634,634", "634,,,,,634,634,,,,635,635,635,634,635,634,634,634,635,635,,,,635,,635", "635,635,635,635,635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,", ",635,,,635,635,635,635,635,635,635,635,,635,635,635,,635,635,635,635", "635,,,,,,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,,,,,,635,,,,,,,,,635", ",,,,635,635,635,635,,635,635,635,635,,,,,635,635,,,,659,659,659,635", "659,635,635,635,659,659,,,,659,,659,659,659,659,659,659,659,,,,,,659", "659,659,659,659,659,659,,,659,,,,,,,659,,,659,659,659,659,659,659,659", "659,,659,659,659,,659,659,659,659,659,,,,,,,,,,,,,,,,,,,,659,,,659,", ",659,659,,,659,,,,,,659,,,,,,,,,659,,,,,659,659,659,659,,659,659,659", "659,,,,,659,659,,,,662,662,662,659,662,659,659,659,662,662,,,,662,,662", "662,662,662,662,662,662,,,,,,662,662,662,662,662,662,662,,,662,,,,,", ",662,,,662,662,662,662,662,662,662,662,,662,662,662,,662,662,662,662", "662,,,,,,,,,,,,,,,,,,,,662,,,662,,,662,662,,,662,,,,,,662,,,,,,,,,662", ",,,,662,662,662,662,,662,662,662,662,,,,,662,662,,,,666,666,666,662", "666,662,662,662,666,666,,,,666,,666,666,666,666,666,666,666,,,,,,666", "666,666,666,666,666,666,,,666,,,,,,,666,,,666,666,666,666,666,666,666", "666,,666,666,666,,666,666,,,666,,,,,,,,,,,,,,,,,,,,666,,,666,,,666,666", ",,666,,,,,,,,,,,,,,,,,,,,666,666,666,666,,666,666,666,666,,,,,666,666", ",,,677,677,677,666,677,666,666,666,677,677,,,,677,,677,677,677,677,677", "677,677,,,,,,677,677,677,677,677,677,677,,,677,,,,,,,677,,,677,677,677", "677,677,677,677,677,,677,677,677,,677,677,,,677,,,,,,,,,,,,,,,,,,,,677", ",,677,,,677,677,,,677,,,,,,,,,,,,,,,,,,,,677,677,677,677,,677,677,677", "677,,,,,677,677,,,,682,682,682,677,682,677,677,677,682,682,,,,682,,682", "682,682,682,682,682,682,,,,,,682,682,682,682,682,682,682,,,682,,,,,", ",682,,,682,682,682,682,682,682,682,682,,682,682,682,,682,682,682,682", "682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,682,,,,682,,,,,,,", ",682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682,,,,699,699,699", "682,699,682,682,682,699,699,,,,699,,699,699,699,699,699,699,699,,,,", ",699,699,699,699,699,699,699,,,699,,,,,,,699,,,699,699,699,699,699,699", "699,699,,699,699,699,,699,699,699,699,699,,,,,,,,,,,,,,,,,,,,699,,,699", ",,699,699,,,699,,,,,,699,,,,,,,,,699,,,,,699,699,699,699,,699,699,699", "699,,,,,699,699,,,,725,725,725,699,725,699,699,699,725,725,,,,725,,725", "725,725,725,725,725,725,,,,,,725,725,725,725,725,725,725,,,725,,,,,", ",725,,,725,725,725,725,725,725,725,725,,725,725,725,,725,725,725,725", "725,,,,,,,,,,,,,,,,,,,,725,,,725,,,725,725,,,725,,,,,,725,,,,,,,,,725", ",,,,725,725,725,725,,725,725,725,725,,,,,725,725,,,,731,731,731,725", "731,725,725,725,731,731,,,,731,,731,731,731,731,731,731,731,,,,,,731", "731,731,731,731,731,731,,,731,,,,,,,731,,,731,731,731,731,731,731,731", "731,,731,731,731,,731,731,731,731,731,,,,,,,,,,,,,,,,,,,,731,,,731,", ",731,731,,,731,,,,,,731,,,,,,,,,731,,,,,731,731,731,731,,731,731,731", "731,,,,,731,731,,,,753,753,753,731,753,731,731,731,753,753,,,,753,,753", "753,753,753,753,753,753,,,,,,753,753,753,753,753,753,753,,,753,,,,,", ",753,,,753,753,753,753,753,753,753,753,,753,753,753,,753,753,753,753", "753,,,,,,,,,,,,,,,,,,,,753,,,753,,,753,753,,,753,,,,,,753,,,,,,,,,753", ",,,,753,753,753,753,,753,753,753,753,,,,,753,753,,,,755,755,755,753", "755,753,753,753,755,755,,,,755,,755,755,755,755,755,755,755,,,,,,755", "755,755,755,755,755,755,,,755,,,,,,,755,,,755,755,755,755,755,755,755", "755,,755,755,755,,755,755,755,755,755,,,,,,,,,,,,,,,,,,,,755,,,755,", ",755,755,,,755,,,,,,755,,,,,,,,,755,,,,,755,755,755,755,,755,755,755", "755,,,,,755,755,,,,769,769,769,755,769,755,755,755,769,769,,,,769,,769", "769,769,769,769,769,769,,,,,,769,769,769,769,769,769,769,,,769,,,,,", ",769,,,769,769,769,769,769,769,769,769,,769,769,769,,769,769,769,769", "769,,,,,,,,,,,,,,,,,,,,769,,,769,,,769,769,,,769,,,,,,769,,,,,,,,,769", ",,,,769,769,769,769,,769,769,769,769,,,,,769,769,,,,770,770,770,769", "770,769,769,769,770,770,,,,770,,770,770,770,770,770,770,770,,,,,,770", "770,770,770,770,770,770,,,770,,,,,,,770,,,770,770,770,770,770,770,770", "770,,770,770,770,,770,770,770,770,770,,,,,,,,,,,,,,,,,,,,770,,,770,", ",770,770,,,770,,,,,,770,,,,,,,,,770,,,,,770,770,770,770,,770,770,770", "770,,,,,770,770,,,,771,771,771,770,771,770,770,770,771,771,,,,771,,771", "771,771,771,771,771,771,,,,,,771,771,771,771,771,771,771,,,771,,,,,", ",771,,,771,771,771,771,771,771,771,771,,771,771,771,,771,771,771,771", "771,,,,,,,,,,,,,,,,,,,,771,,,771,,,771,771,,,771,,,,,,771,,,,,,,,,771", ",,,,771,771,771,771,,771,771,771,771,,,,,771,771,,,,772,772,772,771", "772,771,771,771,772,772,,,,772,,772,772,772,772,772,772,772,,,,,,772", "772,772,772,772,772,772,,,772,,,,,,,772,,,772,772,772,772,772,772,772", "772,,772,772,772,,772,772,772,772,772,,,,,,,,,,,,,,,,,,,,772,,,772,", ",772,772,,,772,,,,,,772,,,,,,,,,772,,,,,772,772,772,772,,772,772,772", "772,,,,,772,772,,,,774,774,774,772,774,772,772,772,774,774,,,,774,,774", "774,774,774,774,774,774,,,,,,774,774,774,774,774,774,774,,,774,,,,,", ",774,,,774,774,774,774,774,774,774,774,,774,774,774,,774,774,774,774", "774,,,,,,,,,,,,,,,,,,,,774,,,774,,,774,774,,,774,,,,,,774,,,,,,,,,774", ",,,,774,774,774,774,,774,774,774,774,,,,,774,774,,,,786,786,786,774", "786,774,774,774,786,786,,,,786,,786,786,786,786,786,786,786,,,,,,786", "786,786,786,786,786,786,,,786,,,,,,,786,,,786,786,786,786,786,786,786", "786,,786,786,786,,786,786,,,786,,,,,,,,,,,,,,,,,,,,786,,,786,,,786,786", ",,786,,,,,,,,,,,,,,,,,,,,786,786,786,786,,786,786,786,786,,,,,786,786", ",,,836,836,836,786,836,786,786,786,836,836,,,,836,,836,836,836,836,836", "836,836,,,,,,836,836,836,836,836,836,836,,,836,,,,,,,836,,,836,836,836", "836,836,836,836,836,,836,836,836,,836,836,836,836,836,,,,,,,,,,,,,,", ",,,,,836,,,836,,,836,836,,,836,,,,,,836,,,,,,,,,836,,,,,836,836,836", "836,,836,836,836,836,,,,,836,836,,,,841,841,841,836,841,836,836,836", "841,841,,,,841,,841,841,841,841,841,841,841,,,,,,841,841,841,841,841", "841,841,,,841,,,,,,,841,,,841,841,841,841,841,841,841,841,,841,841,841", ",841,841,841,841,841,,,,,,,,,,,,,,,,,,,,841,,,841,,,841,841,,,841,,841", ",,,841,,,,,,,,,841,,,,,841,841,841,841,,841,841,841,841,,,,,841,841", ",,,858,858,858,841,858,841,841,841,858,858,,,,858,,858,858,858,858,858", "858,858,,,,,,858,858,858,858,858,858,858,,,858,,,,,,,858,,,858,858,858", "858,858,858,858,858,858,858,858,858,,858,858,858,858,858,,,,,,,,,,,", ",,,,,,,,858,,,858,,,858,858,,,858,,,,858,,858,,,858,,,,,,858,,,,,858", "858,858,858,,858,858,858,858,,,,,858,858,,,,859,859,859,858,859,858", "858,858,859,859,,,,859,,859,859,859,859,859,859,859,,,,,,859,859,859", "859,859,859,859,,,859,,,,,,,859,,,859,859,859,859,859,859,859,859,,859", "859,859,,859,859,859,859,859,,,,,,,,,,,,,,,,,,,,859,,,859,,,859,859", ",,859,,,,,,859,,,,,,,,,859,,,,,859,859,859,859,,859,859,859,859,,,,", "859,859,,,,873,873,873,859,873,859,859,859,873,873,,,,873,,873,873,873", "873,873,873,873,,,,,,873,873,873,873,873,873,873,,,873,,,,,,,873,,,873", "873,873,873,873,873,873,873,,873,873,873,,873,873,,,873,,,,,,,,,,,,", ",,,,,,,873,,,873,,,873,873,,,873,,,,,,,,,,,,,,,,,,,,873,873,873,873", ",873,873,873,873,,,,,873,873,,,,885,885,885,873,885,873,873,873,885", "885,,,,885,,885,885,885,885,885,885,885,,,,,,885,885,885,885,885,885", "885,,,885,,,,,,,885,,,885,885,885,885,885,885,885,885,,885,885,885,", "885,885,,,885,,,,,,,,,,,,,,,,,,,,885,,,885,,,885,885,,,885,,,,,,,,,", ",,,,,,,,,,885,885,885,885,,885,885,885,885,,,,,885,885,,,,982,982,982", "885,982,885,885,885,982,982,,,,982,,982,982,982,982,982,982,982,,,,", ",982,982,982,982,982,982,982,,,982,,,,,,,982,,,982,982,982,982,982,982", "982,982,982,982,982,982,,982,982,982,982,982,,,,,,,,,,,,,,,,,,,,982", ",,982,,,982,982,,,982,,982,,982,,982,,,982,,,,,,982,,,,,982,982,982", "982,,982,982,982,982,,,,,982,982,,,,,,,982,,982,982,982,8,8,8,8,8,8", "8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,,8,8,8,8,8,8,8,8,8,8,,,,,,8,8", "8,8,8,8,8,8,8,8,,8,,,,,,,,8,8,,8,8,8,8,8,8,8,,,8,8,,,,8,8,8,8,,,,,,", ",,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,8,,,8,8,,,,,,,,,,,,,,8,9,9,9,9,9,9", "9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,,,,9,9,9,9,9,9,9,9,9,9,,,,,,9,9", "9,9,9,9,9,9,9,,,9,,,,,,,,9,9,,9,9,9,9,9,9,9,,,9,9,,,,9,9,9,9,,,,,,,", ",,,,,,9,9,,9,9,9,9,9,9,9,9,9,9,9,9,,,9,9,,,,,,,,,,,,,,9,397,397,397", "397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397", "397,397,397,397,,,,397,397,397,397,397,397,397,397,397,397,,,,,,397", "397,397,397,397,397,397,397,397,,,397,,,,,,,,397,397,,397,397,397,397", "397,397,397,,,397,397,,,,397,397,397,397,,,,,,,,,,,,,,397,397,,397,397", "397,397,397,397,397,397,397,397,397,397,,,397,397,,,,,,,,,,,,,,397,616", "616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616", "616,616,616,616,616,616,,,,616,616,616,616,616,616,616,616,616,616,", ",,,,616,616,616,616,616,616,616,616,616,,,616,,,,,,,,616,616,,616,616", "616,616,616,616,616,,,616,616,,,,616,616,616,616,,,,,,,,,,,,,,616,616", ",616,616,616,616,616,616,616,616,616,616,616,616,,,616,616,,,,,,,,,", ",,,,616,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71", "71,71,71,71,,,,71,71,71,71,71,71,71,71,71,71,,,,,,71,71,71,71,71,71", "71,71,71,71,71,71,,71,,,,,,71,71,,71,71,71,71,71,71,71,,,71,71,,,,71", "71,71,71,,,,,,71,,,,,,,,71,71,,71,71,71,71,71,71,71,71,71,71,71,71,", ",71,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737", "737,737,737,737,737,737,737,737,,,,737,737,737,737,737,737,737,737,737", "737,,,,,,737,737,737,737,737,737,737,737,737,,,737,,,,,,,,737,737,,737", "737,737,737,737,737,737,,,737,737,,,,737,737,737,737,,,,,,,,,,,,,,737", "737,,737,737,737,737,737,737,737,737,737,737,737,737,210,210,737,,210", ",,,,,,,210,210,,210,210,210,210,210,210,210,,,210,210,,,,210,210,210", "210,,,,,,210,,,,,,,,210,210,,210,210,210,210,210,210,210,210,210,210", "210,210,211,211,210,,211,,,,,,,,211,211,,211,211,211,211,211,211,211", ",,211,211,,,,211,211,211,211,,,,,,211,,,,,,,,211,211,,211,211,211,211", "211,211,211,211,211,211,211,211,261,261,211,,261,,,,,,,,261,261,,261", "261,261,261,261,261,261,,,261,261,,,,261,261,261,261,,,,,,,,,,,,,,261", "261,,261,261,261,261,261,261,261,261,261,261,261,261,442,442,261,,442", ",,,,,,,442,442,,442,442,442,442,442,442,442,,,442,442,,,,442,442,442", "442,,,,,,442,,,,,,,,442,442,,442,442,442,442,442,442,442,442,442,442", "442,442,443,443,442,,443,,,,,,,,443,443,,443,443,443,443,443,443,443", ",,443,443,,,,443,443,443,443,,,,,,443,,,,,,,,443,443,,443,443,443,443", "443,443,443,443,443,443,443,443,509,509,443,,509,,,,,,,,509,509,,509", "509,509,509,509,509,509,,,509,509,,,,509,509,509,509,,,,,,509,,,,,,", ",509,509,,509,509,509,509,509,509,509,509,509,509,509,509,510,510,509", ",510,,,,,,,,510,510,,510,510,510,510,510,510,510,,,510,510,,,,510,510", "510,510,,,,,,510,,,,,,,,510,510,,510,510,510,510,510,510,510,510,510", "510,510,510,519,519,510,,519,,,,,,,,519,519,,519,519,519,519,519,519", "519,,,519,519,,,,519,519,519,519,,,,,,519,,,,,,,,519,519,,519,519,519", "519,519,519,519,519,519,519,519,519,520,520,519,,520,,,,,,,,520,520", ",520,520,520,520,520,520,520,,,520,520,,,,520,520,520,520,,,,,,520,", ",,,,,,520,520,,520,520,520,520,520,520,520,520,520,520,520,520,578,578", "520,,578,,,,,,,,578,578,,578,578,578,578,578,578,578,,,578,578,,,,578", "578,578,578,,,,,,578,,,,,,,,578,578,,578,578,578,578,578,578,578,578", "578,578,578,578,579,579,578,,579,,,,,,,,579,579,,579,579,579,579,579", "579,579,,,579,579,,,,579,579,579,579,,,,,,579,,,,,,,,579,579,,579,579", "579,579,579,579,579,579,579,579,579,579,585,585,579,,585,,,,,,,,585", "585,,585,585,585,585,585,585,585,,,585,585,,,,585,585,585,585,,,,,,585", ",,,,,,,585,585,,585,585,585,585,585,585,585,585,585,585,585,585,586", "586,585,,586,,,,,,,,586,586,,586,586,586,586,586,586,586,,,586,586,", ",,586,586,586,586,,,,,,586,,,,,,,,586,586,,586,586,586,586,586,586,586", "586,586,586,586,586,937,937,586,,937,,,,,,,,937,937,,937,937,937,937", "937,937,937,,,937,937,,,,937,937,937,937,,,,,,937,,,,,,,,937,937,,937", "937,937,937,937,937,937,937,937,937,937,937,983,983,937,,983,,,,,,,", "983,983,,983,983,983,983,983,983,983,,,983,983,,,,983,983,983,983,,", ",,,983,,,,,,,,983,983,,983,983,983,983,983,983,983,983,983,983,983,983", "984,984,983,,984,,,,,,,,984,984,,984,984,984,984,984,984,984,,,984,984", ",,,984,984,984,984,,,,,,984,,,,,,,,984,984,,984,984,984,984,984,984", "984,984,984,984,984,984,,536,984,536,536,536,536,536,,693,,693,693,693", "693,693,536,,,,,,,,693,,695,,695,695,695,695,695,,,,,,536,,,695,,,,", "693,536,536,536,536,,,,536,693,693,693,693,,,,693,695,,735,,735,735", "735,735,735,695,695,695,695,,,,695,735,,736,,736,736,736,736,736,,864", ",864,864,864,864,864,736,,,,,735,,,864,,,,,,735,735,735,735,,,,735,736", ",,,,,,,864,736,736,736,736,,,,736,864,864,864,864,,,866,864,866,866", "866,866,866,,892,,892,892,892,892,892,866,,,,,,,,892,,896,,896,896,896", "896,896,,,,,,866,,,896,,,,,892,866,866,866,866,,,,866,892,892,892,892", ",,,892,896,,898,,898,898,898,898,898,,,896,896,,,,896,898,,968,,968", "968,968,968,968,970,,970,970,970,970,970,,968,,,,,898,,970,,972,,972", "972,972,972,972,898,898,,,,898,968,,972,,,,,970,,968,968,968,968,,,", "968,,970,970,,,,970,972,,974,,974,974,974,974,974,,,972,972,,,,972,974", ",986,,986,986,986,986,986,1012,,1012,1012,1012,1012,1012,,986,,,,,974", ",1012,,,,,,,,,974,974,,,,974,986,,,,,,,1012,,,,986,986,,,,986,,1012", "1012,,,,1012"]; - racc_action_check = (arr = Opal.const_get_qualified('::', 'Array').$new(25163, nil)); + return (idx = $rb_plus(idx, 1));}, $$4.$$s = self, $$4.$$arity = 1, $$4));}, $Ruby25$3.$$s = self, $Ruby25$3.$$arity = 1, $Ruby25$3)); + clist = ["769,886,943,1013,17,939,354,769,769,769,660,1011,62,769,769,19,769,314", "664,392,14,14,604,604,675,769,730,353,697,735,391,26,940,1012,675,1010", "769,769,837,769,769,769,769,769,982,590,947,909,840,947,847,17,357,664", "732,733,19,734,1023,346,345,17,335,702,702,335,769,769,769,769,769,769", "769,769,769,769,769,769,769,769,1013,314,769,769,769,392,769,581,720", "720,769,450,450,769,735,26,391,660,769,62,769,207,769,769,314,769,769", "769,769,769,1012,769,769,769,680,354,604,792,26,886,943,1013,734,939", "886,943,1013,769,939,1011,769,769,441,769,1011,769,353,697,735,441,441", "441,769,769,730,441,441,730,441,730,940,1012,792,1010,590,940,1012,441", "1010,847,806,357,982,732,733,909,734,982,441,441,909,441,441,441,441", "441,1023,346,345,350,680,1023,346,345,350,450,843,600,600,683,681,581", "856,690,690,111,581,856,441,441,441,441,441,441,441,441,441,441,441", "441,441,441,848,767,441,441,441,382,441,617,680,850,441,680,382,441", "806,854,456,380,441,419,441,680,441,441,380,441,441,441,441,441,294", "441,441,441,714,294,714,714,714,855,714,379,683,683,681,386,339,441", "379,339,441,441,653,441,806,441,858,806,767,653,653,653,441,441,653", "653,653,806,653,600,382,617,617,456,600,690,419,653,653,653,653,617", "380,683,681,851,683,681,653,653,851,653,653,653,653,653,683,681,905", "859,905,905,905,615,905,502,379,3,387,386,386,386,3,319,319,912,714", "912,653,653,653,653,653,653,653,653,653,653,653,653,653,653,41,41,653", "653,653,363,653,653,378,363,653,388,860,653,653,378,653,389,653,1016", "653,46,653,653,393,653,653,653,653,653,651,653,653,653,652,615,615,502", "502,502,387,387,387,390,1019,615,636,653,905,377,653,653,653,653,502", "653,377,653,654,319,319,226,653,653,868,654,654,654,869,860,654,654", "654,378,654,388,388,388,41,41,871,389,389,389,654,654,654,651,393,393", "393,652,434,636,654,654,435,654,654,654,654,654,789,636,872,307,873", "390,390,390,994,994,307,376,377,375,227,229,226,875,376,307,375,876", "654,654,654,654,654,654,654,654,654,654,654,654,654,654,877,434,654", "654,654,435,654,654,766,696,654,434,696,654,654,435,654,374,654,433", "654,789,654,654,374,654,654,654,654,654,440,654,307,654,40,227,229,440", "440,440,376,37,375,440,440,336,440,654,336,432,654,654,654,654,373,654", "430,654,362,344,344,373,654,654,39,766,440,440,38,440,440,440,440,440", "907,1020,916,418,920,519,933,372,374,22,418,24,519,1021,372,936,1022", "1,24,418,942,519,440,440,440,440,440,440,440,440,440,440,440,440,440", "440,362,39,440,440,440,38,440,362,945,373,440,39,362,440,946,38,362", "323,440,951,440,952,440,440,953,440,440,440,440,440,97,440,418,440,519", "362,372,97,97,97,24,954,97,97,97,365,97,440,478,955,440,440,365,440", "97,440,97,97,97,957,15,365,440,440,323,362,97,97,965,97,97,97,97,97", "323,593,968,969,970,355,478,971,593,973,478,478,355,478,478,464,465", "593,466,467,1030,355,97,97,97,97,97,97,97,97,97,97,97,97,97,97,365,325", "97,97,97,310,97,97,325,489,97,493,310,97,97,402,97,325,97,408,97,310", "97,97,509,97,97,97,97,97,593,97,100,97,355,510,513,515,978,100,100,100", "79,520,100,100,100,97,100,13,97,97,97,97,79,97,100,97,100,100,100,523", "97,97,79,12,325,532,100,100,310,100,100,100,100,100,44,44,126,684,533", "308,534,126,126,535,684,547,308,548,836,684,836,836,836,684,836,308", "100,100,100,100,100,100,100,100,100,100,100,100,100,100,44,44,100,100", "100,550,100,100,551,552,100,561,993,100,100,836,100,569,100,573,100", "576,100,100,836,100,100,100,100,100,768,100,684,100,308,578,995,768", "768,768,367,582,583,768,768,584,768,100,585,358,100,100,100,100,356", "100,352,100,737,602,351,612,100,100,452,411,768,768,620,768,768,768", "768,768,622,628,340,306,338,738,637,337,333,642,306,327,738,647,324", "655,656,738,657,306,659,738,768,768,768,768,768,768,768,768,768,768", "768,768,768,768,737,413,768,768,768,663,768,737,665,667,768,669,737", "768,320,416,737,677,768,679,768,318,768,768,442,768,768,768,768,768", "57,768,306,768,738,737,682,57,57,57,313,1006,57,57,57,225,57,768,685", "686,768,768,225,768,312,768,57,57,57,689,1007,225,768,768,691,737,57", "57,309,57,57,57,57,57,1009,47,698,935,713,941,420,715,47,722,935,728", "941,10,731,303,302,47,301,935,299,941,57,57,57,57,57,57,57,57,57,57", "57,57,57,57,225,16,57,57,57,462,298,57,16,7,57,740,463,57,57,361,57", "16,57,286,57,744,57,57,283,57,57,57,57,57,47,57,935,57,941,282,763,462", "975,268,765,462,462,235,463,975,231,57,463,463,57,57,57,57,975,57,484", "57,774,230,228,795,57,484,484,484,16,361,484,484,484,1015,484,805,361", "809,812,699,813,361,923,484,484,361,820,821,822,699,826,827,923,829", "484,484,830,484,484,484,484,484,832,835,361,975,930,,930,930,930,930", "930,608,608,,,608,608,608,,930,699,699,,923,923,699,,477,923,,,,361", "484,,28,,,,,484,930,28,28,28,484,484,28,28,28,,28,930,930,,,,930,,477", ",28,28,477,477,,477,477,484,484,,28,28,,28,28,28,28,28,,,,,484,,,484", ",,,562,484,562,562,562,,562,,484,,,28,28,28,28,28,28,28,28,28,28,28", "28,28,28,,,28,28,28,,,28,,28,28,,562,28,28,,28,,28,,28,562,28,28,,28", "28,28,28,28,,28,436,28,332,332,332,332,332,436,436,436,,,436,436,436", "28,436,,28,28,,28,,28,,436,436,436,,891,28,891,891,891,,891,436,436", ",436,436,436,436,436,838,,838,838,838,711,838,711,711,711,992,711,992", "992,992,986,992,986,986,986,,986,436,436,436,436,436,436,436,436,436", "436,436,436,436,436,,838,436,436,436,,711,436,,436,436,992,,436,436", "711,436,,436,,436,,436,436,,436,436,436,436,436,,436,436,436,896,,896", "896,896,896,896,297,297,297,297,297,,436,,896,436,436,446,436,,436,", ",,446,446,446,436,,446,446,446,,446,529,958,896,958,958,958,,958,446", "446,446,446,,896,896,,529,529,896,446,446,,446,446,446,446,446,956,", "956,956,956,529,956,529,,529,529,958,529,529,,,529,,529,,,,446,446,446", "446,446,446,446,446,446,446,446,446,446,446,,956,446,446,446,,,446,", ",446,,,446,446,,446,,446,,446,,446,446,,446,446,446,446,446,,446,446", "446,,,906,,906,906,906,,906,,,,,446,,,446,446,446,446,,446,27,446,,", ",,446,27,27,27,,,27,27,27,482,27,906,6,6,6,6,6,,,27,27,27,,,,482,482", ",,,27,27,,27,27,27,27,27,,,,482,,482,,482,482,,482,482,,,482,,482,507", "507,507,507,507,27,27,27,27,27,27,27,27,27,27,27,27,27,27,,,27,27,27", ",,27,,27,27,,,27,27,,27,,27,,27,,27,27,,27,27,27,27,27,,27,27,27,898", ",898,898,898,898,898,,,,,,,27,,898,27,27,445,27,,27,,,,445,445,445,27", ",445,445,445,,445,470,,898,,,,,,445,445,445,445,,898,898,,470,470,898", "445,445,,445,445,445,445,445,,,,,,470,,,,470,470,,470,470,,,,,,,,,445", "445,445,445,445,445,445,445,445,445,445,445,445,445,,,445,445,445,,", "445,,,445,,,445,445,,445,,445,,445,,445,445,,445,445,445,445,445,,445", "445,445,,,,,,,,,,,,,,445,,,445,445,445,445,,445,,445,,,,,445,601,601", "601,601,601,601,,,,601,601,,,,601,,601,601,601,601,601,601,601,,,,,", "601,601,601,601,601,601,601,,,601,,,,,423,601,601,601,601,601,601,601", "601,601,601,601,601,,601,601,601,,601,601,601,601,601,423,423,423,423", "423,423,423,423,423,423,423,,423,423,,,423,423,,601,,,601,,,601,601", ",,601,,601,423,,423,601,423,423,,423,423,423,423,423,601,423,,,,601", "601,601,601,,601,601,601,601,,,,,601,601,,423,,423,,,601,,601,601,601", "349,349,349,349,349,349,,,,349,349,,,,349,,349,349,349,349,349,349,349", ",,,,,349,349,349,349,349,349,349,,,349,,,,,429,349,349,349,349,349,349", "349,349,349,349,349,349,,349,349,349,,349,349,349,349,349,429,429,429", "429,429,429,429,429,429,429,429,,429,429,,,429,429,,349,,,349,,,349", "349,,,349,,349,429,,429,349,429,429,,429,429,429,429,429,349,429,,,", "349,349,349,349,,349,349,349,349,,,,,349,349,,429,,,,,349,,349,349,349", "811,811,811,811,811,811,,,,811,811,,,,811,,811,811,811,811,811,811,811", ",,,,,811,811,811,811,811,811,811,,,811,,,,,,811,811,811,811,811,811", "811,811,811,811,811,811,,811,811,811,,811,811,811,811,811,481,481,481", "481,481,481,481,481,481,481,481,,481,481,,,481,481,,811,,,811,,,811", "811,,,811,,811,481,,481,811,481,481,,481,481,481,481,481,811,481,,,", "811,811,811,811,,811,811,811,811,,,,,811,811,481,481,,,,,811,,811,811", "811,305,305,305,305,305,305,,,,305,305,,,,305,,305,305,305,305,305,305", "305,,,,,,305,305,305,305,305,305,305,,,305,,,,,,305,305,305,305,305", "305,305,305,305,305,305,305,,305,305,305,,305,305,305,305,305,530,530", "530,530,530,530,530,530,530,530,530,,530,530,,,530,530,,305,,,305,,", "305,305,,,305,,305,530,,530,305,530,530,,530,530,530,530,530,305,530", ",,,305,305,305,305,,305,305,305,305,,,,,305,305,,530,,,,,305,,305,305", "305,938,938,938,938,938,938,,,,938,938,,,,938,,938,938,938,938,938,938", "938,,,,,,938,938,938,938,938,938,938,,,938,,,,,,938,938,938,938,938", "938,938,938,938,938,938,938,,938,938,938,,938,938,938,938,938,280,280", "280,280,280,280,280,280,280,280,280,,280,280,,,280,280,,938,,,938,,", "938,938,,,938,,938,280,,280,938,280,280,,280,280,280,280,280,938,280", ",,,938,938,938,938,,938,938,938,938,,,,,938,938,,280,,,,,938,,938,938", "938,755,755,755,755,755,755,,,,755,755,,,,755,,755,755,755,755,755,755", "755,,,,,,755,755,755,755,755,755,755,,,755,,,,,,755,755,755,755,755", "755,755,755,755,755,755,755,,755,755,755,,755,755,755,755,755,771,771", "771,771,771,771,771,771,771,771,771,,771,771,,,771,771,,755,,,755,,", "755,755,,,755,,755,771,,771,755,771,771,,771,771,771,771,771,755,771", ",,,755,755,755,755,,755,755,755,755,,,,,755,755,,771,,,,,755,,755,755", "755,300,300,300,300,300,300,,,,300,300,,,,300,,300,300,300,300,300,300", "300,,,,,,300,300,300,300,300,300,300,,,300,,,,,,300,300,300,300,300", "300,300,300,300,300,300,300,,300,300,300,,300,300,300,300,300,865,865", "865,865,865,865,865,865,865,865,865,,865,865,,,865,865,,300,,,300,,", "300,300,,,300,,300,865,,865,300,865,865,,865,865,865,865,865,300,865", ",,,300,300,300,300,,300,300,300,300,,,,,300,300,,865,,,,,300,,300,300", "300,745,745,745,745,745,745,,,,745,745,,,,745,,745,745,745,745,745,745", "745,,,,,,745,745,745,745,745,745,745,,,745,,,,,,745,745,745,745,745", "745,745,745,745,745,745,745,,745,745,745,,745,745,745,745,745,21,21", "21,21,21,21,21,21,21,21,21,,21,21,,,21,21,,745,,,745,,,745,745,,,745", ",745,21,,21,745,21,21,,21,21,21,21,21,745,21,,,,745,745,745,745,,745", "745,745,745,,,,,745,745,,21,,,,,745,,745,745,745,800,800,800,800,800", "800,,,,800,800,,,,800,,800,800,800,800,800,800,800,,,,,,800,800,800", "800,800,800,800,,,800,,,,,,800,800,800,800,800,800,800,800,800,800,800", "800,,800,800,800,,800,800,800,800,800,473,473,473,473,473,473,473,,", "473,473,,,,,,473,473,,800,,,800,,,800,800,,,800,,800,473,,473,800,473", "473,,473,473,473,473,473,800,473,,,,800,800,800,800,,800,800,800,800", ",,,,800,800,,,,,,,800,,800,800,800,348,348,348,348,348,348,,,,348,348", ",,,348,,348,348,348,348,348,348,348,,,,,,348,348,348,348,348,348,348", ",,348,,,,,,348,348,348,348,348,348,348,348,348,348,348,348,,348,348", "348,,348,348,348,348,348,460,460,460,460,460,460,460,460,460,460,460", ",460,460,,,460,460,,348,,,348,,,348,348,,,348,,348,460,,460,348,460", "460,,460,460,460,460,460,348,460,,,,348,348,348,348,,348,348,348,348", ",,,,348,348,,,,,,,348,,348,348,348,852,852,852,852,852,852,,,,852,852", ",,,852,,852,852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852", ",,852,,,,,,852,852,852,852,852,852,852,852,852,852,852,852,,852,852", "852,,852,852,852,852,852,474,474,474,474,474,474,474,,,474,474,,,,,", "474,474,,852,,,852,,,852,852,,,852,,852,474,,474,852,474,474,,474,474", "474,474,474,852,474,,,,852,852,852,852,,852,852,852,852,,,,,852,852", ",,,,,,852,,852,852,852,890,890,890,890,890,890,,,,890,890,,,,890,,890", "890,890,890,890,890,890,,,,,,890,890,890,890,890,890,890,,,890,,,,,", "890,890,890,890,890,890,890,890,890,890,890,890,,890,890,890,,890,890", "890,890,890,475,475,475,475,475,475,475,,,475,475,,,,,,475,475,,890", ",,890,,,890,890,,,890,,890,475,,475,890,475,475,,475,475,475,475,475", "890,475,,,,890,890,890,890,,890,890,890,890,,,,,890,890,,,,,,,890,,890", "890,890,741,741,741,741,741,741,,,,741,741,,,,741,,741,741,741,741,741", "741,741,,,,,,741,741,741,741,741,741,741,,,741,,,,,,741,741,741,741", "741,741,741,741,741,741,741,741,,741,741,741,,741,741,741,741,741,461", "461,461,461,461,461,461,461,461,461,461,,461,461,,,461,461,,741,,,741", ",,741,741,,,741,,741,461,,461,741,461,461,,461,461,461,461,461,741,461", ",,,741,741,741,741,,741,741,741,741,,,,,741,741,,,,,,,741,,741,741,741", "736,736,736,736,736,736,,,,736,736,,,,736,,736,736,736,736,736,736,736", ",,,,,736,736,736,736,736,736,736,,,736,,,,,,736,736,736,736,736,736", "736,736,736,736,736,736,,736,736,736,,736,736,736,736,736,476,476,476", "476,476,476,476,,,476,476,,,,,,476,476,,736,,,736,,,736,736,,,736,,736", "476,,476,736,476,476,,476,476,476,476,476,736,476,,,,736,736,736,736", ",736,736,736,736,,,,,736,736,,,,,,,736,,736,736,736,234,234,234,234", "234,234,,,,234,234,,,,234,,234,234,234,234,234,234,234,,,,,,234,234", "234,234,234,234,234,,,234,,,,,,234,234,234,234,234,234,234,234,234,234", "234,234,,234,234,234,,234,234,234,234,234,480,480,480,480,480,480,480", "480,,480,480,,,,,,480,480,,234,,,234,,,234,234,,,234,,234,480,,480,234", "480,480,,480,480,480,480,480,234,480,,,,234,234,234,234,,234,234,234", "234,,,,,234,234,,,,,,,234,,234,234,234,846,846,846,846,846,846,,,,846", "846,,,,846,,846,846,846,846,846,846,846,,,,,,846,846,846,846,846,846", "846,,,846,,,,,,846,846,846,846,846,846,846,846,846,846,846,846,,846", "846,846,,846,846,846,846,846,471,471,471,471,471,471,471,,,471,471,", ",,,,471,471,,846,,,846,,,846,846,,,846,,846,471,,471,846,471,471,,471", "471,471,471,471,846,471,,,,846,846,846,846,,846,846,846,846,,,,,846", "846,,,,,,,846,,846,846,846,33,33,33,33,33,33,,,,33,33,,,,33,,33,33,33", "33,33,33,33,,,,,,33,33,33,33,33,33,33,,,33,,,,,,33,33,33,33,33,33,33", "33,33,33,33,33,,33,33,33,,33,33,33,33,33,472,472,472,472,472,472,472", ",,472,472,,,,,,472,472,,33,,,33,,,33,33,,,33,,33,472,,472,33,472,472", ",472,472,472,472,472,33,472,,,,33,33,33,33,,33,33,33,33,,,,,33,33,,", ",,,,33,,33,33,33,0,0,0,0,0,0,,,,0,0,,,,0,,0,0,0,0,0,0,0,,,,,,0,0,0,0", "0,0,0,,,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,0,,0,0,0,0,0,479,479,479", "479,479,479,479,,,479,479,,,,,,479,479,,0,,,0,,,0,0,,,0,,0,479,,479", "0,479,479,,479,479,479,479,479,0,479,,,,0,0,0,0,,0,0,0,0,,,,,0,0,,,", ",,,0,,0,0,0,577,577,577,577,577,577,,,,577,577,,,,577,,577,577,577,577", "577,577,577,,,,,,577,577,577,577,577,577,577,,,577,,,,,,577,577,577", "577,577,577,577,577,577,577,577,577,,577,577,577,,577,577,577,577,577", "468,,,,,,,,,,,,,,,,468,468,,577,,,577,,,577,577,,,577,,577,468,,468", "577,468,468,,468,468,,,,577,,,,,577,577,577,577,,577,577,577,577,,,", ",577,577,,,,,,,577,,577,577,577,889,889,889,889,889,889,,,,889,889,", ",,889,,889,889,889,889,889,889,889,,,,,,889,889,889,889,889,889,889", ",,889,,,,,,889,889,889,889,889,889,889,889,889,889,889,889,,889,889", "889,,889,889,889,889,889,469,,,,,,,,,,,,,,,,469,469,,889,,,889,,,889", "889,,,889,,889,469,,469,889,469,469,,469,469,,,,889,,,,,889,889,889", "889,,889,889,889,889,,,,,889,889,,,,,,,889,,889,889,889,331,331,331", "331,331,331,,,,331,331,,,,331,,331,331,331,331,331,331,331,,,,,,331", "331,331,331,331,331,331,,,331,,,,,,331,331,331,331,331,331,331,331,331", "331,331,331,,331,331,331,,331,331,331,331,331,,,,,,,,,,,,,,,,,,,,331", ",,331,,,331,331,,,331,,331,,,,331,,,,,,,,,331,,,,,331,331,331,331,,331", "331,331,331,,,,,331,331,,,,,,,331,,331,331,331,124,124,124,124,124,124", ",,,124,124,,,,124,,124,124,124,124,124,124,124,,,,,,124,124,124,124", "124,124,124,,,124,,,,,,124,124,124,124,124,124,124,124,124,124,124,124", ",124,124,124,,124,124,124,124,124,,,,,,,,,,,,,,,,,,,,124,,,124,,,124", "124,,,124,,124,,,,124,,,,,,,,,124,,,,,124,124,124,124,,124,124,124,124", ",,,,124,124,,,,,,,124,,124,124,124,883,883,883,883,883,883,,,,883,883", ",,,883,,883,883,883,883,883,883,883,,,,,,883,883,883,883,883,883,883", ",,883,,,,,,883,883,883,883,883,883,883,883,883,883,883,883,,883,883", "883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,,,883,,,883,,,883,883,,,883", ",883,,,,883,,,,,,,,,883,,,,,883,883,883,883,,883,883,883,883,,,,,883", "883,,,,,,,883,,883,883,883,964,964,964,964,964,964,,,,964,964,,,,964", ",964,964,964,964,964,964,964,,,,,,964,964,964,964,964,964,964,,,964", ",,,,,964,964,964,964,964,964,964,964,964,964,964,964,,964,964,964,,964", "964,964,964,964,,,,,,,,,,,,,,,,,,,,964,,,964,,,964,964,,,964,,964,,", ",964,,,,,,,,,964,,,,,964,964,964,964,,964,964,964,964,,,,,964,964,,", ",,,,964,,964,964,964,209,209,209,209,209,209,,,,209,209,,,,209,,209", "209,209,209,209,209,209,,,,,,209,209,209,209,209,209,209,,,209,,,,,", "209,209,209,209,209,209,209,209,209,209,209,209,,209,209,209,,209,209", "209,209,209,,,,,,,,,,,,,,,,,,,,209,,,209,,,209,209,,,209,,209,,,,209", ",,,,,,,,209,,,,,209,209,209,209,,209,209,209,209,,,,,209,209,,,,,,,209", ",209,209,209,959,959,959,959,959,959,,,,959,959,,,,959,,959,959,959", "959,959,959,959,,,,,,959,959,959,959,959,959,959,,,959,,,,,,959,959", "959,959,959,959,959,959,959,959,959,959,,959,959,959,,959,959,959,959", "959,,,,,,,,,,,,,,,,,,,,959,,,959,,,959,959,,,959,,959,,,,959,,,,,,,", ",959,,,,,959,959,959,959,,959,959,959,959,,,,,959,959,,,,,,,959,,959", "959,959,580,580,580,580,580,580,,,,580,580,,,,580,,580,580,580,580,580", "580,580,,,,,,580,580,580,580,580,580,580,,,580,,,,,,580,580,580,580", "580,580,580,580,580,580,580,580,,580,580,580,,580,580,580,580,580,,", ",,,,,,,,,,,,,,,,,580,,,580,,,580,580,,,580,,580,,,,580,,,,,,,,,580,", ",,,580,580,580,580,,580,580,580,580,,,,,580,580,,,,,,,580,,580,580,580", "866,866,866,866,866,866,,,,866,866,,,,866,,866,866,866,866,866,866,866", ",,,,,866,866,866,866,866,866,866,,,866,,,,,,866,866,866,866,866,866", "866,866,866,866,866,866,,866,866,866,,866,866,866,866,866,,,,,,,,,,", ",,,,,,,,,866,,,866,,,866,866,,,866,,866,,,,866,,,,,,,,,866,,,,,866,866", "866,866,,866,866,866,866,,,,,866,866,,,,790,790,790,866,790,866,866", "866,790,790,,,,790,,790,790,790,790,790,790,790,,,,,,790,790,790,790", "790,790,790,,,790,,,,,,,790,,,790,790,790,790,790,790,790,790,,790,790", "790,,790,790,790,790,790,,,,,,,,,,,,,,,,,,,,790,,,790,,,790,790,,,790", ",,,,,790,,,,,,,,,790,,,,,790,790,790,790,,790,790,790,790,,,,,790,790", ",,,788,788,788,790,788,790,790,790,788,788,,,,788,,788,788,788,788,788", "788,788,,,,,,788,788,788,788,788,788,788,,,788,,,,,,,788,,,788,788,788", "788,788,788,788,788,,788,788,788,,788,788,788,788,788,,,,,,,,,,,,,,", ",,,,,788,,,788,,,788,788,,,788,,,,,,788,,,,,,,,,788,,,,,788,788,788", "788,,788,788,788,788,,,,,788,788,,,,787,787,787,788,787,788,788,788", "787,787,,,,787,,787,787,787,787,787,787,787,,,,,,787,787,787,787,787", "787,787,,,787,,,,,,,787,,,787,787,787,787,787,787,787,787,,787,787,787", ",787,787,787,787,787,,,,,,,,,,,,,,,,,,,,787,,,787,,,787,787,,,787,,", ",,,787,,,,,,,,,787,,,,,787,787,787,787,,787,787,787,787,,,,,787,787", ",,,786,786,786,787,786,787,787,787,786,786,,,,786,,786,786,786,786,786", "786,786,,,,,,786,786,786,786,786,786,786,,,786,,,,,,,786,,,786,786,786", "786,786,786,786,786,,786,786,786,,786,786,786,786,786,,,,,,,,,,,,,,", ",,,,,786,,,786,,,786,786,,,786,,,,,,786,,,,,,,,,786,,,,,786,786,786", "786,,786,786,786,786,,,,,786,786,,,,785,785,785,786,785,786,786,786", "785,785,,,,785,,785,785,785,785,785,785,785,,,,,,785,785,785,785,785", "785,785,,,785,,,,,,,785,,,785,785,785,785,785,785,785,785,,785,785,785", ",785,785,785,785,785,,,,,,,,,,,,,,,,,,,,785,,,785,,,785,785,,,785,,", ",,,785,,,,,,,,,785,,,,,785,785,785,785,,785,785,785,785,,,,,785,785", ",,,772,772,772,785,772,785,785,785,772,772,,,,772,,772,772,772,772,772", "772,772,,,,,,772,772,772,772,772,772,772,,,772,,,,,,,772,,,772,772,772", "772,772,772,772,772,,772,772,772,,772,772,772,772,772,,,,,,,,,,,,,,", ",,,,,772,,,772,,,772,772,,,772,,,,,,772,,,,,,,,,772,,,,,772,772,772", "772,,772,772,772,772,,,,,772,772,,,,233,233,233,772,233,772,772,772", "233,233,,,,233,,233,233,233,233,233,233,233,,,,,,233,233,233,233,233", "233,233,,,233,,,,,,,233,,,233,233,233,233,233,233,233,233,,233,233,233", ",233,233,233,233,233,,,,,,,,,,,,,,,,,,,,233,,,233,,,233,233,,,233,,", ",,,233,,,,,,,,,233,,,,,233,233,233,233,,233,233,233,233,,,,,233,233", ",,,236,236,236,233,236,233,233,233,236,236,,,,236,,236,236,236,236,236", "236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,,,236,,,236,236,236", "236,236,236,236,236,,236,236,236,,236,236,236,236,236,,,,,,,,,,,,,,", ",,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236,,,,,236,236,236", "236,,236,236,236,236,,,,,236,236,,,,237,237,237,236,237,236,236,236", "237,237,,,,237,,237,237,237,237,237,237,237,,,,,,237,237,237,237,237", "237,237,,,237,,,,,,,237,,,237,237,237,237,237,237,237,237,,237,237,237", ",237,237,237,237,237,,,,,,,,,,,,,,,,,,,,237,,,237,,,237,237,,,237,,", ",,,237,,,,,,,,,237,,,,,237,237,237,237,,237,237,237,237,,,,,237,237", ",,,238,238,238,237,238,237,237,237,238,238,,,,238,,238,238,238,238,238", "238,238,,,,,,238,238,238,238,238,238,238,,,238,,,,,,,238,,,238,238,238", "238,238,238,238,238,,238,238,238,,238,238,238,238,238,,,,,,,,,,,,,,", ",,,,,238,,,238,,,238,238,,,238,,,,,,238,,,,,,,,,238,,,,,238,238,238", "238,,238,238,238,238,,,,,238,238,,,,239,239,239,238,239,238,238,238", "239,239,,,,239,,239,239,239,239,239,239,239,,,,,,239,239,239,239,239", "239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239,,239,239,239", ",239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,239,,,239,,", ",,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239,,,,,239,239", ",,,240,240,240,239,240,239,239,239,240,240,,,,240,,240,240,240,240,240", "240,240,,,,,,240,240,240,240,240,240,240,,,240,,,,,,,240,,,240,240,240", "240,240,240,240,240,,240,240,240,,240,240,240,240,240,,,,,,,,,,,,,,", ",,,,,240,,,240,,,240,240,,,240,,,,,,240,,,,,,,,,240,,,,,240,240,240", "240,,240,240,240,240,,,,,240,240,,,,241,241,241,240,241,240,240,240", "241,241,,,,241,,241,241,241,241,241,241,241,,,,,,241,241,241,241,241", "241,241,,,241,,,,,,,241,,,241,241,241,241,241,241,241,241,,241,241,241", ",241,241,241,241,241,,,,,,,,,,,,,,,,,,,,241,,,241,,,241,241,,,241,,", ",,,241,,,,,,,,,241,,,,,241,241,241,241,,241,241,241,241,,,,,241,241", ",,,242,242,242,241,242,241,241,241,242,242,,,,242,,242,242,242,242,242", "242,242,,,,,,242,242,242,242,242,242,242,,,242,,,,,,,242,,,242,242,242", "242,242,242,242,242,,242,242,242,,242,242,242,242,242,,,,,,,,,,,,,,", ",,,,,242,,,242,,,242,242,,,242,,,,,,242,,,,,,,,,242,,,,,242,242,242", "242,,242,242,242,242,,,,,242,242,,,,243,243,243,242,243,242,242,242", "243,243,,,,243,,243,243,243,243,243,243,243,,,,,,243,243,243,243,243", "243,243,,,243,,,,,,,243,,,243,243,243,243,243,243,243,243,,243,243,243", ",243,243,243,243,243,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,243,,,243,,", ",,,243,,,,,,,,,243,,,,,243,243,243,243,,243,243,243,243,,,,,243,243", ",,,244,244,244,243,244,243,243,243,244,244,,,,244,,244,244,244,244,244", "244,244,,,,,,244,244,244,244,244,244,244,,,244,,,,,,,244,,,244,244,244", "244,244,244,244,244,,244,244,244,,244,244,244,244,244,,,,,,,,,,,,,,", ",,,,,244,,,244,,,244,244,,,244,,,,,,244,,,,,,,,,244,,,,,244,244,244", "244,,244,244,244,244,,,,,244,244,,,,245,245,245,244,245,244,244,244", "245,245,,,,245,,245,245,245,245,245,245,245,,,,,,245,245,245,245,245", "245,245,,,245,,,,,,,245,,,245,245,245,245,245,245,245,245,,245,245,245", ",245,245,245,245,245,,,,,,,,,,,,,,,,,,,,245,,,245,,,245,245,,,245,,", ",,,245,,,,,,,,,245,,,,,245,245,245,245,,245,245,245,245,,,,,245,245", ",,,246,246,246,245,246,245,245,245,246,246,,,,246,,246,246,246,246,246", "246,246,,,,,,246,246,246,246,246,246,246,,,246,,,,,,,246,,,246,246,246", "246,246,246,246,246,,246,246,246,,246,246,246,246,246,,,,,,,,,,,,,,", ",,,,,246,,,246,,,246,246,,,246,,,,,,246,,,,,,,,,246,,,,,246,246,246", "246,,246,246,246,246,,,,,246,246,,,,247,247,247,246,247,246,246,246", "247,247,,,,247,,247,247,247,247,247,247,247,,,,,,247,247,247,247,247", "247,247,,,247,,,,,,,247,,,247,247,247,247,247,247,247,247,,247,247,247", ",247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247,,,247,,,247,247,,,247,,", ",,,247,,,,,,,,,247,,,,,247,247,247,247,,247,247,247,247,,,,,247,247", ",,,248,248,248,247,248,247,247,247,248,248,,,,248,,248,248,248,248,248", "248,248,,,,,,248,248,248,248,248,248,248,,,248,,,,,,,248,,,248,248,248", "248,248,248,248,248,,248,248,248,,248,248,248,248,248,,,,,,,,,,,,,,", ",,,,,248,,,248,,,248,248,,,248,,,,,,248,,,,,,,,,248,,,,,248,248,248", "248,,248,248,248,248,,,,,248,248,,,,249,249,249,248,249,248,248,248", "249,249,,,,249,,249,249,249,249,249,249,249,,,,,,249,249,249,249,249", "249,249,,,249,,,,,,,249,,,249,249,249,249,249,249,249,249,,249,249,249", ",249,249,249,249,249,,,,,,,,,,,,,,,,,,,,249,,,249,,,249,249,,,249,,", ",,,249,,,,,,,,,249,,,,,249,249,249,249,,249,249,249,249,,,,,249,249", ",,,250,250,250,249,250,249,249,249,250,250,,,,250,,250,250,250,250,250", "250,250,,,,,,250,250,250,250,250,250,250,,,250,,,,,,,250,,,250,250,250", "250,250,250,250,250,,250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,", ",,,,,250,,,250,,,250,250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250", "250,,250,250,250,250,,,,,250,250,,,,251,251,251,250,251,250,250,250", "251,251,,,,251,,251,251,251,251,251,251,251,,,,,,251,251,251,251,251", "251,251,,,251,,,,,,,251,,,251,251,251,251,251,251,251,251,,251,251,251", ",251,251,251,251,251,,,,,,,,,,,,,,,,,,,,251,,,251,,,251,251,,,251,,", ",,,251,,,,,,,,,251,,,,,251,251,251,251,,251,251,251,251,,,,,251,251", ",,,252,252,252,251,252,251,251,251,252,252,,,,252,,252,252,252,252,252", "252,252,,,,,,252,252,252,252,252,252,252,,,252,,,,,,,252,,,252,252,252", "252,252,252,252,252,,252,252,252,,252,252,252,252,252,,,,,,,,,,,,,,", ",,,,,252,,,252,,,252,252,,,252,,,,,,252,,,,,,,,,252,,,,,252,252,252", "252,,252,252,252,252,,,,,252,252,,,,253,253,253,252,253,252,252,252", "253,253,,,,253,,253,253,253,253,253,253,253,,,,,,253,253,253,253,253", "253,253,,,253,,,,,,,253,,,253,253,253,253,253,253,253,253,,253,253,253", ",253,253,253,253,253,,,,,,,,,,,,,,,,,,,,253,,,253,,,253,253,,,253,,", ",,,253,,,,,,,,,253,,,,,253,253,253,253,,253,253,253,253,,,,,253,253", ",,,254,254,254,253,254,253,253,253,254,254,,,,254,,254,254,254,254,254", "254,254,,,,,,254,254,254,254,254,254,254,,,254,,,,,,,254,,,254,254,254", "254,254,254,254,254,,254,254,254,,254,254,254,254,254,,,,,,,,,,,,,,", ",,,,,254,,,254,,,254,254,,,254,,,,,,254,,,,,,,,,254,,,,,254,254,254", "254,,254,254,254,254,,,,,254,254,,,,255,255,255,254,255,254,254,254", "255,255,,,,255,,255,255,255,255,255,255,255,,,,,,255,255,255,255,255", "255,255,,,255,,,,,,,255,,,255,255,255,255,255,255,255,255,,255,255,255", ",255,255,255,255,255,,,,,,,,,,,,,,,,,,,,255,,,255,,,255,255,,,255,,", ",,,255,,,,,,,,,255,,,,,255,255,255,255,,255,255,255,255,,,,,255,255", ",,,256,256,256,255,256,255,255,255,256,256,,,,256,,256,256,256,256,256", "256,256,,,,,,256,256,256,256,256,256,256,,,256,,,,,,,256,,,256,256,256", "256,256,256,256,256,,256,256,256,,256,256,256,256,256,,,,,,,,,,,,,,", ",,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,,,,256,,,,,256,256,256", "256,,256,256,256,256,,,,,256,256,,,,257,257,257,256,257,256,256,256", "257,257,,,,257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257", "257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257", ",257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,", ",,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257", ",,,262,262,262,257,262,257,257,257,262,262,,,,262,,262,262,262,262,262", "262,262,,,,,,262,262,262,262,262,262,262,,,262,,,,,,,262,,,262,262,262", "262,262,262,262,262,,262,262,262,,262,262,262,262,262,,,,,,,,,,,,,,", ",,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,,,,262,,,,,262,262,262", "262,,262,262,262,262,,,,,262,262,,,,764,764,764,262,764,262,262,262", "764,764,,,,764,,764,764,764,764,764,764,764,,,,,,764,764,764,764,764", "764,764,,,764,,,,,,,764,,,764,764,764,764,764,764,764,764,,764,764,764", ",764,764,764,764,764,,,,,,,,,,,,,,,,,,,,764,,,764,,,764,764,,,764,,", ",,,764,,,,,,,,,764,,,,,764,764,764,764,,764,764,764,764,,,,,764,764", ",,,269,269,269,764,269,764,764,764,269,269,,,,269,,269,269,269,269,269", "269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269", "269,269,269,269,269,269,269,269,269,,269,269,269,269,269,,,,,,,,,,,", ",,,,,,,,269,,,269,,,269,269,,,269,,269,,269,,269,,,269,,,,,,269,,,,", "269,269,269,269,,269,269,269,269,,,,,269,269,,,,270,270,270,269,270", "269,269,269,270,270,,,,270,,270,270,270,270,270,270,270,,,,,,270,270", "270,270,270,270,270,,,270,,,,,,,270,,,270,270,270,270,270,270,270,270", "270,270,270,270,,270,270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,", "270,270,,,270,,270,,270,,270,,,270,,,,,,270,,,,,270,270,270,270,,270", "270,270,270,,,,,270,270,,,,278,278,278,270,278,270,270,270,278,278,", ",,278,,278,278,278,278,278,278,278,,,,,,278,278,278,278,278,278,278", ",,278,,,,,,,278,,,278,278,278,278,278,278,278,278,278,278,278,278,,278", "278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278,,,278,,278,,278", ",278,,,278,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,,278,278", "278,,,285,285,285,278,285,278,278,278,285,285,,,,285,,285,285,285,285", "285,285,285,,,,,,285,285,285,285,285,285,285,,,285,,,,,,,285,,,285,285", "285,285,285,285,285,285,,285,285,285,,285,285,285,285,285,,,,,,,,,,", ",,,,,,,,,285,,,285,,,285,285,,,285,,,,,,285,,,,,,,,,285,,,,,285,285", "285,285,,285,285,285,285,,,,,285,285,,,,742,742,742,285,742,285,285", "285,742,742,,,,742,,742,742,742,742,742,742,742,,,,,,742,742,742,742", "742,742,742,,,742,,,,,,,742,,,742,742,742,742,742,742,742,742,,742,742", "742,,742,742,742,742,742,,,,,,,,,,,,,,,,,,,,742,,,742,,,742,742,,,742", ",,,,,742,,,,,,,,,742,,,,,742,742,742,742,,742,742,742,742,,,,,742,742", ",,,287,287,287,742,287,742,742,742,287,287,,,,287,,287,287,287,287,287", "287,287,,,,,,287,287,287,287,287,287,287,,,287,,,,,,,287,,,287,287,287", "287,287,287,287,287,,287,287,287,,287,287,287,287,287,,,,,,,,,,,,,,", ",,,,,287,,,287,,,287,287,,,287,,,,,,287,,,,,,,,,287,,,,,287,287,287", "287,,287,287,287,287,,,,,287,287,,,,290,290,290,287,290,287,287,287", "290,290,,,,290,,290,290,290,290,290,290,290,,,,,,290,290,290,290,290", "290,290,,,290,,,,,,,290,,,290,290,290,290,290,290,290,290,,290,290,290", ",290,290,290,290,290,,,,,,,,,,,,,,,,,,,,290,,,290,,,290,290,,,290,,", ",,,290,,,,,,,,,290,,,,,290,290,290,290,,290,290,290,290,,,,,290,290", ",,,291,291,291,290,291,290,290,290,291,291,,,,291,,291,291,291,291,291", "291,291,,,,,,291,291,291,291,291,291,291,,,291,,,,,,,291,,,291,291,291", "291,291,291,291,291,,291,291,291,,291,291,291,291,291,,,,,,,,,,,,,,", ",,,,,291,,,291,,,291,291,,,291,,,,,,291,,,,,,,,,291,,,,,291,291,291", "291,,291,291,291,291,,,,,291,291,,,,,,,291,,291,291,291,296,296,296", "296,296,,,,296,296,,,,296,,296,296,296,296,296,296,296,,,,,,296,296", "296,296,296,296,296,,,296,,,,,,296,296,,296,296,296,296,296,296,296", "296,296,,296,296,296,,296,296,296,296,296,,,,,,,,,,,,,,,,,,,,296,,,296", ",,296,296,,,296,,296,,,,296,,,,,,,,,296,,,,,296,296,296,296,,296,296", "296,296,,,,,296,296,,,,565,565,565,296,565,296,296,296,565,565,,,,565", ",565,565,565,565,565,565,565,,,,,,565,565,565,565,565,565,565,,,565", ",,,,,,565,,,565,565,565,565,565,565,565,565,,565,565,565,,565,565,565", "565,565,,,,,,,,,,,,,,,,,,,,565,,,565,,,565,565,,,565,,,,,,565,,,,,,", ",,565,,,,,565,565,565,565,,565,565,565,565,,,,,565,565,,,,,,,565,,565", "565,565,5,5,5,5,5,,,,5,5,,,,5,,5,5,5,5,5,5,5,,,,,,5,5,5,5,5,5,5,,,5", ",,,,,5,5,5,5,5,5,5,5,5,5,5,5,,5,5,5,,5,5,5,5,5,,,,,,,,,,,,,,,,,,,,5", ",,5,,,5,5,,,5,,5,,,,5,,,,,,,,,5,,,,,5,5,5,5,,5,5,5,5,,,,,5,5,,,,979", "979,979,5,979,5,5,5,979,979,,,,979,,979,979,979,979,979,979,979,,,,", ",979,979,979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979", "979,979,979,979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979", ",,979,,,979,979,,,979,,979,,979,,979,,,979,,,,,,979,,,,,979,979,979", "979,,979,979,979,979,,,,,979,979,,,,20,20,20,979,20,979,979,979,20,20", ",,,20,,20,20,20,20,20,20,20,,,,,,20,20,20,20,20,20,20,,,20,,,,,,,20", ",,20,20,20,20,20,20,20,20,,20,20,20,,20,20,20,20,20,,,,,,,,,,,,,,,,", ",,,20,,,20,,,20,20,,,20,,,,,,20,,,,,,,,,20,,,,,20,20,20,20,,20,20,20", "20,,,,,20,20,,,,934,934,934,20,934,20,20,20,934,934,,,,934,,934,934", "934,934,934,934,934,,,,,,934,934,934,934,934,934,934,,,934,,,,,,,934", ",,934,934,934,934,934,934,934,934,,934,934,934,,934,934,,,934,,,,,,", ",,,,,,,,,,,,,934,,,934,,,934,934,,,934,,,,,,,,,,,,,,,,,,,,934,934,934", "934,,934,934,934,934,,,,,934,934,,,,29,29,29,934,29,934,934,934,29,29", ",,,29,,29,29,29,29,29,29,29,,,,,,29,29,29,29,29,29,29,,,29,,,,,,,29", ",,29,29,29,29,29,29,29,29,29,29,29,29,,29,29,29,29,29,,,,,,,,,,,,,,", ",,,,,29,,,29,,,29,29,,,29,,29,,29,,29,,,29,,,,,,29,,,,,29,29,29,29,", "29,29,29,29,,,,,29,29,,,,30,30,30,29,30,29,29,29,30,30,,,,30,,30,30", "30,30,30,30,30,,,,,,30,30,30,30,30,30,30,,,30,,,,,,,30,,,30,30,30,30", "30,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,,,,,,,,,,,,,,,,30,,,30,", ",30,30,,,30,,30,,30,,30,,,30,,,,,,30,,,,,30,30,30,30,,30,30,30,30,,", ",,30,30,,,,31,31,31,30,31,30,30,30,31,31,,,,31,,31,31,31,31,31,31,31", ",,,,,31,31,31,31,31,31,31,,,31,,,,,,,31,,,31,31,31,31,31,31,31,31,31", "31,31,31,,31,31,31,31,31,,,,,,,,,,,,,,,,,,,,31,,,31,,,31,31,,,31,,31", ",31,,31,,,31,,,,,,31,,,,,31,31,31,31,,31,31,31,31,,,,,31,31,,,,34,34", "34,31,34,31,31,31,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34", "34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,,34,34,34,,34,34,,", "34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,,,,,,,,,,,,,,,,,34,34", "34,34,,34,34,34,34,,,,,34,34,,,,35,35,35,34,35,34,34,34,35,35,,,,35", ",35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,,35,35", "35,35,35,35,35,35,,35,35,35,,35,35,,,35,,,,,,,,,,,,,,,,,,,,35,,,35,", ",35,35,,,35,,,900,,900,900,900,900,900,,,,,,,,,900,,35,35,35,35,,35", "35,35,35,,,,,35,35,,,,35,,900,35,,35,35,35,887,887,887,,887,900,900", ",887,887,900,,,887,,887,887,887,887,887,887,887,,,,,,887,887,887,887", "887,887,887,,,887,,,,,,,887,,,887,887,887,887,887,887,887,887,,887,887", "887,,887,887,,,887,,,,,,,,,,,,,,,,,,,,887,,,887,,,887,887,,,887,,,,", ",,,,,,,,,,,,,,,887,887,887,887,,887,887,887,887,,,,,887,887,,,,878,878", "878,887,878,887,887,887,878,878,,,,878,,878,878,878,878,878,878,878", ",,,,,878,878,878,878,878,878,878,,,878,,,,,,,878,,,878,878,878,878,878", "878,878,878,,878,878,878,,878,878,,,878,,,,,,,,,,,,,,,,,,,,878,,,878", ",,878,878,,,878,,,,,,,,,,,,,,,,,,,,878,878,878,878,,878,878,878,878", ",,,,878,878,,,,42,42,42,878,42,878,878,878,42,42,,,,42,,42,42,42,42", "42,42,42,,,,,,42,42,42,42,42,42,42,,,42,,,,,,,42,,,42,42,42,42,42,42", "42,42,,42,42,42,,42,42,42,42,42,,,,,,,,,,,,,,,,,,,,42,,,42,,,42,42,", ",42,,,,,,42,,,,,,,,,42,,,,,42,42,42,42,,42,42,42,42,,,,,42,42,,,,43", "43,43,42,43,42,42,42,43,43,,,,43,,43,43,43,43,43,43,43,,,,,,43,43,43", "43,43,43,43,,,43,,,,,,,43,,,43,43,43,43,43,43,43,43,,43,43,43,,43,43", "43,43,43,,,,,,,,,,,,,,,,,,,,43,,,43,,,43,43,,,43,,,,,,43,,,,,,,,,43", ",,,,43,43,43,43,,43,43,43,43,,,,,43,43,,,,45,45,45,43,45,43,43,43,45", "45,,,,45,,45,45,45,45,45,45,45,,,,,,45,45,45,45,45,45,45,,,45,,,,,,", "45,,,45,45,45,45,45,45,45,45,,45,45,45,,45,45,45,45,45,,,,,,,,,,,,,", ",,,,,,45,,,45,,,45,45,,,45,,,,,,45,,,,,,,,,45,,,,,45,45,45,45,,45,45", "45,45,,,,,45,45,,,,864,864,864,45,864,45,45,45,864,864,,,,864,,864,864", "864,864,864,864,864,,,,,,864,864,864,864,864,864,864,,,864,,,,,,,864", ",,864,864,864,864,864,864,864,864,,864,864,864,,864,864,864,864,864", ",,,,,,,,,,,,,,,,,,,864,,,864,,,864,864,,,864,,,,,,864,,,,,,,,,864,,", ",,864,864,864,864,,864,864,864,864,,,,,864,864,,,,863,863,863,864,863", "864,864,864,863,863,,,,863,,863,863,863,863,863,863,863,,,,,,863,863", "863,863,863,863,863,,,863,,,,,,,863,,,863,863,863,863,863,863,863,863", "863,863,863,863,,863,863,863,863,863,,,,,,,,,,,,,,,,,,,,863,,,863,,", "863,863,,,863,,,,863,,863,,,863,,,,,,863,,,,,863,863,863,863,,863,863", "863,863,,,,,863,863,,,,,,,863,,863,863,863,59,59,59,59,59,,,,59,59,", ",,59,,59,59,59,59,59,59,59,,,,,,59,59,59,59,59,59,59,,,59,,,,,,59,59", ",59,59,59,59,59,59,59,59,59,,59,59,59,,59,59,59,59,59,,,,,,,,,,,,,,", ",,,,,59,,,59,,,59,59,,,59,,59,,,,59,,,,,,,,,59,,,,,59,59,59,59,,59,59", "59,59,,,,,59,59,,,,60,60,60,59,60,59,59,59,60,60,,,,60,,60,60,60,60", "60,60,60,,,,,,60,60,60,60,60,60,60,,,60,,,,,,,60,,,60,60,60,60,60,60", "60,60,60,60,60,60,,60,60,60,60,60,,,,,,,,,,,,,,,,,,,,60,,,60,,,60,60", ",,60,,60,,,,60,,,60,,,,,,60,,,,,60,60,60,60,,60,60,60,60,,,,,60,60,", ",,61,61,61,60,61,60,60,60,61,61,,,,61,,61,61,61,61,61,61,61,,,,,,61", "61,61,61,61,61,61,,,61,,,,,,,61,,,61,61,61,61,61,61,61,61,61,61,61,61", ",61,61,61,61,61,,,,,,,,,,,,,,,,,,,,61,,,61,,,61,61,,,61,,,,,,61,,,61", ",,,,,61,,,,,61,61,61,61,,61,61,61,61,,,,,61,61,,,,64,64,64,61,64,61", "61,61,64,64,,,,64,,64,64,64,64,64,64,64,,,,,,64,64,64,64,64,64,64,,", "64,,,,,,,64,,,64,64,64,64,64,64,64,64,,64,64,64,,64,64,64,64,64,,,,", ",,,,,,,,,,,,,,,64,,,64,,,64,64,,,64,,,,,,64,,,,,,,,,64,,,,,64,64,64", "64,,64,64,64,64,,,,,64,64,,,,65,65,65,64,65,64,64,64,65,65,,,,65,,65", "65,65,65,65,65,65,,,,,,65,65,65,65,65,65,65,,,65,,,,,,,65,,,65,65,65", "65,65,65,65,65,,65,65,65,,65,65,65,65,65,,,,,,,,,,,,,,,,,,,,65,,,65", ",,65,65,,,65,,,,,,65,,,,,,,,,65,,,,,65,65,65,65,,65,65,65,65,,,,,65", "65,,,,68,68,68,65,68,65,65,65,68,68,,,,68,,68,68,68,68,68,68,68,,,,", ",68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68,68,68,68,68,,68,68", "68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,", ",,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68,68,68,,,,,68,68,,68,68", "68,69,69,69,,69,,,,69,69,,,,69,,69,69,69,69,69,69,69,,,,,,69,69,69,69", "69,69,69,,,69,,,,,,,69,,,69,69,69,69,69,69,69,69,,69,69,69,,69,69,,", "69,,,,,,,,,,,,,,,,,,,,69,,,69,,,69,69,,,69,,69,,,,,,,,,,,,,,,,,,69,69", "69,69,,69,69,69,69,,,,,69,69,,,,70,70,70,69,70,69,69,69,70,70,,,,70", ",70,70,70,70,70,70,70,,,,,,70,70,70,70,70,70,70,,,70,,,,,,,70,,,70,70", "70,70,70,70,70,70,,70,70,70,,70,70,,,70,,,,,,,,,,,,,,,,,70,,,70,,,70", ",,70,70,,,70,,,,,,,,,,,,,,,,,,,,70,70,70,70,,70,70,70,70,,,,,70,70,", ",,71,71,71,70,71,70,70,70,71,71,,,,71,,71,71,71,71,71,71,71,,,,,,71", "71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71,71", ",71,71,,,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,707,,707,707,707", "707,707,,,,,,,,,707,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,,,707,71", ",71,71,71,113,113,113,113,113,707,707,,113,113,707,,,113,,113,113,113", "113,113,113,113,,,,,,113,113,113,113,113,113,113,,,113,,,,,,113,113", "113,113,113,113,113,113,113,113,113,113,,113,113,113,,113,113,113,113", "113,,,,,,,,,,,,,,,,,,,,113,,,113,,,113,113,,,113,,113,,,,113,,,,,,,", ",113,,,,,113,113,113,113,,113,113,113,113,,,,,113,113,,,,,,113,113,", "113,113,113,118,118,118,,118,,,,118,118,,,,118,,118,118,118,118,118", "118,118,,,,,,118,118,118,118,118,118,118,,,118,,,,,,,118,,,118,118,118", "118,118,118,118,118,,118,118,118,,118,118,118,118,118,,,,,,,,,,,,,,", ",,,,,118,,,118,,,118,118,,,118,,,,,,118,,,,,,,,,118,,,,,118,118,118", "118,,118,118,118,118,,,,,118,118,,,,119,119,119,118,119,118,118,118", "119,119,,,,119,,119,119,119,119,119,119,119,,,,,,119,119,119,119,119", "119,119,,,119,,,,,,,119,,,119,119,119,119,119,119,119,119,,119,119,119", ",119,119,119,119,119,,,,,,,,,,,,,,,,,,,,119,,,119,,,119,119,,,119,,", ",,,119,,,,,,,,,119,,,,,119,119,119,119,,119,119,119,119,,,,,119,119", ",,,120,120,120,119,120,119,119,119,120,120,,,,120,,120,120,120,120,120", "120,120,,,,,,120,120,120,120,120,120,120,,,120,,,,,,,120,,,120,120,120", "120,120,120,120,120,,120,120,120,,120,120,120,120,120,,,,,,,,,,,,,,", ",,,,,120,,,120,,,120,120,,,120,,,,,,120,,,,,,,,,120,,,,,120,120,120", "120,,120,120,120,120,,,,,120,120,,,,121,121,121,120,121,120,120,120", "121,121,,,,121,,121,121,121,121,121,121,121,,,,,,121,121,121,121,121", "121,121,,,121,,,,,,,121,,,121,121,121,121,121,121,121,121,,121,121,121", ",121,121,121,121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,", ",,,121,,,,,,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121", ",,,,,,121,,121,121,121,122,122,122,122,122,,,,122,122,,,,122,,122,122", "122,122,122,122,122,,,,,,122,122,122,122,122,122,122,,,122,,,,,,122", "122,,122,122,122,122,122,122,122,122,122,,122,122,122,,122,122,122,122", "122,,,,,,,,,,,,,,,,,,,,122,,,122,,,122,122,,,122,,122,,,,122,,,,,,,", ",122,,,,,122,122,122,122,,122,122,122,122,,,,,122,122,,,,845,845,845", "122,845,122,122,122,845,845,,,,845,,845,845,845,845,845,845,845,,,,", ",845,845,845,845,845,845,845,,,845,,,,,,,845,,,845,845,845,845,845,845", "845,845,,845,845,845,,845,845,845,845,845,,,,,,,,,,,,,,,,,,,,845,,,845", ",,845,845,,,845,,845,,,,845,,,,,,,,,845,,,,,845,845,845,845,,845,845", "845,845,,,,,845,845,,,,842,842,842,845,842,845,845,845,842,842,,,,842", ",842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842,842,,,842", ",,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,,842,842,842", "842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,,,,842,,,,,,", ",,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,,,,210,210,210", "842,210,842,842,842,210,210,,,,210,,210,210,210,210,210,210,210,,,,", ",210,210,210,210,210,210,210,,,210,,,,,,,210,,,210,210,210,210,210,210", "210,210,,210,210,210,,210,210,210,210,210,,,,,,,,,,,,,,,,,,,,210,,,210", ",,210,210,,,210,,210,,,,210,,,,,,,,,210,,,,,210,210,210,210,,210,210", "210,210,,,,,210,210,,,,211,211,211,210,211,210,210,210,211,211,,,,211", ",211,211,211,211,211,211,211,,,,,,211,211,211,211,211,211,211,,,211", ",,,,,,211,,,211,211,211,211,211,211,211,211,,211,211,211,,211,211,211", "211,211,,,,,,,,,,,,,,,,,,,,211,,,211,,,211,211,,,211,,211,,,,211,,,", ",,,,,211,,,,,211,211,211,211,,211,211,211,211,,,,,211,211,,,,212,212", "212,211,212,211,211,211,212,212,,,,212,,212,212,212,212,212,212,212", ",,,,,212,212,212,212,212,212,212,,,212,,,,,,,212,,,212,212,212,212,212", "212,212,212,,212,212,212,,212,212,212,212,212,,,,,,,,,,,,,,,,,,,,212", ",,212,,,212,212,,,212,,,,,,212,,,,,,,,,212,,,,,212,212,212,212,,212", "212,212,212,,,,,212,212,,,,213,213,213,212,213,212,212,212,213,213,", ",,213,,213,213,213,213,213,213,213,,,,,,213,213,213,213,213,213,213", ",,213,,,,,,,213,,,213,213,213,213,213,213,213,213,,213,213,213,,213", "213,213,213,213,,,,,,,,,,,,,,,,,,,,213,,,213,,,213,213,,,213,,,,,,213", ",,,,,,,,213,,,,,213,213,213,213,,213,213,213,213,,,,,213,213,,,,214", "214,214,213,214,213,213,213,214,214,,,,214,,214,214,214,214,214,214", "214,,,,,,214,214,214,214,214,214,214,,,214,,,,,,,214,,,214,214,214,214", "214,214,214,214,,214,214,214,,214,214,214,214,214,,,,,,,,,,,,,,,,,,", ",214,,,214,,,214,214,,,214,,,,,,214,,,,,,,,,214,,,,,214,214,214,214", ",214,214,214,214,,,,,214,214,,,,215,215,215,214,215,214,214,214,215", "215,,,,215,,215,215,215,215,215,215,215,,,,,,215,215,215,215,215,215", "215,,,215,,,,,,,215,,,215,215,215,215,215,215,215,215,215,215,215,215", ",215,215,215,215,215,,,,,,,,,,,,,,,,,,,,215,,,215,,,215,215,,,215,,215", ",215,,215,,,215,,,,,,215,,,,,215,215,215,215,,215,215,215,215,,,,,215", "215,,,,220,220,220,215,220,215,215,215,220,220,,,,220,,220,220,220,220", "220,220,220,,,,,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220", "220,220,220,220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,", ",,,,,,,,,220,,,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220", "220,220,,220,220,220,220,,,,,220,220,,,,221,221,221,220,221,220,220", "220,221,221,,,,221,,221,221,221,221,221,221,221,,,,,,221,221,221,221", "221,221,221,,,221,,,,,,,221,,,221,221,221,221,221,221,221,221,,221,221", "221,,221,221,221,221,221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221", ",,,,,221,,,,,,,,,221,,,,,221,221,221,221,,221,221,221,221,,,,,221,221", ",,,222,222,222,221,222,221,221,221,222,222,,,,222,,222,222,222,222,222", "222,222,,,,,,222,222,222,222,222,222,222,,,222,,,,,,,222,,,222,222,222", "222,222,222,222,222,,222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,", ",,,,,222,,,222,,,222,222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222", "222,,222,222,222,222,,,,,222,222,222,,,692,692,692,222,692,222,222,222", "692,692,,,,692,,692,692,692,692,692,692,692,,,,,,692,692,692,692,692", "692,692,,,692,,,,,,,692,,,692,692,692,692,692,692,692,692,,692,692,692", ",692,692,692,692,692,,,,,,,,,,,,,,,,,,,,692,,,692,,,692,692,,,692,,692", ",,,692,,,,,,,,,692,,,,,692,692,692,692,,692,692,692,692,,,,,692,692", ",,,687,687,687,692,687,692,692,692,687,687,,,,687,,687,687,687,687,687", "687,687,,,,,,687,687,687,687,687,687,687,,,687,,,,,,,687,,,687,687,687", "687,687,687,687,687,,687,687,687,,687,687,,,687,,,,,,,,,,,,,,,,,,,,687", ",,687,,,687,687,,,687,,,,,,,,,,,,,,,,,,,,687,687,687,687,,687,687,687", "687,,,,,687,687,,,,676,676,676,687,676,687,687,687,676,676,,,,676,,676", "676,676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,", ",676,,,676,676,676,676,676,676,676,676,,676,676,676,,676,676,,,676,", ",,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,,,,,,,,,,,,,,,,,,,676,676", "676,676,,676,676,676,676,,,,,676,676,,,,673,673,673,676,673,676,676", "676,673,673,,,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673", "673,673,673,,,673,,,,,,,673,,,673,673,673,673,673,673,673,673,,673,673", "673,,673,673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673", ",,,,,673,,,,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673", ",,,321,321,321,673,321,673,673,673,321,321,,,,321,,321,321,321,321,321", "321,321,,,,,,321,321,321,321,321,321,321,,,321,,,,,,,321,,,321,321,321", "321,321,321,321,321,,321,321,321,,321,321,,,321,,,,,,,,,,,,,,,,,,,,321", ",,321,,,321,321,,,321,,,,,,,,,,,,,,,,,,,,321,321,321,321,,321,321,321", "321,,,,,321,321,,,,670,670,670,321,670,321,321,321,670,670,,,,670,,670", "670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670,,,,,", ",670,,,670,670,670,670,670,670,670,670,,670,670,670,,670,670,670,670", "670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,,,,,670,,,,,,,,,670", ",,,,670,670,670,670,,670,670,670,670,,,,,670,670,,,,646,646,646,670", "646,670,670,670,646,646,,,,646,,646,646,646,646,646,646,646,,,,,,646", "646,646,646,646,646,646,,,646,,,,,,,646,,,646,646,646,646,646,646,646", "646,,646,646,646,,646,646,646,646,646,,,,,,,,,,,,,,,,,,,,646,,,646,", ",646,646,,,646,,,,,,646,,,,,,,,,646,,,,,646,646,646,646,,646,646,646", "646,,,,,646,646,,,,328,328,328,646,328,646,646,646,328,328,,,,328,,328", "328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328,,,,,", ",328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328,328", "328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,,,,328", ",,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,330,330,330,328", "330,328,328,328,330,330,,,,330,,330,330,330,330,330,330,330,,,,,,330", "330,330,330,330,330,330,,,330,,,,,,,330,,,330,330,330,330,330,330,330", "330,,330,330,330,,330,330,330,330,330,,,,,,,,,,,,,,,,,,,,330,,,330,330", ",330,330,,,330,,,,,,330,,,,,,,,,330,,,,,330,330,330,330,,330,330,330", "330,,,,,330,330,,,,645,645,645,330,645,330,330,330,645,645,,,,645,,645", "645,645,645,645,645,645,,,,,,645,645,645,645,645,645,645,,,645,,,,,", ",645,,,645,645,645,645,645,645,645,645,,645,645,645,,645,645,645,645", "645,,,,,,,,,,,,,,,,,,,,645,,,645,,,645,645,,,645,,,,,,645,,,,,,,,,645", ",,,,645,645,645,645,,645,645,645,645,,,,,645,645,,,,641,641,641,645", "641,645,645,645,641,641,,,,641,,641,641,641,641,641,641,641,,,,,,641", "641,641,641,641,641,641,,,641,,,,,,,641,,,641,641,641,641,641,641,641", "641,,641,641,641,,641,641,641,641,641,,,,,,,,,,,,,,,,,,,,641,,,641,", ",641,641,,,641,,,,,,641,,,,,,,,,641,,,,,641,641,641,641,,641,641,641", "641,,,,,641,641,,,,640,640,640,641,640,641,641,641,640,640,,,,640,,640", "640,640,640,640,640,640,,,,,,640,640,640,640,640,640,640,,,640,,,,,", ",640,,,640,640,640,640,640,640,640,640,,640,640,640,,640,640,640,640", "640,,,,,,,,,,,,,,,,,,,,640,,,640,,,640,640,,,640,,,,,,640,,,,,,,,,640", ",,,,640,640,640,640,,640,640,640,640,,,,,640,640,,,,639,639,639,640", "639,640,640,640,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639", "639,639,639,639,639,639,,,639,,,,,,,639,,,639,639,639,639,639,639,639", "639,639,639,639,639,,639,639,639,639,639,,,,,,,,,,,,,,,,,,,,639,,,639", ",,639,639,,,639,,,,639,,639,,,639,,,,,,639,,,,,639,639,639,639,,639", "639,639,639,,,,,639,639,,,,638,638,638,639,638,639,639,639,638,638,", ",,638,,638,638,638,638,638,638,638,,,,,,638,638,638,638,638,638,638", ",,638,,,,,,,638,,,638,638,638,638,638,638,638,638,638,638,638,638,,638", "638,638,638,638,,,,,,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638", ",638,,,638,,,,,,638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638", ",,,635,635,635,638,635,638,638,638,635,635,,,,635,,635,635,635,635,635", "635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635,635,635", "635,635,635,635,635,,635,635,635,,635,635,635,635,635,,,,,,,,,,,,,,", ",,,,,635,,,635,,,635,635,,,635,,,,,,635,,,,,,,,,635,,,,,635,635,635", "635,,635,635,635,635,,,,,635,635,,,,,,,635,,635,635,635,634,634,634", "634,634,,,,634,634,,,,634,,634,634,634,634,634,634,634,,,,,,634,634", "634,634,634,634,634,,,634,,,,,,634,634,,634,634,634,634,634,634,634", "634,634,,634,634,634,,634,634,634,634,634,,,,,,,,,,,,,,,,,,,,634,,,634", ",,634,634,,,634,,634,,,,634,,,,,,,,,634,,,,,634,634,634,634,,634,634", "634,634,,,,,634,634,,,,631,631,631,634,631,634,634,634,631,631,,,,631", ",631,631,631,631,631,631,631,,,,,,631,631,631,631,631,631,631,,,631", ",,,,,,631,,,631,631,631,631,631,631,631,631,631,631,631,631,,631,631", "631,631,631,,,,,,,,,,,,,,,,,,,,631,,,631,,,631,631,,,631,,631,,631,", "631,,,631,,,,,,631,,,,,631,631,631,631,,631,631,631,631,,,,,631,631", ",,,630,630,630,631,630,631,631,631,630,630,,,,630,,630,630,630,630,630", "630,630,,,,,,630,630,630,630,630,630,630,,,630,,,,,,,630,,,630,630,630", "630,630,630,630,630,,630,630,630,,630,630,630,630,630,,,,,,,,,,,,,,", ",,,,,630,,,630,,,630,630,,,630,,,,,,630,,,,,,,,,630,,,,,630,630,630", "630,,630,630,630,630,,,,,630,630,,,,629,629,629,630,629,630,630,630", "629,629,,,,629,,629,629,629,629,629,629,629,,,,,,629,629,629,629,629", "629,629,,,629,,,,,,,629,,,629,629,629,629,629,629,629,629,,629,629,629", ",629,629,629,629,629,,,,,,,,,,,,,,,,,,,,629,,,629,,,629,629,,,629,,629", ",,,629,,,,,,,,,629,,,,,629,629,629,629,,629,629,629,629,,,,,629,629", ",,,347,347,347,629,347,629,629,629,347,347,,,,347,,347,347,347,347,347", "347,347,,,,,,347,347,347,347,347,347,347,,,347,,,,,,,347,,,347,347,347", "347,347,347,347,347,,347,347,347,,347,347,347,347,347,,,,,,,,,,,,,,", ",,,,,347,,,347,,,347,347,,,347,,,,,,347,,,,,,,,,347,,,,,347,347,347", "347,,347,347,347,347,,,,,347,347,,,,597,597,597,347,597,347,347,347", "597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597", "597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,597,597,597", "597,,597,597,597,597,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597", ",597,,597,,597,,,597,,,,,,597,,,,,597,597,597,597,,597,597,597,597,", ",,,597,597,,,,587,587,587,597,587,597,597,597,587,587,,,,587,,587,587", "587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587,,,,,,,587", ",,587,587,587,587,587,587,587,587,587,587,587,587,,587,587,587,587,587", ",,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,,587,,,587,,", ",,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587,,,,586,586,586", "587,586,587,587,587,586,586,,,,586,,586,586,586,586,586,586,586,,,,", ",586,586,586,586,586,586,586,,,586,,,,,,,586,,,586,586,586,586,586,586", "586,586,,586,586,586,,586,586,586,586,586,,,,,,,,,,,,,,,,,,,,586,,,586", ",,586,586,,,586,,586,,,,586,,,,,,,,,586,,,,,586,586,586,586,,586,586", "586,586,,,,,586,586,,,,368,368,368,586,368,586,586,586,368,368,,,,368", ",368,368,368,368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368", ",,,,,,368,,,368,368,368,368,368,368,368,368,,368,368,368,,368,368,368", "368,368,,,,,,,,,,,,,,,,,,,,368,,,368,,,368,368,,,368,,,,,,368,,,,,,", ",,368,,,,,368,368,368,368,,368,368,368,368,,,,,368,368,,,,540,540,540", "368,540,368,368,368,540,540,,,,540,,540,540,540,540,540,540,540,,,,", ",540,540,540,540,540,540,540,,,540,,,,,,,540,,,540,540,540,540,540,540", "540,540,540,540,540,540,,540,540,540,540,540,,,,,,,,,,,,,,,,,,,,540", ",,540,,,540,540,,,540,,,,,,540,,,540,,,,,,540,,,,,540,540,540,540,,540", "540,540,540,,,,,540,540,,,,537,537,537,540,537,540,540,540,537,537,", ",,537,,537,537,537,537,537,537,537,,,,,,537,537,537,537,537,537,537", ",,537,,,,,,,537,,,537,537,537,537,537,537,537,537,537,537,537,537,,537", "537,537,537,537,,,,,,,,,,,,,,,,,,,,537,,,537,,,537,537,,,537,,537,,", ",537,,,537,,,,,,537,,,,,537,537,537,537,,537,537,537,537,,,,,537,537", ",,,531,531,531,537,531,537,537,537,531,531,,,,531,,531,531,531,531,531", "531,531,,,,,,531,531,531,531,531,531,531,,,531,,,,,,,531,,,531,531,531", "531,531,531,531,531,,531,531,531,,531,531,531,531,531,,,,,,,,,,,,,,", ",,,,,531,,,531,,,531,531,,,531,,,,,,531,,,,,,,,,531,,,,,531,531,531", "531,,531,531,531,531,,,,,531,531,,,,526,526,526,531,526,531,531,531", "526,526,,,,526,,526,526,526,526,526,526,526,,,,,,526,526,526,526,526", "526,526,,,526,,,,,,,526,,,526,526,526,526,526,526,526,526,,526,526,526", ",526,526,526,526,526,,,,,,,,,,,,,,,,,,,,526,,,526,,,526,526,,,526,,", ",,,526,,,,,,,,,526,,,,,526,526,526,526,,526,526,526,526,,,,,526,526", ",,,525,525,525,526,525,526,526,526,525,525,,,,525,,525,525,525,525,525", "525,525,,,,,,525,525,525,525,525,525,525,,,525,,,,,,,525,,,525,525,525", "525,525,525,525,525,,525,525,525,,525,525,525,525,525,,,,,,,,,,,,,,", ",,,,,525,,,525,,,525,525,,,525,,,,,,525,,,,,,,,,525,,,,,525,525,525", "525,,525,525,525,525,,,,,525,525,,,,522,522,522,525,522,525,525,525", "522,522,,,,522,,522,522,522,522,522,522,522,,,,,,522,522,522,522,522", "522,522,,,522,,,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522", ",522,522,,,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,,,", ",,,,,,,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,516,516,516", "522,516,522,522,522,516,516,,,,516,,516,516,516,516,516,516,516,,,,", ",516,516,516,516,516,516,516,,,516,,,,,,,516,,,516,516,516,516,516,516", "516,516,516,516,516,516,,516,516,516,516,516,,,,,,,,,,,,,,,,,,,,516", ",,516,,,516,516,,,516,,516,,516,,516,,,516,,,,,,516,,,,,516,516,516", "516,,516,516,516,516,,,,,516,516,,,,384,384,384,516,384,516,516,516", "384,384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384", "384,384,,,384,,,,,,,384,,,384,384,384,384,384,384,384,384,,384,384,384", ",384,384,384,384,384,,,,,,,,,,,,,,,,,,,,384,,,384,,,384,384,,,384,,", ",,,384,,,,,,,,,384,,,,,384,384,384,384,,384,384,384,384,,,,,384,384", ",,,514,514,514,384,514,384,384,384,514,514,,,,514,,514,514,514,514,514", "514,514,,,,,,514,514,514,514,514,514,514,,,514,,,,,,,514,,,514,514,514", "514,514,514,514,514,,514,514,514,,514,514,,,514,,,,,,,,,,,,,,,,,,,,514", ",,514,,,514,514,,,514,,,1025,,1025,1025,1025,1025,1025,,,,,,,,,1025", ",514,514,514,514,,514,514,514,514,,,,,514,514,,,,,,1025,514,,514,514", "514,506,506,506,506,506,1025,1025,,506,506,1025,,,506,,506,506,506,506", "506,506,506,,,,,,506,506,506,506,506,506,506,,,506,,,,,,506,506,506", "506,506,506,506,506,506,506,506,506,,506,506,506,,506,506,506,506,506", ",,,,,,,,,,,,,,,,,,,506,,,506,,,506,506,,,506,,506,,,,506,,,,,,,,,506", ",,,,506,506,506,506,,506,506,506,506,,,,,506,506,,,,,,506,506,,506,506", "506,500,500,500,,500,,,,500,500,,,,500,,500,500,500,500,500,500,500", ",,,,,500,500,500,500,500,500,500,,,500,,,,,,,500,,,500,500,500,500,500", "500,500,500,,500,500,500,,500,500,500,500,500,,,,,,,,,,,,,,,,,,,,500", ",,500,,,500,500,,,500,,,,,,500,,,,,,,,,500,,,,,500,500,500,500,,500", "500,500,500,,,,,500,500,,,,498,498,498,500,498,500,500,500,498,498,", ",,498,,498,498,498,498,498,498,498,,,,,,498,498,498,498,498,498,498", ",,498,,,,,,,498,,,498,498,498,498,498,498,498,498,498,498,498,498,,498", "498,498,498,498,,,,,,,,,,,,,,,,,,,,498,,,498,,,498,498,,,498,,,,498", ",498,,,498,,,,,,498,,,,,498,498,498,498,,498,498,498,498,,,,,498,498", ",,,496,496,496,498,496,498,498,498,496,496,,,,496,,496,496,496,496,496", "496,496,,,,,,496,496,496,496,496,496,496,,,496,,,,,,,496,,,496,496,496", "496,496,496,496,496,496,496,496,496,,496,496,496,496,496,,,,,,,,,,,", ",,,,,,,,496,,,496,,,496,496,,,496,,496,,496,,496,,,496,,,,,,496,,,,", "496,496,496,496,,496,496,496,496,,,,,496,496,,,,459,459,459,496,459", "496,496,496,459,459,,,,459,,459,459,459,459,459,459,459,,,,,,459,459", "459,459,459,459,459,,,459,,,,,,,459,,,459,459,459,459,459,459,459,459", ",459,459,459,,459,459,459,459,459,,,,,,,,,,,,,,,,,,,,459,,,459,,,459", "459,,,459,,,,,,459,,,,,,,,,459,,,,,459,459,459,459,,459,459,459,459", ",,,,459,459,,,,458,458,458,459,458,459,459,459,458,458,,,,458,,458,458", "458,458,458,458,458,,,,,,458,458,458,458,458,458,458,,,458,,,,,,,458", ",,458,458,458,458,458,458,458,458,,458,458,458,,458,458,458,458,458", ",,,,,,,,,,,,,,,,,,,458,,,458,,,458,458,,,458,,,,,,458,,,,,,,,,458,,", ",,458,458,458,458,,458,458,458,458,,,,,458,458,,,,457,457,457,458,457", "458,458,458,457,457,,,,457,,457,457,457,457,457,457,457,,,,,,457,457", "457,457,457,457,457,,,457,,,,,,,457,,,457,457,457,457,457,457,457,457", ",457,457,457,,457,457,457,457,457,,,,,,,,,,,,,,,,,,,,457,,,457,,,457", "457,,,457,,,,,,457,,,,,,,,,457,,,,,457,457,457,457,,457,457,457,457", ",,,,457,457,,,,455,455,455,457,455,457,457,457,455,455,,,,455,,455,455", "455,455,455,455,455,,,,,,455,455,455,455,455,455,455,,,455,,,,,,,455", ",,455,455,455,455,455,455,455,455,455,455,455,455,,455,455,455,455,455", ",,,,,,,,,,,,,,,,,,,455,,,455,,,455,455,,,455,,455,,455,,455,,,455,,", ",,,455,,,,,455,455,455,455,,455,455,455,455,,,,,455,455,,,,412,412,412", "455,412,455,455,455,412,412,,,,412,,412,412,412,412,412,412,412,,,,", ",412,412,412,412,412,412,412,,,412,,,,,,,412,,,412,412,412,412,412,412", "412,412,,412,412,412,,412,412,412,412,412,,,,,,,,,,,,,,,,,,,,412,,,412", ",,412,412,,,412,,,,,,412,,,,,,,,,412,,,,,412,412,412,412,,412,412,412", "412,,,,,412,412,,,,304,304,304,412,304,412,412,412,304,304,,,,304,,304", "304,304,304,304,304,304,,,,,,304,304,304,304,304,304,304,,,304,,,,,", ",304,,,304,304,304,304,304,304,304,304,,304,304,304,,304,304,,,304,", ",,,,,,,,,,,,,,,,,,304,,,304,,,304,304,,,304,,,999,,999,999,999,999,999", ",,,,,,,,999,,304,304,304,304,,304,304,304,304,,,,,304,304,,,,304,,999", "304,,304,304,304,709,709,709,,709,999,999,,709,709,999,,,709,,709,709", "709,709,709,709,709,,,,,,709,709,709,709,709,709,709,,,709,,,,,,,709", ",,709,709,709,709,709,709,709,709,,709,709,709,,709,709,709,709,709", ",,,,,,,,,,,,,,,,,,,709,,,709,,,709,709,,,709,,,,,,709,,,,,,,,,709,,", ",,709,709,709,709,,709,709,709,709,,,,,709,709,,,,,,,709,,709,709,709", "8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,,8,8,8,8,8,8,8,8,8", "8,,,,,,8,8,8,8,8,8,8,8,8,8,,8,,,,,,,,8,8,,8,8,8,8,8,8,8,,,8,8,,,,8,8", "8,8,,,,,,,,,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,8,,,8,8,,,,,,,,,,,,,,8,9", "9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,,,,9,9,9,9,9,9,9,9,9,9", ",,,,,9,9,9,9,9,9,9,9,9,,,9,,,,,,,,9,9,,9,9,9,9,9,9,9,,,9,9,,,,9,9,9", "9,,,,,,,,,,,,,,9,9,,9,9,9,9,9,9,9,9,9,9,9,9,,,9,9,,,,,,,,,,,,,,9,626", "626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626", "626,626,626,626,626,626,,,,626,626,626,626,626,626,626,626,626,626,", ",,,,626,626,626,626,626,626,626,626,626,,,626,,,,,,,,626,626,,626,626", "626,626,626,626,626,,,626,626,,,,626,626,626,626,,,,,,,,,,,,,,626,626", ",626,626,626,626,626,626,626,626,626,626,626,626,,,626,626,,,,,,,,,", ",,,,626,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403", "403,403,403,403,403,403,403,403,403,,,,403,403,403,403,403,403,403,403", "403,403,,,,,,403,403,403,403,403,403,403,403,403,,,403,,,,,,,,403,403", ",403,403,403,403,403,403,403,,,403,403,,,,403,403,403,403,,,,,,,,,,", ",,,403,403,,403,403,403,403,403,403,403,403,403,403,403,403,,,403,403", ",,,,,,,,,,,,,403,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72", "72,72,72,72,72,72,72,,,,72,72,72,72,72,72,72,72,72,72,,,,,,72,72,72", "72,72,72,72,72,72,72,72,72,,72,,,,,,72,72,,72,72,72,72,72,72,72,,,72", "72,,,,72,72,72,72,,,,,,72,,,,,,,,72,72,,72,72,72,72,72,72,72,72,72,72", "72,72,,,72,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748", "748,748,748,748,748,748,748,748,748,,,,748,748,748,748,748,748,748,748", "748,748,,,,,,748,748,748,748,748,748,748,748,748,,,748,,,,,,,,748,748", ",748,748,748,748,748,748,748,,,748,748,,,,748,748,748,748,798,,798,798", "798,798,798,,,,,,,748,748,798,748,748,748,748,748,748,748,748,748,748", "748,748,,,748,,,,,,,798,,980,980,,,980,,,798,798,798,798,,980,980,798", "980,980,980,980,980,980,980,,,980,980,,,,980,980,980,980,,,,,,980,,798", ",,,,,980,980,,980,980,980,980,980,980,980,980,980,980,980,980,527,527", "980,,527,,,,,,,,527,527,,527,527,527,527,527,527,527,,,527,527,,,,527", "527,527,527,,,,,,527,,,,,,,,527,527,,527,527,527,527,527,527,527,527", "527,527,527,527,518,518,527,,518,,,,,,,,518,518,,518,518,518,518,518", "518,518,,,518,518,,,,518,518,518,518,,,,,,518,,,,,,,,518,518,,518,518", "518,518,518,518,518,518,518,518,518,518,981,981,518,,981,,,,,,,,981", "981,,981,981,981,981,981,981,981,,,981,981,,,,981,981,981,981,,,,,,981", ",,,,,,,981,981,,981,981,981,981,981,981,981,981,981,981,981,981,454", "454,981,,454,,,,,,,,454,454,,454,454,454,454,454,454,454,,,454,454,", ",,454,454,454,454,,,,,,454,,,,,,,,454,454,,454,454,454,454,454,454,454", "454,454,454,454,454,265,265,454,,265,,,,,,,,265,265,,265,265,265,265", "265,265,265,,,265,265,,,,265,265,265,265,,,,,,,,,,,,,,265,265,,265,265", "265,265,265,265,265,265,265,265,265,265,976,976,265,,976,,,,,,,,976", "976,,976,976,976,976,976,976,976,,,976,976,,,,976,976,976,976,,,,,,976", ",,,,,,,976,976,,976,976,976,976,976,976,976,976,976,976,976,976,528", "528,976,,528,,,,,,,,528,528,,528,528,528,528,528,528,528,,,528,528,", ",,528,528,528,528,,,,,,528,,,,,,,,528,528,,528,528,528,528,528,528,528", "528,528,528,528,528,595,595,528,,595,,,,,,,,595,595,,595,595,595,595", "595,595,595,,,595,595,,,,595,595,595,595,,,,,,595,,,,,,,,595,595,,595", "595,595,595,595,595,595,595,595,595,595,595,596,596,595,,596,,,,,,,", "596,596,,596,596,596,596,596,596,596,,,596,596,,,,596,596,596,596,,", ",,,596,,,,,,,,596,596,,596,596,596,596,596,596,596,596,596,596,596,596", "517,517,596,,517,,,,,,,,517,517,,517,517,517,517,517,517,517,,,517,517", ",,,517,517,517,517,,,,,,517,,,,,,,,517,517,,517,517,517,517,517,517", "517,517,517,517,517,517,633,633,517,,633,,,,,,,,633,633,,633,633,633", "633,633,633,633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633", ",633,633,633,633,633,633,633,633,633,633,633,633,632,632,633,,632,,", ",,,,,632,632,,632,632,632,632,632,632,632,,,632,632,,,,632,632,632,632", ",,,,,632,,,,,,,,632,632,,632,632,632,632,632,632,632,632,632,632,632", "632,453,453,632,,453,,,,,,,,453,453,,453,453,453,453,453,453,453,,,453", "453,,,,453,453,453,453,,,,,,453,,,,,,,,453,453,,453,453,453,453,453", "453,453,453,453,453,453,453,588,588,453,,588,,,,,,,,588,588,,588,588", "588,588,588,588,588,,,588,588,,,,588,588,588,588,,,,,,588,,,,,,,,588", "588,,588,588,588,588,588,588,588,588,588,588,588,588,216,216,588,,216", ",,,,,,,216,216,,216,216,216,216,216,216,216,,,216,216,,,,216,216,216", "216,,,,,,216,,,,,,,,216,216,,216,216,216,216,216,216,216,216,216,216", "216,216,217,217,216,,217,,,,,,,,217,217,,217,217,217,217,217,217,217", ",,217,217,,,,217,217,217,217,,,,,,217,,,,,,,,217,217,,217,217,217,217", "217,217,217,217,217,217,217,217,589,589,217,,589,,,,,,,,589,589,,589", "589,589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,", ",589,589,,589,589,589,589,589,589,589,589,589,589,589,589,,926,589,926", "926,926,926,926,,997,,997,997,997,997,997,926,,,,,,,,997,,894,,894,894", "894,894,894,,,,,,926,,,894,,,,,997,926,926,926,926,,,,926,997,997,997", "997,,,,997,894,,746,,746,746,746,746,746,894,894,894,894,,,,894,746", ",747,,747,747,747,747,747,,545,,545,545,545,545,545,747,,,,,746,,,545", ",,,,,746,746,746,746,,,,746,747,,,,,,,,545,747,747,747,747,,,,747,545", "545,545,545,,,703,545,703,703,703,703,703,1001,,1001,1001,1001,1001", "1001,1003,703,1003,1003,1003,1003,1003,987,1001,987,987,987,987,987", ",1003,,,,,,,987,703,,,,,,,1001,,703,703,703,703,,1003,,703,,1001,1001", ",987,,1001,,1003,1003,,,,1003,,987,987,,,343,987,343,343,343,343,343", ",705,,705,705,705,705,705,343,,,,,,,,705,,928,,928,928,928,928,928,", ",,,,343,343,,928,,,,,705,343,343,343,343,,,,343,705,705,705,705,,,,705", "928,,,,,,,,,928,928,928,928,,,,928"]; + racc_action_check = (arr = $$$('::', 'Array').$new(24615, nil)); idx = 0; - $send(clist, 'each', [], (TMP_Ruby23_5 = function(str){var self = TMP_Ruby23_5.$$s || this, TMP_6; -if (str == null) str = nil; - return $send(str.$split(",", -1), 'each', [], (TMP_6 = function(i){var self = TMP_6.$$s || this, $writer = nil; -if (i == null) i = nil; + $send(clist, 'each', [], ($Ruby25$5 = function(str){var self = $Ruby25$5.$$s || this, $$6; + + + + if (str == null) { + str = nil; + }; + return $send(str.$split(",", -1), 'each', [], ($$6 = function(i){var self = $$6.$$s || this, $writer = nil; + + + if (i == null) { + i = nil; + }; if ($truthy(i['$empty?']())) { - } else { + } else { $writer = [idx, i.$to_i()]; $send(arr, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; - return (idx = $rb_plus(idx, 1));}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6))}, TMP_Ruby23_5.$$s = self, TMP_Ruby23_5.$$arity = 1, TMP_Ruby23_5)); - racc_action_pointer = [1637, 33, nil, 81, nil, 5976, 1388, -51, 23086, 23214, -11, nil, 50, 117, 572, -81, 105, 309, nil, -71, 6107, 2057, 230, nil, -62, nil, -8, 742, 852, 6238, 6369, 6500, nil, 1777, 6631, 6762, nil, 134, 282, 352, 247, 332, 6901, 7032, 7163, 191, 574, nil, nil, nil, nil, nil, nil, nil, nil, nil, 962, nil, -80, 7294, 7425, 4, nil, 7556, 7687, nil, nil, 7818, 7957, 8088, 8219, 23598, nil, nil, nil, nil, nil, 223, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0, nil, nil, 112, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 354, nil, 8358, nil, nil, nil, nil, 8497, 8628, 8759, 8890, 9029, 1917, nil, 576, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, 2057, 9160, 9291, 9422, 23772, 23833, nil, nil, 9553, 9684, 9815, 9946, 10077, 10208, nil, nil, 576, -54, 138, 307, 166, 241, 309, nil, 10339, 2197, 310, 10470, 10601, 10732, 10863, 10994, 11125, 11256, 11387, 11518, 11649, 11780, 11911, 12042, 12173, 12304, 12435, 12566, 12697, 12828, 12959, 13090, 13221, 13352, 13483, 13614, 13745, nil, nil, 23894, nil, nil, 318, 13876, 14007, nil, nil, nil, nil, nil, nil, nil, 14138, nil, 2197, nil, 297, 325, nil, 14269, 373, 14400, nil, nil, 14531, 14662, nil, nil, 228, nil, 14801, 1441, 358, 338, 2337, 353, 408, 377, 14932, 2477, 615, 645, 714, 473, 790, nil, 441, 417, 33, nil, nil, nil, 476, 360, 453, 15071, nil, 472, 522, 822, nil, 526, nil, 15202, 2617, 15333, 465, nil, -73, 146, 506, 489, 387, 523, nil, nil, 1505, 346, -1, 11, 15464, 15595, 298, 603, 498, -18, 11, 824, 584, 25, 618, nil, nil, 342, 434, -21, nil, 900, nil, 541, 15726, nil, nil, nil, 194, 230, 379, 413, 486, 510, 577, 578, 582, nil, 619, nil, 15857, nil, 272, 456, 459, 465, 497, -41, -35, 501, nil, nil, nil, nil, nil, nil, nil, nil, 537, 23342, nil, nil, nil, nil, 544, nil, nil, 535, 15988, 551, nil, nil, 1777, 563, nil, 568, 590, 481, 552, 1098, nil, nil, nil, 222, 334, 638, nil, nil, 1230, 1366, nil, 2337, nil, 587, nil, nil, 1637, nil, nil, nil, nil, -35, nil, 650, 23955, 24016, 16119, 197, 16250, 16381, 16512, 4017, 4157, 623, 662, 677, 678, 679, 682, 1518, 5697, 1470, 4297, 1181, 1315, 4437, 4577, 4717, 4857, 4997, 5137, 5277, 1051, 1249, 5417, 5557, 2477, -54, 1502, nil, nil, nil, nil, 629, nil, -53, -10, 636, nil, nil, 16643, nil, 16774, nil, 16905, nil, 363, nil, nil, nil, 17044, 1507, 2757, 642, 640, nil, nil, 644, 17183, 650, 17314, 24077, 24138, 930, 704, nil, 17445, 661, nil, 17576, 17707, 24199, 24260, 2617, 17838, 788, 790, 570, 715, nil, 17969, nil, nil, 18100, nil, nil, nil, nil, 24749, nil, 689, 694, nil, 695, 697, 700, nil, nil, nil, nil, nil, nil, nil, nil, 691, 749, nil, nil, 18231, nil, nil, nil, 788, nil, nil, nil, 790, nil, nil, 792, 2897, 845, nil, 3037, 62, 147, 842, 853, 18362, 18493, 24321, 24382, 27, nil, nil, 932, nil, 24443, 24504, 18624, nil, nil, 250, 3177, 774, nil, -33, nil, nil, nil, 717, nil, nil, nil, 751, nil, nil, 388, nil, 390, nil, nil, 737, nil, 742, nil, nil, nil, 23470, nil, 747, 18755, 18886, 619, 787, 19017, 19148, 19279, 19410, 786, nil, nil, 19541, 19672, 789, nil, 19803, 19934, nil, nil, 217, 301, 466, 604, 756, 1917, 755, nil, 1466, nil, 3317, 863, 6, 160, nil, 3457, 3597, nil, 763, nil, 810, 20065, nil, nil, 20196, nil, 785, -80, 20327, 767, nil, 772, 123, 180, 814, 248, 1106, 815, 772, 20458, 2757, 846, 214, 900, 20589, nil, 786, nil, 396, 37, 803, 697, nil, nil, 537, 24757, nil, 24774, nil, 6809, nil, 20720, nil, 856, nil, 804, 335, 808, nil, nil, nil, nil, 650, nil, 926, nil, nil, nil, nil, 934, nil, 26, 817, 68, 93, 151, 185, 20851, 1066, 1143, nil, 819, 3737, 20982, nil, 942, 3877, 24813, 24830, 23711, nil, nil, nil, nil, nil, nil, 4017, nil, nil, nil, nil, nil, nil, nil, 823, 21113, 2897, 21244, nil, 834, nil, 3037, nil, 3177, nil, nil, 3317, nil, 3457, nil, 3597, 21375, 21506, 21637, 21768, 343, 21899, 835, 839, nil, 840, 847, 848, nil, 877, 861, 857, 852, 22030, nil, nil, 987, nil, nil, 4157, 884, 991, nil, nil, nil, nil, 873, 236, nil, nil, 1000, nil, 4297, 877, 925, nil, nil, 923, nil, nil, 4437, 4577, 925, 884, nil, nil, nil, 886, 887, nil, 888, 889, nil, 891, nil, nil, 896, 1162, 914, 735, nil, 1039, nil, 22161, 1042, 4717, 4857, nil, 22292, 4997, 152, 181, nil, 1044, 327, 5137, nil, 1045, 927, 366, nil, 934, 930, nil, 3737, 22423, 22554, 3877, 1022, nil, nil, 24838, nil, 24890, nil, 8266, nil, nil, 957, 1076, 22685, 934, 1022, nil, 971, nil, nil, nil, 5277, nil, nil, 32, 22816, nil, nil, 973, 1081, nil, nil, 24898, nil, 14979, nil, 24915, nil, 24954, nil, nil, nil, nil, 398, 1028, 967, nil, 33, nil, 1092, 1093, nil, 303, nil, nil, nil, 1094, nil, nil, nil, 1020, nil, 980, nil, nil, 982, 985, 986, 987, nil, 995, nil, 421, nil, nil, nil, 966, 24565, nil, nil, nil, 5417, 34, 35, 1003, 1077, 36, nil, nil, nil, 1003, 1009, 1011, 1013, 1014, 1223, 1015, 1437, 5557, nil, nil, nil, nil, nil, 5697, nil, 5837, nil, 24971, nil, 24978, nil, 24995, nil, 25034, nil, nil, nil, 1332, 1062, 1063, 1151, 22947, 24626, 24687, 42, 25051, nil, nil, nil, nil, 4097, 1027, 719, 1152, 1153, 1030, 1046, 1051, 1053, nil, nil, 1059, 98, 102, 111, 138, 1060, 1064, nil, nil, nil, 25058, nil, nil, nil, nil, 145, nil, 1069, nil]; - racc_action_default = [-3, -596, -1, -582, -4, -596, -7, -596, -596, -596, -596, -29, -596, -596, -596, -279, -596, -40, -43, -584, -596, -48, -50, -51, -52, -56, -256, -256, -256, -293, -328, -329, -68, -11, -72, -80, -82, -596, -486, -487, -596, -596, -596, -596, -596, -584, -237, -270, -271, -272, -273, -274, -275, -276, -277, -278, -570, -281, -283, -595, -560, -301, -389, -596, -596, -306, -309, -582, -596, -596, -596, -596, -330, -331, -427, -428, -429, -430, -431, -452, -434, -435, -454, -456, -439, -444, -448, -450, -466, -454, -468, -470, -471, -472, -473, -568, -475, -476, -569, -478, -479, -480, -481, -482, -483, -484, -485, -490, -491, -596, -2, -583, -591, -592, -593, -6, -596, -596, -596, -596, -596, -3, -17, -596, -111, -112, -113, -114, -115, -116, -117, -118, -119, -123, -124, -125, -126, -127, -128, -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, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -22, -120, -11, -596, -596, -246, -596, -596, -580, -581, -596, -596, -596, -596, -596, -584, -585, -47, -596, -486, -487, -596, -279, -596, -596, -229, -596, -11, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, -396, -398, -596, -578, -579, -57, -246, -596, -300, -402, -411, -413, -63, -408, -64, -584, -65, -238, -251, -260, -260, -255, -596, -261, -596, -452, -562, -596, -596, -66, -67, -582, -12, -596, -15, -596, -70, -11, -584, -596, -73, -76, -11, -88, -89, -596, -596, -96, -293, -296, -584, -596, -328, -329, -332, -409, -596, -78, -596, -84, -290, -469, -596, -214, -215, -230, -596, -11, -596, -584, -239, -588, -588, -596, -596, -588, -596, -302, -303, -518, -49, -596, -596, -596, -596, -582, -596, -583, -486, -487, -596, -596, -279, -596, -342, -343, -106, -107, -596, -109, -596, -279, -494, -596, -486, -487, -321, -111, -112, -153, -154, -155, -171, -176, -183, -186, -323, -596, -558, -596, -432, -596, -596, -596, -596, -596, -596, -596, -596, 1021, -5, -594, -23, -24, -25, -26, -27, -596, -596, -19, -20, -21, -121, -596, -30, -39, -266, -596, -596, -265, -31, -196, -584, -247, -260, -260, -571, -572, -256, -406, -573, -574, -572, -571, -256, -405, -407, -573, -574, -37, -204, -38, -596, -41, -42, -194, -261, -44, -45, -46, -584, -299, -596, -596, -596, -246, -290, -596, -596, -596, -205, -206, -207, -208, -209, -210, -211, -212, -216, -217, -218, -219, -220, -221, -222, -223, -224, -225, -226, -227, -228, -231, -232, -233, -234, -584, -378, -256, -571, -572, -54, -58, -584, -257, -378, -378, -584, -295, -252, -596, -253, -596, -258, -596, -262, -596, -565, -567, -10, -583, -14, -3, -584, -69, -288, -85, -74, -596, -584, -246, -596, -596, -95, -596, -469, -596, -81, -86, -596, -596, -596, -596, -235, -596, -419, -596, -284, -596, -240, -590, -589, -242, -590, -291, -292, -561, -390, -518, -393, -557, -557, -501, -503, -503, -503, -517, -519, -520, -521, -522, -523, -524, -525, -526, -596, -528, -530, -532, -537, -539, -540, -542, -547, -549, -550, -552, -553, -554, -596, -11, -333, -334, -11, -596, -596, -596, -596, -596, -246, -596, -596, -290, -314, -106, -107, -108, -596, -596, -246, -317, -492, -596, -11, -496, -325, -584, -433, -453, -458, -596, -460, -436, -455, -596, -457, -438, -596, -441, -596, -443, -446, -596, -447, -596, -467, -8, -18, -596, -28, -269, -596, -596, -410, -596, -248, -250, -596, -596, -59, -245, -403, -596, -596, -61, -404, -596, -596, -298, -586, -571, -572, -571, -572, -584, -194, -596, -379, -584, -381, -11, -53, -399, -378, -243, -11, -11, -294, -260, -259, -263, -596, -563, -564, -596, -13, -596, -71, -596, -77, -83, -584, -571, -572, -244, -575, -94, -596, -79, -596, -203, -213, -584, -595, -595, -282, -584, -287, -588, -596, -584, -596, -499, -500, -596, -596, -510, -596, -513, -596, -515, -596, -344, -596, -346, -348, -355, -584, -531, -541, -551, -555, -595, -335, -595, -307, -336, -337, -310, -596, -313, -596, -584, -571, -572, -575, -289, -596, -106, -107, -110, -584, -11, -596, -319, -596, -11, -518, -518, -596, -559, -459, -462, -463, -464, -465, -11, -437, -440, -442, -445, -449, -451, -122, -267, -596, -197, -596, -587, -260, -33, -199, -34, -200, -60, -35, -202, -36, -201, -62, -195, -596, -596, -596, -596, -410, -596, -557, -557, -360, -362, -362, -362, -377, -596, -584, -383, -526, -534, -535, -545, -596, -401, -400, -11, -596, -596, -254, -264, -566, -16, -75, -410, -87, -297, -595, -340, -11, -420, -595, -421, -422, -596, -241, -391, -11, -11, -596, -557, -538, -556, -502, -503, -503, -529, -503, -503, -548, -503, -526, -543, -584, -596, -353, -596, -527, -596, -338, -596, -596, -11, -11, -312, -596, -11, -410, -596, -410, -596, -596, -11, -322, -596, -584, -596, -326, -596, -268, -32, -198, -249, -596, -236, -596, -358, -359, -368, -370, -596, -373, -596, -375, -380, -596, -596, -596, -533, -596, -397, -596, -412, -414, -9, -11, -426, -341, -596, -596, -424, -285, -596, -596, -392, -498, -596, -506, -596, -508, -596, -511, -596, -514, -516, -345, -347, -351, -596, -356, -304, -596, -305, -596, -596, -263, -595, -315, -318, -493, -596, -324, -495, -497, -496, -461, -557, -536, -361, -362, -362, -362, -362, -546, -362, -382, -584, -385, -387, -388, -544, -596, -290, -55, -425, -11, -486, -487, -596, -596, -279, -423, -394, -395, -503, -503, -503, -503, -349, -596, -354, -596, -11, -308, -311, -415, -416, -417, -11, -320, -11, -357, -596, -365, -596, -367, -596, -371, -596, -374, -376, -384, -596, -289, -575, -419, -246, -596, -596, -290, -596, -504, -507, -509, -512, -596, -352, -595, -596, -596, -362, -362, -362, -362, -386, -418, -584, -571, -572, -575, -289, -503, -350, -339, -316, -327, -596, -363, -366, -369, -372, -410, -505, -362, -364]; - clist = ["218,277,277,277,14,375,278,278,278,14,313,313,336,411,268,272,260,122", "205,2,681,210,329,575,222,433,325,6,127,127,834,262,6,222,222,222,330", "14,304,304,130,130,568,571,313,313,313,340,341,261,489,344,660,299,132", "132,417,423,515,264,271,273,221,480,657,111,657,222,222,481,408,222", "349,359,359,537,734,114,430,320,279,279,279,527,530,690,691,534,825", "822,584,127,110,660,316,115,440,713,716,902,391,392,393,394,295,297", "803,476,782,380,331,334,275,288,289,14,779,1,705,648,222,222,222,222", "14,14,544,653,654,621,780,929,381,933,935,361,365,837,6,387,396,114", "905,605,607,880,663,395,6,204,815,486,354,404,397,651,345,616,332,650", "524,377,333,337,352,588,376,326,327,684,328,342,838,343,502,839,725", "821,964,823,730,277,848,591,407,489,660,592,601,603,606,606,407,737", "601,920,781,783,418,657,657,389,932,535,812,338,687,475,483,484,14,222", "222,222,956,961,807,884,222,222,222,222,222,222,379,382,902,383,384", "442,385,427,386,929,739,14,744,277,277,1000,935,731,820,278,817,871", "277,667,642,403,409,278,717,923,,676,428,432,,,822,,,,,992,829,,,222", "222,,,688,,,313,26,222,,,,26,,,825,,,417,423,512,,,313,822,792,14,26", "268,,14,1008,272,,304,14,26,26,26,526,26,509,669,1009,494,,636,279,728", "499,,304,862,863,544,279,572,573,519,,14,222,,,925,,516,962,,,26,26", ",,26,,222,222,926,482,927,,498,513,,672,578,485,652,505,773,,655,891", "114,672,222,295,501,913,822,,295,507,,,950,,665,497,,720,222,262,668", ",,800,26,,,729,622,26,26,26,26,26,26,,,593,,,966,628,615,799,,,,633", "747,,747,298,277,127,114,,660,842,,,672,733,762,795,,130,418,767,672", "574,657,13,,,843,811,13,,,132,433,,,845,222,,627,,996,,,644,632,,,,", "339,339,427,628,339,,,13,967,,738,851,852,,,,,1001,,277,,313,26,26,26", "26,,,,313,26,26,26,26,26,26,418,,,,,14,,14,,,418,26,649,304,,222,,339", "339,339,339,304,664,,,,544,544,516,222,6,795,,427,,,516,,,,,,656,427", ",26,26,,808,13,,,277,,26,,719,,13,13,802,,277,,,,,846,,418,,850,26,", ",14,26,418,14,,,26,686,,222,833,,,,941,,402,,963,222,,,,14,700,,,427", ",791,,26,26,427,,,,958,,,,298,436,437,438,439,,26,26,,,622,,751,,784", ",222,222,,,,222,222,127,,222,26,,13,313,790,,809,714,714,130,,622,,14", "313,,26,,14,14,407,628,,132,633,732,810,13,758,760,784,304,853,763,765", "757,,432,,298,,,304,916,298,15,516,,,552,15,,,,,,,801,,,,,622,,,,,901", ",,844,622,,,,,847,,15,306,306,1017,26,,,,525,,13,918,222,,13,,,14,222", "13,,14,,339,339,,,700,,,831,14,,,,351,360,360,,,127,16,222,590,13,313", "16,784,,882,,,,886,,,,,26,594,26,,,,,,,,26,1002,,,,874,16,,,,15,14,856", ",26,995,335,,,15,15,,,,14,,,,,,,,14,14,,907,,,,,,353,,,672,,,,,,,,,776", ",222,,14,14,,26,14,,26,313,,,14,,26,,,,,,,313,,,26,,,,26,16,,38,,700", ",700,38,936,16,16,,816,,,,14,552,,,944,15,,,,,,,,,,,,26,26,38,302,302", "26,26,,,26,,977,,15,,,714,,680,915,,,,26,919,,,,26,26,,13,,13,,,,347", "363,363,363,,,14,954,700,405,,710,983,,712,277,,435,427,,,,,14,,16,", ",,14,778,14,418,,431,,,15,,,,15,,38,622,306,15,222,,,16,,38,38,,,,785", ",700,,700,306,26,13,427,,13,26,26,,15,26,,,,,,,824,,826,26,491,,493", ",13,495,496,,789,,26,,700,793,794,,,,,,,552,,552,,,,,16,,,922,16,,776", ",776,16,776,,694,696,698,,,,,26,,,,,,,,38,,,,,26,13,16,552,552,,13,13", "26,26,,777,,,,,,,,,38,,,,,,,,,,,26,,26,26,,,26,,,,339,,26,854,,,339", ",,,,,,818,,,818,,,,,,,,618,,,,,,,865,867,869,,26,,776,,776,38,776,13", "776,38,,13,,302,38,,877,,,,,13,,,15,,15,,,883,302,928,306,930,,,,888", "889,38,306,,,,,,776,,,786,,,,,,,785,951,785,952,26,953,909,910,,,912", ",,13,,658,,335,,661,339,26,,,,,13,26,552,26,,,,,13,13,,,15,,,15,16,", "16,26,,,,940,,,,,,658,,,335,13,13,15,,13,,,,,743,13,,,,39,,,,997,39", "998,,999,,706,,,,969,971,973,975,,976,,818,1007,,777,,777,,777,13,435", "785,,39,303,303,981,,,16,,,16,,,15,,,1019,,15,15,,993,893,895,,897,899", "994,900,,16,306,,,,,348,364,364,364,,752,306,,,658,335,,,,38,,38,1013", "1014,1015,1016,13,302,,,,,,,,302,,,,,,,431,13,,1020,,,39,13,796,13,", "797,,,16,39,39,,,16,16,,15,777,,777,15,777,,777,786,806,,786,,786,15", "786,,,,,,,,,,38,828,,38,,,,,,,,,,,,,,,,,777,,,38,,,,,,,,360,987,988", "989,990,,15,,,,,,,,,,,,16,15,,,16,39,855,,,15,15,,,,16,,,,,,,,,,,,,", ",,39,38,,,15,15,38,38,15,,1018,786,,786,15,786,,786,,302,,,,,,,,,,,302", ",16,,,,,,,360,,,,,,16,,15,,,,946,,16,16,786,,,,,,39,,,911,39,,,,303", "39,,,,,,,,16,16,,335,16,38,,,303,38,16,,,,,,,39,,38,,,,,,,,,,15,,,,", ",,,,,,,,,16,,,15,947,,,,,15,,15,,,,,,,363,,,,,,38,,,,,,,,,,,,,38,,,", ",,,,38,38,,,,,,,,,,,,,,16,,,,,,,,,,38,38,,,38,,,16,,,38,,,16,,16,,,", ",,,,,,,,,,,,,,,,363,,,,,,,,38,,,,942,,,,,,,,,,,,,,,,,,,,,,,,,,,,,39", ",39,,,,,,303,,,,,,,,303,,,,,,,,,,,38,,,,,,,,,,,,,,,,,38,,,,,,38,,38", ",,,,,,,,,,,,,,,,,39,,,39,,,,,,,,,,,,,,,,,,,,39,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,39,,,,,39,39,,,,,,,,,,,,303,,,,,", ",229,,,,303,,,,,276,276,276,,,,,,,,,,,322,323,324,,,,,,,,,,,,,,,276", "276,,,,,,,,,,,,,,,,,39,,,,39,,,,,,,,,,39,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,364,,,,,,39,,,,,,,,,,,,,39,,,,,,,,39,39,,,,,,,,,,,,,,", ",,,,,,,,,39,39,,,39,,,,,,39,,,,,,,,,,,,276,410,276,,,,,429,434,,,,,364", ",,,,,,,39,,229,,943,449,450,451,452,453,454,455,456,457,458,459,460", "461,462,463,464,465,466,467,468,469,470,471,472,473,474,,,,,,,276,276", ",,,,,,,276,,,,,,,276,,276,,,276,276,39,,,,,,,,,,,,,,,,,39,,,,,,39,,39", ",,,,,,,,,,,521,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,276,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", "276,,429,643,410,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,276,,276,,276", ",,,,,,,,,,,,,,,276,,,,,,,,,678,679,,,,,,,,,,276,,,276,,,,,,,,,,,,,,", ",,,,,,,,,,276,,,,,,,,,,,,,,,,,,,,276,276,,,,,,,,,,276,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,276,754,,,276,276,759,761,,,,764,766,,,643,768,,,,", ",,,,,,,,,,,,,,,,,,,276,,,276,,,,,,,,,,,,,,,,,,,,276,,,,,,,,,,,,,,,,", "276,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,276,,857,,", ",,,,,,,,,,,759,761,766,764,,860,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,276,,,,,,,,,,,,,,,,,276,857,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,276"]; - racc_goto_table = (arr = Opal.const_get_qualified('::', 'Array').$new(2923, nil)); + return (idx = $rb_plus(idx, 1));}, $$6.$$s = self, $$6.$$arity = 1, $$6));}, $Ruby25$5.$$s = self, $Ruby25$5.$$arity = 1, $Ruby25$5)); + racc_action_pointer = [4203, 573, nil, 189, nil, 11121, 1528, 931, 22475, 22603, 899, nil, 624, 608, -16, 566, 958, -82, nil, -74, 11383, 2803, 538, nil, 490, nil, 6, 1549, 1169, 11645, 11776, 11907, nil, 4063, 12038, 12169, nil, 390, 464, 460, 461, 283, 12570, 12701, 707, 12832, 235, 922, nil, nil, nil, nil, nil, nil, nil, nil, nil, 954, nil, 13233, 13364, 13495, -13, nil, 13626, 13757, nil, nil, 13888, 14027, 14158, 14289, 22987, nil, nil, nil, nil, nil, nil, 628, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 622, nil, nil, 734, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 195, nil, 14428, nil, nil, nil, nil, 14567, 14698, 14829, 14960, 15099, nil, 4763, nil, 727, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -32, nil, 5183, 15492, 15623, 15754, 15885, 16016, 16147, 24087, 24148, nil, nil, 16278, 16409, 16540, nil, nil, 892, 319, 374, 1039, 375, 950, 994, nil, 6520, 3783, 988, 6651, 6782, 6913, 7044, 7175, 7306, 7437, 7568, 7699, 7830, 7961, 8092, 8223, 8354, 8485, 8616, 8747, 8878, 9009, 9140, 9271, 9402, nil, nil, nil, nil, 9533, nil, nil, 23477, nil, nil, 977, 9795, 9926, nil, nil, nil, nil, nil, nil, nil, 10057, nil, 2383, nil, 936, 925, nil, 10188, 966, 10450, nil, nil, 10581, 10712, nil, nil, 112, nil, 10851, 1363, 928, 875, 2663, 886, 924, 880, 22197, 2243, 814, 372, 706, 937, 630, nil, 889, 834, -8, nil, nil, nil, 856, 264, 805, 17195, nil, 523, 836, 626, nil, 833, 17588, nil, 17719, 4623, 1244, 766, nil, -68, 397, 801, 779, 128, 803, nil, nil, 24485, 505, 48, 47, 19168, 3083, 1963, 49, 858, 735, 3, -18, 594, 813, 28, 839, nil, nil, 1024, 515, 298, nil, 560, nil, 747, 19692, nil, nil, nil, 486, 459, 422, 382, 380, 316, 275, 176, 152, nil, 140, nil, 20740, nil, 197, 260, 295, 301, 327, -30, -41, 308, nil, nil, nil, nil, nil, nil, nil, nil, 604, 22859, nil, nil, nil, nil, 608, nil, nil, 746, 22066, 792, nil, nil, 796, nil, 482, 145, 961, nil, nil, 1823, nil, nil, nil, nil, nil, 1963, 408, nil, 398, 368, 350, 354, 1281, nil, nil, nil, 512, 132, 859, nil, nil, 1681, 1413, nil, nil, nil, 55, nil, 788, 23965, 23416, 21935, 142, 21804, 21673, 21542, 3083, 3503, 973, 980, 615, 616, 618, 619, 4343, 4483, 1632, 3923, 4063, 2943, 3223, 3363, 3643, 1095, 574, 4203, 3783, 2103, 1498, nil, 1090, nil, nil, nil, nil, 581, nil, nil, nil, 583, nil, nil, 21411, nil, 21280, nil, 21149, nil, 257, nil, nil, nil, 21010, 1571, nil, 596, 604, nil, nil, 605, 20871, 609, 20609, 23782, 23294, 484, 656, nil, 20478, 630, nil, 20347, 20216, 23233, 23599, 1364, 2243, 20085, 762, 773, 654, 697, nil, 19954, nil, nil, 19823, nil, nil, nil, nil, 24360, nil, 656, 658, nil, 686, 689, 690, nil, nil, nil, nil, nil, nil, nil, nil, 682, 1173, nil, nil, 10982, nil, nil, nil, 780, nil, nil, nil, 782, nil, nil, 784, 4343, 837, nil, 5463, 61, 846, 847, 843, 853, 19561, 19430, 24026, 24209, 21, nil, nil, 590, nil, 23660, 23721, 19299, nil, nil, 151, 1823, 784, nil, -14, nil, nil, nil, 1092, nil, nil, nil, 756, nil, nil, 255, nil, 159, nil, nil, 748, nil, 754, nil, nil, nil, 22731, nil, 756, 19037, 18906, 18775, 23904, 23843, 18644, 18505, 304, 800, 18374, 18243, 18112, 17981, 801, nil, nil, 17850, 17457, 805, nil, nil, nil, 288, 292, 264, 402, 773, 772, 897, nil, 881, -15, nil, nil, 816, -56, 923, nil, 800, nil, 848, 17326, nil, nil, 17064, nil, -109, 16933, 808, nil, 813, 90, 166, 871, 165, 704, 883, 840, 16802, nil, 917, 157, 974, 16671, nil, nil, nil, 361, 0, 870, 1055, nil, nil, -36, 24412, nil, 24493, nil, 14336, nil, 22336, nil, 1279, nil, 869, 195, 875, nil, nil, nil, nil, 75, nil, 993, nil, nil, nil, nil, nil, 1000, nil, 14, 882, 30, 31, 33, 5, 3643, 847, 816, nil, 915, 3503, 10319, nil, 1046, 2803, 24335, 24352, 23100, nil, nil, nil, nil, nil, nil, 2523, nil, nil, nil, nil, nil, nil, nil, 937, 9664, 944, 404, 127, 844, 0, nil, 2523, 6389, nil, 959, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 6258, 6127, 5996, 5865, 360, 5734, nil, 43, nil, nil, 982, nil, nil, 23133, nil, 2943, nil, nil, nil, nil, 974, 136, nil, nil, 1101, nil, 2103, 977, 1025, nil, nil, nil, nil, nil, nil, 983, 1029, 987, nil, nil, nil, 989, 990, nil, 992, 995, nil, 1001, nil, nil, 1005, 741, -95, 1274, nil, 39, nil, 15361, 177, nil, 15230, 3923, 26, 203, nil, 212, 167, 3223, nil, 218, 121, 62, nil, 141, 178, 270, nil, nil, 13094, 12963, 2663, 5603, nil, 275, 279, nil, 291, 315, 317, nil, 354, 337, 339, 12439, nil, nil, nil, nil, 4903, nil, nil, -11, 12308, nil, 4483, 3363, 1259, nil, nil, 24296, nil, 1344, nil, 1612, nil, 12216, nil, nil, nil, nil, 259, 1478, 423, nil, 35, nil, nil, 313, nil, nil, nil, 549, nil, nil, nil, 471, nil, nil, 1058, nil, nil, 24271, nil, 24510, nil, 1087, nil, nil, 453, 11514, 924, 516, nil, 2383, -7, 20, 926, 521, -10, nil, 487, 597, -84, nil, nil, nil, 478, 480, 483, 500, 508, 1406, 518, 1380, 5323, nil, nil, nil, nil, 5043, 527, nil, nil, 535, 536, 537, 540, nil, 542, nil, 995, 23538, nil, 733, 11252, 23172, 23355, 32, nil, nil, nil, 1289, 24433, nil, nil, nil, nil, 1284, 693, 441, 841, nil, 24279, nil, 22244, nil, 24419, nil, 24426, nil, nil, 876, 895, nil, 868, 23, -1, 21, -9, nil, 972, 230, nil, nil, 255, 424, 436, 439, 46, nil, 20918, nil, nil, nil, nil, 553, nil]; + racc_action_default = [-3, -605, -1, -591, -4, -605, -7, -605, -605, -605, -605, -30, -605, -605, -34, -605, -605, -287, -46, -593, -605, -51, -55, -56, -57, -61, -264, -264, -264, -300, -329, -330, -73, -12, -77, -85, -87, -605, -495, -496, -605, -605, -605, -605, -223, -605, -593, -237, -278, -279, -280, -281, -282, -283, -284, -285, -286, -579, -289, -293, -604, -569, -308, -391, -605, -605, -53, -53, -591, -605, -605, -605, -605, -331, -332, -334, -436, -437, -438, -439, -440, -461, -443, -444, -463, -465, -448, -453, -457, -459, -475, -461, -477, -479, -480, -481, -482, -577, -484, -485, -578, -487, -488, -489, -490, -491, -492, -493, -494, -499, -500, -605, -2, -592, -600, -601, -602, -6, -605, -605, -605, -605, -605, -8, -3, -18, -605, -116, -117, -118, -119, -120, -121, -122, -123, -124, -128, -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, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -23, -125, -12, -605, -605, -605, -605, -605, -254, -605, -605, -589, -590, -605, -605, -593, -594, -50, -605, -495, -496, -605, -287, -605, -605, -229, -605, -12, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -605, -238, -239, -240, -241, -605, -400, -402, -605, -587, -588, -62, -254, -605, -307, -406, -415, -417, -68, -412, -69, -593, -70, -244, -259, -268, -268, -263, -605, -269, -605, -461, -571, -605, -605, -71, -72, -591, -13, -605, -16, -605, -75, -12, -593, -605, -78, -81, -12, -93, -94, -605, -605, -101, -300, -303, -593, -605, -329, -330, -333, -413, -605, -83, -605, -89, -297, -478, -605, -217, -218, -605, -230, -605, -12, -291, -593, -245, -597, -597, -605, -605, -597, -605, -309, -310, -527, -52, -605, -605, -605, -12, -12, -591, -605, -592, -495, -496, -605, -605, -287, -605, -344, -345, -111, -112, -605, -114, -605, -287, -503, -605, -495, -496, -322, -116, -117, -158, -159, -160, -176, -181, -188, -191, -324, -605, -567, -605, -441, -605, -605, -605, -605, -605, -605, -605, -605, 1032, -5, -603, -24, -25, -26, -27, -28, -605, -605, -20, -21, -22, -126, -605, -31, -33, -274, -605, -605, -273, -32, -605, -35, -605, -287, -43, -45, -199, -249, -269, -47, -48, -36, -200, -249, -593, -255, -268, -268, -580, -581, -264, -410, -582, -583, -581, -580, -264, -409, -411, -582, -583, -42, -207, -49, -593, -306, -605, -605, -605, -254, -297, -605, -605, -605, -208, -209, -210, -211, -212, -213, -214, -215, -219, -220, -221, -222, -224, -225, -226, -227, -228, -231, -232, -233, -234, -593, -242, -421, -264, -580, -581, -59, -63, -593, -265, -419, -421, -593, -302, -260, -605, -261, -605, -266, -605, -270, -605, -574, -576, -11, -592, -15, -17, -593, -74, -295, -90, -79, -605, -593, -254, -605, -605, -100, -605, -478, -605, -86, -91, -605, -605, -605, -605, -243, -235, -605, -428, -605, -593, -605, -246, -599, -598, -248, -599, -298, -299, -570, -392, -527, -395, -566, -566, -510, -512, -512, -512, -526, -528, -529, -530, -531, -532, -533, -534, -535, -605, -537, -539, -541, -546, -548, -549, -551, -556, -558, -559, -561, -562, -563, -605, -12, -335, -336, -12, -605, -605, -605, -605, -605, -605, -254, -605, -605, -297, -53, -111, -112, -113, -605, -605, -254, -318, -501, -605, -12, -505, -326, -593, -442, -462, -467, -605, -469, -445, -464, -605, -466, -447, -605, -450, -605, -452, -455, -605, -456, -605, -476, -9, -19, -605, -29, -277, -605, -605, -254, -605, -605, -605, -605, -414, -605, -256, -258, -605, -605, -64, -253, -407, -605, -605, -66, -408, -305, -595, -580, -581, -580, -581, -593, -605, -605, -422, -58, -403, -419, -251, -605, -380, -605, -301, -268, -267, -271, -605, -572, -573, -605, -14, -76, -605, -82, -88, -593, -580, -581, -252, -584, -99, -605, -84, -605, -206, -216, -593, -604, -604, -290, -292, -294, -597, -605, -593, -605, -508, -509, -605, -605, -519, -605, -522, -605, -524, -605, -346, -605, -348, -350, -357, -593, -540, -550, -560, -564, -604, -337, -604, -54, -338, -339, -313, -314, -605, -316, -605, -593, -580, -581, -584, -296, -12, -111, -112, -115, -593, -12, -605, -320, -605, -12, -527, -527, -605, -568, -468, -471, -472, -473, -474, -12, -446, -449, -451, -454, -458, -460, -127, -275, -605, -593, -580, -581, -581, -580, -44, -250, -605, -596, -268, -38, -202, -39, -203, -65, -40, -205, -41, -204, -67, -605, -605, -605, -605, -414, -605, -401, -380, -405, -404, -605, -416, -381, -593, -383, -12, -418, -262, -272, -575, -80, -414, -92, -304, -604, -342, -12, -429, -604, -430, -431, -247, -393, -396, -398, -385, -605, -566, -547, -565, -511, -512, -512, -538, -512, -512, -557, -512, -535, -552, -593, -605, -355, -605, -536, -605, -340, -605, -605, -315, -605, -12, -414, -605, -414, -605, -605, -12, -323, -605, -593, -605, -327, -605, -276, -414, -37, -201, -257, -605, -236, -12, -60, -566, -566, -362, -364, -364, -364, -379, -605, -593, -535, -543, -544, -554, -420, -10, -12, -435, -343, -605, -605, -433, -12, -12, -605, -394, -507, -605, -515, -605, -517, -605, -520, -605, -523, -525, -347, -349, -353, -605, -358, -311, -605, -312, -271, -604, -317, -319, -502, -605, -325, -504, -506, -505, -470, -423, -605, -360, -361, -370, -372, -605, -375, -605, -377, -382, -605, -605, -542, -605, -434, -12, -495, -496, -605, -605, -287, -432, -605, -605, -593, -387, -389, -390, -512, -512, -512, -512, -351, -605, -356, -605, -12, -424, -425, -426, -321, -12, -566, -545, -363, -364, -364, -364, -364, -555, -364, -384, -553, -605, -297, -428, -254, -605, -605, -297, -397, -399, -386, -605, -605, -513, -516, -518, -521, -605, -354, -604, -605, -359, -605, -367, -605, -369, -605, -373, -605, -376, -378, -296, -584, -427, -593, -580, -581, -584, -296, -388, -512, -352, -341, -328, -364, -364, -364, -364, -414, -514, -605, -365, -368, -371, -374, -364, -366]; + clist = ["221,216,334,303,381,130,130,264,16,266,272,276,341,16,533,281,281,281", "116,317,317,585,436,442,636,6,430,330,225,497,6,691,345,346,135,135", "350,225,225,225,428,16,308,308,546,822,448,414,415,344,344,348,349,344", "317,317,317,224,125,208,577,580,282,282,282,265,553,16,745,130,488,484", "225,225,302,671,225,355,365,365,489,320,123,116,332,324,397,398,399", "400,133,133,113,335,268,275,277,668,594,668,840,663,831,344,344,344", "344,421,112,821,421,2,715,299,561,301,421,671,536,539,948,16,543,283", "283,283,225,225,225,225,16,427,16,117,907,700,701,447,6,809,904,386", "800,523,869,615,617,401,389,6,950,393,872,390,336,339,279,292,293,657", "391,828,972,611,613,616,616,392,665,755,843,367,371,351,742,826,823", "966,750,497,661,1,626,723,827,328,829,403,337,410,360,207,674,660,882", "383,338,425,426,342,437,281,957,358,598,382,449,450,331,875,453,534", "333,741,446,1014,671,16,225,418,225,225,418,225,852,601,451,602,418", "225,225,972,748,920,874,402,876,947,544,668,668,395,16,413,413,950,698", "409,420,789,408,420,993,817,728,281,281,420,343,436,442,835,904,697", "281,889,655,890,553,965,866,795,869,806,869,302,869,225,225,873,968", "483,494,448,744,428,225,933,1016,317,524,831,491,517,520,492,792,960", "272,813,886,385,276,282,16,510,317,387,16,116,527,282,308,16,535,581", "561,388,,,,507,,682,,847,,679,,308,739,,344,682,849,,677,,,16,588,302", ",869,686,869,302,869,502,869,513,688,,600,,225,16,16,828,860,961,,,521", "283,116,,266,,604,,869,283,508,1017,951,225,,,,299,,509,506,828,299", "964,515,,582,583,758,225,758,682,,,490,731,505,130,,682,632,,493,,969", "740,970,893,637,,802,,,,,,,643,,,603,850,,648,,854,135,,,,,,,,437,436", "442,671,281,765,,779,846,,855,856,784,,446,,625,649,584,924,925,,,,828", "656,225,668,,776,778,643,553,553,781,783,,561,,561,1008,1019,816,,,830", "524,832,133,,,,,,524,,662,,,,666,805,317,,437,281,,642,,,317,,,647,437", ",675,16,446,690,561,561,678,802,,308,,225,446,421,,,814,308,,,,,916", "421,421,694,225,,421,421,,,,704,706,708,922,,,659,996,,,,775,777,,,", "780,782,,,,,,877,,,437,281,,871,736,,,,437,,962,281,,16,446,,16,,667", ",446,,,225,724,,862,,,938,,1023,,225,,,749,16,794,776,778,783,781,743", "437,281,720,730,,722,,130,959,,,,,,446,696,,,815,,637,,418,225,,,16", ",793,524,,995,418,418,,,135,418,418,,807,,,770,637,317,,,,561,643,420", "421,648,,952,317,953,,954,762,420,420,820,857,,420,420,308,,,,,861,862", ",,26,808,308,,877,26,877,,,,,,971,,973,133,710,851,,637,26,,,,,,839", ",637,26,26,26,413,26,344,,,,,774,,,,,,,,,,,,16,130,637,,,16,225,884", "26,16,,888,,26,26,,,26,,16,1015,,,,877,,824,,,824,1020,,1021,848,1022", "820,418,,,,,,682,,,,1009,,,,,,858,,,,,,1030,,,,26,,16,420,909,26,26", "26,26,26,29,26,,16,,29,895,897,,899,901,344,902,,,,,,,,29,,,903,,881", ",,,29,29,29,,29,225,,885,,16,,,820,710,918,16,837,,317,,,915,,,870,", "919,317,,16,29,,,,,29,29,,,29,,935,912,878,,,16,,,,941,,16,16,,,,26", "26,26,26,26,26,26,,,,,26,26,26,,,,317,,,,,937,,980,26,985,29,945,946", ",,29,29,29,29,29,,29,,975,,,,16,988,989,990,991,,,,,,,,927,929,931,", "26,26,437,281,,16,,,,26,16,446,,,,,446,978,,,,710,,710,,225,,26,637", ",,26,824,,,870,26,870,994,870,,,,,,,,,39,1024,,878,,39,878,,878,,878", ",,,26,29,29,29,29,29,29,29,,,,,29,29,29,,26,26,26,39,307,307,,,,,29", ",955,710,,998,1000,1002,1004,,1005,26,,,,,,,870,39,870,,870,,870,,,26", ",354,370,370,370,,,29,29,878,,878,,878,,878,29,,870,,,,,,,710,,710,1026", "1027,1028,1029,,,29,,,878,29,1031,,,,29,,39,,,,,,,,,39,,39,,,,,710,", ",,,,,,29,26,,,,,,,,,,,,,,,29,29,29,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,", ",,26,29,,,,,,,,,26,,,,,,,,,,39,,,,,26,,,,,,,,,,,,,,,,,,,,39,,,,,,,,", ",,,,,,,,,,,,,,,,,26,29,,26,,,,,,,26,,,,,,,,,,26,,,,26,,,,,,,,38,,,,39", "38,,,39,,,,307,39,,,,,,,29,26,26,,,26,,,,307,29,26,26,38,306,306,26", "26,,39,,,,,,29,,,,,,,,,,,39,39,,38,,,,,,,,,,353,369,369,369,,,,,,,,", ",,,,,,,,,,29,,,29,,,,,,,29,,,,,,,,,,29,,38,,29,,,,,,,38,,38,,,26,,,", ",26,26,,,26,,,,,,,,29,29,26,,29,,,,,,29,29,,,,29,29,,,26,,,,,,,,,,,", ",,,,,,,,,,340,,,,,,26,,,,,,,,,,,26,,,,,,,38,,,,,39,,,,,,,,307,,,,,,", ",307,,,26,38,,,26,,,,,,26,,,,,,,29,,,,,29,29,26,,29,,,,,,,,,17,29,,", ",17,26,,,,,,26,26,,,,39,29,,39,,,,,,,,38,,,,38,17,310,310,306,38,,,", "39,,,,,29,,,,,,,306,,,,29,,17,,26,,38,,,411,424,,357,366,366,,,39,,", ",,,38,38,26,,,,,26,29,,,,29,,,,,,29,,,,26,,,,,,,,,,29,17,,,307,,,,,", "17,,17,,,307,,29,,,,,,29,29,,,,,499,,501,,,503,504,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,39,,,,,39,,,29,39,13,,,,,13,,,,39,,,,,,,,,,29,,,,17,29,419", ",,419,,,,,13,419,,,,,29,,,,,,,,,17,,,,38,,39,,,,,13,306,,,,,39,,,306", "359,,,,,,,,,,,,,628,,,,,,,,,,,,,,,,,,39,,,,,,39,,,,17,,,13,17,,,,310", "17,39,,13,38,13,,38,,,,,,370,,,310,,39,,,,940,,39,39,17,,38,,,,,,,,", ",,,,,,17,17,,,669,,340,,672,,,15,,,,,15,,38,,,,,,,,370,,,,39,,,,,,,", ",,,,,,15,669,,13,340,416,,39,416,,,,39,,416,,306,,,,,,,,,,15,306,13", "716,,,,,,,,,,,,,,,,,,,,,424,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,,15,38,,,", "38,,,,15,13,15,,763,13,38,,,,13,,,669,340,,,,,,,,,,,17,,,,,,,,310,,", "13,,,,,310,,,,803,,,804,,,38,,13,13,,,,,,,,38,,,,,812,,,,,,,,,,,,,,", ",,834,,,15,,15,,,15,,,,17,38,15,17,,,,38,,,,,,,,,15,,,,,38,,,17,,,,", ",,754,,369,,,,,38,,,,939,859,38,38,,,,,,,,419,,,,17,,,,,,419,419,,,", "419,419,,,,,,,,,15,,,,15,,,,,15,,369,,,,38,,,,,,310,,,,,,,,,,,310,,", "15,38,13,,,,38,,,,,911,,,,,,15,15,,,,,,,,,,,340,,,,,,,,,,,,,,,,,17,", ",,,17,,,,17,,,,,,,,,,17,,,,,,,,13,,,13,,,,,,419,,,,,,,,,,,,,,,13,,,", ",,,,,,,,,17,,,,,,,,,,,17,,,,,416,,,,13,,,,,,416,416,,,,416,416,,,,,", ",,,,,,,,17,,,,,,17,,,,,,,,,,,,,15,17,,,,,,,,,,,,366,,,,,17,,,,943,,17", "17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,13,,,,13,,,366,,15,,17,15,", "13,,,,,,,,,,,,,,,,,416,17,15,,,,17,,,,,,,,,,,,,,,,,,,,,,13,,,15,,,,15", ",,,13,,15,15,,,,15,15,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,232,13,,,,,,", ",280,280,280,,,,13,,,,,,,326,327,,329,,,,,,,13,,,,944,,13,13,280,280", ",,,,,,,,,,,,,,,,15,,,,,15,,,,15,,,,,,,,,,15,,,,,,,,,,13,,,,,,,15,,,", ",,,,,,,,,,13,,,,,13,,,,,,,,,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,15,,,,,,15,,,,,,,,,,,,,,15,,280,423,,,429,280,,,,,429,,,,", "15,,,,,,15,15,232,,,460,461,462,463,464,465,466,467,468,469,470,471", "472,473,474,475,476,477,478,479,480,481,,,,,482,,,,,,,280,280,,,,,,", ",280,,15,,,,,280,,280,,,280,280,,,,,,,,,,15,,,,,15,,,,,,,,,,,,,,,,,", ",,,,529,,530,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,280,,429,429,429,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280,,280,,280", ",,,,,,,,,,,,,,,280,,,,,,,,,429,689,,,,,,,,,,,280,,,280,,,,,,,,,,,,,", ",,,,,,,,,,,280,,,,,,,,,,,,,,,,,,,,,280,280,,,,,,,,,,280,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,280,429,280,,,,771,,,280,280,429,429,,,,429,429,", ",,,,,,,,,,,,,,,,,,,,,,280,,,280,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,", ",,280,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,", ",,,429,,,,,,,,,,,,,429,429,429,429,,865,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,,,,,280,429,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280"]; + racc_goto_table = (arr = $$$('::', 'Array').$new(3567, nil)); idx = 0; - $send(clist, 'each', [], (TMP_Ruby23_7 = function(str){var self = TMP_Ruby23_7.$$s || this, TMP_8; -if (str == null) str = nil; - return $send(str.$split(",", -1), 'each', [], (TMP_8 = function(i){var self = TMP_8.$$s || this, $writer = nil; -if (i == null) i = nil; + $send(clist, 'each', [], ($Ruby25$7 = function(str){var self = $Ruby25$7.$$s || this, $$8; + + + + if (str == null) { + str = nil; + }; + return $send(str.$split(",", -1), 'each', [], ($$8 = function(i){var self = $$8.$$s || this, $writer = nil; + + + if (i == null) { + i = nil; + }; if ($truthy(i['$empty?']())) { - } else { + } else { $writer = [idx, i.$to_i()]; $send(arr, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; - return (idx = $rb_plus(idx, 1));}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8))}, TMP_Ruby23_7.$$s = self, TMP_Ruby23_7.$$arity = 1, TMP_Ruby23_7)); - clist = ["32,34,34,34,22,57,69,69,69,22,65,65,87,23,72,72,139,15,15,2,10,25,68", "93,22,18,32,7,58,58,91,25,7,22,22,22,69,22,22,22,61,61,90,90,65,65,65", "17,17,37,74,17,177,50,62,62,38,38,52,39,39,39,20,40,75,6,75,22,22,23", "28,22,22,22,22,138,97,96,28,64,71,71,71,70,70,122,122,70,173,168,55", "58,4,177,51,5,48,92,92,115,17,17,17,17,46,47,11,38,130,150,71,71,45", "45,45,22,127,1,117,41,22,22,22,22,22,22,162,41,41,24,128,174,151,132", "133,56,56,11,7,151,2,96,118,154,154,12,14,7,7,16,130,48,19,29,31,43", "4,63,67,73,8,85,86,89,94,95,98,99,100,101,102,103,104,105,48,106,107", "128,108,128,109,34,110,111,69,74,177,112,155,155,155,155,69,113,155", "114,119,125,72,75,75,5,131,134,135,136,137,140,142,143,22,22,22,22,118", "144,145,146,22,22,22,22,22,22,149,152,115,153,156,25,157,58,158,174", "159,22,160,34,34,132,133,161,166,69,170,130,34,52,23,20,20,69,93,171", ",52,20,20,,,168,,,,,118,117,,,22,22,,,138,,,65,42,22,,,,42,,,173,,,38", "38,32,,,65,168,41,22,42,72,,22,118,72,,22,22,42,42,42,32,42,25,23,91", "150,,48,71,55,7,,22,122,122,162,71,17,17,25,,22,22,,,127,,50,11,,,42", "42,,,42,,22,22,128,45,128,,6,64,,38,25,45,48,51,24,,48,122,96,38,22", "46,47,92,168,,46,47,,,128,,48,4,,23,22,25,48,,,24,42,,,23,32,42,42,42", "42,42,42,,,37,,,97,72,15,52,,,,72,155,,155,9,34,58,96,,177,90,,,38,8", "40,74,,61,72,40,38,4,75,21,,,24,70,21,,,62,18,,,24,22,,39,,128,,,32", "39,,,,,30,30,58,72,30,,,21,122,,48,138,138,,,,,10,,34,,65,42,42,42,42", ",,,65,42,42,42,42,42,42,72,,,,,22,,22,,,72,42,39,22,,22,,30,30,30,30", "22,2,,,,162,162,50,22,7,74,,58,,,50,,,,,,71,58,,42,42,,28,21,,,34,,42", ",69,,21,21,48,,34,,,,,8,,72,,8,42,,,22,42,72,22,,,42,71,,22,48,,,,90", ",9,,93,22,,,,22,116,,,58,,87,,42,42,58,,,,90,,,,9,30,30,30,30,,42,42", ",,32,,15,,32,,22,22,,,,22,22,58,,22,42,,21,65,139,,68,96,96,61,,32,", "22,65,,42,,22,22,69,72,,62,72,96,32,21,20,20,32,22,57,20,20,71,,20,", "9,,,22,8,9,26,50,,,167,26,,,,,,,50,,,,,32,,,,,48,,,17,32,,,,,17,,26", "26,26,24,42,,,,30,,21,48,22,,21,,,22,22,21,,22,,30,30,,,116,,,116,22", ",,,26,26,26,,,58,27,22,30,21,65,27,32,,68,,,,68,,,,,42,30,42,,,,,,,", "42,23,,,,22,27,,,,26,22,20,,42,8,66,,,26,26,,,,22,,,,,,,,22,22,,17,", ",,,,27,,,38,,,,,,,,,121,,22,,22,22,,42,22,,42,65,,,22,,42,,,,,,,65,", ",42,,,,42,27,,53,,116,,116,53,22,27,27,,121,,,,22,167,,,22,26,,,,,,", ",,,,,42,42,53,53,53,42,42,,,42,,32,,26,,,96,,30,96,,,,42,96,,,,42,42", ",21,,21,,,,53,53,53,53,,,22,116,116,66,,9,25,,9,34,,66,58,,,,,22,,27", ",,,22,126,22,72,,27,,,26,,,,26,,53,32,26,26,22,,,27,,53,53,,,,167,,116", ",116,26,42,21,58,,21,42,42,,26,42,,,,,,,126,,126,42,66,,66,,21,66,66", ",9,,42,,116,9,9,,,,,,,167,,167,,,,,27,,,121,27,,121,,121,27,121,,165", "165,165,,,,,42,,,,,,,,53,,,,,42,21,27,167,167,,21,21,42,42,,123,,,,", ",,,,53,,,,,,,,,,,42,,42,42,,,42,,,,30,,42,9,,,30,,,,,,,123,,,123,,,", ",,,,66,,,,,,,124,124,124,,42,,121,,121,53,121,21,121,53,,21,,53,53,", "9,,,,,21,,,26,,26,,,9,53,126,26,126,,,,9,9,53,26,,,,,,121,,,169,,,,", ",,167,126,167,126,42,126,9,9,,,9,,,21,,66,,66,,66,30,42,,,,,21,42,167", "42,,,,,21,21,,,26,,,26,27,,27,42,,,,9,,,,,,66,,,66,21,21,26,,21,,,,", "26,21,,,,54,,,,126,54,126,,126,,66,,,,124,124,124,124,,124,,123,126", ",123,,123,,123,21,66,167,,54,54,54,9,,,27,,,27,,,26,,,126,,26,26,,9", "165,165,,165,165,9,165,,27,26,,,,,54,54,54,54,,66,26,,,66,66,,,,53,", "53,124,124,124,124,21,53,,,,,,,,53,,,,,,,27,21,,124,,,54,21,66,21,,66", ",,27,54,54,,,27,27,,26,123,,123,26,123,,123,169,66,,169,,169,26,169", ",,,,,,,,,53,66,,53,,,,,,,,,,,,,,,,,123,,,53,,,,,,,,26,165,165,165,165", ",26,,,,,,,,,,,,27,26,,,27,54,66,,,26,26,,,,27,,,,,,,,,,,,,,,,54,53,", ",26,26,53,53,26,,165,169,,169,26,169,,169,,53,,,,,,,,,,,53,,27,,,,,", ",26,,,,,,27,,26,,,,26,,27,27,169,,,,,,54,,,66,54,,,,54,54,,,,,,,,27", "27,,66,27,53,,,54,53,27,,,,,,,54,,53,,,,,,,,,,26,,,,,,,,,,,,,,27,,,26", "27,,,,,26,,26,,,,,,,53,,,,,,53,,,,,,,,,,,,,53,,,,,,,,53,53,,,,,,,,,", ",,,,27,,,,,,,,,,53,53,,,53,,,27,,,53,,,27,,27,,,,,,,,,,,,,,,,,,,,53", ",,,,,,,53,,,,53,,,,,,,,,,,,,,,,,,,,,,,,,,,,,54,,54,,,,,,54,,,,,,,,54", ",,,,,,,,,,53,,,,,,,,,,,,,,,,,53,,,,,,53,,53,,,,,,,,,,,,,,,,,,54,,,54", ",,,,,,,,,,,,,,,,,,,54,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,54,,,,,54,54,,,,,,,,,,,,54,,,,,,,33,,,,54,,,,,33,33,33,,,", ",,,,,,,33,33,33,,,,,,,,,,,,,,,33,33,,,,,,,,,,,,,,,,,54,,,,54,,,,,,,", ",,54,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,54,,,,,,54,,,,,,,,,,,", ",54,,,,,,,,54,54,,,,,,,,,,,,,,,,,,,,,,,,54,54,,,54,,,,,,54,,,,,,,,,", ",,33,33,33,,,,,33,33,,,,,54,,,,,,,,54,,33,,54,33,33,33,33,33,33,33,33", "33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,,,,,,,33,33,,", ",,,,,33,,,,,,,33,,33,,,33,33,54,,,,,,,,,,,,,,,,,54,,,,,,54,,54,,,,,", ",,,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33,,33", "33,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33,,33,,33,,,,,,,,,,,,", ",,,33,,,,,,,,,33,33,,,,,,,,,,33,,,33,,,,,,,,,,,,,,,,,,,,,,,,,33,,,,", ",,,,,,,,,,,,,,,33,33,,,,,,,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33,33", ",,33,33,33,33,,,,33,33,,,33,33,,,,,,,,,,,,,,,,,,,,,,,,33,,,33,,,,,,", ",,,,,,,,,,,,,33,,,,,,,,,,,,,,,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,33,,33,,,,,,,,,,,,,,33,33,33,33,,33,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33,,,,,,,,,,,", ",,,,,33,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,33"]; - racc_goto_check = (arr = Opal.const_get_qualified('::', 'Array').$new(2923, nil)); + return (idx = $rb_plus(idx, 1));}, $$8.$$s = self, $$8.$$arity = 1, $$8));}, $Ruby25$7.$$s = self, $Ruby25$7.$$arity = 1, $Ruby25$7)); + clist = ["34,32,77,56,63,64,64,141,29,32,81,81,96,29,9,39,39,39,104,73,73,101", "43,43,31,7,30,34,29,83,7,11,18,18,68,68,18,29,29,29,70,29,29,29,140", "122,70,23,23,25,25,36,36,25,73,73,73,21,16,16,99,99,78,78,78,42,170", "29,105,64,45,43,29,29,10,185,29,29,29,29,30,57,8,104,7,71,18,18,18,18", "67,67,6,78,44,44,44,84,61,84,100,46,181,25,25,25,25,19,4,132,19,2,118", "52,175,53,19,185,79,79,134,29,79,80,80,80,29,29,29,29,29,27,29,5,119", "123,123,27,7,12,116,158,130,58,122,162,162,7,161,7,135,158,128,164,80", "80,51,51,51,144,165,176,182,163,163,163,163,166,144,168,12,62,62,4,169", "174,178,179,167,83,48,1,69,37,129,74,129,26,76,24,20,17,15,82,13,94", "95,25,25,98,81,39,119,102,103,106,25,25,107,132,32,108,109,110,64,134", "185,29,29,29,29,29,29,29,111,112,54,113,29,29,29,182,114,115,120,2,126", "133,136,84,84,5,29,78,78,135,140,21,21,31,10,21,119,137,101,39,39,21", "138,43,43,118,116,139,39,142,30,143,170,122,130,46,122,31,122,10,122", "29,29,129,128,145,54,70,9,70,29,132,119,73,56,181,147,32,34,148,151", "152,81,153,154,157,81,78,29,54,73,159,29,104,32,78,29,29,34,18,175,160", ",,,7,,43,,31,,30,,29,61,,25,43,31,,58,,,29,32,10,,122,58,122,10,122", "158,122,57,70,,25,,29,29,29,176,31,12,,,71,80,104,,32,,25,,122,80,8", "100,129,29,,,,52,,53,6,176,52,105,53,,10,10,163,29,163,43,,,51,30,4", "64,,43,32,,51,,129,30,129,123,34,,83,,,,,,,81,,,42,9,,81,,9,68,,,,,", ",,81,43,43,185,39,30,,45,99,,140,140,45,,64,,16,54,4,123,123,,,,176", "34,29,84,,70,70,81,170,170,70,70,,175,,175,11,129,79,,,127,56,127,67", ",,,,,56,,54,,,,54,58,73,,81,39,,44,,,73,,,44,81,,54,29,64,25,175,175", "54,83,,29,,29,64,19,,,23,29,,,,,9,19,19,54,29,,19,19,,,,173,173,173", "9,,,44,123,,,,27,27,,,,27,27,,,,,,175,,,81,39,,127,36,,,,81,,101,39", ",29,64,,29,,80,,64,,,29,104,,70,,,99,,31,,29,,,54,29,96,70,70,70,70", "104,81,39,10,78,,10,,64,99,,,,,,64,80,,,77,,34,,29,29,,,29,,141,56,", "9,29,29,,,68,29,29,,56,,,7,34,73,,,,175,81,21,19,81,,127,73,127,,127", "16,21,21,34,63,,21,21,29,,,,,27,70,,,47,54,29,,175,47,175,,,,,,127,", "127,67,117,18,,34,47,,,,,,54,,34,47,47,47,78,47,25,,,,,80,,,,,,,,,,", ",29,64,34,,,29,29,77,47,29,,77,,47,47,,,47,,29,127,,,,175,,124,,,124", "127,,127,10,127,34,29,,,,,,43,,,,30,,,,,,10,,,,,,127,,,,47,,29,21,18", "47,47,47,47,47,50,47,,29,,50,173,173,,173,173,25,173,,,,,,,,50,,,54", ",10,,,,50,50,50,,50,29,,10,,29,,,34,117,54,29,117,,73,,,104,,,124,,104", "73,,29,50,,,,,50,50,,,50,,29,10,177,,,29,,,,29,,29,29,,,,47,47,47,47", "47,47,47,,,,,47,47,47,,,,73,,,,,10,,32,47,34,50,10,10,,,50,50,50,50", "50,,50,,29,,,,29,173,173,173,173,,,,,,,,125,125,125,,47,47,81,39,,29", ",,,47,29,64,,,,,64,10,,,,117,,117,,29,,47,34,,,47,124,,,124,47,124,10", "124,,,,,,,,,60,173,,177,,60,177,,177,,177,,,,47,50,50,50,50,50,50,50", ",,,,50,50,50,,47,47,47,60,60,60,,,,,50,,117,117,,125,125,125,125,,125", "47,,,,,,,124,60,124,,124,,124,,,47,,60,60,60,60,,,50,50,177,,177,,177", ",177,50,,124,,,,,,,117,,117,125,125,125,125,,,50,,,177,50,125,,,,50", ",60,,,,,,,,,60,,60,,,,,117,,,,,,,,50,47,,,,,,,,,,,,,,,50,50,50,,,,,", ",,,,,,,,,,,,,50,,,,,,,,,,,,,,,47,50,,,,,,,,,47,,,,,,,,,,60,,,,,47,,", ",,,,,,,,,,,,,,,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,47,50,,47,,,,,,,47,,,,", ",,,,,47,,,,47,,,,,,,,59,,,,60,59,,,60,,,,60,60,,,,,,,50,47,47,,,47,", ",,60,50,47,47,59,59,59,47,47,,60,,,,,,50,,,,,,,,,,,60,60,,59,,,,,,,", ",,59,59,59,59,,,,,,,,,,,,,,,,,,,50,,,50,,,,,,,50,,,,,,,,,,50,,59,,50", ",,,,,,59,,59,,,47,,,,,47,47,,,47,,,,,,,,50,50,47,,50,,,,,,50,50,,,,50", "50,,,47,,,,,,,,,,,,,,,,,,,,,,75,,,,,,47,,,,,,,,,,,47,,,,,,,59,,,,,60", ",,,,,,,60,,,,,,,,60,,,47,59,,,47,,,,,,47,,,,,,,50,,,,,50,50,47,,50,", ",,,,,,,33,50,,,,33,47,,,,,,47,47,,,,60,50,,60,,,,,,,,59,,,,59,33,33", "33,59,59,,,,60,,,,,50,,,,,,,59,,,,50,,33,,47,,59,,,75,75,,33,33,33,", ",60,,,,,,59,59,47,,,,,47,50,,,,50,,,,,,50,,,,47,,,,,,,,,,50,33,,,60", ",,,,,33,,33,,,60,,50,,,,,,50,50,,,,,75,,75,,,75,75,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,60,,,,,60,,,50,60,22,,,,,22,,,,60,,,,,,,,,,50,,,,33,50,33", ",,33,,,,,22,33,,,,,50,,,,,,,,,33,,,,59,,60,,,,,22,59,,,,,60,,,59,22", ",,,,,,,,,,,,75,,,,,,,,,,,,,,,,,,60,,,,,,60,,,,33,,,22,33,,,,33,33,60", ",22,59,22,,59,,,,,,60,,,33,,60,,,,60,,60,60,33,,59,,,,,,,,,,,,,,,33", "33,,,75,,75,,75,,,28,,,,,28,,59,,,,,,,,60,,,,60,,,,,,,,,,,,,,28,75,", "22,75,22,,60,22,,,,60,,22,,59,,,,,,,,,,28,59,22,75,,,,,,,,,,,,,,,,,", ",,,75,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,28,59,,,,59,,,,28,22,28,,75,22", "59,,,,22,,,75,75,,,,,,,,,,,33,,,,,,,,33,,,22,,,,,33,,,,75,,,75,,,59", ",22,22,,,,,,,,59,,,,,75,,,,,,,,,,,,,,,,,75,,,28,,28,,,28,,,,33,59,28", "33,,,,59,,,,,,,,,28,,,,,59,,,33,,,,,,,33,,59,,,,,59,,,,59,75,59,59,", ",,,,,,33,,,,33,,,,,,33,33,,,,33,33,,,,,,,,,28,,,,28,,,,,28,,59,,,,59", ",,,,,33,,,,,,,,,,,33,,,28,59,22,,,,59,,,,,75,,,,,,28,28,,,,,,,,,,,75", ",,,,,,,,,,,,,,,,33,,,,,33,,,,33,,,,,,,,,,33,,,,,,,,22,,,22,,,,,,33,", ",,,,,,,,,,,,,22,,,,,,,,,,,,,33,,,,,,,,,,,33,,,,,22,,,,22,,,,,,22,22", ",,,22,22,,,,,,,,,,,,,,33,,,,,,33,,,,,,,,,,,,,28,33,,,,,,,,,,,,33,,,", ",33,,,,33,,33,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22,,,,,22,,,,22,,,33", ",28,,33,28,,22,,,,,,,,,,,,,,,,,22,33,28,,,,33,,,,,,,,,,,,,,,,,,,,,,22", ",,28,,,,28,,,,22,,28,28,,,,28,28,,,,,,,,,,,,,,,,,,,,,,,,,,,22,,,,,35", "22,,,,,,,,35,35,35,,,,22,,,,,,,35,35,,35,,,,,,,22,,,,22,,22,22,35,35", ",,,,,,,,,,,,,,,,28,,,,,28,,,,28,,,,,,,,,,28,,,,,,,,,,22,,,,,,,28,,,", ",,,,,,,,,,22,,,,,22,,,,,,,,,28,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,28,,,,,,28,,,,,,,,,,,,,,28,,35,35,,,35,35,,,,,35,,,,,28,,", ",,,28,28,35,,,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35", "35,35,35,35,,,,,35,,,,,,,35,35,,,,,,,,35,,28,,,,,35,,35,,,35,35,,,,", ",,,,,28,,,,,28,,,,,,,,,,,,,,,,,,,,,,35,,35,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,35,35,35,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,35,,35,,35,,,,,,,,,,,,,,,,35,,,,,,,,,35,35,,,,,,,,,,,35", ",,35,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,,,,35,35,,,,,,,,,,35", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,35,35,,,,35,,,35,35,35,35,,,,35,35", ",,,,,,,,,,,,,,,,,,,,,,,35,,,35,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,", "35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,35", ",,,,,,,,,,,,35,35,35,35,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,35,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,35"]; + racc_goto_check = (arr = $$$('::', 'Array').$new(3567, nil)); idx = 0; - $send(clist, 'each', [], (TMP_Ruby23_9 = function(str){var self = TMP_Ruby23_9.$$s || this, TMP_10; -if (str == null) str = nil; - return $send(str.$split(",", -1), 'each', [], (TMP_10 = function(i){var self = TMP_10.$$s || this, $writer = nil; -if (i == null) i = nil; + $send(clist, 'each', [], ($Ruby25$9 = function(str){var self = $Ruby25$9.$$s || this, $$10; + + + if (str == null) { + str = nil; + }; + return $send(str.$split(",", -1), 'each', [], ($$10 = function(i){var self = $$10.$$s || this, $writer = nil; + + + + if (i == null) { + i = nil; + }; if ($truthy(i['$empty?']())) { - } else { + } else { $writer = [idx, i.$to_i()]; $send(arr, '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; }; - return (idx = $rb_plus(idx, 1));}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10))}, TMP_Ruby23_9.$$s = self, TMP_Ruby23_9.$$arity = 1, TMP_Ruby23_9)); - racc_goto_pointer = [nil, 117, 19, nil, 89, 90, 62, 27, -166, 382, -503, -575, -658, nil, -352, 9, 140, -16, -190, 84, 42, 435, 4, -196, -282, 7, 684, 758, -137, -54, 398, 32, -19, 1940, -28, nil, nil, 25, -154, 33, -201, -356, 277, -324, nil, 83, 71, 72, -123, nil, 19, 59, -259, 871, 1287, -267, 66, -66, 20, nil, nil, 32, 46, -244, 38, -24, 741, 99, -37, -23, -247, 51, -12, -317, -229, -424, nil, nil, nil, nil, nil, nil, nil, nil, nil, 90, 102, -49, nil, 101, -298, -680, -475, -322, 96, -196, 74, -516, 95, 110, 110, -356, 112, 106, -541, 107, -541, -405, -735, -408, -550, -182, -188, -400, -658, -731, 43, -435, -690, -450, nil, 192, -453, 447, 376, -449, 323, -530, -516, nil, -538, -670, -739, -738, -135, -483, 143, -329, -263, -6, -52, nil, -61, -61, -697, -466, -590, nil, nil, 147, 30, 50, 142, 143, -240, -193, 143, 144, 145, -364, -363, -348, -212, nil, nil, 521, -451, 350, -604, 561, -445, -608, nil, -607, -735, nil, nil, -438]; - racc_goto_default = [nil, nil, nil, 3, nil, 4, 346, 293, nil, 523, nil, 835, nil, 290, 291, nil, nil, nil, 11, 12, 18, 228, 321, nil, nil, 586, 226, 227, nil, nil, 17, nil, 441, 21, 22, 23, 24, nil, 675, nil, nil, nil, 310, nil, 25, 412, 32, nil, nil, 34, 37, 36, nil, 223, 224, 358, nil, 129, 420, 128, 131, 75, 76, nil, 90, 46, 282, nil, 804, 413, nil, 414, 425, 629, 487, 280, 266, 47, 48, 49, 50, 51, 52, 53, 54, 55, nil, 267, 61, nil, nil, nil, nil, nil, nil, nil, 569, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 702, 551, nil, 703, 924, 775, 539, nil, 540, nil, nil, 541, nil, 543, 645, nil, nil, nil, 549, nil, nil, nil, nil, nil, nil, nil, 424, nil, nil, nil, nil, nil, 74, 77, 78, nil, nil, nil, nil, nil, 596, nil, nil, nil, nil, nil, nil, 819, 736, 538, nil, 542, 827, 554, 556, 557, 787, 560, 561, 788, 564, 567, 285]; - racc_reduce_table = [0, 0, "racc_error", 1, 146, "_reduce_none", 2, 147, "_reduce_2", 0, 148, "_reduce_3", 1, 148, "_reduce_4", 3, 148, "_reduce_5", 2, 148, "_reduce_6", 1, 150, "_reduce_none", 4, 150, "_reduce_8", 4, 153, "_reduce_9", 2, 154, "_reduce_10", 0, 158, "_reduce_11", 1, 158, "_reduce_12", 3, 158, "_reduce_13", 2, 158, "_reduce_14", 1, 159, "_reduce_none", 4, 159, "_reduce_16", 0, 176, "_reduce_17", 4, 152, "_reduce_18", 3, 152, "_reduce_19", 3, 152, "_reduce_20", 3, 152, "_reduce_21", 2, 152, "_reduce_22", 3, 152, "_reduce_23", 3, 152, "_reduce_24", 3, 152, "_reduce_25", 3, 152, "_reduce_26", 3, 152, "_reduce_27", 4, 152, "_reduce_28", 1, 152, "_reduce_none", 3, 152, "_reduce_30", 3, 152, "_reduce_31", 6, 152, "_reduce_32", 5, 152, "_reduce_33", 5, 152, "_reduce_34", 5, 152, "_reduce_35", 5, 152, "_reduce_36", 3, 152, "_reduce_37", 3, 152, "_reduce_38", 3, 152, "_reduce_39", 1, 152, "_reduce_none", 3, 163, "_reduce_41", 3, 163, "_reduce_42", 1, 175, "_reduce_none", 3, 175, "_reduce_44", 3, 175, "_reduce_45", 3, 175, "_reduce_46", 2, 175, "_reduce_47", 1, 175, "_reduce_none", 1, 162, "_reduce_none", 1, 165, "_reduce_none", 1, 165, "_reduce_none", 1, 180, "_reduce_none", 4, 180, "_reduce_53", 0, 188, "_reduce_54", 5, 185, "_reduce_55", 1, 187, "_reduce_none", 2, 179, "_reduce_57", 3, 179, "_reduce_58", 4, 179, "_reduce_59", 5, 179, "_reduce_60", 4, 179, "_reduce_61", 5, 179, "_reduce_62", 2, 179, "_reduce_63", 2, 179, "_reduce_64", 2, 179, "_reduce_65", 2, 179, "_reduce_66", 2, 179, "_reduce_67", 1, 164, "_reduce_68", 3, 164, "_reduce_69", 1, 192, "_reduce_70", 3, 192, "_reduce_71", 1, 191, "_reduce_none", 2, 191, "_reduce_73", 3, 191, "_reduce_74", 5, 191, "_reduce_75", 2, 191, "_reduce_76", 4, 191, "_reduce_77", 2, 191, "_reduce_78", 4, 191, "_reduce_79", 1, 191, "_reduce_80", 3, 191, "_reduce_81", 1, 195, "_reduce_none", 3, 195, "_reduce_83", 2, 194, "_reduce_84", 3, 194, "_reduce_85", 1, 197, "_reduce_86", 3, 197, "_reduce_87", 1, 196, "_reduce_88", 1, 196, "_reduce_89", 4, 196, "_reduce_90", 3, 196, "_reduce_91", 3, 196, "_reduce_92", 3, 196, "_reduce_93", 3, 196, "_reduce_94", 2, 196, "_reduce_95", 1, 196, "_reduce_96", 1, 172, "_reduce_97", 1, 172, "_reduce_98", 4, 172, "_reduce_99", 3, 172, "_reduce_100", 3, 172, "_reduce_101", 3, 172, "_reduce_102", 3, 172, "_reduce_103", 2, 172, "_reduce_104", 1, 172, "_reduce_105", 1, 200, "_reduce_106", 1, 200, "_reduce_none", 2, 201, "_reduce_108", 1, 201, "_reduce_109", 3, 201, "_reduce_110", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 205, "_reduce_116", 1, 205, "_reduce_none", 1, 160, "_reduce_none", 1, 160, "_reduce_none", 1, 161, "_reduce_120", 0, 208, "_reduce_121", 4, 161, "_reduce_122", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 203, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 1, 204, "_reduce_none", 3, 178, "_reduce_194", 5, 178, "_reduce_195", 3, 178, "_reduce_196", 5, 178, "_reduce_197", 6, 178, "_reduce_198", 5, 178, "_reduce_199", 5, 178, "_reduce_200", 5, 178, "_reduce_201", 5, 178, "_reduce_202", 4, 178, "_reduce_203", 3, 178, "_reduce_204", 3, 178, "_reduce_205", 3, 178, "_reduce_206", 3, 178, "_reduce_207", 3, 178, "_reduce_208", 3, 178, "_reduce_209", 3, 178, "_reduce_210", 3, 178, "_reduce_211", 3, 178, "_reduce_212", 4, 178, "_reduce_213", 2, 178, "_reduce_214", 2, 178, "_reduce_215", 3, 178, "_reduce_216", 3, 178, "_reduce_217", 3, 178, "_reduce_218", 3, 178, "_reduce_219", 3, 178, "_reduce_220", 3, 178, "_reduce_221", 3, 178, "_reduce_222", 3, 178, "_reduce_223", 3, 178, "_reduce_224", 3, 178, "_reduce_225", 3, 178, "_reduce_226", 3, 178, "_reduce_227", 3, 178, "_reduce_228", 2, 178, "_reduce_229", 2, 178, "_reduce_230", 3, 178, "_reduce_231", 3, 178, "_reduce_232", 3, 178, "_reduce_233", 3, 178, "_reduce_234", 3, 178, "_reduce_235", 6, 178, "_reduce_236", 1, 178, "_reduce_none", 1, 211, "_reduce_none", 1, 212, "_reduce_none", 2, 212, "_reduce_none", 4, 212, "_reduce_241", 2, 212, "_reduce_242", 3, 217, "_reduce_243", 0, 218, "_reduce_244", 1, 218, "_reduce_none", 0, 168, "_reduce_246", 1, 168, "_reduce_none", 2, 168, "_reduce_none", 4, 168, "_reduce_249", 2, 168, "_reduce_250", 1, 190, "_reduce_251", 2, 190, "_reduce_252", 2, 190, "_reduce_253", 4, 190, "_reduce_254", 1, 190, "_reduce_255", 0, 221, "_reduce_256", 2, 184, "_reduce_257", 2, 220, "_reduce_258", 2, 219, "_reduce_259", 0, 219, "_reduce_260", 1, 214, "_reduce_261", 2, 214, "_reduce_262", 3, 214, "_reduce_263", 4, 214, "_reduce_264", 1, 174, "_reduce_265", 1, 174, "_reduce_none", 3, 173, "_reduce_267", 4, 173, "_reduce_268", 2, 173, "_reduce_269", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_280", 0, 244, "_reduce_281", 4, 210, "_reduce_282", 0, 245, "_reduce_283", 0, 246, "_reduce_284", 6, 210, "_reduce_285", 0, 247, "_reduce_286", 4, 210, "_reduce_287", 3, 210, "_reduce_288", 3, 210, "_reduce_289", 2, 210, "_reduce_290", 3, 210, "_reduce_291", 3, 210, "_reduce_292", 1, 210, "_reduce_293", 4, 210, "_reduce_294", 3, 210, "_reduce_295", 1, 210, "_reduce_296", 5, 210, "_reduce_297", 4, 210, "_reduce_298", 3, 210, "_reduce_299", 2, 210, "_reduce_300", 1, 210, "_reduce_none", 2, 210, "_reduce_302", 2, 210, "_reduce_303", 6, 210, "_reduce_304", 6, 210, "_reduce_305", 0, 248, "_reduce_306", 0, 249, "_reduce_307", 7, 210, "_reduce_308", 0, 250, "_reduce_309", 0, 251, "_reduce_310", 7, 210, "_reduce_311", 5, 210, "_reduce_312", 4, 210, "_reduce_313", 0, 252, "_reduce_314", 0, 253, "_reduce_315", 9, 210, "_reduce_316", 0, 254, "_reduce_317", 6, 210, "_reduce_318", 0, 255, "_reduce_319", 7, 210, "_reduce_320", 0, 256, "_reduce_321", 5, 210, "_reduce_322", 0, 257, "_reduce_323", 6, 210, "_reduce_324", 0, 258, "_reduce_325", 0, 259, "_reduce_326", 9, 210, "_reduce_327", 1, 210, "_reduce_328", 1, 210, "_reduce_329", 1, 210, "_reduce_330", 1, 210, "_reduce_331", 1, 167, "_reduce_none", 1, 235, "_reduce_none", 1, 235, "_reduce_none", 2, 235, "_reduce_335", 1, 237, "_reduce_none", 1, 237, "_reduce_none", 1, 236, "_reduce_none", 5, 236, "_reduce_339", 1, 156, "_reduce_none", 2, 156, "_reduce_341", 1, 239, "_reduce_none", 1, 239, "_reduce_none", 1, 260, "_reduce_344", 3, 260, "_reduce_345", 1, 263, "_reduce_346", 3, 263, "_reduce_347", 1, 262, "_reduce_none", 4, 262, "_reduce_349", 6, 262, "_reduce_350", 3, 262, "_reduce_351", 5, 262, "_reduce_352", 2, 262, "_reduce_353", 4, 262, "_reduce_354", 1, 262, "_reduce_355", 3, 262, "_reduce_356", 4, 264, "_reduce_357", 2, 264, "_reduce_358", 2, 264, "_reduce_359", 1, 264, "_reduce_360", 2, 269, "_reduce_361", 0, 269, "_reduce_362", 6, 270, "_reduce_363", 8, 270, "_reduce_364", 4, 270, "_reduce_365", 6, 270, "_reduce_366", 4, 270, "_reduce_367", 2, 270, "_reduce_none", 6, 270, "_reduce_369", 2, 270, "_reduce_370", 4, 270, "_reduce_371", 6, 270, "_reduce_372", 2, 270, "_reduce_373", 4, 270, "_reduce_374", 2, 270, "_reduce_375", 4, 270, "_reduce_376", 1, 270, "_reduce_none", 0, 186, "_reduce_378", 1, 186, "_reduce_379", 3, 274, "_reduce_380", 1, 274, "_reduce_381", 4, 274, "_reduce_382", 1, 275, "_reduce_383", 4, 275, "_reduce_384", 1, 276, "_reduce_385", 3, 276, "_reduce_386", 1, 277, "_reduce_387", 1, 277, "_reduce_none", 0, 281, "_reduce_389", 0, 282, "_reduce_390", 4, 234, "_reduce_391", 4, 279, "_reduce_392", 1, 279, "_reduce_393", 3, 280, "_reduce_394", 3, 280, "_reduce_395", 0, 285, "_reduce_396", 5, 284, "_reduce_397", 2, 181, "_reduce_398", 4, 181, "_reduce_399", 5, 181, "_reduce_400", 5, 181, "_reduce_401", 2, 233, "_reduce_402", 4, 233, "_reduce_403", 4, 233, "_reduce_404", 3, 233, "_reduce_405", 3, 233, "_reduce_406", 3, 233, "_reduce_407", 2, 233, "_reduce_408", 1, 233, "_reduce_409", 4, 233, "_reduce_410", 0, 287, "_reduce_411", 5, 232, "_reduce_412", 0, 288, "_reduce_413", 5, 232, "_reduce_414", 5, 238, "_reduce_415", 1, 289, "_reduce_416", 1, 289, "_reduce_none", 6, 155, "_reduce_418", 0, 155, "_reduce_419", 1, 290, "_reduce_420", 1, 290, "_reduce_none", 1, 290, "_reduce_none", 2, 291, "_reduce_423", 1, 291, "_reduce_none", 2, 157, "_reduce_425", 1, 157, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 223, "_reduce_430", 1, 293, "_reduce_431", 2, 293, "_reduce_432", 3, 294, "_reduce_433", 1, 294, "_reduce_434", 1, 294, "_reduce_435", 3, 224, "_reduce_436", 4, 225, "_reduce_437", 3, 226, "_reduce_438", 0, 298, "_reduce_439", 3, 298, "_reduce_440", 1, 299, "_reduce_441", 2, 299, "_reduce_442", 3, 228, "_reduce_443", 0, 301, "_reduce_444", 3, 301, "_reduce_445", 3, 227, "_reduce_446", 3, 229, "_reduce_447", 0, 302, "_reduce_448", 3, 302, "_reduce_449", 0, 303, "_reduce_450", 3, 303, "_reduce_451", 0, 295, "_reduce_452", 2, 295, "_reduce_453", 0, 296, "_reduce_454", 2, 296, "_reduce_455", 0, 297, "_reduce_456", 2, 297, "_reduce_457", 1, 300, "_reduce_458", 2, 300, "_reduce_459", 0, 305, "_reduce_460", 4, 300, "_reduce_461", 1, 304, "_reduce_462", 1, 304, "_reduce_463", 1, 304, "_reduce_464", 1, 304, "_reduce_none", 1, 206, "_reduce_466", 3, 207, "_reduce_467", 1, 292, "_reduce_468", 2, 292, "_reduce_469", 1, 209, "_reduce_470", 1, 209, "_reduce_471", 1, 209, "_reduce_472", 1, 209, "_reduce_473", 1, 198, "_reduce_474", 1, 198, "_reduce_475", 1, 198, "_reduce_476", 1, 198, "_reduce_477", 1, 198, "_reduce_478", 1, 199, "_reduce_479", 1, 199, "_reduce_480", 1, 199, "_reduce_481", 1, 199, "_reduce_482", 1, 199, "_reduce_483", 1, 199, "_reduce_484", 1, 199, "_reduce_485", 1, 230, "_reduce_486", 1, 230, "_reduce_487", 1, 166, "_reduce_488", 1, 166, "_reduce_489", 1, 171, "_reduce_490", 1, 171, "_reduce_491", 0, 306, "_reduce_492", 4, 240, "_reduce_493", 0, 240, "_reduce_494", 3, 242, "_reduce_495", 0, 308, "_reduce_496", 3, 242, "_reduce_497", 4, 307, "_reduce_498", 2, 307, "_reduce_499", 2, 307, "_reduce_500", 1, 307, "_reduce_501", 2, 310, "_reduce_502", 0, 310, "_reduce_503", 6, 283, "_reduce_504", 8, 283, "_reduce_505", 4, 283, "_reduce_506", 6, 283, "_reduce_507", 4, 283, "_reduce_508", 6, 283, "_reduce_509", 2, 283, "_reduce_510", 4, 283, "_reduce_511", 6, 283, "_reduce_512", 2, 283, "_reduce_513", 4, 283, "_reduce_514", 2, 283, "_reduce_515", 4, 283, "_reduce_516", 1, 283, "_reduce_517", 0, 283, "_reduce_518", 1, 278, "_reduce_519", 1, 278, "_reduce_520", 1, 278, "_reduce_521", 1, 278, "_reduce_522", 1, 261, "_reduce_none", 1, 261, "_reduce_524", 1, 312, "_reduce_525", 1, 313, "_reduce_526", 3, 313, "_reduce_527", 1, 271, "_reduce_528", 3, 271, "_reduce_529", 1, 314, "_reduce_530", 2, 315, "_reduce_531", 1, 315, "_reduce_532", 2, 316, "_reduce_533", 1, 316, "_reduce_534", 1, 265, "_reduce_535", 3, 265, "_reduce_536", 1, 309, "_reduce_537", 3, 309, "_reduce_538", 1, 317, "_reduce_none", 1, 317, "_reduce_none", 2, 266, "_reduce_541", 1, 266, "_reduce_542", 3, 318, "_reduce_543", 3, 319, "_reduce_544", 1, 272, "_reduce_545", 3, 272, "_reduce_546", 1, 311, "_reduce_547", 3, 311, "_reduce_548", 1, 320, "_reduce_none", 1, 320, "_reduce_none", 2, 273, "_reduce_551", 1, 273, "_reduce_552", 1, 321, "_reduce_none", 1, 321, "_reduce_none", 2, 268, "_reduce_555", 2, 267, "_reduce_556", 0, 267, "_reduce_557", 1, 243, "_reduce_none", 3, 243, "_reduce_559", 0, 231, "_reduce_560", 2, 231, "_reduce_none", 1, 216, "_reduce_562", 3, 216, "_reduce_563", 3, 322, "_reduce_564", 2, 322, "_reduce_565", 4, 322, "_reduce_566", 2, 322, "_reduce_567", 1, 189, "_reduce_none", 1, 189, "_reduce_none", 1, 189, "_reduce_none", 1, 183, "_reduce_none", 1, 183, "_reduce_none", 1, 183, "_reduce_none", 1, 183, "_reduce_none", 1, 286, "_reduce_none", 1, 286, "_reduce_none", 1, 286, "_reduce_none", 1, 182, "_reduce_none", 1, 182, "_reduce_none", 1, 170, "_reduce_580", 1, 170, "_reduce_581", 0, 149, "_reduce_none", 1, 149, "_reduce_none", 0, 177, "_reduce_none", 1, 177, "_reduce_none", 2, 193, "_reduce_586", 2, 169, "_reduce_587", 0, 215, "_reduce_none", 1, 215, "_reduce_none", 1, 215, "_reduce_none", 1, 241, "_reduce_591", 1, 241, "_reduce_none", 1, 151, "_reduce_none", 2, 151, "_reduce_none", 0, 213, "_reduce_595"]; - racc_reduce_n = 596; - racc_shift_n = 1021; - racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUMINUS_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tEQL", 143, "tLOWEST", 144); + return (idx = $rb_plus(idx, 1));}, $$10.$$s = self, $$10.$$arity = 1, $$10));}, $Ruby25$9.$$s = self, $Ruby25$9.$$arity = 1, $Ruby25$9)); + racc_goto_pointer = [nil, 181, 111, nil, 105, 128, 89, 25, 75, -317, 41, -501, -552, -615, nil, -314, 50, 182, -32, -104, 121, 37, 1756, -163, -21, -15, 62, -83, 1929, 8, -189, -406, -15, 1570, -19, 2587, -15, -398, nil, -14, nil, nil, 41, -194, 68, -198, -390, 693, -307, nil, 816, 127, 80, 82, 4, nil, -31, 46, -178, 1302, 1010, -265, 101, -68, -3, nil, nil, 82, 26, -225, -174, 44, nil, -15, 141, 1426, 128, -58, 33, -217, 94, -16, -291, -254, -399, nil, nil, nil, nil, nil, nil, nil, nil, nil, 123, 135, -50, nil, 136, -285, -620, -330, 134, -163, 15, -534, 133, 150, -121, 153, -385, -519, -146, -154, -371, -624, -696, 147, -450, -704, -564, nil, -654, -412, 71, 87, -562, -223, -646, -519, -522, nil, -589, -654, -771, -741, -105, -444, 195, -281, -299, -15, -553, -552, -324, 18, nil, 19, 21, nil, nil, -362, -615, -393, -513, nil, nil, 222, 60, 223, 232, 62, -244, -224, 66, 72, 78, -430, -440, -425, -277, nil, nil, -4, -528, -229, -542, 90, -523, -746, nil, -603, -766, nil, nil, -423]; + racc_goto_default = [nil, nil, nil, 3, nil, 4, 352, 297, nil, nil, 532, nil, 841, nil, 294, 295, nil, nil, nil, 11, 12, 18, 230, nil, nil, 14, nil, 417, 231, 325, nil, nil, 596, 229, 452, 21, nil, nil, 347, 22, 23, 24, nil, 685, nil, nil, nil, 314, nil, 25, 311, 431, 32, nil, nil, 34, 37, 36, nil, 226, 227, 364, nil, 132, 439, 131, 134, 77, 78, nil, 422, 92, 44, 47, 262, 286, nil, 810, 432, nil, 433, 444, 644, 495, 284, 270, 48, 49, 50, 51, 52, 53, 54, 55, 56, nil, 271, 62, nil, nil, nil, nil, nil, nil, 578, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 712, 560, nil, 713, 967, 868, 548, nil, 549, nil, nil, 550, nil, 552, nil, 797, nil, nil, nil, 558, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 443, nil, nil, 664, 658, nil, nil, nil, nil, 76, 79, 80, nil, nil, nil, nil, nil, 606, nil, nil, nil, nil, nil, nil, 825, 747, 547, nil, 551, 833, 563, 565, 566, 879, 569, 570, 880, 573, 576, 289]; + racc_reduce_table = [0, 0, "racc_error", 1, 146, "_reduce_none", 2, 147, "_reduce_2", 0, 148, "_reduce_3", 1, 148, "_reduce_4", 3, 148, "_reduce_5", 2, 148, "_reduce_6", 1, 150, "_reduce_none", 2, 150, "_reduce_8", 3, 153, "_reduce_9", 4, 154, "_reduce_10", 2, 155, "_reduce_11", 0, 159, "_reduce_12", 1, 159, "_reduce_13", 3, 159, "_reduce_14", 2, 159, "_reduce_15", 1, 160, "_reduce_none", 2, 160, "_reduce_17", 0, 171, "_reduce_18", 4, 152, "_reduce_19", 3, 152, "_reduce_20", 3, 152, "_reduce_21", 3, 152, "_reduce_22", 2, 152, "_reduce_23", 3, 152, "_reduce_24", 3, 152, "_reduce_25", 3, 152, "_reduce_26", 3, 152, "_reduce_27", 3, 152, "_reduce_28", 4, 152, "_reduce_29", 1, 152, "_reduce_none", 3, 152, "_reduce_31", 3, 152, "_reduce_32", 3, 152, "_reduce_33", 1, 152, "_reduce_none", 3, 164, "_reduce_35", 3, 164, "_reduce_36", 6, 164, "_reduce_37", 5, 164, "_reduce_38", 5, 164, "_reduce_39", 5, 164, "_reduce_40", 5, 164, "_reduce_41", 3, 164, "_reduce_42", 1, 172, "_reduce_none", 3, 172, "_reduce_44", 1, 172, "_reduce_none", 1, 170, "_reduce_none", 3, 170, "_reduce_47", 3, 170, "_reduce_48", 3, 170, "_reduce_49", 2, 170, "_reduce_50", 1, 170, "_reduce_none", 1, 163, "_reduce_none", 0, 183, "_reduce_53", 3, 181, "_reduce_54", 1, 166, "_reduce_none", 1, 166, "_reduce_none", 1, 185, "_reduce_none", 4, 185, "_reduce_58", 0, 193, "_reduce_59", 4, 190, "_reduce_60", 1, 192, "_reduce_none", 2, 184, "_reduce_62", 3, 184, "_reduce_63", 4, 184, "_reduce_64", 5, 184, "_reduce_65", 4, 184, "_reduce_66", 5, 184, "_reduce_67", 2, 184, "_reduce_68", 2, 184, "_reduce_69", 2, 184, "_reduce_70", 2, 184, "_reduce_71", 2, 184, "_reduce_72", 1, 165, "_reduce_73", 3, 165, "_reduce_74", 1, 198, "_reduce_75", 3, 198, "_reduce_76", 1, 197, "_reduce_none", 2, 197, "_reduce_78", 3, 197, "_reduce_79", 5, 197, "_reduce_80", 2, 197, "_reduce_81", 4, 197, "_reduce_82", 2, 197, "_reduce_83", 4, 197, "_reduce_84", 1, 197, "_reduce_85", 3, 197, "_reduce_86", 1, 201, "_reduce_none", 3, 201, "_reduce_88", 2, 200, "_reduce_89", 3, 200, "_reduce_90", 1, 203, "_reduce_91", 3, 203, "_reduce_92", 1, 202, "_reduce_93", 1, 202, "_reduce_94", 4, 202, "_reduce_95", 3, 202, "_reduce_96", 3, 202, "_reduce_97", 3, 202, "_reduce_98", 3, 202, "_reduce_99", 2, 202, "_reduce_100", 1, 202, "_reduce_101", 1, 167, "_reduce_102", 1, 167, "_reduce_103", 4, 167, "_reduce_104", 3, 167, "_reduce_105", 3, 167, "_reduce_106", 3, 167, "_reduce_107", 3, 167, "_reduce_108", 2, 167, "_reduce_109", 1, 167, "_reduce_110", 1, 206, "_reduce_111", 1, 206, "_reduce_none", 2, 207, "_reduce_113", 1, 207, "_reduce_114", 3, 207, "_reduce_115", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 211, "_reduce_121", 1, 211, "_reduce_none", 1, 161, "_reduce_none", 1, 161, "_reduce_none", 1, 162, "_reduce_125", 0, 214, "_reduce_126", 4, 162, "_reduce_127", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 209, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 1, 210, "_reduce_none", 3, 180, "_reduce_199", 3, 180, "_reduce_200", 6, 180, "_reduce_201", 5, 180, "_reduce_202", 5, 180, "_reduce_203", 5, 180, "_reduce_204", 5, 180, "_reduce_205", 4, 180, "_reduce_206", 3, 180, "_reduce_207", 3, 180, "_reduce_208", 3, 180, "_reduce_209", 3, 180, "_reduce_210", 3, 180, "_reduce_211", 3, 180, "_reduce_212", 3, 180, "_reduce_213", 3, 180, "_reduce_214", 3, 180, "_reduce_215", 4, 180, "_reduce_216", 2, 180, "_reduce_217", 2, 180, "_reduce_218", 3, 180, "_reduce_219", 3, 180, "_reduce_220", 3, 180, "_reduce_221", 3, 180, "_reduce_222", 1, 180, "_reduce_none", 3, 180, "_reduce_224", 3, 180, "_reduce_225", 3, 180, "_reduce_226", 3, 180, "_reduce_227", 3, 180, "_reduce_228", 2, 180, "_reduce_229", 2, 180, "_reduce_230", 3, 180, "_reduce_231", 3, 180, "_reduce_232", 3, 180, "_reduce_233", 3, 180, "_reduce_234", 3, 180, "_reduce_235", 6, 180, "_reduce_236", 1, 180, "_reduce_none", 1, 219, "_reduce_none", 1, 219, "_reduce_none", 1, 219, "_reduce_none", 1, 219, "_reduce_none", 3, 217, "_reduce_242", 3, 217, "_reduce_243", 1, 220, "_reduce_none", 1, 221, "_reduce_none", 2, 221, "_reduce_none", 4, 221, "_reduce_247", 2, 221, "_reduce_248", 1, 215, "_reduce_none", 3, 215, "_reduce_250", 3, 226, "_reduce_251", 0, 227, "_reduce_252", 1, 227, "_reduce_none", 0, 175, "_reduce_254", 1, 175, "_reduce_none", 2, 175, "_reduce_none", 4, 175, "_reduce_257", 2, 175, "_reduce_258", 1, 196, "_reduce_259", 2, 196, "_reduce_260", 2, 196, "_reduce_261", 4, 196, "_reduce_262", 1, 196, "_reduce_263", 0, 230, "_reduce_264", 2, 189, "_reduce_265", 2, 229, "_reduce_266", 2, 228, "_reduce_267", 0, 228, "_reduce_268", 1, 223, "_reduce_269", 2, 223, "_reduce_270", 3, 223, "_reduce_271", 4, 223, "_reduce_272", 1, 169, "_reduce_273", 1, 169, "_reduce_none", 3, 168, "_reduce_275", 4, 168, "_reduce_276", 2, 168, "_reduce_277", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_none", 1, 218, "_reduce_288", 0, 252, "_reduce_289", 4, 218, "_reduce_290", 0, 253, "_reduce_291", 4, 218, "_reduce_292", 0, 254, "_reduce_293", 4, 218, "_reduce_294", 3, 218, "_reduce_295", 3, 218, "_reduce_296", 2, 218, "_reduce_297", 3, 218, "_reduce_298", 3, 218, "_reduce_299", 1, 218, "_reduce_300", 4, 218, "_reduce_301", 3, 218, "_reduce_302", 1, 218, "_reduce_303", 5, 218, "_reduce_304", 4, 218, "_reduce_305", 3, 218, "_reduce_306", 2, 218, "_reduce_307", 1, 218, "_reduce_none", 2, 218, "_reduce_309", 2, 218, "_reduce_310", 6, 218, "_reduce_311", 6, 218, "_reduce_312", 4, 218, "_reduce_313", 4, 218, "_reduce_314", 5, 218, "_reduce_315", 4, 218, "_reduce_316", 6, 218, "_reduce_317", 0, 255, "_reduce_318", 6, 218, "_reduce_319", 0, 256, "_reduce_320", 7, 218, "_reduce_321", 0, 257, "_reduce_322", 5, 218, "_reduce_323", 0, 258, "_reduce_324", 6, 218, "_reduce_325", 0, 259, "_reduce_326", 0, 260, "_reduce_327", 9, 218, "_reduce_328", 1, 218, "_reduce_329", 1, 218, "_reduce_330", 1, 218, "_reduce_331", 1, 218, "_reduce_332", 1, 174, "_reduce_none", 1, 195, "_reduce_334", 1, 244, "_reduce_none", 1, 244, "_reduce_none", 2, 244, "_reduce_337", 1, 182, "_reduce_none", 1, 182, "_reduce_none", 1, 245, "_reduce_none", 5, 245, "_reduce_341", 1, 157, "_reduce_none", 2, 157, "_reduce_343", 1, 247, "_reduce_none", 1, 247, "_reduce_none", 1, 261, "_reduce_346", 3, 261, "_reduce_347", 1, 264, "_reduce_348", 3, 264, "_reduce_349", 1, 263, "_reduce_none", 4, 263, "_reduce_351", 6, 263, "_reduce_352", 3, 263, "_reduce_353", 5, 263, "_reduce_354", 2, 263, "_reduce_355", 4, 263, "_reduce_356", 1, 263, "_reduce_357", 3, 263, "_reduce_358", 4, 265, "_reduce_359", 2, 265, "_reduce_360", 2, 265, "_reduce_361", 1, 265, "_reduce_362", 2, 270, "_reduce_363", 0, 270, "_reduce_364", 6, 271, "_reduce_365", 8, 271, "_reduce_366", 4, 271, "_reduce_367", 6, 271, "_reduce_368", 4, 271, "_reduce_369", 2, 271, "_reduce_none", 6, 271, "_reduce_371", 2, 271, "_reduce_372", 4, 271, "_reduce_373", 6, 271, "_reduce_374", 2, 271, "_reduce_375", 4, 271, "_reduce_376", 2, 271, "_reduce_377", 4, 271, "_reduce_378", 1, 271, "_reduce_none", 0, 275, "_reduce_380", 1, 275, "_reduce_381", 3, 276, "_reduce_382", 1, 276, "_reduce_383", 4, 276, "_reduce_384", 1, 277, "_reduce_385", 4, 277, "_reduce_386", 1, 278, "_reduce_387", 3, 278, "_reduce_388", 1, 279, "_reduce_389", 1, 279, "_reduce_none", 0, 283, "_reduce_391", 0, 284, "_reduce_392", 4, 243, "_reduce_393", 4, 281, "_reduce_394", 1, 281, "_reduce_395", 0, 287, "_reduce_396", 4, 282, "_reduce_397", 0, 288, "_reduce_398", 4, 282, "_reduce_399", 0, 290, "_reduce_400", 4, 286, "_reduce_401", 2, 186, "_reduce_402", 4, 186, "_reduce_403", 5, 186, "_reduce_404", 5, 186, "_reduce_405", 2, 242, "_reduce_406", 4, 242, "_reduce_407", 4, 242, "_reduce_408", 3, 242, "_reduce_409", 3, 242, "_reduce_410", 3, 242, "_reduce_411", 2, 242, "_reduce_412", 1, 242, "_reduce_413", 4, 242, "_reduce_414", 0, 292, "_reduce_415", 4, 241, "_reduce_416", 0, 293, "_reduce_417", 4, 241, "_reduce_418", 0, 294, "_reduce_419", 3, 191, "_reduce_420", 0, 295, "_reduce_421", 0, 296, "_reduce_422", 4, 289, "_reduce_423", 5, 246, "_reduce_424", 1, 297, "_reduce_425", 1, 297, "_reduce_none", 6, 156, "_reduce_427", 0, 156, "_reduce_428", 1, 298, "_reduce_429", 1, 298, "_reduce_none", 1, 298, "_reduce_none", 2, 299, "_reduce_432", 1, 299, "_reduce_none", 2, 158, "_reduce_434", 1, 158, "_reduce_none", 1, 231, "_reduce_none", 1, 231, "_reduce_none", 1, 231, "_reduce_none", 1, 232, "_reduce_439", 1, 301, "_reduce_440", 2, 301, "_reduce_441", 3, 302, "_reduce_442", 1, 302, "_reduce_443", 1, 302, "_reduce_444", 3, 233, "_reduce_445", 4, 234, "_reduce_446", 3, 235, "_reduce_447", 0, 306, "_reduce_448", 3, 306, "_reduce_449", 1, 307, "_reduce_450", 2, 307, "_reduce_451", 3, 237, "_reduce_452", 0, 309, "_reduce_453", 3, 309, "_reduce_454", 3, 236, "_reduce_455", 3, 238, "_reduce_456", 0, 310, "_reduce_457", 3, 310, "_reduce_458", 0, 311, "_reduce_459", 3, 311, "_reduce_460", 0, 303, "_reduce_461", 2, 303, "_reduce_462", 0, 304, "_reduce_463", 2, 304, "_reduce_464", 0, 305, "_reduce_465", 2, 305, "_reduce_466", 1, 308, "_reduce_467", 2, 308, "_reduce_468", 0, 313, "_reduce_469", 4, 308, "_reduce_470", 1, 312, "_reduce_471", 1, 312, "_reduce_472", 1, 312, "_reduce_473", 1, 312, "_reduce_none", 1, 212, "_reduce_475", 3, 213, "_reduce_476", 1, 300, "_reduce_477", 2, 300, "_reduce_478", 1, 216, "_reduce_479", 1, 216, "_reduce_480", 1, 216, "_reduce_481", 1, 216, "_reduce_482", 1, 204, "_reduce_483", 1, 204, "_reduce_484", 1, 204, "_reduce_485", 1, 204, "_reduce_486", 1, 204, "_reduce_487", 1, 205, "_reduce_488", 1, 205, "_reduce_489", 1, 205, "_reduce_490", 1, 205, "_reduce_491", 1, 205, "_reduce_492", 1, 205, "_reduce_493", 1, 205, "_reduce_494", 1, 239, "_reduce_495", 1, 239, "_reduce_496", 1, 173, "_reduce_497", 1, 173, "_reduce_498", 1, 178, "_reduce_499", 1, 178, "_reduce_500", 0, 314, "_reduce_501", 4, 248, "_reduce_502", 0, 248, "_reduce_503", 3, 250, "_reduce_504", 0, 316, "_reduce_505", 3, 250, "_reduce_506", 4, 315, "_reduce_507", 2, 315, "_reduce_508", 2, 315, "_reduce_509", 1, 315, "_reduce_510", 2, 318, "_reduce_511", 0, 318, "_reduce_512", 6, 285, "_reduce_513", 8, 285, "_reduce_514", 4, 285, "_reduce_515", 6, 285, "_reduce_516", 4, 285, "_reduce_517", 6, 285, "_reduce_518", 2, 285, "_reduce_519", 4, 285, "_reduce_520", 6, 285, "_reduce_521", 2, 285, "_reduce_522", 4, 285, "_reduce_523", 2, 285, "_reduce_524", 4, 285, "_reduce_525", 1, 285, "_reduce_526", 0, 285, "_reduce_527", 1, 280, "_reduce_528", 1, 280, "_reduce_529", 1, 280, "_reduce_530", 1, 280, "_reduce_531", 1, 262, "_reduce_none", 1, 262, "_reduce_533", 1, 320, "_reduce_534", 1, 321, "_reduce_535", 3, 321, "_reduce_536", 1, 272, "_reduce_537", 3, 272, "_reduce_538", 1, 322, "_reduce_539", 2, 323, "_reduce_540", 1, 323, "_reduce_541", 2, 324, "_reduce_542", 1, 324, "_reduce_543", 1, 266, "_reduce_544", 3, 266, "_reduce_545", 1, 317, "_reduce_546", 3, 317, "_reduce_547", 1, 325, "_reduce_none", 1, 325, "_reduce_none", 2, 267, "_reduce_550", 1, 267, "_reduce_551", 3, 326, "_reduce_552", 3, 327, "_reduce_553", 1, 273, "_reduce_554", 3, 273, "_reduce_555", 1, 319, "_reduce_556", 3, 319, "_reduce_557", 1, 328, "_reduce_none", 1, 328, "_reduce_none", 2, 274, "_reduce_560", 1, 274, "_reduce_561", 1, 329, "_reduce_none", 1, 329, "_reduce_none", 2, 269, "_reduce_564", 2, 268, "_reduce_565", 0, 268, "_reduce_566", 1, 251, "_reduce_none", 3, 251, "_reduce_568", 0, 240, "_reduce_569", 2, 240, "_reduce_none", 1, 225, "_reduce_571", 3, 225, "_reduce_572", 3, 330, "_reduce_573", 2, 330, "_reduce_574", 4, 330, "_reduce_575", 2, 330, "_reduce_576", 1, 194, "_reduce_none", 1, 194, "_reduce_none", 1, 194, "_reduce_none", 1, 188, "_reduce_none", 1, 188, "_reduce_none", 1, 188, "_reduce_none", 1, 188, "_reduce_none", 1, 291, "_reduce_none", 1, 291, "_reduce_none", 1, 291, "_reduce_none", 1, 187, "_reduce_none", 1, 187, "_reduce_none", 1, 177, "_reduce_589", 1, 177, "_reduce_590", 0, 149, "_reduce_none", 1, 149, "_reduce_none", 0, 179, "_reduce_none", 1, 179, "_reduce_none", 2, 199, "_reduce_595", 2, 176, "_reduce_596", 0, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 249, "_reduce_600", 1, 249, "_reduce_none", 1, 151, "_reduce_none", 2, 151, "_reduce_none", 0, 222, "_reduce_604"]; + racc_reduce_n = 605; + racc_shift_n = 1032; + racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUNARY_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tEQL", 143, "tLOWEST", 144); racc_nt_base = 145; racc_use_result_var = true; Opal.const_set($nesting[0], 'Racc_arg', [racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var]); - Opal.const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUMINUS_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "backref", "lhs", "mrhs", "mrhs_arg", "expr", "@1", "opt_nl", "arg", "command", "block_command", "block_call", "dot_or_colon", "operation2", "command_args", "cmd_brace_block", "opt_block_param", "fcall", "@2", "operation", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "fname", "op", "reswords", "fsym", "symbol", "dsym", "@3", "simple_numeric", "primary", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "opt_paren_args", "opt_block_arg", "block_arg", "@4", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "do", "case_body", "for_var", "superclass", "term", "f_arglist", "singleton", "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "block_args_tail", "f_block_kwarg", "f_kwrest", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@21", "@22", "f_args", "do_block", "@23", "operation3", "@24", "@25", "cases", "exc_list", "exc_var", "numeric", "string", "string1", "string_contents", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@26", "@27", "args_tail", "@28", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "kwrest_mark", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); + Opal.const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@1", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "backref", "opt_nl", "arg", "expr_value_do", "do", "@2", "command", "block_command", "block_call", "dot_or_colon", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@3", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "fname", "op", "reswords", "fsym", "symbol", "dsym", "@4", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "opt_paren_args", "opt_block_arg", "block_arg", "@5", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "for_var", "superclass", "term", "f_arglist", "singleton", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "block_args_tail", "f_block_kwarg", "f_kwrest", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@15", "@16", "f_args", "do_block", "@17", "@18", "do_body", "@19", "operation3", "@20", "@21", "@22", "@23", "@24", "cases", "exc_list", "exc_var", "numeric", "string", "string1", "string_contents", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@25", "@26", "args_tail", "@27", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "kwrest_mark", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); Opal.const_set($nesting[0], 'Racc_debug_parser', false); - Opal.defn(self, '$_reduce_2', TMP_Ruby23__reduce_2_11 = function $$_reduce_2(val, _values, result) { + Opal.def(self, '$_reduce_2', $Ruby25__reduce_2$11 = function $$_reduce_2(val, _values, result) { var self = this; result = self.builder.$compstmt(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_2_11.$$arity = 3); + }, $Ruby25__reduce_2$11.$$arity = 3); - Opal.defn(self, '$_reduce_3', TMP_Ruby23__reduce_3_12 = function $$_reduce_3(val, _values, result) { + Opal.def(self, '$_reduce_3', $Ruby25__reduce_3$12 = function $$_reduce_3(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_3_12.$$arity = 3); + }, $Ruby25__reduce_3$12.$$arity = 3); - Opal.defn(self, '$_reduce_4', TMP_Ruby23__reduce_4_13 = function $$_reduce_4(val, _values, result) { + Opal.def(self, '$_reduce_4', $Ruby25__reduce_4$13 = function $$_reduce_4(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_4_13.$$arity = 3); + }, $Ruby25__reduce_4$13.$$arity = 3); - Opal.defn(self, '$_reduce_5', TMP_Ruby23__reduce_5_14 = function $$_reduce_5(val, _values, result) { + Opal.def(self, '$_reduce_5', $Ruby25__reduce_5$14 = function $$_reduce_5(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_5_14.$$arity = 3); + }, $Ruby25__reduce_5$14.$$arity = 3); - Opal.defn(self, '$_reduce_6', TMP_Ruby23__reduce_6_15 = function $$_reduce_6(val, _values, result) { + Opal.def(self, '$_reduce_6', $Ruby25__reduce_6$15 = function $$_reduce_6(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_6_15.$$arity = 3); + }, $Ruby25__reduce_6$15.$$arity = 3); - Opal.defn(self, '$_reduce_8', TMP_Ruby23__reduce_8_16 = function $$_reduce_8(val, _values, result) { + Opal.def(self, '$_reduce_8', $Ruby25__reduce_8$16 = function $$_reduce_8(val, _values, result) { var self = this; - result = self.builder.$preexe(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + result = $send(self.builder, 'preexe', [val['$[]'](0)].concat(Opal.to_a(val['$[]'](1)))); return result; - }, TMP_Ruby23__reduce_8_16.$$arity = 3); + }, $Ruby25__reduce_8$16.$$arity = 3); - Opal.defn(self, '$_reduce_9', TMP_Ruby23__reduce_9_17 = function $$_reduce_9(val, _values, result) { + Opal.def(self, '$_reduce_9', $Ruby25__reduce_9$17 = function $$_reduce_9(val, _values, result) { + var self = this; + + + result = val; + return result; + }, $Ruby25__reduce_9$17.$$arity = 3); + + Opal.def(self, '$_reduce_10', $Ruby25__reduce_10$18 = function $$_reduce_10(val, _values, result) { var $a, $b, self = this, rescue_bodies = nil, else_t = nil, else_ = nil, ensure_t = nil, ensure_ = nil; @@ -39992,57 +45902,57 @@ if (i == null) i = nil; self.$diagnostic("warning", "useless_else", nil, else_t)}; result = self.builder.$begin_body(val['$[]'](0), rescue_bodies, else_t, else_, ensure_t, ensure_); return result; - }, TMP_Ruby23__reduce_9_17.$$arity = 3); + }, $Ruby25__reduce_10$18.$$arity = 3); - Opal.defn(self, '$_reduce_10', TMP_Ruby23__reduce_10_18 = function $$_reduce_10(val, _values, result) { + Opal.def(self, '$_reduce_11', $Ruby25__reduce_11$19 = function $$_reduce_11(val, _values, result) { var self = this; result = self.builder.$compstmt(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_10_18.$$arity = 3); + }, $Ruby25__reduce_11$19.$$arity = 3); - Opal.defn(self, '$_reduce_11', TMP_Ruby23__reduce_11_19 = function $$_reduce_11(val, _values, result) { + Opal.def(self, '$_reduce_12', $Ruby25__reduce_12$20 = function $$_reduce_12(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_11_19.$$arity = 3); + }, $Ruby25__reduce_12$20.$$arity = 3); - Opal.defn(self, '$_reduce_12', TMP_Ruby23__reduce_12_20 = function $$_reduce_12(val, _values, result) { + Opal.def(self, '$_reduce_13', $Ruby25__reduce_13$21 = function $$_reduce_13(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_12_20.$$arity = 3); + }, $Ruby25__reduce_13$21.$$arity = 3); - Opal.defn(self, '$_reduce_13', TMP_Ruby23__reduce_13_21 = function $$_reduce_13(val, _values, result) { + Opal.def(self, '$_reduce_14', $Ruby25__reduce_14$22 = function $$_reduce_14(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_13_21.$$arity = 3); + }, $Ruby25__reduce_14$22.$$arity = 3); - Opal.defn(self, '$_reduce_14', TMP_Ruby23__reduce_14_22 = function $$_reduce_14(val, _values, result) { + Opal.def(self, '$_reduce_15', $Ruby25__reduce_15$23 = function $$_reduce_15(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_14_22.$$arity = 3); + }, $Ruby25__reduce_15$23.$$arity = 3); - Opal.defn(self, '$_reduce_16', TMP_Ruby23__reduce_16_23 = function $$_reduce_16(val, _values, result) { + Opal.def(self, '$_reduce_17', $Ruby25__reduce_17$24 = function $$_reduce_17(val, _values, result) { var self = this; self.$diagnostic("error", "begin_in_method", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_16_23.$$arity = 3); + }, $Ruby25__reduce_17$24.$$arity = 3); - Opal.defn(self, '$_reduce_17', TMP_Ruby23__reduce_17_24 = function $$_reduce_17(val, _values, result) { + Opal.def(self, '$_reduce_18', $Ruby25__reduce_18$25 = function $$_reduce_18(val, _values, result) { var self = this, $writer = nil; @@ -40051,260 +45961,278 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_17_24.$$arity = 3); + }, $Ruby25__reduce_18$25.$$arity = 3); - Opal.defn(self, '$_reduce_18', TMP_Ruby23__reduce_18_25 = function $$_reduce_18(val, _values, result) { + Opal.def(self, '$_reduce_19', $Ruby25__reduce_19$26 = function $$_reduce_19(val, _values, result) { var self = this; result = self.builder.$alias(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_18_25.$$arity = 3); + }, $Ruby25__reduce_19$26.$$arity = 3); - Opal.defn(self, '$_reduce_19', TMP_Ruby23__reduce_19_26 = function $$_reduce_19(val, _values, result) { + Opal.def(self, '$_reduce_20', $Ruby25__reduce_20$27 = function $$_reduce_20(val, _values, result) { var self = this; result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$gvar(val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_19_26.$$arity = 3); + }, $Ruby25__reduce_20$27.$$arity = 3); - Opal.defn(self, '$_reduce_20', TMP_Ruby23__reduce_20_27 = function $$_reduce_20(val, _values, result) { + Opal.def(self, '$_reduce_21', $Ruby25__reduce_21$28 = function $$_reduce_21(val, _values, result) { var self = this; result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$back_ref(val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_20_27.$$arity = 3); + }, $Ruby25__reduce_21$28.$$arity = 3); - Opal.defn(self, '$_reduce_21', TMP_Ruby23__reduce_21_28 = function $$_reduce_21(val, _values, result) { + Opal.def(self, '$_reduce_22', $Ruby25__reduce_22$29 = function $$_reduce_22(val, _values, result) { var self = this; self.$diagnostic("error", "nth_ref_alias", nil, val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_21_28.$$arity = 3); + }, $Ruby25__reduce_22$29.$$arity = 3); - Opal.defn(self, '$_reduce_22', TMP_Ruby23__reduce_22_29 = function $$_reduce_22(val, _values, result) { + Opal.def(self, '$_reduce_23', $Ruby25__reduce_23$30 = function $$_reduce_23(val, _values, result) { var self = this; result = self.builder.$undef_method(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_22_29.$$arity = 3); + }, $Ruby25__reduce_23$30.$$arity = 3); - Opal.defn(self, '$_reduce_23', TMP_Ruby23__reduce_23_30 = function $$_reduce_23(val, _values, result) { + Opal.def(self, '$_reduce_24', $Ruby25__reduce_24$31 = function $$_reduce_24(val, _values, result) { var self = this; result = self.builder.$condition_mod(val['$[]'](0), nil, val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_23_30.$$arity = 3); + }, $Ruby25__reduce_24$31.$$arity = 3); - Opal.defn(self, '$_reduce_24', TMP_Ruby23__reduce_24_31 = function $$_reduce_24(val, _values, result) { + Opal.def(self, '$_reduce_25', $Ruby25__reduce_25$32 = function $$_reduce_25(val, _values, result) { var self = this; result = self.builder.$condition_mod(nil, val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_24_31.$$arity = 3); + }, $Ruby25__reduce_25$32.$$arity = 3); - Opal.defn(self, '$_reduce_25', TMP_Ruby23__reduce_25_32 = function $$_reduce_25(val, _values, result) { + Opal.def(self, '$_reduce_26', $Ruby25__reduce_26$33 = function $$_reduce_26(val, _values, result) { var self = this; result = self.builder.$loop_mod("while", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_25_32.$$arity = 3); + }, $Ruby25__reduce_26$33.$$arity = 3); - Opal.defn(self, '$_reduce_26', TMP_Ruby23__reduce_26_33 = function $$_reduce_26(val, _values, result) { + Opal.def(self, '$_reduce_27', $Ruby25__reduce_27$34 = function $$_reduce_27(val, _values, result) { var self = this; result = self.builder.$loop_mod("until", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_26_33.$$arity = 3); + }, $Ruby25__reduce_27$34.$$arity = 3); - Opal.defn(self, '$_reduce_27', TMP_Ruby23__reduce_27_34 = function $$_reduce_27(val, _values, result) { + Opal.def(self, '$_reduce_28', $Ruby25__reduce_28$35 = function $$_reduce_28(val, _values, result) { var self = this, rescue_body = nil; rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); return result; - }, TMP_Ruby23__reduce_27_34.$$arity = 3); + }, $Ruby25__reduce_28$35.$$arity = 3); - Opal.defn(self, '$_reduce_28', TMP_Ruby23__reduce_28_35 = function $$_reduce_28(val, _values, result) { + Opal.def(self, '$_reduce_29', $Ruby25__reduce_29$36 = function $$_reduce_29(val, _values, result) { var self = this; result = self.builder.$postexe(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_28_35.$$arity = 3); + }, $Ruby25__reduce_29$36.$$arity = 3); - Opal.defn(self, '$_reduce_30', TMP_Ruby23__reduce_30_36 = function $$_reduce_30(val, _values, result) { + Opal.def(self, '$_reduce_31', $Ruby25__reduce_31$37 = function $$_reduce_31(val, _values, result) { var self = this; result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_30_36.$$arity = 3); + }, $Ruby25__reduce_31$37.$$arity = 3); - Opal.defn(self, '$_reduce_31', TMP_Ruby23__reduce_31_37 = function $$_reduce_31(val, _values, result) { + Opal.def(self, '$_reduce_32', $Ruby25__reduce_32$38 = function $$_reduce_32(val, _values, result) { var self = this; - result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), self.builder.$array(nil, val['$[]'](2), nil)); return result; - }, TMP_Ruby23__reduce_31_37.$$arity = 3); + }, $Ruby25__reduce_32$38.$$arity = 3); - Opal.defn(self, '$_reduce_32', TMP_Ruby23__reduce_32_38 = function $$_reduce_32(val, _values, result) { + Opal.def(self, '$_reduce_33', $Ruby25__reduce_33$39 = function $$_reduce_33(val, _values, result) { var self = this; - result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_32_38.$$arity = 3); + }, $Ruby25__reduce_33$39.$$arity = 3); - Opal.defn(self, '$_reduce_33', TMP_Ruby23__reduce_33_39 = function $$_reduce_33(val, _values, result) { + Opal.def(self, '$_reduce_35', $Ruby25__reduce_35$40 = function $$_reduce_35(val, _values, result) { var self = this; - result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_33_39.$$arity = 3); + }, $Ruby25__reduce_35$40.$$arity = 3); - Opal.defn(self, '$_reduce_34', TMP_Ruby23__reduce_34_40 = function $$_reduce_34(val, _values, result) { + Opal.def(self, '$_reduce_36', $Ruby25__reduce_36$41 = function $$_reduce_36(val, _values, result) { var self = this; - result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_34_40.$$arity = 3); + }, $Ruby25__reduce_36$41.$$arity = 3); - Opal.defn(self, '$_reduce_35', TMP_Ruby23__reduce_35_41 = function $$_reduce_35(val, _values, result) { - var self = this, const$ = nil; + Opal.def(self, '$_reduce_37', $Ruby25__reduce_37$42 = function $$_reduce_37(val, _values, result) { + var self = this; - const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); - result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); + result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_35_41.$$arity = 3); + }, $Ruby25__reduce_37$42.$$arity = 3); - Opal.defn(self, '$_reduce_36', TMP_Ruby23__reduce_36_42 = function $$_reduce_36(val, _values, result) { + Opal.def(self, '$_reduce_38', $Ruby25__reduce_38$43 = function $$_reduce_38(val, _values, result) { var self = this; result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_36_42.$$arity = 3); + }, $Ruby25__reduce_38$43.$$arity = 3); - Opal.defn(self, '$_reduce_37', TMP_Ruby23__reduce_37_43 = function $$_reduce_37(val, _values, result) { + Opal.def(self, '$_reduce_39', $Ruby25__reduce_39$44 = function $$_reduce_39(val, _values, result) { var self = this; - self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_37_43.$$arity = 3); + }, $Ruby25__reduce_39$44.$$arity = 3); - Opal.defn(self, '$_reduce_38', TMP_Ruby23__reduce_38_44 = function $$_reduce_38(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_40', $Ruby25__reduce_40$45 = function $$_reduce_40(val, _values, result) { + var self = this, const$ = nil; - result = self.builder.$assign(val['$[]'](0), val['$[]'](1), self.builder.$array(nil, val['$[]'](2), nil)); + const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_38_44.$$arity = 3); + }, $Ruby25__reduce_40$45.$$arity = 3); - Opal.defn(self, '$_reduce_39', TMP_Ruby23__reduce_39_45 = function $$_reduce_39(val, _values, result) { + Opal.def(self, '$_reduce_41', $Ruby25__reduce_41$46 = function $$_reduce_41(val, _values, result) { var self = this; - result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_39_45.$$arity = 3); + }, $Ruby25__reduce_41$46.$$arity = 3); - Opal.defn(self, '$_reduce_41', TMP_Ruby23__reduce_41_46 = function $$_reduce_41(val, _values, result) { + Opal.def(self, '$_reduce_42', $Ruby25__reduce_42$47 = function $$_reduce_42(val, _values, result) { var self = this; - result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_41_46.$$arity = 3); + }, $Ruby25__reduce_42$47.$$arity = 3); - Opal.defn(self, '$_reduce_42', TMP_Ruby23__reduce_42_47 = function $$_reduce_42(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_44', $Ruby25__reduce_44$48 = function $$_reduce_44(val, _values, result) { + var self = this, rescue_body = nil; - result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); return result; - }, TMP_Ruby23__reduce_42_47.$$arity = 3); + }, $Ruby25__reduce_44$48.$$arity = 3); - Opal.defn(self, '$_reduce_44', TMP_Ruby23__reduce_44_48 = function $$_reduce_44(val, _values, result) { + Opal.def(self, '$_reduce_47', $Ruby25__reduce_47$49 = function $$_reduce_47(val, _values, result) { var self = this; result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_44_48.$$arity = 3); + }, $Ruby25__reduce_47$49.$$arity = 3); - Opal.defn(self, '$_reduce_45', TMP_Ruby23__reduce_45_49 = function $$_reduce_45(val, _values, result) { + Opal.def(self, '$_reduce_48', $Ruby25__reduce_48$50 = function $$_reduce_48(val, _values, result) { var self = this; result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_45_49.$$arity = 3); + }, $Ruby25__reduce_48$50.$$arity = 3); - Opal.defn(self, '$_reduce_46', TMP_Ruby23__reduce_46_50 = function $$_reduce_46(val, _values, result) { + Opal.def(self, '$_reduce_49', $Ruby25__reduce_49$51 = function $$_reduce_49(val, _values, result) { var self = this; result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](2), nil); return result; - }, TMP_Ruby23__reduce_46_50.$$arity = 3); + }, $Ruby25__reduce_49$51.$$arity = 3); - Opal.defn(self, '$_reduce_47', TMP_Ruby23__reduce_47_51 = function $$_reduce_47(val, _values, result) { + Opal.def(self, '$_reduce_50', $Ruby25__reduce_50$52 = function $$_reduce_50(val, _values, result) { var self = this; result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_47_51.$$arity = 3); + }, $Ruby25__reduce_50$52.$$arity = 3); + + Opal.def(self, '$_reduce_53', $Ruby25__reduce_53$53 = function $$_reduce_53(val, _values, result) { + var self = this; + + + self.lexer.$cond().$push(true); + return result; + }, $Ruby25__reduce_53$53.$$arity = 3); - Opal.defn(self, '$_reduce_53', TMP_Ruby23__reduce_53_52 = function $$_reduce_53(val, _values, result) { + Opal.def(self, '$_reduce_54', $Ruby25__reduce_54$54 = function $$_reduce_54(val, _values, result) { + var self = this; + + + self.lexer.$cond().$pop(); + result = [val['$[]'](1), val['$[]'](2)]; + return result; + }, $Ruby25__reduce_54$54.$$arity = 3); + + Opal.def(self, '$_reduce_58', $Ruby25__reduce_58$55 = function $$_reduce_58(val, _values, result) { var self = this; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); return result; - }, TMP_Ruby23__reduce_53_52.$$arity = 3); + }, $Ruby25__reduce_58$55.$$arity = 3); - Opal.defn(self, '$_reduce_54', TMP_Ruby23__reduce_54_53 = function $$_reduce_54(val, _values, result) { + Opal.def(self, '$_reduce_59', $Ruby25__reduce_59$56 = function $$_reduce_59(val, _values, result) { var self = this; - self.static_env.$extend_dynamic(); + self.context.$push("block"); return result; - }, TMP_Ruby23__reduce_54_53.$$arity = 3); + }, $Ruby25__reduce_59$56.$$arity = 3); - Opal.defn(self, '$_reduce_55', TMP_Ruby23__reduce_55_54 = function $$_reduce_55(val, _values, result) { + Opal.def(self, '$_reduce_60', $Ruby25__reduce_60$57 = function $$_reduce_60(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; - self.static_env.$unextend(); + result = [val['$[]'](0)].concat(Opal.to_a(val['$[]'](2))).concat([val['$[]'](3)]); + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_55_54.$$arity = 3); + }, $Ruby25__reduce_60$57.$$arity = 3); - Opal.defn(self, '$_reduce_57', TMP_Ruby23__reduce_57_55 = function $$_reduce_57(val, _values, result) { + Opal.def(self, '$_reduce_62', $Ruby25__reduce_62$58 = function $$_reduce_62(val, _values, result) { var self = this; result = self.builder.$call_method(nil, nil, val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_57_55.$$arity = 3); + }, $Ruby25__reduce_62$58.$$arity = 3); - Opal.defn(self, '$_reduce_58', TMP_Ruby23__reduce_58_56 = function $$_reduce_58(val, _values, result) { + Opal.def(self, '$_reduce_63', $Ruby25__reduce_63$59 = function $$_reduce_63(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -40312,17 +46240,17 @@ if (i == null) i = nil; $b = val['$[]'](2), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_58_56.$$arity = 3); + }, $Ruby25__reduce_63$59.$$arity = 3); - Opal.defn(self, '$_reduce_59', TMP_Ruby23__reduce_59_57 = function $$_reduce_59(val, _values, result) { + Opal.def(self, '$_reduce_64', $Ruby25__reduce_64$60 = function $$_reduce_64(val, _values, result) { var self = this; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); return result; - }, TMP_Ruby23__reduce_59_57.$$arity = 3); + }, $Ruby25__reduce_64$60.$$arity = 3); - Opal.defn(self, '$_reduce_60', TMP_Ruby23__reduce_60_58 = function $$_reduce_60(val, _values, result) { + Opal.def(self, '$_reduce_65', $Ruby25__reduce_65$61 = function $$_reduce_65(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -40330,17 +46258,17 @@ if (i == null) i = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_60_58.$$arity = 3); + }, $Ruby25__reduce_65$61.$$arity = 3); - Opal.defn(self, '$_reduce_61', TMP_Ruby23__reduce_61_59 = function $$_reduce_61(val, _values, result) { + Opal.def(self, '$_reduce_66', $Ruby25__reduce_66$62 = function $$_reduce_66(val, _values, result) { var self = this; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); return result; - }, TMP_Ruby23__reduce_61_59.$$arity = 3); + }, $Ruby25__reduce_66$62.$$arity = 3); - Opal.defn(self, '$_reduce_62', TMP_Ruby23__reduce_62_60 = function $$_reduce_62(val, _values, result) { + Opal.def(self, '$_reduce_67', $Ruby25__reduce_67$63 = function $$_reduce_67(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -40348,385 +46276,385 @@ if (i == null) i = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_62_60.$$arity = 3); + }, $Ruby25__reduce_67$63.$$arity = 3); - Opal.defn(self, '$_reduce_63', TMP_Ruby23__reduce_63_61 = function $$_reduce_63(val, _values, result) { + Opal.def(self, '$_reduce_68', $Ruby25__reduce_68$64 = function $$_reduce_68(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("super", val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_63_61.$$arity = 3); + }, $Ruby25__reduce_68$64.$$arity = 3); - Opal.defn(self, '$_reduce_64', TMP_Ruby23__reduce_64_62 = function $$_reduce_64(val, _values, result) { + Opal.def(self, '$_reduce_69', $Ruby25__reduce_69$65 = function $$_reduce_69(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("yield", val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_64_62.$$arity = 3); + }, $Ruby25__reduce_69$65.$$arity = 3); - Opal.defn(self, '$_reduce_65', TMP_Ruby23__reduce_65_63 = function $$_reduce_65(val, _values, result) { + Opal.def(self, '$_reduce_70', $Ruby25__reduce_70$66 = function $$_reduce_70(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("return", val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_65_63.$$arity = 3); + }, $Ruby25__reduce_70$66.$$arity = 3); - Opal.defn(self, '$_reduce_66', TMP_Ruby23__reduce_66_64 = function $$_reduce_66(val, _values, result) { + Opal.def(self, '$_reduce_71', $Ruby25__reduce_71$67 = function $$_reduce_71(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("break", val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_66_64.$$arity = 3); + }, $Ruby25__reduce_71$67.$$arity = 3); - Opal.defn(self, '$_reduce_67', TMP_Ruby23__reduce_67_65 = function $$_reduce_67(val, _values, result) { + Opal.def(self, '$_reduce_72', $Ruby25__reduce_72$68 = function $$_reduce_72(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("next", val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_67_65.$$arity = 3); + }, $Ruby25__reduce_72$68.$$arity = 3); - Opal.defn(self, '$_reduce_68', TMP_Ruby23__reduce_68_66 = function $$_reduce_68(val, _values, result) { + Opal.def(self, '$_reduce_73', $Ruby25__reduce_73$69 = function $$_reduce_73(val, _values, result) { var self = this; result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); return result; - }, TMP_Ruby23__reduce_68_66.$$arity = 3); + }, $Ruby25__reduce_73$69.$$arity = 3); - Opal.defn(self, '$_reduce_69', TMP_Ruby23__reduce_69_67 = function $$_reduce_69(val, _values, result) { + Opal.def(self, '$_reduce_74', $Ruby25__reduce_74$70 = function $$_reduce_74(val, _values, result) { var self = this; result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_69_67.$$arity = 3); + }, $Ruby25__reduce_74$70.$$arity = 3); - Opal.defn(self, '$_reduce_70', TMP_Ruby23__reduce_70_68 = function $$_reduce_70(val, _values, result) { + Opal.def(self, '$_reduce_75', $Ruby25__reduce_75$71 = function $$_reduce_75(val, _values, result) { var self = this; result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); return result; - }, TMP_Ruby23__reduce_70_68.$$arity = 3); + }, $Ruby25__reduce_75$71.$$arity = 3); - Opal.defn(self, '$_reduce_71', TMP_Ruby23__reduce_71_69 = function $$_reduce_71(val, _values, result) { + Opal.def(self, '$_reduce_76', $Ruby25__reduce_76$72 = function $$_reduce_76(val, _values, result) { var self = this; result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_71_69.$$arity = 3); + }, $Ruby25__reduce_76$72.$$arity = 3); - Opal.defn(self, '$_reduce_73', TMP_Ruby23__reduce_73_70 = function $$_reduce_73(val, _values, result) { + Opal.def(self, '$_reduce_78', $Ruby25__reduce_78$73 = function $$_reduce_78(val, _values, result) { var self = this; result = val['$[]'](0).$push(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_73_70.$$arity = 3); + }, $Ruby25__reduce_78$73.$$arity = 3); - Opal.defn(self, '$_reduce_74', TMP_Ruby23__reduce_74_71 = function $$_reduce_74(val, _values, result) { + Opal.def(self, '$_reduce_79', $Ruby25__reduce_79$74 = function $$_reduce_79(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_74_71.$$arity = 3); + }, $Ruby25__reduce_79$74.$$arity = 3); - Opal.defn(self, '$_reduce_75', TMP_Ruby23__reduce_75_72 = function $$_reduce_75(val, _values, result) { + Opal.def(self, '$_reduce_80', $Ruby25__reduce_80$75 = function $$_reduce_80(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))).$concat(val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_75_72.$$arity = 3); + }, $Ruby25__reduce_80$75.$$arity = 3); - Opal.defn(self, '$_reduce_76', TMP_Ruby23__reduce_76_73 = function $$_reduce_76(val, _values, result) { + Opal.def(self, '$_reduce_81', $Ruby25__reduce_81$76 = function $$_reduce_81(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_76_73.$$arity = 3); + }, $Ruby25__reduce_81$76.$$arity = 3); - Opal.defn(self, '$_reduce_77', TMP_Ruby23__reduce_77_74 = function $$_reduce_77(val, _values, result) { + Opal.def(self, '$_reduce_82', $Ruby25__reduce_82$77 = function $$_reduce_82(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_77_74.$$arity = 3); + }, $Ruby25__reduce_82$77.$$arity = 3); - Opal.defn(self, '$_reduce_78', TMP_Ruby23__reduce_78_75 = function $$_reduce_78(val, _values, result) { + Opal.def(self, '$_reduce_83', $Ruby25__reduce_83$78 = function $$_reduce_83(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_78_75.$$arity = 3); + }, $Ruby25__reduce_83$78.$$arity = 3); - Opal.defn(self, '$_reduce_79', TMP_Ruby23__reduce_79_76 = function $$_reduce_79(val, _values, result) { + Opal.def(self, '$_reduce_84', $Ruby25__reduce_84$79 = function $$_reduce_84(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))].concat(Opal.to_a(val['$[]'](3))); return result; - }, TMP_Ruby23__reduce_79_76.$$arity = 3); + }, $Ruby25__reduce_84$79.$$arity = 3); - Opal.defn(self, '$_reduce_80', TMP_Ruby23__reduce_80_77 = function $$_reduce_80(val, _values, result) { + Opal.def(self, '$_reduce_85', $Ruby25__reduce_85$80 = function $$_reduce_85(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0))]; return result; - }, TMP_Ruby23__reduce_80_77.$$arity = 3); + }, $Ruby25__reduce_85$80.$$arity = 3); - Opal.defn(self, '$_reduce_81', TMP_Ruby23__reduce_81_78 = function $$_reduce_81(val, _values, result) { + Opal.def(self, '$_reduce_86', $Ruby25__reduce_86$81 = function $$_reduce_86(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0))].concat(Opal.to_a(val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_81_78.$$arity = 3); + }, $Ruby25__reduce_86$81.$$arity = 3); - Opal.defn(self, '$_reduce_83', TMP_Ruby23__reduce_83_79 = function $$_reduce_83(val, _values, result) { + Opal.def(self, '$_reduce_88', $Ruby25__reduce_88$82 = function $$_reduce_88(val, _values, result) { var self = this; result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_83_79.$$arity = 3); + }, $Ruby25__reduce_88$82.$$arity = 3); - Opal.defn(self, '$_reduce_84', TMP_Ruby23__reduce_84_80 = function $$_reduce_84(val, _values, result) { + Opal.def(self, '$_reduce_89', $Ruby25__reduce_89$83 = function $$_reduce_89(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_84_80.$$arity = 3); + }, $Ruby25__reduce_89$83.$$arity = 3); - Opal.defn(self, '$_reduce_85', TMP_Ruby23__reduce_85_81 = function $$_reduce_85(val, _values, result) { + Opal.def(self, '$_reduce_90', $Ruby25__reduce_90$84 = function $$_reduce_90(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_85_81.$$arity = 3); + }, $Ruby25__reduce_90$84.$$arity = 3); - Opal.defn(self, '$_reduce_86', TMP_Ruby23__reduce_86_82 = function $$_reduce_86(val, _values, result) { + Opal.def(self, '$_reduce_91', $Ruby25__reduce_91$85 = function $$_reduce_91(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_86_82.$$arity = 3); + }, $Ruby25__reduce_91$85.$$arity = 3); - Opal.defn(self, '$_reduce_87', TMP_Ruby23__reduce_87_83 = function $$_reduce_87(val, _values, result) { + Opal.def(self, '$_reduce_92', $Ruby25__reduce_92$86 = function $$_reduce_92(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_87_83.$$arity = 3); + }, $Ruby25__reduce_92$86.$$arity = 3); - Opal.defn(self, '$_reduce_88', TMP_Ruby23__reduce_88_84 = function $$_reduce_88(val, _values, result) { + Opal.def(self, '$_reduce_93', $Ruby25__reduce_93$87 = function $$_reduce_93(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_88_84.$$arity = 3); + }, $Ruby25__reduce_93$87.$$arity = 3); - Opal.defn(self, '$_reduce_89', TMP_Ruby23__reduce_89_85 = function $$_reduce_89(val, _values, result) { + Opal.def(self, '$_reduce_94', $Ruby25__reduce_94$88 = function $$_reduce_94(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_89_85.$$arity = 3); + }, $Ruby25__reduce_94$88.$$arity = 3); - Opal.defn(self, '$_reduce_90', TMP_Ruby23__reduce_90_86 = function $$_reduce_90(val, _values, result) { + Opal.def(self, '$_reduce_95', $Ruby25__reduce_95$89 = function $$_reduce_95(val, _values, result) { var self = this; result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_90_86.$$arity = 3); + }, $Ruby25__reduce_95$89.$$arity = 3); - Opal.defn(self, '$_reduce_91', TMP_Ruby23__reduce_91_87 = function $$_reduce_91(val, _values, result) { + Opal.def(self, '$_reduce_96', $Ruby25__reduce_96$90 = function $$_reduce_96(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_91_87.$$arity = 3); + }, $Ruby25__reduce_96$90.$$arity = 3); - Opal.defn(self, '$_reduce_92', TMP_Ruby23__reduce_92_88 = function $$_reduce_92(val, _values, result) { + Opal.def(self, '$_reduce_97', $Ruby25__reduce_97$91 = function $$_reduce_97(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_92_88.$$arity = 3); + }, $Ruby25__reduce_97$91.$$arity = 3); - Opal.defn(self, '$_reduce_93', TMP_Ruby23__reduce_93_89 = function $$_reduce_93(val, _values, result) { + Opal.def(self, '$_reduce_98', $Ruby25__reduce_98$92 = function $$_reduce_98(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_93_89.$$arity = 3); + }, $Ruby25__reduce_98$92.$$arity = 3); - Opal.defn(self, '$_reduce_94', TMP_Ruby23__reduce_94_90 = function $$_reduce_94(val, _values, result) { + Opal.def(self, '$_reduce_99', $Ruby25__reduce_99$93 = function $$_reduce_99(val, _values, result) { var self = this; result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_94_90.$$arity = 3); + }, $Ruby25__reduce_99$93.$$arity = 3); - Opal.defn(self, '$_reduce_95', TMP_Ruby23__reduce_95_91 = function $$_reduce_95(val, _values, result) { + Opal.def(self, '$_reduce_100', $Ruby25__reduce_100$94 = function $$_reduce_100(val, _values, result) { var self = this; result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_95_91.$$arity = 3); + }, $Ruby25__reduce_100$94.$$arity = 3); - Opal.defn(self, '$_reduce_96', TMP_Ruby23__reduce_96_92 = function $$_reduce_96(val, _values, result) { + Opal.def(self, '$_reduce_101', $Ruby25__reduce_101$95 = function $$_reduce_101(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_96_92.$$arity = 3); + }, $Ruby25__reduce_101$95.$$arity = 3); - Opal.defn(self, '$_reduce_97', TMP_Ruby23__reduce_97_93 = function $$_reduce_97(val, _values, result) { + Opal.def(self, '$_reduce_102', $Ruby25__reduce_102$96 = function $$_reduce_102(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_97_93.$$arity = 3); + }, $Ruby25__reduce_102$96.$$arity = 3); - Opal.defn(self, '$_reduce_98', TMP_Ruby23__reduce_98_94 = function $$_reduce_98(val, _values, result) { + Opal.def(self, '$_reduce_103', $Ruby25__reduce_103$97 = function $$_reduce_103(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_98_94.$$arity = 3); + }, $Ruby25__reduce_103$97.$$arity = 3); - Opal.defn(self, '$_reduce_99', TMP_Ruby23__reduce_99_95 = function $$_reduce_99(val, _values, result) { + Opal.def(self, '$_reduce_104', $Ruby25__reduce_104$98 = function $$_reduce_104(val, _values, result) { var self = this; result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_99_95.$$arity = 3); + }, $Ruby25__reduce_104$98.$$arity = 3); - Opal.defn(self, '$_reduce_100', TMP_Ruby23__reduce_100_96 = function $$_reduce_100(val, _values, result) { + Opal.def(self, '$_reduce_105', $Ruby25__reduce_105$99 = function $$_reduce_105(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_100_96.$$arity = 3); + }, $Ruby25__reduce_105$99.$$arity = 3); - Opal.defn(self, '$_reduce_101', TMP_Ruby23__reduce_101_97 = function $$_reduce_101(val, _values, result) { + Opal.def(self, '$_reduce_106', $Ruby25__reduce_106$100 = function $$_reduce_106(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_101_97.$$arity = 3); + }, $Ruby25__reduce_106$100.$$arity = 3); - Opal.defn(self, '$_reduce_102', TMP_Ruby23__reduce_102_98 = function $$_reduce_102(val, _values, result) { + Opal.def(self, '$_reduce_107', $Ruby25__reduce_107$101 = function $$_reduce_107(val, _values, result) { var self = this; result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_102_98.$$arity = 3); + }, $Ruby25__reduce_107$101.$$arity = 3); - Opal.defn(self, '$_reduce_103', TMP_Ruby23__reduce_103_99 = function $$_reduce_103(val, _values, result) { + Opal.def(self, '$_reduce_108', $Ruby25__reduce_108$102 = function $$_reduce_108(val, _values, result) { var self = this; result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_103_99.$$arity = 3); + }, $Ruby25__reduce_108$102.$$arity = 3); - Opal.defn(self, '$_reduce_104', TMP_Ruby23__reduce_104_100 = function $$_reduce_104(val, _values, result) { + Opal.def(self, '$_reduce_109', $Ruby25__reduce_109$103 = function $$_reduce_109(val, _values, result) { var self = this; result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_104_100.$$arity = 3); + }, $Ruby25__reduce_109$103.$$arity = 3); - Opal.defn(self, '$_reduce_105', TMP_Ruby23__reduce_105_101 = function $$_reduce_105(val, _values, result) { + Opal.def(self, '$_reduce_110', $Ruby25__reduce_110$104 = function $$_reduce_110(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_105_101.$$arity = 3); + }, $Ruby25__reduce_110$104.$$arity = 3); - Opal.defn(self, '$_reduce_106', TMP_Ruby23__reduce_106_102 = function $$_reduce_106(val, _values, result) { + Opal.def(self, '$_reduce_111', $Ruby25__reduce_111$105 = function $$_reduce_111(val, _values, result) { var self = this; self.$diagnostic("error", "module_name_const", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_106_102.$$arity = 3); + }, $Ruby25__reduce_111$105.$$arity = 3); - Opal.defn(self, '$_reduce_108', TMP_Ruby23__reduce_108_103 = function $$_reduce_108(val, _values, result) { + Opal.def(self, '$_reduce_113', $Ruby25__reduce_113$106 = function $$_reduce_113(val, _values, result) { var self = this; result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_108_103.$$arity = 3); + }, $Ruby25__reduce_113$106.$$arity = 3); - Opal.defn(self, '$_reduce_109', TMP_Ruby23__reduce_109_104 = function $$_reduce_109(val, _values, result) { + Opal.def(self, '$_reduce_114', $Ruby25__reduce_114$107 = function $$_reduce_114(val, _values, result) { var self = this; result = self.builder.$const(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_109_104.$$arity = 3); + }, $Ruby25__reduce_114$107.$$arity = 3); - Opal.defn(self, '$_reduce_110', TMP_Ruby23__reduce_110_105 = function $$_reduce_110(val, _values, result) { + Opal.def(self, '$_reduce_115', $Ruby25__reduce_115$108 = function $$_reduce_115(val, _values, result) { var self = this; result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_110_105.$$arity = 3); + }, $Ruby25__reduce_115$108.$$arity = 3); - Opal.defn(self, '$_reduce_116', TMP_Ruby23__reduce_116_106 = function $$_reduce_116(val, _values, result) { + Opal.def(self, '$_reduce_121', $Ruby25__reduce_121$109 = function $$_reduce_121(val, _values, result) { var self = this; result = self.builder.$symbol(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_116_106.$$arity = 3); + }, $Ruby25__reduce_121$109.$$arity = 3); - Opal.defn(self, '$_reduce_120', TMP_Ruby23__reduce_120_107 = function $$_reduce_120(val, _values, result) { + Opal.def(self, '$_reduce_125', $Ruby25__reduce_125$110 = function $$_reduce_125(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_120_107.$$arity = 3); + }, $Ruby25__reduce_125$110.$$arity = 3); - Opal.defn(self, '$_reduce_121', TMP_Ruby23__reduce_121_108 = function $$_reduce_121(val, _values, result) { + Opal.def(self, '$_reduce_126', $Ruby25__reduce_126$111 = function $$_reduce_126(val, _values, result) { var self = this, $writer = nil; @@ -40735,448 +46663,421 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_121_108.$$arity = 3); + }, $Ruby25__reduce_126$111.$$arity = 3); - Opal.defn(self, '$_reduce_122', TMP_Ruby23__reduce_122_109 = function $$_reduce_122(val, _values, result) { + Opal.def(self, '$_reduce_127', $Ruby25__reduce_127$112 = function $$_reduce_127(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_122_109.$$arity = 3); + }, $Ruby25__reduce_127$112.$$arity = 3); - Opal.defn(self, '$_reduce_194', TMP_Ruby23__reduce_194_110 = function $$_reduce_194(val, _values, result) { + Opal.def(self, '$_reduce_199', $Ruby25__reduce_199$113 = function $$_reduce_199(val, _values, result) { var self = this; result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_194_110.$$arity = 3); + }, $Ruby25__reduce_199$113.$$arity = 3); - Opal.defn(self, '$_reduce_195', TMP_Ruby23__reduce_195_111 = function $$_reduce_195(val, _values, result) { - var self = this, rescue_body = nil, rescue_ = nil; - - - rescue_body = self.builder.$rescue_body(val['$[]'](3), nil, nil, nil, nil, val['$[]'](4)); - rescue_ = self.builder.$begin_body(val['$[]'](2), [rescue_body]); - result = self.builder.$assign(val['$[]'](0), val['$[]'](1), rescue_); - return result; - }, TMP_Ruby23__reduce_195_111.$$arity = 3); - - Opal.defn(self, '$_reduce_196', TMP_Ruby23__reduce_196_112 = function $$_reduce_196(val, _values, result) { + Opal.def(self, '$_reduce_200', $Ruby25__reduce_200$114 = function $$_reduce_200(val, _values, result) { var self = this; result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_196_112.$$arity = 3); - - Opal.defn(self, '$_reduce_197', TMP_Ruby23__reduce_197_113 = function $$_reduce_197(val, _values, result) { - var self = this, rescue_body = nil, rescue_ = nil; - - - rescue_body = self.builder.$rescue_body(val['$[]'](3), nil, nil, nil, nil, val['$[]'](4)); - rescue_ = self.builder.$begin_body(val['$[]'](2), [rescue_body]); - result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), rescue_); - return result; - }, TMP_Ruby23__reduce_197_113.$$arity = 3); + }, $Ruby25__reduce_200$114.$$arity = 3); - Opal.defn(self, '$_reduce_198', TMP_Ruby23__reduce_198_114 = function $$_reduce_198(val, _values, result) { + Opal.def(self, '$_reduce_201', $Ruby25__reduce_201$115 = function $$_reduce_201(val, _values, result) { var self = this; result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_198_114.$$arity = 3); + }, $Ruby25__reduce_201$115.$$arity = 3); - Opal.defn(self, '$_reduce_199', TMP_Ruby23__reduce_199_115 = function $$_reduce_199(val, _values, result) { + Opal.def(self, '$_reduce_202', $Ruby25__reduce_202$116 = function $$_reduce_202(val, _values, result) { var self = this; result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_199_115.$$arity = 3); + }, $Ruby25__reduce_202$116.$$arity = 3); - Opal.defn(self, '$_reduce_200', TMP_Ruby23__reduce_200_116 = function $$_reduce_200(val, _values, result) { + Opal.def(self, '$_reduce_203', $Ruby25__reduce_203$117 = function $$_reduce_203(val, _values, result) { var self = this; result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_200_116.$$arity = 3); + }, $Ruby25__reduce_203$117.$$arity = 3); - Opal.defn(self, '$_reduce_201', TMP_Ruby23__reduce_201_117 = function $$_reduce_201(val, _values, result) { + Opal.def(self, '$_reduce_204', $Ruby25__reduce_204$118 = function $$_reduce_204(val, _values, result) { var self = this; result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_201_117.$$arity = 3); + }, $Ruby25__reduce_204$118.$$arity = 3); - Opal.defn(self, '$_reduce_202', TMP_Ruby23__reduce_202_118 = function $$_reduce_202(val, _values, result) { + Opal.def(self, '$_reduce_205', $Ruby25__reduce_205$119 = function $$_reduce_205(val, _values, result) { var self = this, const$ = nil; const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_202_118.$$arity = 3); + }, $Ruby25__reduce_205$119.$$arity = 3); - Opal.defn(self, '$_reduce_203', TMP_Ruby23__reduce_203_119 = function $$_reduce_203(val, _values, result) { + Opal.def(self, '$_reduce_206', $Ruby25__reduce_206$120 = function $$_reduce_206(val, _values, result) { var self = this, const$ = nil; const$ = self.builder.$const_op_assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); result = self.builder.$op_assign(const$, val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_203_119.$$arity = 3); + }, $Ruby25__reduce_206$120.$$arity = 3); - Opal.defn(self, '$_reduce_204', TMP_Ruby23__reduce_204_120 = function $$_reduce_204(val, _values, result) { + Opal.def(self, '$_reduce_207', $Ruby25__reduce_207$121 = function $$_reduce_207(val, _values, result) { var self = this; result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_204_120.$$arity = 3); + }, $Ruby25__reduce_207$121.$$arity = 3); - Opal.defn(self, '$_reduce_205', TMP_Ruby23__reduce_205_121 = function $$_reduce_205(val, _values, result) { + Opal.def(self, '$_reduce_208', $Ruby25__reduce_208$122 = function $$_reduce_208(val, _values, result) { var self = this; result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_205_121.$$arity = 3); + }, $Ruby25__reduce_208$122.$$arity = 3); - Opal.defn(self, '$_reduce_206', TMP_Ruby23__reduce_206_122 = function $$_reduce_206(val, _values, result) { + Opal.def(self, '$_reduce_209', $Ruby25__reduce_209$123 = function $$_reduce_209(val, _values, result) { var self = this; result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_206_122.$$arity = 3); + }, $Ruby25__reduce_209$123.$$arity = 3); + + Opal.def(self, '$_reduce_210', $Ruby25__reduce_210$124 = function $$_reduce_210(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_210$124.$$arity = 3); + + Opal.def(self, '$_reduce_211', $Ruby25__reduce_211$125 = function $$_reduce_211(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_211$125.$$arity = 3); + + Opal.def(self, '$_reduce_212', $Ruby25__reduce_212$126 = function $$_reduce_212(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_212$126.$$arity = 3); + + Opal.def(self, '$_reduce_213', $Ruby25__reduce_213$127 = function $$_reduce_213(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_213$127.$$arity = 3); + + Opal.def(self, '$_reduce_214', $Ruby25__reduce_214$128 = function $$_reduce_214(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_214$128.$$arity = 3); + + Opal.def(self, '$_reduce_215', $Ruby25__reduce_215$129 = function $$_reduce_215(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_215$129.$$arity = 3); + + Opal.def(self, '$_reduce_216', $Ruby25__reduce_216$130 = function $$_reduce_216(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), self.builder.$binary_op(val['$[]'](1), val['$[]'](2), val['$[]'](3))); + return result; + }, $Ruby25__reduce_216$130.$$arity = 3); + + Opal.def(self, '$_reduce_217', $Ruby25__reduce_217$131 = function $$_reduce_217(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, $Ruby25__reduce_217$131.$$arity = 3); + + Opal.def(self, '$_reduce_218', $Ruby25__reduce_218$132 = function $$_reduce_218(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, $Ruby25__reduce_218$132.$$arity = 3); + + Opal.def(self, '$_reduce_219', $Ruby25__reduce_219$133 = function $$_reduce_219(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_219$133.$$arity = 3); + + Opal.def(self, '$_reduce_220', $Ruby25__reduce_220$134 = function $$_reduce_220(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_220$134.$$arity = 3); + + Opal.def(self, '$_reduce_221', $Ruby25__reduce_221$135 = function $$_reduce_221(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, $Ruby25__reduce_221$135.$$arity = 3); - Opal.defn(self, '$_reduce_207', TMP_Ruby23__reduce_207_123 = function $$_reduce_207(val, _values, result) { + Opal.def(self, '$_reduce_222', $Ruby25__reduce_222$136 = function $$_reduce_222(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_207_123.$$arity = 3); + }, $Ruby25__reduce_222$136.$$arity = 3); - Opal.defn(self, '$_reduce_208', TMP_Ruby23__reduce_208_124 = function $$_reduce_208(val, _values, result) { + Opal.def(self, '$_reduce_224', $Ruby25__reduce_224$137 = function $$_reduce_224(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_208_124.$$arity = 3); + }, $Ruby25__reduce_224$137.$$arity = 3); - Opal.defn(self, '$_reduce_209', TMP_Ruby23__reduce_209_125 = function $$_reduce_209(val, _values, result) { + Opal.def(self, '$_reduce_225', $Ruby25__reduce_225$138 = function $$_reduce_225(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_209_125.$$arity = 3); + }, $Ruby25__reduce_225$138.$$arity = 3); - Opal.defn(self, '$_reduce_210', TMP_Ruby23__reduce_210_126 = function $$_reduce_210(val, _values, result) { + Opal.def(self, '$_reduce_226', $Ruby25__reduce_226$139 = function $$_reduce_226(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_210_126.$$arity = 3); + }, $Ruby25__reduce_226$139.$$arity = 3); - Opal.defn(self, '$_reduce_211', TMP_Ruby23__reduce_211_127 = function $$_reduce_211(val, _values, result) { + Opal.def(self, '$_reduce_227', $Ruby25__reduce_227$140 = function $$_reduce_227(val, _values, result) { var self = this; - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$match_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_211_127.$$arity = 3); + }, $Ruby25__reduce_227$140.$$arity = 3); - Opal.defn(self, '$_reduce_212', TMP_Ruby23__reduce_212_128 = function $$_reduce_212(val, _values, result) { + Opal.def(self, '$_reduce_228', $Ruby25__reduce_228$141 = function $$_reduce_228(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_212_128.$$arity = 3); + }, $Ruby25__reduce_228$141.$$arity = 3); - Opal.defn(self, '$_reduce_213', TMP_Ruby23__reduce_213_129 = function $$_reduce_213(val, _values, result) { + Opal.def(self, '$_reduce_229', $Ruby25__reduce_229$142 = function $$_reduce_229(val, _values, result) { var self = this; - result = self.builder.$unary_op(val['$[]'](0), self.builder.$binary_op(val['$[]'](1), val['$[]'](2), val['$[]'](3))); - return result; - }, TMP_Ruby23__reduce_213_129.$$arity = 3); - - Opal.defn(self, '$_reduce_214', TMP_Ruby23__reduce_214_130 = function $$_reduce_214(val, _values, result) { - var self = this; - - - result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_214_130.$$arity = 3); + }, $Ruby25__reduce_229$142.$$arity = 3); - Opal.defn(self, '$_reduce_215', TMP_Ruby23__reduce_215_131 = function $$_reduce_215(val, _values, result) { + Opal.def(self, '$_reduce_230', $Ruby25__reduce_230$143 = function $$_reduce_230(val, _values, result) { var self = this; result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_215_131.$$arity = 3); - - Opal.defn(self, '$_reduce_216', TMP_Ruby23__reduce_216_132 = function $$_reduce_216(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_216_132.$$arity = 3); - - Opal.defn(self, '$_reduce_217', TMP_Ruby23__reduce_217_133 = function $$_reduce_217(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_217_133.$$arity = 3); - - Opal.defn(self, '$_reduce_218', TMP_Ruby23__reduce_218_134 = function $$_reduce_218(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_218_134.$$arity = 3); - - Opal.defn(self, '$_reduce_219', TMP_Ruby23__reduce_219_135 = function $$_reduce_219(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_219_135.$$arity = 3); + }, $Ruby25__reduce_230$143.$$arity = 3); - Opal.defn(self, '$_reduce_220', TMP_Ruby23__reduce_220_136 = function $$_reduce_220(val, _values, result) { + Opal.def(self, '$_reduce_231', $Ruby25__reduce_231$144 = function $$_reduce_231(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_220_136.$$arity = 3); + }, $Ruby25__reduce_231$144.$$arity = 3); - Opal.defn(self, '$_reduce_221', TMP_Ruby23__reduce_221_137 = function $$_reduce_221(val, _values, result) { + Opal.def(self, '$_reduce_232', $Ruby25__reduce_232$145 = function $$_reduce_232(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_221_137.$$arity = 3); + }, $Ruby25__reduce_232$145.$$arity = 3); - Opal.defn(self, '$_reduce_222', TMP_Ruby23__reduce_222_138 = function $$_reduce_222(val, _values, result) { + Opal.def(self, '$_reduce_233', $Ruby25__reduce_233$146 = function $$_reduce_233(val, _values, result) { var self = this; - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_222_138.$$arity = 3); - - Opal.defn(self, '$_reduce_223', TMP_Ruby23__reduce_223_139 = function $$_reduce_223(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_223_139.$$arity = 3); - - Opal.defn(self, '$_reduce_224', TMP_Ruby23__reduce_224_140 = function $$_reduce_224(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_224_140.$$arity = 3); - - Opal.defn(self, '$_reduce_225', TMP_Ruby23__reduce_225_141 = function $$_reduce_225(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_225_141.$$arity = 3); - - Opal.defn(self, '$_reduce_226', TMP_Ruby23__reduce_226_142 = function $$_reduce_226(val, _values, result) { - var self = this; - - - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_226_142.$$arity = 3); - - Opal.defn(self, '$_reduce_227', TMP_Ruby23__reduce_227_143 = function $$_reduce_227(val, _values, result) { - var self = this; - - - result = self.builder.$match_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_227_143.$$arity = 3); + }, $Ruby25__reduce_233$146.$$arity = 3); - Opal.defn(self, '$_reduce_228', TMP_Ruby23__reduce_228_144 = function $$_reduce_228(val, _values, result) { + Opal.def(self, '$_reduce_234', $Ruby25__reduce_234$147 = function $$_reduce_234(val, _values, result) { var self = this; - result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_228_144.$$arity = 3); + }, $Ruby25__reduce_234$147.$$arity = 3); - Opal.defn(self, '$_reduce_229', TMP_Ruby23__reduce_229_145 = function $$_reduce_229(val, _values, result) { + Opal.def(self, '$_reduce_235', $Ruby25__reduce_235$148 = function $$_reduce_235(val, _values, result) { var self = this; - result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](2)], nil); return result; - }, TMP_Ruby23__reduce_229_145.$$arity = 3); + }, $Ruby25__reduce_235$148.$$arity = 3); - Opal.defn(self, '$_reduce_230', TMP_Ruby23__reduce_230_146 = function $$_reduce_230(val, _values, result) { + Opal.def(self, '$_reduce_236', $Ruby25__reduce_236$149 = function $$_reduce_236(val, _values, result) { var self = this; - result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + result = self.builder.$ternary(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_230_146.$$arity = 3); + }, $Ruby25__reduce_236$149.$$arity = 3); - Opal.defn(self, '$_reduce_231', TMP_Ruby23__reduce_231_147 = function $$_reduce_231(val, _values, result) { + Opal.def(self, '$_reduce_242', $Ruby25__reduce_242$150 = function $$_reduce_242(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_231_147.$$arity = 3); + }, $Ruby25__reduce_242$150.$$arity = 3); - Opal.defn(self, '$_reduce_232', TMP_Ruby23__reduce_232_148 = function $$_reduce_232(val, _values, result) { + Opal.def(self, '$_reduce_243', $Ruby25__reduce_243$151 = function $$_reduce_243(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_232_148.$$arity = 3); + }, $Ruby25__reduce_243$151.$$arity = 3); - Opal.defn(self, '$_reduce_233', TMP_Ruby23__reduce_233_149 = function $$_reduce_233(val, _values, result) { + Opal.def(self, '$_reduce_247', $Ruby25__reduce_247$152 = function $$_reduce_247(val, _values, result) { var self = this; - result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_233_149.$$arity = 3); - - Opal.defn(self, '$_reduce_234', TMP_Ruby23__reduce_234_150 = function $$_reduce_234(val, _values, result) { - var self = this; - - - result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); - return result; - }, TMP_Ruby23__reduce_234_150.$$arity = 3); - - Opal.defn(self, '$_reduce_235', TMP_Ruby23__reduce_235_151 = function $$_reduce_235(val, _values, result) { - var self = this; - - - result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](2)], nil); - return result; - }, TMP_Ruby23__reduce_235_151.$$arity = 3); - - Opal.defn(self, '$_reduce_236', TMP_Ruby23__reduce_236_152 = function $$_reduce_236(val, _values, result) { - var self = this; - - - result = self.builder.$ternary(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](5)); + result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); return result; - }, TMP_Ruby23__reduce_236_152.$$arity = 3); + }, $Ruby25__reduce_247$152.$$arity = 3); - Opal.defn(self, '$_reduce_241', TMP_Ruby23__reduce_241_153 = function $$_reduce_241(val, _values, result) { + Opal.def(self, '$_reduce_248', $Ruby25__reduce_248$153 = function $$_reduce_248(val, _values, result) { var self = this; - result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; return result; - }, TMP_Ruby23__reduce_241_153.$$arity = 3); + }, $Ruby25__reduce_248$153.$$arity = 3); - Opal.defn(self, '$_reduce_242', TMP_Ruby23__reduce_242_154 = function $$_reduce_242(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_250', $Ruby25__reduce_250$154 = function $$_reduce_250(val, _values, result) { + var self = this, rescue_body = nil; - result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); return result; - }, TMP_Ruby23__reduce_242_154.$$arity = 3); + }, $Ruby25__reduce_250$154.$$arity = 3); - Opal.defn(self, '$_reduce_243', TMP_Ruby23__reduce_243_155 = function $$_reduce_243(val, _values, result) { + Opal.def(self, '$_reduce_251', $Ruby25__reduce_251$155 = function $$_reduce_251(val, _values, result) { var self = this; result = val; return result; - }, TMP_Ruby23__reduce_243_155.$$arity = 3); + }, $Ruby25__reduce_251$155.$$arity = 3); - Opal.defn(self, '$_reduce_244', TMP_Ruby23__reduce_244_156 = function $$_reduce_244(val, _values, result) { + Opal.def(self, '$_reduce_252', $Ruby25__reduce_252$156 = function $$_reduce_252(val, _values, result) { var self = this; result = [nil, [], nil]; return result; - }, TMP_Ruby23__reduce_244_156.$$arity = 3); + }, $Ruby25__reduce_252$156.$$arity = 3); - Opal.defn(self, '$_reduce_246', TMP_Ruby23__reduce_246_157 = function $$_reduce_246(val, _values, result) { + Opal.def(self, '$_reduce_254', $Ruby25__reduce_254$157 = function $$_reduce_254(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_246_157.$$arity = 3); + }, $Ruby25__reduce_254$157.$$arity = 3); - Opal.defn(self, '$_reduce_249', TMP_Ruby23__reduce_249_158 = function $$_reduce_249(val, _values, result) { + Opal.def(self, '$_reduce_257', $Ruby25__reduce_257$158 = function $$_reduce_257(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); return result; - }, TMP_Ruby23__reduce_249_158.$$arity = 3); + }, $Ruby25__reduce_257$158.$$arity = 3); - Opal.defn(self, '$_reduce_250', TMP_Ruby23__reduce_250_159 = function $$_reduce_250(val, _values, result) { + Opal.def(self, '$_reduce_258', $Ruby25__reduce_258$159 = function $$_reduce_258(val, _values, result) { var self = this; result = [self.builder.$associate(nil, val['$[]'](0), nil)]; return result; - }, TMP_Ruby23__reduce_250_159.$$arity = 3); + }, $Ruby25__reduce_258$159.$$arity = 3); - Opal.defn(self, '$_reduce_251', TMP_Ruby23__reduce_251_160 = function $$_reduce_251(val, _values, result) { + Opal.def(self, '$_reduce_259', $Ruby25__reduce_259$160 = function $$_reduce_259(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_251_160.$$arity = 3); + }, $Ruby25__reduce_259$160.$$arity = 3); - Opal.defn(self, '$_reduce_252', TMP_Ruby23__reduce_252_161 = function $$_reduce_252(val, _values, result) { + Opal.def(self, '$_reduce_260', $Ruby25__reduce_260$161 = function $$_reduce_260(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_252_161.$$arity = 3); + }, $Ruby25__reduce_260$161.$$arity = 3); - Opal.defn(self, '$_reduce_253', TMP_Ruby23__reduce_253_162 = function $$_reduce_253(val, _values, result) { + Opal.def(self, '$_reduce_261', $Ruby25__reduce_261$162 = function $$_reduce_261(val, _values, result) { var self = this; result = [self.builder.$associate(nil, val['$[]'](0), nil)]; result.$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_253_162.$$arity = 3); + }, $Ruby25__reduce_261$162.$$arity = 3); - Opal.defn(self, '$_reduce_254', TMP_Ruby23__reduce_254_163 = function $$_reduce_254(val, _values, result) { + Opal.def(self, '$_reduce_262', $Ruby25__reduce_262$163 = function $$_reduce_262(val, _values, result) { var self = this, assocs = nil; @@ -41184,164 +47085,165 @@ if (i == null) i = nil; result = val['$[]'](0)['$<<'](assocs); result.$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_254_163.$$arity = 3); + }, $Ruby25__reduce_262$163.$$arity = 3); - Opal.defn(self, '$_reduce_255', TMP_Ruby23__reduce_255_164 = function $$_reduce_255(val, _values, result) { + Opal.def(self, '$_reduce_263', $Ruby25__reduce_263$164 = function $$_reduce_263(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_255_164.$$arity = 3); + }, $Ruby25__reduce_263$164.$$arity = 3); - Opal.defn(self, '$_reduce_256', TMP_Ruby23__reduce_256_165 = function $$_reduce_256(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_264', $Ruby25__reduce_264$165 = function $$_reduce_264(val, _values, result) { + var $a, self = this, last_token = nil, lookahead = nil, top = nil; - result = self.lexer.$cmdarg().$dup(); - self.lexer.$cmdarg().$push(true); + last_token = self.last_token['$[]'](0); + lookahead = ($truthy($a = last_token['$==']("tLBRACK")) ? $a : last_token['$==']("tLPAREN_ARG")); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(true); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$push(true) + }; return result; - }, TMP_Ruby23__reduce_256_165.$$arity = 3); + }, $Ruby25__reduce_264$165.$$arity = 3); - Opal.defn(self, '$_reduce_257', TMP_Ruby23__reduce_257_166 = function $$_reduce_257(val, _values, result) { - var self = this, $writer = nil; + Opal.def(self, '$_reduce_265', $Ruby25__reduce_265$166 = function $$_reduce_265(val, _values, result) { + var self = this, last_token = nil, lookahead = nil, top = nil; - - $writer = [val['$[]'](0)]; - $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; + last_token = self.last_token['$[]'](0); + lookahead = last_token['$==']("tLBRACE_ARG"); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$pop() + }; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_257_166.$$arity = 3); + }, $Ruby25__reduce_265$166.$$arity = 3); - Opal.defn(self, '$_reduce_258', TMP_Ruby23__reduce_258_167 = function $$_reduce_258(val, _values, result) { + Opal.def(self, '$_reduce_266', $Ruby25__reduce_266$167 = function $$_reduce_266(val, _values, result) { var self = this; result = self.builder.$block_pass(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_258_167.$$arity = 3); + }, $Ruby25__reduce_266$167.$$arity = 3); - Opal.defn(self, '$_reduce_259', TMP_Ruby23__reduce_259_168 = function $$_reduce_259(val, _values, result) { + Opal.def(self, '$_reduce_267', $Ruby25__reduce_267$168 = function $$_reduce_267(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_259_168.$$arity = 3); + }, $Ruby25__reduce_267$168.$$arity = 3); - Opal.defn(self, '$_reduce_260', TMP_Ruby23__reduce_260_169 = function $$_reduce_260(val, _values, result) { + Opal.def(self, '$_reduce_268', $Ruby25__reduce_268$169 = function $$_reduce_268(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_260_169.$$arity = 3); + }, $Ruby25__reduce_268$169.$$arity = 3); - Opal.defn(self, '$_reduce_261', TMP_Ruby23__reduce_261_170 = function $$_reduce_261(val, _values, result) { + Opal.def(self, '$_reduce_269', $Ruby25__reduce_269$170 = function $$_reduce_269(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_261_170.$$arity = 3); + }, $Ruby25__reduce_269$170.$$arity = 3); - Opal.defn(self, '$_reduce_262', TMP_Ruby23__reduce_262_171 = function $$_reduce_262(val, _values, result) { + Opal.def(self, '$_reduce_270', $Ruby25__reduce_270$171 = function $$_reduce_270(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_262_171.$$arity = 3); + }, $Ruby25__reduce_270$171.$$arity = 3); - Opal.defn(self, '$_reduce_263', TMP_Ruby23__reduce_263_172 = function $$_reduce_263(val, _values, result) { + Opal.def(self, '$_reduce_271', $Ruby25__reduce_271$172 = function $$_reduce_271(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_263_172.$$arity = 3); + }, $Ruby25__reduce_271$172.$$arity = 3); - Opal.defn(self, '$_reduce_264', TMP_Ruby23__reduce_264_173 = function $$_reduce_264(val, _values, result) { + Opal.def(self, '$_reduce_272', $Ruby25__reduce_272$173 = function $$_reduce_272(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); return result; - }, TMP_Ruby23__reduce_264_173.$$arity = 3); + }, $Ruby25__reduce_272$173.$$arity = 3); - Opal.defn(self, '$_reduce_265', TMP_Ruby23__reduce_265_174 = function $$_reduce_265(val, _values, result) { + Opal.def(self, '$_reduce_273', $Ruby25__reduce_273$174 = function $$_reduce_273(val, _values, result) { var self = this; result = self.builder.$array(nil, val['$[]'](0), nil); return result; - }, TMP_Ruby23__reduce_265_174.$$arity = 3); + }, $Ruby25__reduce_273$174.$$arity = 3); - Opal.defn(self, '$_reduce_267', TMP_Ruby23__reduce_267_175 = function $$_reduce_267(val, _values, result) { + Opal.def(self, '$_reduce_275', $Ruby25__reduce_275$175 = function $$_reduce_275(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_267_175.$$arity = 3); + }, $Ruby25__reduce_275$175.$$arity = 3); - Opal.defn(self, '$_reduce_268', TMP_Ruby23__reduce_268_176 = function $$_reduce_268(val, _values, result) { + Opal.def(self, '$_reduce_276', $Ruby25__reduce_276$176 = function $$_reduce_276(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); return result; - }, TMP_Ruby23__reduce_268_176.$$arity = 3); + }, $Ruby25__reduce_276$176.$$arity = 3); - Opal.defn(self, '$_reduce_269', TMP_Ruby23__reduce_269_177 = function $$_reduce_269(val, _values, result) { + Opal.def(self, '$_reduce_277', $Ruby25__reduce_277$177 = function $$_reduce_277(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_269_177.$$arity = 3); + }, $Ruby25__reduce_277$177.$$arity = 3); - Opal.defn(self, '$_reduce_280', TMP_Ruby23__reduce_280_178 = function $$_reduce_280(val, _values, result) { + Opal.def(self, '$_reduce_288', $Ruby25__reduce_288$178 = function $$_reduce_288(val, _values, result) { var self = this; result = self.builder.$call_method(nil, nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_280_178.$$arity = 3); + }, $Ruby25__reduce_288$178.$$arity = 3); - Opal.defn(self, '$_reduce_281', TMP_Ruby23__reduce_281_179 = function $$_reduce_281(val, _values, result) { + Opal.def(self, '$_reduce_289', $Ruby25__reduce_289$179 = function $$_reduce_289(val, _values, result) { var self = this; - result = self.lexer.$cmdarg().$dup(); - self.lexer.$cmdarg().$clear(); - return result; - }, TMP_Ruby23__reduce_281_179.$$arity = 3); - - Opal.defn(self, '$_reduce_282', TMP_Ruby23__reduce_282_180 = function $$_reduce_282(val, _values, result) { - var self = this, $writer = nil; - - - - $writer = [val['$[]'](1)]; - $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - result = self.builder.$begin_keyword(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + self.lexer.$cmdarg().$push(false); return result; - }, TMP_Ruby23__reduce_282_180.$$arity = 3); + }, $Ruby25__reduce_289$179.$$arity = 3); - Opal.defn(self, '$_reduce_283', TMP_Ruby23__reduce_283_181 = function $$_reduce_283(val, _values, result) { + Opal.def(self, '$_reduce_290', $Ruby25__reduce_290$180 = function $$_reduce_290(val, _values, result) { var self = this; - result = self.lexer.$cmdarg().$dup(); - self.lexer.$cmdarg().$clear(); + self.lexer.$cmdarg().$pop(); + result = self.builder.$begin_keyword(val['$[]'](0), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_283_181.$$arity = 3); + }, $Ruby25__reduce_290$180.$$arity = 3); - Opal.defn(self, '$_reduce_284', TMP_Ruby23__reduce_284_182 = function $$_reduce_284(val, _values, result) { + Opal.def(self, '$_reduce_291', $Ruby25__reduce_291$181 = function $$_reduce_291(val, _values, result) { var self = this, $writer = nil; @@ -41350,21 +47252,17 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_284_182.$$arity = 3); + }, $Ruby25__reduce_291$181.$$arity = 3); - Opal.defn(self, '$_reduce_285', TMP_Ruby23__reduce_285_183 = function $$_reduce_285(val, _values, result) { - var self = this, $writer = nil; + Opal.def(self, '$_reduce_292', $Ruby25__reduce_292$182 = function $$_reduce_292(val, _values, result) { + var self = this; - - $writer = [val['$[]'](1)]; - $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](5)); + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_285_183.$$arity = 3); + }, $Ruby25__reduce_292$182.$$arity = 3); - Opal.defn(self, '$_reduce_286', TMP_Ruby23__reduce_286_184 = function $$_reduce_286(val, _values, result) { + Opal.def(self, '$_reduce_293', $Ruby25__reduce_293$183 = function $$_reduce_293(val, _values, result) { var self = this, $writer = nil; @@ -41373,113 +47271,113 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_286_184.$$arity = 3); + }, $Ruby25__reduce_293$183.$$arity = 3); - Opal.defn(self, '$_reduce_287', TMP_Ruby23__reduce_287_185 = function $$_reduce_287(val, _values, result) { + Opal.def(self, '$_reduce_294', $Ruby25__reduce_294$184 = function $$_reduce_294(val, _values, result) { var self = this; result = self.builder.$begin(val['$[]'](0), nil, val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_287_185.$$arity = 3); + }, $Ruby25__reduce_294$184.$$arity = 3); - Opal.defn(self, '$_reduce_288', TMP_Ruby23__reduce_288_186 = function $$_reduce_288(val, _values, result) { + Opal.def(self, '$_reduce_295', $Ruby25__reduce_295$185 = function $$_reduce_295(val, _values, result) { var self = this; result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_288_186.$$arity = 3); + }, $Ruby25__reduce_295$185.$$arity = 3); - Opal.defn(self, '$_reduce_289', TMP_Ruby23__reduce_289_187 = function $$_reduce_289(val, _values, result) { + Opal.def(self, '$_reduce_296', $Ruby25__reduce_296$186 = function $$_reduce_296(val, _values, result) { var self = this; result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_289_187.$$arity = 3); + }, $Ruby25__reduce_296$186.$$arity = 3); - Opal.defn(self, '$_reduce_290', TMP_Ruby23__reduce_290_188 = function $$_reduce_290(val, _values, result) { + Opal.def(self, '$_reduce_297', $Ruby25__reduce_297$187 = function $$_reduce_297(val, _values, result) { var self = this; result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_290_188.$$arity = 3); + }, $Ruby25__reduce_297$187.$$arity = 3); - Opal.defn(self, '$_reduce_291', TMP_Ruby23__reduce_291_189 = function $$_reduce_291(val, _values, result) { + Opal.def(self, '$_reduce_298', $Ruby25__reduce_298$188 = function $$_reduce_298(val, _values, result) { var self = this; result = self.builder.$array(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_291_189.$$arity = 3); + }, $Ruby25__reduce_298$188.$$arity = 3); - Opal.defn(self, '$_reduce_292', TMP_Ruby23__reduce_292_190 = function $$_reduce_292(val, _values, result) { + Opal.def(self, '$_reduce_299', $Ruby25__reduce_299$189 = function $$_reduce_299(val, _values, result) { var self = this; result = self.builder.$associate(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_292_190.$$arity = 3); + }, $Ruby25__reduce_299$189.$$arity = 3); - Opal.defn(self, '$_reduce_293', TMP_Ruby23__reduce_293_191 = function $$_reduce_293(val, _values, result) { + Opal.def(self, '$_reduce_300', $Ruby25__reduce_300$190 = function $$_reduce_300(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("return", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_293_191.$$arity = 3); + }, $Ruby25__reduce_300$190.$$arity = 3); - Opal.defn(self, '$_reduce_294', TMP_Ruby23__reduce_294_192 = function $$_reduce_294(val, _values, result) { + Opal.def(self, '$_reduce_301', $Ruby25__reduce_301$191 = function $$_reduce_301(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_294_192.$$arity = 3); + }, $Ruby25__reduce_301$191.$$arity = 3); - Opal.defn(self, '$_reduce_295', TMP_Ruby23__reduce_295_193 = function $$_reduce_295(val, _values, result) { + Opal.def(self, '$_reduce_302', $Ruby25__reduce_302$192 = function $$_reduce_302(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), [], val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_295_193.$$arity = 3); + }, $Ruby25__reduce_302$192.$$arity = 3); - Opal.defn(self, '$_reduce_296', TMP_Ruby23__reduce_296_194 = function $$_reduce_296(val, _values, result) { + Opal.def(self, '$_reduce_303', $Ruby25__reduce_303$193 = function $$_reduce_303(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("yield", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_296_194.$$arity = 3); + }, $Ruby25__reduce_303$193.$$arity = 3); - Opal.defn(self, '$_reduce_297', TMP_Ruby23__reduce_297_195 = function $$_reduce_297(val, _values, result) { + Opal.def(self, '$_reduce_304', $Ruby25__reduce_304$194 = function $$_reduce_304(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](3)], val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_297_195.$$arity = 3); + }, $Ruby25__reduce_304$194.$$arity = 3); - Opal.defn(self, '$_reduce_298', TMP_Ruby23__reduce_298_196 = function $$_reduce_298(val, _values, result) { + Opal.def(self, '$_reduce_305', $Ruby25__reduce_305$195 = function $$_reduce_305(val, _values, result) { var self = this; result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_298_196.$$arity = 3); + }, $Ruby25__reduce_305$195.$$arity = 3); - Opal.defn(self, '$_reduce_299', TMP_Ruby23__reduce_299_197 = function $$_reduce_299(val, _values, result) { + Opal.def(self, '$_reduce_306', $Ruby25__reduce_306$196 = function $$_reduce_306(val, _values, result) { var self = this; result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), nil, val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_299_197.$$arity = 3); + }, $Ruby25__reduce_306$196.$$arity = 3); - Opal.defn(self, '$_reduce_300', TMP_Ruby23__reduce_300_198 = function $$_reduce_300(val, _values, result) { + Opal.def(self, '$_reduce_307', $Ruby25__reduce_307$197 = function $$_reduce_307(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -41487,18 +47385,18 @@ if (i == null) i = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_300_198.$$arity = 3); + }, $Ruby25__reduce_307$197.$$arity = 3); - Opal.defn(self, '$_reduce_302', TMP_Ruby23__reduce_302_199 = function $$_reduce_302(val, _values, result) { + Opal.def(self, '$_reduce_309', $Ruby25__reduce_309$198 = function $$_reduce_309(val, _values, result) { var $a, $b, self = this, begin_t = nil, args = nil, body = nil, end_t = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(val['$[]'](0), begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_302_199.$$arity = 3); + }, $Ruby25__reduce_309$198.$$arity = 3); - Opal.defn(self, '$_reduce_303', TMP_Ruby23__reduce_303_200 = function $$_reduce_303(val, _values, result) { + Opal.def(self, '$_reduce_310', $Ruby25__reduce_310$199 = function $$_reduce_310(val, _values, result) { var $a, $b, $c, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil; @@ -41506,203 +47404,166 @@ if (i == null) i = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (args = ($a[0] == null ? nil : $a[0])), ($c = Opal.to_ary(($a[1] == null ? nil : $a[1])), (begin_t = ($c[0] == null ? nil : $c[0])), (body = ($c[1] == null ? nil : $c[1])), (end_t = ($c[2] == null ? nil : $c[2]))), $b; result = self.builder.$block(lambda_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_303_200.$$arity = 3); + }, $Ruby25__reduce_310$199.$$arity = 3); - Opal.defn(self, '$_reduce_304', TMP_Ruby23__reduce_304_201 = function $$_reduce_304(val, _values, result) { + Opal.def(self, '$_reduce_311', $Ruby25__reduce_311$200 = function $$_reduce_311(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_304_201.$$arity = 3); + }, $Ruby25__reduce_311$200.$$arity = 3); - Opal.defn(self, '$_reduce_305', TMP_Ruby23__reduce_305_202 = function $$_reduce_305(val, _values, result) { + Opal.def(self, '$_reduce_312', $Ruby25__reduce_312$201 = function $$_reduce_312(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), else_, else_t, val['$[]'](3), val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_305_202.$$arity = 3); - - Opal.defn(self, '$_reduce_306', TMP_Ruby23__reduce_306_203 = function $$_reduce_306(val, _values, result) { - var self = this; - - - self.lexer.$cond().$push(true); - return result; - }, TMP_Ruby23__reduce_306_203.$$arity = 3); - - Opal.defn(self, '$_reduce_307', TMP_Ruby23__reduce_307_204 = function $$_reduce_307(val, _values, result) { - var self = this; - - - self.lexer.$cond().$pop(); - return result; - }, TMP_Ruby23__reduce_307_204.$$arity = 3); + }, $Ruby25__reduce_312$201.$$arity = 3); - Opal.defn(self, '$_reduce_308', TMP_Ruby23__reduce_308_205 = function $$_reduce_308(val, _values, result) { + Opal.def(self, '$_reduce_313', $Ruby25__reduce_313$202 = function $$_reduce_313(val, _values, result) { var self = this; - result = self.builder.$loop("while", val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](5), val['$[]'](6)); - return result; - }, TMP_Ruby23__reduce_308_205.$$arity = 3); - - Opal.defn(self, '$_reduce_309', TMP_Ruby23__reduce_309_206 = function $$_reduce_309(val, _values, result) { - var self = this; - - - self.lexer.$cond().$push(true); - return result; - }, TMP_Ruby23__reduce_309_206.$$arity = 3); - - Opal.defn(self, '$_reduce_310', TMP_Ruby23__reduce_310_207 = function $$_reduce_310(val, _values, result) { - var self = this; - - - self.lexer.$cond().$pop(); + result = $send(self.builder, 'loop', ["while", val['$[]'](0)].concat(Opal.to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); return result; - }, TMP_Ruby23__reduce_310_207.$$arity = 3); + }, $Ruby25__reduce_313$202.$$arity = 3); - Opal.defn(self, '$_reduce_311', TMP_Ruby23__reduce_311_208 = function $$_reduce_311(val, _values, result) { + Opal.def(self, '$_reduce_314', $Ruby25__reduce_314$203 = function $$_reduce_314(val, _values, result) { var self = this; - result = self.builder.$loop("until", val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](5), val['$[]'](6)); + result = $send(self.builder, 'loop', ["until", val['$[]'](0)].concat(Opal.to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); return result; - }, TMP_Ruby23__reduce_311_208.$$arity = 3); + }, $Ruby25__reduce_314$203.$$arity = 3); - Opal.defn(self, '$_reduce_312', TMP_Ruby23__reduce_312_209 = function $$_reduce_312(val, _values, result) { + Opal.def(self, '$_reduce_315', $Ruby25__reduce_315$204 = function $$_reduce_315(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; $a = [].concat(Opal.to_a(val['$[]'](3))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = Opal.to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; result = self.builder.$case(val['$[]'](0), val['$[]'](1), when_bodies, else_t, else_body, val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_312_209.$$arity = 3); + }, $Ruby25__reduce_315$204.$$arity = 3); - Opal.defn(self, '$_reduce_313', TMP_Ruby23__reduce_313_210 = function $$_reduce_313(val, _values, result) { + Opal.def(self, '$_reduce_316', $Ruby25__reduce_316$205 = function $$_reduce_316(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; $a = [].concat(Opal.to_a(val['$[]'](2))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = Opal.to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; result = self.builder.$case(val['$[]'](0), nil, when_bodies, else_t, else_body, val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_313_210.$$arity = 3); + }, $Ruby25__reduce_316$205.$$arity = 3); - Opal.defn(self, '$_reduce_314', TMP_Ruby23__reduce_314_211 = function $$_reduce_314(val, _values, result) { + Opal.def(self, '$_reduce_317', $Ruby25__reduce_317$206 = function $$_reduce_317(val, _values, result) { var self = this; - self.lexer.$cond().$push(true); - return result; - }, TMP_Ruby23__reduce_314_211.$$arity = 3); - - Opal.defn(self, '$_reduce_315', TMP_Ruby23__reduce_315_212 = function $$_reduce_315(val, _values, result) { - var self = this; - - - self.lexer.$cond().$pop(); - return result; - }, TMP_Ruby23__reduce_315_212.$$arity = 3); - - Opal.defn(self, '$_reduce_316', TMP_Ruby23__reduce_316_213 = function $$_reduce_316(val, _values, result) { - var self = this; - - - result = self.builder.$for(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](5), val['$[]'](7), val['$[]'](8)); + result = $send(self.builder, 'for', [val['$[]'](0), val['$[]'](1), val['$[]'](2)].concat(Opal.to_a(val['$[]'](3))).concat([val['$[]'](4), val['$[]'](5)])); return result; - }, TMP_Ruby23__reduce_316_213.$$arity = 3); + }, $Ruby25__reduce_317$206.$$arity = 3); - Opal.defn(self, '$_reduce_317', TMP_Ruby23__reduce_317_214 = function $$_reduce_317(val, _values, result) { + Opal.def(self, '$_reduce_318', $Ruby25__reduce_318$207 = function $$_reduce_318(val, _values, result) { var self = this; self.static_env.$extend_static(); - self.lexer.$push_cmdarg(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + self.context.$push("class"); return result; - }, TMP_Ruby23__reduce_317_214.$$arity = 3); + }, $Ruby25__reduce_318$207.$$arity = 3); - Opal.defn(self, '$_reduce_318', TMP_Ruby23__reduce_318_215 = function $$_reduce_318(val, _values, result) { + Opal.def(self, '$_reduce_319', $Ruby25__reduce_319$208 = function $$_reduce_319(val, _values, result) { var $a, $b, self = this, lt_t = nil, superclass = nil; - if ($truthy(self['$in_def?']())) { - self.$diagnostic("error", "class_in_def", nil, val['$[]'](0))}; + if ($truthy(self.context['$class_definition_allowed?']())) { + } else { + self.$diagnostic("error", "class_in_def", nil, val['$[]'](0)) + }; $b = val['$[]'](2), $a = Opal.to_ary($b), (lt_t = ($a[0] == null ? nil : $a[0])), (superclass = ($a[1] == null ? nil : $a[1])), $b; result = self.builder.$def_class(val['$[]'](0), val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); - self.lexer.$pop_cmdarg(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); self.static_env.$unextend(); + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_318_215.$$arity = 3); + }, $Ruby25__reduce_319$208.$$arity = 3); - Opal.defn(self, '$_reduce_319', TMP_Ruby23__reduce_319_216 = function $$_reduce_319(val, _values, result) { + Opal.def(self, '$_reduce_320', $Ruby25__reduce_320$209 = function $$_reduce_320(val, _values, result) { var self = this; - result = self.def_level; - self.def_level = 0; self.static_env.$extend_static(); - self.lexer.$push_cmdarg(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + self.context.$push("sclass"); return result; - }, TMP_Ruby23__reduce_319_216.$$arity = 3); + }, $Ruby25__reduce_320$209.$$arity = 3); - Opal.defn(self, '$_reduce_320', TMP_Ruby23__reduce_320_217 = function $$_reduce_320(val, _values, result) { + Opal.def(self, '$_reduce_321', $Ruby25__reduce_321$210 = function $$_reduce_321(val, _values, result) { var self = this; result = self.builder.$def_sclass(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); - self.lexer.$pop_cmdarg(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); self.static_env.$unextend(); - self.def_level = val['$[]'](4); + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_320_217.$$arity = 3); + }, $Ruby25__reduce_321$210.$$arity = 3); - Opal.defn(self, '$_reduce_321', TMP_Ruby23__reduce_321_218 = function $$_reduce_321(val, _values, result) { + Opal.def(self, '$_reduce_322', $Ruby25__reduce_322$211 = function $$_reduce_322(val, _values, result) { var self = this; self.static_env.$extend_static(); - self.lexer.$push_cmdarg(); + self.lexer.$cmdarg().$push(false); return result; - }, TMP_Ruby23__reduce_321_218.$$arity = 3); + }, $Ruby25__reduce_322$211.$$arity = 3); - Opal.defn(self, '$_reduce_322', TMP_Ruby23__reduce_322_219 = function $$_reduce_322(val, _values, result) { + Opal.def(self, '$_reduce_323', $Ruby25__reduce_323$212 = function $$_reduce_323(val, _values, result) { var self = this; - if ($truthy(self['$in_def?']())) { - self.$diagnostic("error", "module_in_def", nil, val['$[]'](0))}; + if ($truthy(self.context['$module_definition_allowed?']())) { + } else { + self.$diagnostic("error", "module_in_def", nil, val['$[]'](0)) + }; result = self.builder.$def_module(val['$[]'](0), val['$[]'](1), val['$[]'](3), val['$[]'](4)); - self.lexer.$pop_cmdarg(); + self.lexer.$cmdarg().$pop(); self.static_env.$unextend(); return result; - }, TMP_Ruby23__reduce_322_219.$$arity = 3); + }, $Ruby25__reduce_323$212.$$arity = 3); - Opal.defn(self, '$_reduce_323', TMP_Ruby23__reduce_323_220 = function $$_reduce_323(val, _values, result) { + Opal.def(self, '$_reduce_324', $Ruby25__reduce_324$213 = function $$_reduce_324(val, _values, result) { var self = this; - self.def_level = $rb_plus(self.def_level, 1); self.static_env.$extend_static(); - self.lexer.$push_cmdarg(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + self.context.$push("def"); return result; - }, TMP_Ruby23__reduce_323_220.$$arity = 3); + }, $Ruby25__reduce_324$213.$$arity = 3); - Opal.defn(self, '$_reduce_324', TMP_Ruby23__reduce_324_221 = function $$_reduce_324(val, _values, result) { + Opal.def(self, '$_reduce_325', $Ruby25__reduce_325$214 = function $$_reduce_325(val, _values, result) { var self = this; result = self.builder.$def_method(val['$[]'](0), val['$[]'](1), val['$[]'](3), val['$[]'](4), val['$[]'](5)); - self.lexer.$pop_cmdarg(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); self.static_env.$unextend(); - self.def_level = $rb_minus(self.def_level, 1); + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_324_221.$$arity = 3); + }, $Ruby25__reduce_325$214.$$arity = 3); - Opal.defn(self, '$_reduce_325', TMP_Ruby23__reduce_325_222 = function $$_reduce_325(val, _values, result) { + Opal.def(self, '$_reduce_326', $Ruby25__reduce_326$215 = function $$_reduce_326(val, _values, result) { var self = this, $writer = nil; @@ -41711,347 +47572,358 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_325_222.$$arity = 3); + }, $Ruby25__reduce_326$215.$$arity = 3); - Opal.defn(self, '$_reduce_326', TMP_Ruby23__reduce_326_223 = function $$_reduce_326(val, _values, result) { + Opal.def(self, '$_reduce_327', $Ruby25__reduce_327$216 = function $$_reduce_327(val, _values, result) { var self = this; - self.def_level = $rb_plus(self.def_level, 1); self.static_env.$extend_static(); - self.lexer.$push_cmdarg(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + self.context.$push("defs"); return result; - }, TMP_Ruby23__reduce_326_223.$$arity = 3); + }, $Ruby25__reduce_327$216.$$arity = 3); - Opal.defn(self, '$_reduce_327', TMP_Ruby23__reduce_327_224 = function $$_reduce_327(val, _values, result) { + Opal.def(self, '$_reduce_328', $Ruby25__reduce_328$217 = function $$_reduce_328(val, _values, result) { var self = this; result = self.builder.$def_singleton(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](6), val['$[]'](7), val['$[]'](8)); - self.lexer.$pop_cmdarg(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); self.static_env.$unextend(); - self.def_level = $rb_minus(self.def_level, 1); + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_327_224.$$arity = 3); + }, $Ruby25__reduce_328$217.$$arity = 3); - Opal.defn(self, '$_reduce_328', TMP_Ruby23__reduce_328_225 = function $$_reduce_328(val, _values, result) { + Opal.def(self, '$_reduce_329', $Ruby25__reduce_329$218 = function $$_reduce_329(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("break", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_328_225.$$arity = 3); + }, $Ruby25__reduce_329$218.$$arity = 3); - Opal.defn(self, '$_reduce_329', TMP_Ruby23__reduce_329_226 = function $$_reduce_329(val, _values, result) { + Opal.def(self, '$_reduce_330', $Ruby25__reduce_330$219 = function $$_reduce_330(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("next", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_329_226.$$arity = 3); + }, $Ruby25__reduce_330$219.$$arity = 3); - Opal.defn(self, '$_reduce_330', TMP_Ruby23__reduce_330_227 = function $$_reduce_330(val, _values, result) { + Opal.def(self, '$_reduce_331', $Ruby25__reduce_331$220 = function $$_reduce_331(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("redo", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_330_227.$$arity = 3); + }, $Ruby25__reduce_331$220.$$arity = 3); - Opal.defn(self, '$_reduce_331', TMP_Ruby23__reduce_331_228 = function $$_reduce_331(val, _values, result) { + Opal.def(self, '$_reduce_332', $Ruby25__reduce_332$221 = function $$_reduce_332(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("retry", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_331_228.$$arity = 3); + }, $Ruby25__reduce_332$221.$$arity = 3); - Opal.defn(self, '$_reduce_335', TMP_Ruby23__reduce_335_229 = function $$_reduce_335(val, _values, result) { + Opal.def(self, '$_reduce_334', $Ruby25__reduce_334$222 = function $$_reduce_334(val, _values, result) { + var self = this; + + + if ($truthy(self.context['$in_class?']())) { + self.$diagnostic("error", "invalid_return", nil, val['$[]'](0))}; + return result; + }, $Ruby25__reduce_334$222.$$arity = 3); + + Opal.def(self, '$_reduce_337', $Ruby25__reduce_337$223 = function $$_reduce_337(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_335_229.$$arity = 3); + }, $Ruby25__reduce_337$223.$$arity = 3); - Opal.defn(self, '$_reduce_339', TMP_Ruby23__reduce_339_230 = function $$_reduce_339(val, _values, result) { + Opal.def(self, '$_reduce_341', $Ruby25__reduce_341$224 = function $$_reduce_341(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; result = [val['$[]'](0), self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, nil)]; return result; - }, TMP_Ruby23__reduce_339_230.$$arity = 3); + }, $Ruby25__reduce_341$224.$$arity = 3); - Opal.defn(self, '$_reduce_341', TMP_Ruby23__reduce_341_231 = function $$_reduce_341(val, _values, result) { + Opal.def(self, '$_reduce_343', $Ruby25__reduce_343$225 = function $$_reduce_343(val, _values, result) { var self = this; result = val; return result; - }, TMP_Ruby23__reduce_341_231.$$arity = 3); + }, $Ruby25__reduce_343$225.$$arity = 3); - Opal.defn(self, '$_reduce_344', TMP_Ruby23__reduce_344_232 = function $$_reduce_344(val, _values, result) { + Opal.def(self, '$_reduce_346', $Ruby25__reduce_346$226 = function $$_reduce_346(val, _values, result) { var self = this; result = self.builder.$arg(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_344_232.$$arity = 3); + }, $Ruby25__reduce_346$226.$$arity = 3); - Opal.defn(self, '$_reduce_345', TMP_Ruby23__reduce_345_233 = function $$_reduce_345(val, _values, result) { + Opal.def(self, '$_reduce_347', $Ruby25__reduce_347$227 = function $$_reduce_347(val, _values, result) { var self = this; result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_345_233.$$arity = 3); + }, $Ruby25__reduce_347$227.$$arity = 3); - Opal.defn(self, '$_reduce_346', TMP_Ruby23__reduce_346_234 = function $$_reduce_346(val, _values, result) { + Opal.def(self, '$_reduce_348', $Ruby25__reduce_348$228 = function $$_reduce_348(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_346_234.$$arity = 3); + }, $Ruby25__reduce_348$228.$$arity = 3); - Opal.defn(self, '$_reduce_347', TMP_Ruby23__reduce_347_235 = function $$_reduce_347(val, _values, result) { + Opal.def(self, '$_reduce_349', $Ruby25__reduce_349$229 = function $$_reduce_349(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_347_235.$$arity = 3); + }, $Ruby25__reduce_349$229.$$arity = 3); - Opal.defn(self, '$_reduce_349', TMP_Ruby23__reduce_349_236 = function $$_reduce_349(val, _values, result) { + Opal.def(self, '$_reduce_351', $Ruby25__reduce_351$230 = function $$_reduce_351(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$restarg(val['$[]'](2), val['$[]'](3))); return result; - }, TMP_Ruby23__reduce_349_236.$$arity = 3); + }, $Ruby25__reduce_351$230.$$arity = 3); - Opal.defn(self, '$_reduce_350', TMP_Ruby23__reduce_350_237 = function $$_reduce_350(val, _values, result) { + Opal.def(self, '$_reduce_352', $Ruby25__reduce_352$231 = function $$_reduce_352(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$restarg(val['$[]'](2), val['$[]'](3))).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_350_237.$$arity = 3); + }, $Ruby25__reduce_352$231.$$arity = 3); - Opal.defn(self, '$_reduce_351', TMP_Ruby23__reduce_351_238 = function $$_reduce_351(val, _values, result) { + Opal.def(self, '$_reduce_353', $Ruby25__reduce_353$232 = function $$_reduce_353(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$restarg(val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_351_238.$$arity = 3); + }, $Ruby25__reduce_353$232.$$arity = 3); - Opal.defn(self, '$_reduce_352', TMP_Ruby23__reduce_352_239 = function $$_reduce_352(val, _values, result) { + Opal.def(self, '$_reduce_354', $Ruby25__reduce_354$233 = function $$_reduce_354(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$restarg(val['$[]'](2))).$concat(val['$[]'](4)); return result; - }, TMP_Ruby23__reduce_352_239.$$arity = 3); + }, $Ruby25__reduce_354$233.$$arity = 3); - Opal.defn(self, '$_reduce_353', TMP_Ruby23__reduce_353_240 = function $$_reduce_353(val, _values, result) { + Opal.def(self, '$_reduce_355', $Ruby25__reduce_355$234 = function $$_reduce_355(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_353_240.$$arity = 3); + }, $Ruby25__reduce_355$234.$$arity = 3); - Opal.defn(self, '$_reduce_354', TMP_Ruby23__reduce_354_241 = function $$_reduce_354(val, _values, result) { + Opal.def(self, '$_reduce_356', $Ruby25__reduce_356$235 = function $$_reduce_356(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))].concat(Opal.to_a(val['$[]'](3))); return result; - }, TMP_Ruby23__reduce_354_241.$$arity = 3); + }, $Ruby25__reduce_356$235.$$arity = 3); - Opal.defn(self, '$_reduce_355', TMP_Ruby23__reduce_355_242 = function $$_reduce_355(val, _values, result) { + Opal.def(self, '$_reduce_357', $Ruby25__reduce_357$236 = function $$_reduce_357(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0))]; return result; - }, TMP_Ruby23__reduce_355_242.$$arity = 3); + }, $Ruby25__reduce_357$236.$$arity = 3); - Opal.defn(self, '$_reduce_356', TMP_Ruby23__reduce_356_243 = function $$_reduce_356(val, _values, result) { + Opal.def(self, '$_reduce_358', $Ruby25__reduce_358$237 = function $$_reduce_358(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0))].concat(Opal.to_a(val['$[]'](2))); return result; - }, TMP_Ruby23__reduce_356_243.$$arity = 3); + }, $Ruby25__reduce_358$237.$$arity = 3); - Opal.defn(self, '$_reduce_357', TMP_Ruby23__reduce_357_244 = function $$_reduce_357(val, _values, result) { + Opal.def(self, '$_reduce_359', $Ruby25__reduce_359$238 = function $$_reduce_359(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_357_244.$$arity = 3); + }, $Ruby25__reduce_359$238.$$arity = 3); - Opal.defn(self, '$_reduce_358', TMP_Ruby23__reduce_358_245 = function $$_reduce_358(val, _values, result) { + Opal.def(self, '$_reduce_360', $Ruby25__reduce_360$239 = function $$_reduce_360(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_358_245.$$arity = 3); + }, $Ruby25__reduce_360$239.$$arity = 3); - Opal.defn(self, '$_reduce_359', TMP_Ruby23__reduce_359_246 = function $$_reduce_359(val, _values, result) { + Opal.def(self, '$_reduce_361', $Ruby25__reduce_361$240 = function $$_reduce_361(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_359_246.$$arity = 3); + }, $Ruby25__reduce_361$240.$$arity = 3); - Opal.defn(self, '$_reduce_360', TMP_Ruby23__reduce_360_247 = function $$_reduce_360(val, _values, result) { + Opal.def(self, '$_reduce_362', $Ruby25__reduce_362$241 = function $$_reduce_362(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_360_247.$$arity = 3); + }, $Ruby25__reduce_362$241.$$arity = 3); - Opal.defn(self, '$_reduce_361', TMP_Ruby23__reduce_361_248 = function $$_reduce_361(val, _values, result) { + Opal.def(self, '$_reduce_363', $Ruby25__reduce_363$242 = function $$_reduce_363(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_361_248.$$arity = 3); + }, $Ruby25__reduce_363$242.$$arity = 3); - Opal.defn(self, '$_reduce_362', TMP_Ruby23__reduce_362_249 = function $$_reduce_362(val, _values, result) { + Opal.def(self, '$_reduce_364', $Ruby25__reduce_364$243 = function $$_reduce_364(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_362_249.$$arity = 3); + }, $Ruby25__reduce_364$243.$$arity = 3); - Opal.defn(self, '$_reduce_363', TMP_Ruby23__reduce_363_250 = function $$_reduce_363(val, _values, result) { + Opal.def(self, '$_reduce_365', $Ruby25__reduce_365$244 = function $$_reduce_365(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_363_250.$$arity = 3); + }, $Ruby25__reduce_365$244.$$arity = 3); - Opal.defn(self, '$_reduce_364', TMP_Ruby23__reduce_364_251 = function $$_reduce_364(val, _values, result) { + Opal.def(self, '$_reduce_366', $Ruby25__reduce_366$245 = function $$_reduce_366(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; - }, TMP_Ruby23__reduce_364_251.$$arity = 3); + }, $Ruby25__reduce_366$245.$$arity = 3); - Opal.defn(self, '$_reduce_365', TMP_Ruby23__reduce_365_252 = function $$_reduce_365(val, _values, result) { + Opal.def(self, '$_reduce_367', $Ruby25__reduce_367$246 = function $$_reduce_367(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_365_252.$$arity = 3); + }, $Ruby25__reduce_367$246.$$arity = 3); - Opal.defn(self, '$_reduce_366', TMP_Ruby23__reduce_366_253 = function $$_reduce_366(val, _values, result) { + Opal.def(self, '$_reduce_368', $Ruby25__reduce_368$247 = function $$_reduce_368(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_366_253.$$arity = 3); + }, $Ruby25__reduce_368$247.$$arity = 3); - Opal.defn(self, '$_reduce_367', TMP_Ruby23__reduce_367_254 = function $$_reduce_367(val, _values, result) { + Opal.def(self, '$_reduce_369', $Ruby25__reduce_369$248 = function $$_reduce_369(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_367_254.$$arity = 3); + }, $Ruby25__reduce_369$248.$$arity = 3); - Opal.defn(self, '$_reduce_369', TMP_Ruby23__reduce_369_255 = function $$_reduce_369(val, _values, result) { + Opal.def(self, '$_reduce_371', $Ruby25__reduce_371$249 = function $$_reduce_371(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_369_255.$$arity = 3); + }, $Ruby25__reduce_371$249.$$arity = 3); - Opal.defn(self, '$_reduce_370', TMP_Ruby23__reduce_370_256 = function $$_reduce_370(val, _values, result) { + Opal.def(self, '$_reduce_372', $Ruby25__reduce_372$250 = function $$_reduce_372(val, _values, result) { var $a, self = this; if ($truthy(($truthy($a = val['$[]'](1)['$empty?']()) ? val['$[]'](0).$size()['$=='](1) : $a))) { result = [self.builder.$procarg0(val['$[]'](0)['$[]'](0))] - } else { + } else { result = val['$[]'](0).$concat(val['$[]'](1)) }; return result; - }, TMP_Ruby23__reduce_370_256.$$arity = 3); + }, $Ruby25__reduce_372$250.$$arity = 3); - Opal.defn(self, '$_reduce_371', TMP_Ruby23__reduce_371_257 = function $$_reduce_371(val, _values, result) { + Opal.def(self, '$_reduce_373', $Ruby25__reduce_373$251 = function $$_reduce_373(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_371_257.$$arity = 3); + }, $Ruby25__reduce_373$251.$$arity = 3); - Opal.defn(self, '$_reduce_372', TMP_Ruby23__reduce_372_258 = function $$_reduce_372(val, _values, result) { + Opal.def(self, '$_reduce_374', $Ruby25__reduce_374$252 = function $$_reduce_374(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_372_258.$$arity = 3); + }, $Ruby25__reduce_374$252.$$arity = 3); - Opal.defn(self, '$_reduce_373', TMP_Ruby23__reduce_373_259 = function $$_reduce_373(val, _values, result) { + Opal.def(self, '$_reduce_375', $Ruby25__reduce_375$253 = function $$_reduce_375(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_373_259.$$arity = 3); + }, $Ruby25__reduce_375$253.$$arity = 3); - Opal.defn(self, '$_reduce_374', TMP_Ruby23__reduce_374_260 = function $$_reduce_374(val, _values, result) { + Opal.def(self, '$_reduce_376', $Ruby25__reduce_376$254 = function $$_reduce_376(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_374_260.$$arity = 3); + }, $Ruby25__reduce_376$254.$$arity = 3); - Opal.defn(self, '$_reduce_375', TMP_Ruby23__reduce_375_261 = function $$_reduce_375(val, _values, result) { + Opal.def(self, '$_reduce_377', $Ruby25__reduce_377$255 = function $$_reduce_377(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_375_261.$$arity = 3); + }, $Ruby25__reduce_377$255.$$arity = 3); - Opal.defn(self, '$_reduce_376', TMP_Ruby23__reduce_376_262 = function $$_reduce_376(val, _values, result) { + Opal.def(self, '$_reduce_378', $Ruby25__reduce_378$256 = function $$_reduce_378(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_376_262.$$arity = 3); + }, $Ruby25__reduce_378$256.$$arity = 3); - Opal.defn(self, '$_reduce_378', TMP_Ruby23__reduce_378_263 = function $$_reduce_378(val, _values, result) { + Opal.def(self, '$_reduce_380', $Ruby25__reduce_380$257 = function $$_reduce_380(val, _values, result) { var self = this; result = self.builder.$args(nil, [], nil); return result; - }, TMP_Ruby23__reduce_378_263.$$arity = 3); + }, $Ruby25__reduce_380$257.$$arity = 3); - Opal.defn(self, '$_reduce_379', TMP_Ruby23__reduce_379_264 = function $$_reduce_379(val, _values, result) { + Opal.def(self, '$_reduce_381', $Ruby25__reduce_381$258 = function $$_reduce_381(val, _values, result) { var self = this, $writer = nil; @@ -42060,172 +47932,185 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_379_264.$$arity = 3); + }, $Ruby25__reduce_381$258.$$arity = 3); - Opal.defn(self, '$_reduce_380', TMP_Ruby23__reduce_380_265 = function $$_reduce_380(val, _values, result) { + Opal.def(self, '$_reduce_382', $Ruby25__reduce_382$259 = function $$_reduce_382(val, _values, result) { var self = this; result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_380_265.$$arity = 3); + }, $Ruby25__reduce_382$259.$$arity = 3); - Opal.defn(self, '$_reduce_381', TMP_Ruby23__reduce_381_266 = function $$_reduce_381(val, _values, result) { + Opal.def(self, '$_reduce_383', $Ruby25__reduce_383$260 = function $$_reduce_383(val, _values, result) { var self = this; result = self.builder.$args(val['$[]'](0), [], val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_381_266.$$arity = 3); + }, $Ruby25__reduce_383$260.$$arity = 3); - Opal.defn(self, '$_reduce_382', TMP_Ruby23__reduce_382_267 = function $$_reduce_382(val, _values, result) { + Opal.def(self, '$_reduce_384', $Ruby25__reduce_384$261 = function $$_reduce_384(val, _values, result) { var self = this; result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_382_267.$$arity = 3); + }, $Ruby25__reduce_384$261.$$arity = 3); - Opal.defn(self, '$_reduce_383', TMP_Ruby23__reduce_383_268 = function $$_reduce_383(val, _values, result) { + Opal.def(self, '$_reduce_385', $Ruby25__reduce_385$262 = function $$_reduce_385(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_383_268.$$arity = 3); + }, $Ruby25__reduce_385$262.$$arity = 3); - Opal.defn(self, '$_reduce_384', TMP_Ruby23__reduce_384_269 = function $$_reduce_384(val, _values, result) { + Opal.def(self, '$_reduce_386', $Ruby25__reduce_386$263 = function $$_reduce_386(val, _values, result) { var self = this; result = val['$[]'](2); return result; - }, TMP_Ruby23__reduce_384_269.$$arity = 3); + }, $Ruby25__reduce_386$263.$$arity = 3); - Opal.defn(self, '$_reduce_385', TMP_Ruby23__reduce_385_270 = function $$_reduce_385(val, _values, result) { + Opal.def(self, '$_reduce_387', $Ruby25__reduce_387$264 = function $$_reduce_387(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_385_270.$$arity = 3); + }, $Ruby25__reduce_387$264.$$arity = 3); - Opal.defn(self, '$_reduce_386', TMP_Ruby23__reduce_386_271 = function $$_reduce_386(val, _values, result) { + Opal.def(self, '$_reduce_388', $Ruby25__reduce_388$265 = function $$_reduce_388(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_386_271.$$arity = 3); + }, $Ruby25__reduce_388$265.$$arity = 3); - Opal.defn(self, '$_reduce_387', TMP_Ruby23__reduce_387_272 = function $$_reduce_387(val, _values, result) { + Opal.def(self, '$_reduce_389', $Ruby25__reduce_389$266 = function $$_reduce_389(val, _values, result) { var self = this; self.static_env.$declare(val['$[]'](0)['$[]'](0)); result = self.builder.$shadowarg(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_387_272.$$arity = 3); + }, $Ruby25__reduce_389$266.$$arity = 3); - Opal.defn(self, '$_reduce_389', TMP_Ruby23__reduce_389_273 = function $$_reduce_389(val, _values, result) { + Opal.def(self, '$_reduce_391', $Ruby25__reduce_391$267 = function $$_reduce_391(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; - }, TMP_Ruby23__reduce_389_273.$$arity = 3); + }, $Ruby25__reduce_391$267.$$arity = 3); - Opal.defn(self, '$_reduce_390', TMP_Ruby23__reduce_390_274 = function $$_reduce_390(val, _values, result) { + Opal.def(self, '$_reduce_392', $Ruby25__reduce_392$268 = function $$_reduce_392(val, _values, result) { var self = this; - result = self.lexer.$cmdarg().$dup(); - self.lexer.$cmdarg().$clear(); + self.lexer.$cmdarg().$push(false); return result; - }, TMP_Ruby23__reduce_390_274.$$arity = 3); + }, $Ruby25__reduce_392$268.$$arity = 3); - Opal.defn(self, '$_reduce_391', TMP_Ruby23__reduce_391_275 = function $$_reduce_391(val, _values, result) { - var self = this, $writer = nil; + Opal.def(self, '$_reduce_393', $Ruby25__reduce_393$269 = function $$_reduce_393(val, _values, result) { + var self = this; - - $writer = [val['$[]'](2)]; - $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.lexer.$cmdarg().$lexpop(); + self.lexer.$cmdarg().$pop(); result = [val['$[]'](1), val['$[]'](3)]; self.static_env.$unextend(); return result; - }, TMP_Ruby23__reduce_391_275.$$arity = 3); + }, $Ruby25__reduce_393$269.$$arity = 3); - Opal.defn(self, '$_reduce_392', TMP_Ruby23__reduce_392_276 = function $$_reduce_392(val, _values, result) { + Opal.def(self, '$_reduce_394', $Ruby25__reduce_394$270 = function $$_reduce_394(val, _values, result) { var self = this; result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_392_276.$$arity = 3); + }, $Ruby25__reduce_394$270.$$arity = 3); - Opal.defn(self, '$_reduce_393', TMP_Ruby23__reduce_393_277 = function $$_reduce_393(val, _values, result) { + Opal.def(self, '$_reduce_395', $Ruby25__reduce_395$271 = function $$_reduce_395(val, _values, result) { var self = this; result = self.builder.$args(nil, val['$[]'](0), nil); return result; - }, TMP_Ruby23__reduce_393_277.$$arity = 3); + }, $Ruby25__reduce_395$271.$$arity = 3); - Opal.defn(self, '$_reduce_394', TMP_Ruby23__reduce_394_278 = function $$_reduce_394(val, _values, result) { + Opal.def(self, '$_reduce_396', $Ruby25__reduce_396$272 = function $$_reduce_396(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](1), val['$[]'](2)]; + self.context.$push("lambda"); return result; - }, TMP_Ruby23__reduce_394_278.$$arity = 3); + }, $Ruby25__reduce_396$272.$$arity = 3); - Opal.defn(self, '$_reduce_395', TMP_Ruby23__reduce_395_279 = function $$_reduce_395(val, _values, result) { + Opal.def(self, '$_reduce_397', $Ruby25__reduce_397$273 = function $$_reduce_397(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](1), val['$[]'](2)]; + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + self.context.$pop(); return result; - }, TMP_Ruby23__reduce_395_279.$$arity = 3); + }, $Ruby25__reduce_397$273.$$arity = 3); - Opal.defn(self, '$_reduce_396', TMP_Ruby23__reduce_396_280 = function $$_reduce_396(val, _values, result) { + Opal.def(self, '$_reduce_398', $Ruby25__reduce_398$274 = function $$_reduce_398(val, _values, result) { var self = this; - self.static_env.$extend_dynamic(); + self.context.$push("lambda"); return result; - }, TMP_Ruby23__reduce_396_280.$$arity = 3); + }, $Ruby25__reduce_398$274.$$arity = 3); - Opal.defn(self, '$_reduce_397', TMP_Ruby23__reduce_397_281 = function $$_reduce_397(val, _values, result) { + Opal.def(self, '$_reduce_399', $Ruby25__reduce_399$275 = function $$_reduce_399(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; - self.static_env.$unextend(); + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + self.context.$pop(); + return result; + }, $Ruby25__reduce_399$275.$$arity = 3); + + Opal.def(self, '$_reduce_400', $Ruby25__reduce_400$276 = function $$_reduce_400(val, _values, result) { + var self = this; + + + self.context.$push("block"); return result; - }, TMP_Ruby23__reduce_397_281.$$arity = 3); + }, $Ruby25__reduce_400$276.$$arity = 3); - Opal.defn(self, '$_reduce_398', TMP_Ruby23__reduce_398_282 = function $$_reduce_398(val, _values, result) { + Opal.def(self, '$_reduce_401', $Ruby25__reduce_401$277 = function $$_reduce_401(val, _values, result) { + var self = this; + + + result = [val['$[]'](0)].concat(Opal.to_a(val['$[]'](2))).concat([val['$[]'](3)]); + self.context.$pop(); + return result; + }, $Ruby25__reduce_401$277.$$arity = 3); + + Opal.def(self, '$_reduce_402', $Ruby25__reduce_402$278 = function $$_reduce_402(val, _values, result) { var $a, $b, self = this, begin_t = nil, block_args = nil, body = nil, end_t = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (block_args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(val['$[]'](0), begin_t, block_args, body, end_t); return result; - }, TMP_Ruby23__reduce_398_282.$$arity = 3); + }, $Ruby25__reduce_402$278.$$arity = 3); - Opal.defn(self, '$_reduce_399', TMP_Ruby23__reduce_399_283 = function $$_reduce_399(val, _values, result) { + Opal.def(self, '$_reduce_403', $Ruby25__reduce_403$279 = function $$_reduce_403(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](3), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_399_283.$$arity = 3); + }, $Ruby25__reduce_403$279.$$arity = 3); - Opal.defn(self, '$_reduce_400', TMP_Ruby23__reduce_400_284 = function $$_reduce_400(val, _values, result) { + Opal.def(self, '$_reduce_404', $Ruby25__reduce_404$280 = function $$_reduce_404(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil, method_call = nil, begin_t = nil, body = nil, end_t = nil; @@ -42234,9 +48119,9 @@ if (i == null) i = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_400_284.$$arity = 3); + }, $Ruby25__reduce_404$280.$$arity = 3); - Opal.defn(self, '$_reduce_401', TMP_Ruby23__reduce_401_285 = function $$_reduce_401(val, _values, result) { + Opal.def(self, '$_reduce_405', $Ruby25__reduce_405$281 = function $$_reduce_405(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -42244,137 +48129,180 @@ if (i == null) i = nil; $b = val['$[]'](4), $a = Opal.to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; result = self.builder.$block(method_call, begin_t, args, body, end_t); return result; - }, TMP_Ruby23__reduce_401_285.$$arity = 3); + }, $Ruby25__reduce_405$281.$$arity = 3); - Opal.defn(self, '$_reduce_402', TMP_Ruby23__reduce_402_286 = function $$_reduce_402(val, _values, result) { + Opal.def(self, '$_reduce_406', $Ruby25__reduce_406$282 = function $$_reduce_406(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(nil, nil, val['$[]'](0), lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_402_286.$$arity = 3); + }, $Ruby25__reduce_406$282.$$arity = 3); - Opal.defn(self, '$_reduce_403', TMP_Ruby23__reduce_403_287 = function $$_reduce_403(val, _values, result) { + Opal.def(self, '$_reduce_407', $Ruby25__reduce_407$283 = function $$_reduce_407(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](3), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_403_287.$$arity = 3); + }, $Ruby25__reduce_407$283.$$arity = 3); - Opal.defn(self, '$_reduce_404', TMP_Ruby23__reduce_404_288 = function $$_reduce_404(val, _values, result) { + Opal.def(self, '$_reduce_408', $Ruby25__reduce_408$284 = function $$_reduce_408(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](3), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_404_288.$$arity = 3); + }, $Ruby25__reduce_408$284.$$arity = 3); - Opal.defn(self, '$_reduce_405', TMP_Ruby23__reduce_405_289 = function $$_reduce_405(val, _values, result) { + Opal.def(self, '$_reduce_409', $Ruby25__reduce_409$285 = function $$_reduce_409(val, _values, result) { var self = this; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_405_289.$$arity = 3); + }, $Ruby25__reduce_409$285.$$arity = 3); - Opal.defn(self, '$_reduce_406', TMP_Ruby23__reduce_406_290 = function $$_reduce_406(val, _values, result) { + Opal.def(self, '$_reduce_410', $Ruby25__reduce_410$286 = function $$_reduce_410(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](2), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_406_290.$$arity = 3); + }, $Ruby25__reduce_410$286.$$arity = 3); - Opal.defn(self, '$_reduce_407', TMP_Ruby23__reduce_407_291 = function $$_reduce_407(val, _values, result) { + Opal.def(self, '$_reduce_411', $Ruby25__reduce_411$287 = function $$_reduce_411(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](2), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_407_291.$$arity = 3); + }, $Ruby25__reduce_411$287.$$arity = 3); - Opal.defn(self, '$_reduce_408', TMP_Ruby23__reduce_408_292 = function $$_reduce_408(val, _values, result) { + Opal.def(self, '$_reduce_412', $Ruby25__reduce_412$288 = function $$_reduce_412(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; $b = val['$[]'](1), $a = Opal.to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; result = self.builder.$keyword_cmd("super", val['$[]'](0), lparen_t, args, rparen_t); return result; - }, TMP_Ruby23__reduce_408_292.$$arity = 3); + }, $Ruby25__reduce_412$288.$$arity = 3); - Opal.defn(self, '$_reduce_409', TMP_Ruby23__reduce_409_293 = function $$_reduce_409(val, _values, result) { + Opal.def(self, '$_reduce_413', $Ruby25__reduce_413$289 = function $$_reduce_413(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("zsuper", val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_409_293.$$arity = 3); + }, $Ruby25__reduce_413$289.$$arity = 3); - Opal.defn(self, '$_reduce_410', TMP_Ruby23__reduce_410_294 = function $$_reduce_410(val, _values, result) { + Opal.def(self, '$_reduce_414', $Ruby25__reduce_414$290 = function $$_reduce_414(val, _values, result) { var self = this; result = self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_410_294.$$arity = 3); + }, $Ruby25__reduce_414$290.$$arity = 3); + + Opal.def(self, '$_reduce_415', $Ruby25__reduce_415$291 = function $$_reduce_415(val, _values, result) { + var self = this; + + + self.context.$push("block"); + return result; + }, $Ruby25__reduce_415$291.$$arity = 3); - Opal.defn(self, '$_reduce_411', TMP_Ruby23__reduce_411_295 = function $$_reduce_411(val, _values, result) { + Opal.def(self, '$_reduce_416', $Ruby25__reduce_416$292 = function $$_reduce_416(val, _values, result) { + var self = this; + + + result = [val['$[]'](0)].concat(Opal.to_a(val['$[]'](2))).concat([val['$[]'](3)]); + self.context.$pop(); + return result; + }, $Ruby25__reduce_416$292.$$arity = 3); + + Opal.def(self, '$_reduce_417', $Ruby25__reduce_417$293 = function $$_reduce_417(val, _values, result) { + var self = this; + + + self.context.$push("block"); + return result; + }, $Ruby25__reduce_417$293.$$arity = 3); + + Opal.def(self, '$_reduce_418', $Ruby25__reduce_418$294 = function $$_reduce_418(val, _values, result) { + var self = this; + + + result = [val['$[]'](0)].concat(Opal.to_a(val['$[]'](2))).concat([val['$[]'](3)]); + self.context.$pop(); + return result; + }, $Ruby25__reduce_418$294.$$arity = 3); + + Opal.def(self, '$_reduce_419', $Ruby25__reduce_419$295 = function $$_reduce_419(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; - }, TMP_Ruby23__reduce_411_295.$$arity = 3); + }, $Ruby25__reduce_419$295.$$arity = 3); - Opal.defn(self, '$_reduce_412', TMP_Ruby23__reduce_412_296 = function $$_reduce_412(val, _values, result) { + Opal.def(self, '$_reduce_420', $Ruby25__reduce_420$296 = function $$_reduce_420(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; + result = [val['$[]'](1), val['$[]'](2)]; self.static_env.$unextend(); return result; - }, TMP_Ruby23__reduce_412_296.$$arity = 3); + }, $Ruby25__reduce_420$296.$$arity = 3); - Opal.defn(self, '$_reduce_413', TMP_Ruby23__reduce_413_297 = function $$_reduce_413(val, _values, result) { + Opal.def(self, '$_reduce_421', $Ruby25__reduce_421$297 = function $$_reduce_421(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; - }, TMP_Ruby23__reduce_413_297.$$arity = 3); + }, $Ruby25__reduce_421$297.$$arity = 3); + + Opal.def(self, '$_reduce_422', $Ruby25__reduce_422$298 = function $$_reduce_422(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, $Ruby25__reduce_422$298.$$arity = 3); - Opal.defn(self, '$_reduce_414', TMP_Ruby23__reduce_414_298 = function $$_reduce_414(val, _values, result) { + Opal.def(self, '$_reduce_423', $Ruby25__reduce_423$299 = function $$_reduce_423(val, _values, result) { var self = this; - result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; + result = [val['$[]'](2), val['$[]'](3)]; self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); return result; - }, TMP_Ruby23__reduce_414_298.$$arity = 3); + }, $Ruby25__reduce_423$299.$$arity = 3); - Opal.defn(self, '$_reduce_415', TMP_Ruby23__reduce_415_299 = function $$_reduce_415(val, _values, result) { + Opal.def(self, '$_reduce_424', $Ruby25__reduce_424$300 = function $$_reduce_424(val, _values, result) { var self = this; result = [self.builder.$when(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3))].concat(Opal.to_a(val['$[]'](4))); return result; - }, TMP_Ruby23__reduce_415_299.$$arity = 3); + }, $Ruby25__reduce_424$300.$$arity = 3); - Opal.defn(self, '$_reduce_416', TMP_Ruby23__reduce_416_300 = function $$_reduce_416(val, _values, result) { + Opal.def(self, '$_reduce_425', $Ruby25__reduce_425$301 = function $$_reduce_425(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_416_300.$$arity = 3); + }, $Ruby25__reduce_425$301.$$arity = 3); - Opal.defn(self, '$_reduce_418', TMP_Ruby23__reduce_418_301 = function $$_reduce_418(val, _values, result) { + Opal.def(self, '$_reduce_427', $Ruby25__reduce_427$302 = function $$_reduce_427(val, _values, result) { var $a, $b, self = this, assoc_t = nil, exc_var = nil, exc_list = nil; @@ -42383,536 +48311,564 @@ if (i == null) i = nil; exc_list = self.builder.$array(nil, val['$[]'](1), nil)}; result = [self.builder.$rescue_body(val['$[]'](0), exc_list, assoc_t, exc_var, val['$[]'](3), val['$[]'](4))].concat(Opal.to_a(val['$[]'](5))); return result; - }, TMP_Ruby23__reduce_418_301.$$arity = 3); + }, $Ruby25__reduce_427$302.$$arity = 3); - Opal.defn(self, '$_reduce_419', TMP_Ruby23__reduce_419_302 = function $$_reduce_419(val, _values, result) { + Opal.def(self, '$_reduce_428', $Ruby25__reduce_428$303 = function $$_reduce_428(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_419_302.$$arity = 3); + }, $Ruby25__reduce_428$303.$$arity = 3); - Opal.defn(self, '$_reduce_420', TMP_Ruby23__reduce_420_303 = function $$_reduce_420(val, _values, result) { + Opal.def(self, '$_reduce_429', $Ruby25__reduce_429$304 = function $$_reduce_429(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_420_303.$$arity = 3); + }, $Ruby25__reduce_429$304.$$arity = 3); - Opal.defn(self, '$_reduce_423', TMP_Ruby23__reduce_423_304 = function $$_reduce_423(val, _values, result) { + Opal.def(self, '$_reduce_432', $Ruby25__reduce_432$305 = function $$_reduce_432(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_423_304.$$arity = 3); + }, $Ruby25__reduce_432$305.$$arity = 3); - Opal.defn(self, '$_reduce_425', TMP_Ruby23__reduce_425_305 = function $$_reduce_425(val, _values, result) { + Opal.def(self, '$_reduce_434', $Ruby25__reduce_434$306 = function $$_reduce_434(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_425_305.$$arity = 3); + }, $Ruby25__reduce_434$306.$$arity = 3); - Opal.defn(self, '$_reduce_430', TMP_Ruby23__reduce_430_306 = function $$_reduce_430(val, _values, result) { + Opal.def(self, '$_reduce_439', $Ruby25__reduce_439$307 = function $$_reduce_439(val, _values, result) { var self = this; result = self.builder.$string_compose(nil, val['$[]'](0), nil); return result; - }, TMP_Ruby23__reduce_430_306.$$arity = 3); + }, $Ruby25__reduce_439$307.$$arity = 3); - Opal.defn(self, '$_reduce_431', TMP_Ruby23__reduce_431_307 = function $$_reduce_431(val, _values, result) { + Opal.def(self, '$_reduce_440', $Ruby25__reduce_440$308 = function $$_reduce_440(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_431_307.$$arity = 3); + }, $Ruby25__reduce_440$308.$$arity = 3); - Opal.defn(self, '$_reduce_432', TMP_Ruby23__reduce_432_308 = function $$_reduce_432(val, _values, result) { + Opal.def(self, '$_reduce_441', $Ruby25__reduce_441$309 = function $$_reduce_441(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_432_308.$$arity = 3); + }, $Ruby25__reduce_441$309.$$arity = 3); - Opal.defn(self, '$_reduce_433', TMP_Ruby23__reduce_433_309 = function $$_reduce_433(val, _values, result) { + Opal.def(self, '$_reduce_442', $Ruby25__reduce_442$310 = function $$_reduce_442(val, _values, result) { var self = this, string = nil; string = self.builder.$string_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); return result; - }, TMP_Ruby23__reduce_433_309.$$arity = 3); + }, $Ruby25__reduce_442$310.$$arity = 3); - Opal.defn(self, '$_reduce_434', TMP_Ruby23__reduce_434_310 = function $$_reduce_434(val, _values, result) { + Opal.def(self, '$_reduce_443', $Ruby25__reduce_443$311 = function $$_reduce_443(val, _values, result) { var self = this, string = nil; string = self.builder.$string(val['$[]'](0)); result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); return result; - }, TMP_Ruby23__reduce_434_310.$$arity = 3); + }, $Ruby25__reduce_443$311.$$arity = 3); - Opal.defn(self, '$_reduce_435', TMP_Ruby23__reduce_435_311 = function $$_reduce_435(val, _values, result) { + Opal.def(self, '$_reduce_444', $Ruby25__reduce_444$312 = function $$_reduce_444(val, _values, result) { var self = this; result = self.builder.$character(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_435_311.$$arity = 3); + }, $Ruby25__reduce_444$312.$$arity = 3); - Opal.defn(self, '$_reduce_436', TMP_Ruby23__reduce_436_312 = function $$_reduce_436(val, _values, result) { + Opal.def(self, '$_reduce_445', $Ruby25__reduce_445$313 = function $$_reduce_445(val, _values, result) { var self = this, string = nil; string = self.builder.$xstring_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); return result; - }, TMP_Ruby23__reduce_436_312.$$arity = 3); + }, $Ruby25__reduce_445$313.$$arity = 3); - Opal.defn(self, '$_reduce_437', TMP_Ruby23__reduce_437_313 = function $$_reduce_437(val, _values, result) { + Opal.def(self, '$_reduce_446', $Ruby25__reduce_446$314 = function $$_reduce_446(val, _values, result) { var self = this, opts = nil; opts = self.builder.$regexp_options(val['$[]'](3)); result = self.builder.$regexp_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2), opts); return result; - }, TMP_Ruby23__reduce_437_313.$$arity = 3); + }, $Ruby25__reduce_446$314.$$arity = 3); - Opal.defn(self, '$_reduce_438', TMP_Ruby23__reduce_438_314 = function $$_reduce_438(val, _values, result) { + Opal.def(self, '$_reduce_447', $Ruby25__reduce_447$315 = function $$_reduce_447(val, _values, result) { var self = this; result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_438_314.$$arity = 3); + }, $Ruby25__reduce_447$315.$$arity = 3); - Opal.defn(self, '$_reduce_439', TMP_Ruby23__reduce_439_315 = function $$_reduce_439(val, _values, result) { + Opal.def(self, '$_reduce_448', $Ruby25__reduce_448$316 = function $$_reduce_448(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_439_315.$$arity = 3); + }, $Ruby25__reduce_448$316.$$arity = 3); - Opal.defn(self, '$_reduce_440', TMP_Ruby23__reduce_440_316 = function $$_reduce_440(val, _values, result) { + Opal.def(self, '$_reduce_449', $Ruby25__reduce_449$317 = function $$_reduce_449(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_440_316.$$arity = 3); + }, $Ruby25__reduce_449$317.$$arity = 3); - Opal.defn(self, '$_reduce_441', TMP_Ruby23__reduce_441_317 = function $$_reduce_441(val, _values, result) { + Opal.def(self, '$_reduce_450', $Ruby25__reduce_450$318 = function $$_reduce_450(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_441_317.$$arity = 3); + }, $Ruby25__reduce_450$318.$$arity = 3); - Opal.defn(self, '$_reduce_442', TMP_Ruby23__reduce_442_318 = function $$_reduce_442(val, _values, result) { + Opal.def(self, '$_reduce_451', $Ruby25__reduce_451$319 = function $$_reduce_451(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_442_318.$$arity = 3); + }, $Ruby25__reduce_451$319.$$arity = 3); - Opal.defn(self, '$_reduce_443', TMP_Ruby23__reduce_443_319 = function $$_reduce_443(val, _values, result) { + Opal.def(self, '$_reduce_452', $Ruby25__reduce_452$320 = function $$_reduce_452(val, _values, result) { var self = this; result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_443_319.$$arity = 3); + }, $Ruby25__reduce_452$320.$$arity = 3); - Opal.defn(self, '$_reduce_444', TMP_Ruby23__reduce_444_320 = function $$_reduce_444(val, _values, result) { + Opal.def(self, '$_reduce_453', $Ruby25__reduce_453$321 = function $$_reduce_453(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_444_320.$$arity = 3); + }, $Ruby25__reduce_453$321.$$arity = 3); - Opal.defn(self, '$_reduce_445', TMP_Ruby23__reduce_445_321 = function $$_reduce_445(val, _values, result) { + Opal.def(self, '$_reduce_454', $Ruby25__reduce_454$322 = function $$_reduce_454(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_445_321.$$arity = 3); + }, $Ruby25__reduce_454$322.$$arity = 3); - Opal.defn(self, '$_reduce_446', TMP_Ruby23__reduce_446_322 = function $$_reduce_446(val, _values, result) { + Opal.def(self, '$_reduce_455', $Ruby25__reduce_455$323 = function $$_reduce_455(val, _values, result) { var self = this; result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_446_322.$$arity = 3); + }, $Ruby25__reduce_455$323.$$arity = 3); - Opal.defn(self, '$_reduce_447', TMP_Ruby23__reduce_447_323 = function $$_reduce_447(val, _values, result) { + Opal.def(self, '$_reduce_456', $Ruby25__reduce_456$324 = function $$_reduce_456(val, _values, result) { var self = this; result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_447_323.$$arity = 3); + }, $Ruby25__reduce_456$324.$$arity = 3); - Opal.defn(self, '$_reduce_448', TMP_Ruby23__reduce_448_324 = function $$_reduce_448(val, _values, result) { + Opal.def(self, '$_reduce_457', $Ruby25__reduce_457$325 = function $$_reduce_457(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_448_324.$$arity = 3); + }, $Ruby25__reduce_457$325.$$arity = 3); - Opal.defn(self, '$_reduce_449', TMP_Ruby23__reduce_449_325 = function $$_reduce_449(val, _values, result) { + Opal.def(self, '$_reduce_458', $Ruby25__reduce_458$326 = function $$_reduce_458(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$string_internal(val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_449_325.$$arity = 3); + }, $Ruby25__reduce_458$326.$$arity = 3); - Opal.defn(self, '$_reduce_450', TMP_Ruby23__reduce_450_326 = function $$_reduce_450(val, _values, result) { + Opal.def(self, '$_reduce_459', $Ruby25__reduce_459$327 = function $$_reduce_459(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_450_326.$$arity = 3); + }, $Ruby25__reduce_459$327.$$arity = 3); - Opal.defn(self, '$_reduce_451', TMP_Ruby23__reduce_451_327 = function $$_reduce_451(val, _values, result) { + Opal.def(self, '$_reduce_460', $Ruby25__reduce_460$328 = function $$_reduce_460(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$symbol_internal(val['$[]'](1))); return result; - }, TMP_Ruby23__reduce_451_327.$$arity = 3); + }, $Ruby25__reduce_460$328.$$arity = 3); - Opal.defn(self, '$_reduce_452', TMP_Ruby23__reduce_452_328 = function $$_reduce_452(val, _values, result) { + Opal.def(self, '$_reduce_461', $Ruby25__reduce_461$329 = function $$_reduce_461(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_452_328.$$arity = 3); + }, $Ruby25__reduce_461$329.$$arity = 3); - Opal.defn(self, '$_reduce_453', TMP_Ruby23__reduce_453_329 = function $$_reduce_453(val, _values, result) { + Opal.def(self, '$_reduce_462', $Ruby25__reduce_462$330 = function $$_reduce_462(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_453_329.$$arity = 3); + }, $Ruby25__reduce_462$330.$$arity = 3); - Opal.defn(self, '$_reduce_454', TMP_Ruby23__reduce_454_330 = function $$_reduce_454(val, _values, result) { + Opal.def(self, '$_reduce_463', $Ruby25__reduce_463$331 = function $$_reduce_463(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_454_330.$$arity = 3); + }, $Ruby25__reduce_463$331.$$arity = 3); - Opal.defn(self, '$_reduce_455', TMP_Ruby23__reduce_455_331 = function $$_reduce_455(val, _values, result) { + Opal.def(self, '$_reduce_464', $Ruby25__reduce_464$332 = function $$_reduce_464(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_455_331.$$arity = 3); + }, $Ruby25__reduce_464$332.$$arity = 3); - Opal.defn(self, '$_reduce_456', TMP_Ruby23__reduce_456_332 = function $$_reduce_456(val, _values, result) { + Opal.def(self, '$_reduce_465', $Ruby25__reduce_465$333 = function $$_reduce_465(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_456_332.$$arity = 3); + }, $Ruby25__reduce_465$333.$$arity = 3); - Opal.defn(self, '$_reduce_457', TMP_Ruby23__reduce_457_333 = function $$_reduce_457(val, _values, result) { + Opal.def(self, '$_reduce_466', $Ruby25__reduce_466$334 = function $$_reduce_466(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_457_333.$$arity = 3); + }, $Ruby25__reduce_466$334.$$arity = 3); - Opal.defn(self, '$_reduce_458', TMP_Ruby23__reduce_458_334 = function $$_reduce_458(val, _values, result) { + Opal.def(self, '$_reduce_467', $Ruby25__reduce_467$335 = function $$_reduce_467(val, _values, result) { var self = this; result = self.builder.$string_internal(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_458_334.$$arity = 3); + }, $Ruby25__reduce_467$335.$$arity = 3); - Opal.defn(self, '$_reduce_459', TMP_Ruby23__reduce_459_335 = function $$_reduce_459(val, _values, result) { + Opal.def(self, '$_reduce_468', $Ruby25__reduce_468$336 = function $$_reduce_468(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_459_335.$$arity = 3); + }, $Ruby25__reduce_468$336.$$arity = 3); - Opal.defn(self, '$_reduce_460', TMP_Ruby23__reduce_460_336 = function $$_reduce_460(val, _values, result) { + Opal.def(self, '$_reduce_469', $Ruby25__reduce_469$337 = function $$_reduce_469(val, _values, result) { var self = this; - self.lexer.$cond().$push(false); self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); return result; - }, TMP_Ruby23__reduce_460_336.$$arity = 3); + }, $Ruby25__reduce_469$337.$$arity = 3); - Opal.defn(self, '$_reduce_461', TMP_Ruby23__reduce_461_337 = function $$_reduce_461(val, _values, result) { + Opal.def(self, '$_reduce_470', $Ruby25__reduce_470$338 = function $$_reduce_470(val, _values, result) { var self = this; - self.lexer.$cond().$lexpop(); - self.lexer.$cmdarg().$lexpop(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_461_337.$$arity = 3); + }, $Ruby25__reduce_470$338.$$arity = 3); - Opal.defn(self, '$_reduce_462', TMP_Ruby23__reduce_462_338 = function $$_reduce_462(val, _values, result) { + Opal.def(self, '$_reduce_471', $Ruby25__reduce_471$339 = function $$_reduce_471(val, _values, result) { var self = this; result = self.builder.$gvar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_462_338.$$arity = 3); + }, $Ruby25__reduce_471$339.$$arity = 3); - Opal.defn(self, '$_reduce_463', TMP_Ruby23__reduce_463_339 = function $$_reduce_463(val, _values, result) { + Opal.def(self, '$_reduce_472', $Ruby25__reduce_472$340 = function $$_reduce_472(val, _values, result) { var self = this; result = self.builder.$ivar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_463_339.$$arity = 3); + }, $Ruby25__reduce_472$340.$$arity = 3); - Opal.defn(self, '$_reduce_464', TMP_Ruby23__reduce_464_340 = function $$_reduce_464(val, _values, result) { + Opal.def(self, '$_reduce_473', $Ruby25__reduce_473$341 = function $$_reduce_473(val, _values, result) { var self = this; result = self.builder.$cvar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_464_340.$$arity = 3); + }, $Ruby25__reduce_473$341.$$arity = 3); - Opal.defn(self, '$_reduce_466', TMP_Ruby23__reduce_466_341 = function $$_reduce_466(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_475', $Ruby25__reduce_475$342 = function $$_reduce_475(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$symbol(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_466_341.$$arity = 3); + }, $Ruby25__reduce_475$342.$$arity = 3); - Opal.defn(self, '$_reduce_467', TMP_Ruby23__reduce_467_342 = function $$_reduce_467(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_476', $Ruby25__reduce_476$343 = function $$_reduce_476(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$symbol_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_467_342.$$arity = 3); + }, $Ruby25__reduce_476$343.$$arity = 3); - Opal.defn(self, '$_reduce_468', TMP_Ruby23__reduce_468_343 = function $$_reduce_468(val, _values, result) { + Opal.def(self, '$_reduce_477', $Ruby25__reduce_477$344 = function $$_reduce_477(val, _values, result) { var self = this; result = val['$[]'](0); return result; - }, TMP_Ruby23__reduce_468_343.$$arity = 3); + }, $Ruby25__reduce_477$344.$$arity = 3); - Opal.defn(self, '$_reduce_469', TMP_Ruby23__reduce_469_344 = function $$_reduce_469(val, _values, result) { + Opal.def(self, '$_reduce_478', $Ruby25__reduce_478$345 = function $$_reduce_478(val, _values, result) { var self = this; - result = self.builder.$negate(val['$[]'](0), val['$[]'](1)); + if ($truthy(self.builder['$respond_to?']("negate"))) { + result = self.builder.$negate(val['$[]'](0), val['$[]'](1)) + } else { + result = self.builder.$unary_num(val['$[]'](0), val['$[]'](1)) + }; return result; - }, TMP_Ruby23__reduce_469_344.$$arity = 3); + }, $Ruby25__reduce_478$345.$$arity = 3); - Opal.defn(self, '$_reduce_470', TMP_Ruby23__reduce_470_345 = function $$_reduce_470(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_479', $Ruby25__reduce_479$346 = function $$_reduce_479(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$integer(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_470_345.$$arity = 3); + }, $Ruby25__reduce_479$346.$$arity = 3); - Opal.defn(self, '$_reduce_471', TMP_Ruby23__reduce_471_346 = function $$_reduce_471(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_480', $Ruby25__reduce_480$347 = function $$_reduce_480(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$float(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_471_346.$$arity = 3); + }, $Ruby25__reduce_480$347.$$arity = 3); - Opal.defn(self, '$_reduce_472', TMP_Ruby23__reduce_472_347 = function $$_reduce_472(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_481', $Ruby25__reduce_481$348 = function $$_reduce_481(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$rational(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_472_347.$$arity = 3); + }, $Ruby25__reduce_481$348.$$arity = 3); - Opal.defn(self, '$_reduce_473', TMP_Ruby23__reduce_473_348 = function $$_reduce_473(val, _values, result) { - var self = this; + Opal.def(self, '$_reduce_482', $Ruby25__reduce_482$349 = function $$_reduce_482(val, _values, result) { + var self = this, $writer = nil; + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$complex(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_473_348.$$arity = 3); + }, $Ruby25__reduce_482$349.$$arity = 3); - Opal.defn(self, '$_reduce_474', TMP_Ruby23__reduce_474_349 = function $$_reduce_474(val, _values, result) { + Opal.def(self, '$_reduce_483', $Ruby25__reduce_483$350 = function $$_reduce_483(val, _values, result) { var self = this; result = self.builder.$ident(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_474_349.$$arity = 3); + }, $Ruby25__reduce_483$350.$$arity = 3); - Opal.defn(self, '$_reduce_475', TMP_Ruby23__reduce_475_350 = function $$_reduce_475(val, _values, result) { + Opal.def(self, '$_reduce_484', $Ruby25__reduce_484$351 = function $$_reduce_484(val, _values, result) { var self = this; result = self.builder.$ivar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_475_350.$$arity = 3); + }, $Ruby25__reduce_484$351.$$arity = 3); - Opal.defn(self, '$_reduce_476', TMP_Ruby23__reduce_476_351 = function $$_reduce_476(val, _values, result) { + Opal.def(self, '$_reduce_485', $Ruby25__reduce_485$352 = function $$_reduce_485(val, _values, result) { var self = this; result = self.builder.$gvar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_476_351.$$arity = 3); + }, $Ruby25__reduce_485$352.$$arity = 3); - Opal.defn(self, '$_reduce_477', TMP_Ruby23__reduce_477_352 = function $$_reduce_477(val, _values, result) { + Opal.def(self, '$_reduce_486', $Ruby25__reduce_486$353 = function $$_reduce_486(val, _values, result) { var self = this; result = self.builder.$const(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_477_352.$$arity = 3); + }, $Ruby25__reduce_486$353.$$arity = 3); - Opal.defn(self, '$_reduce_478', TMP_Ruby23__reduce_478_353 = function $$_reduce_478(val, _values, result) { + Opal.def(self, '$_reduce_487', $Ruby25__reduce_487$354 = function $$_reduce_487(val, _values, result) { var self = this; result = self.builder.$cvar(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_478_353.$$arity = 3); + }, $Ruby25__reduce_487$354.$$arity = 3); - Opal.defn(self, '$_reduce_479', TMP_Ruby23__reduce_479_354 = function $$_reduce_479(val, _values, result) { + Opal.def(self, '$_reduce_488', $Ruby25__reduce_488$355 = function $$_reduce_488(val, _values, result) { var self = this; result = self.builder.$nil(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_479_354.$$arity = 3); + }, $Ruby25__reduce_488$355.$$arity = 3); - Opal.defn(self, '$_reduce_480', TMP_Ruby23__reduce_480_355 = function $$_reduce_480(val, _values, result) { + Opal.def(self, '$_reduce_489', $Ruby25__reduce_489$356 = function $$_reduce_489(val, _values, result) { var self = this; result = self.builder.$self(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_480_355.$$arity = 3); + }, $Ruby25__reduce_489$356.$$arity = 3); - Opal.defn(self, '$_reduce_481', TMP_Ruby23__reduce_481_356 = function $$_reduce_481(val, _values, result) { + Opal.def(self, '$_reduce_490', $Ruby25__reduce_490$357 = function $$_reduce_490(val, _values, result) { var self = this; result = self.builder.$true(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_481_356.$$arity = 3); + }, $Ruby25__reduce_490$357.$$arity = 3); - Opal.defn(self, '$_reduce_482', TMP_Ruby23__reduce_482_357 = function $$_reduce_482(val, _values, result) { + Opal.def(self, '$_reduce_491', $Ruby25__reduce_491$358 = function $$_reduce_491(val, _values, result) { var self = this; result = self.builder.$false(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_482_357.$$arity = 3); + }, $Ruby25__reduce_491$358.$$arity = 3); - Opal.defn(self, '$_reduce_483', TMP_Ruby23__reduce_483_358 = function $$_reduce_483(val, _values, result) { + Opal.def(self, '$_reduce_492', $Ruby25__reduce_492$359 = function $$_reduce_492(val, _values, result) { var self = this; result = self.builder.$__FILE__(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_483_358.$$arity = 3); + }, $Ruby25__reduce_492$359.$$arity = 3); - Opal.defn(self, '$_reduce_484', TMP_Ruby23__reduce_484_359 = function $$_reduce_484(val, _values, result) { + Opal.def(self, '$_reduce_493', $Ruby25__reduce_493$360 = function $$_reduce_493(val, _values, result) { var self = this; result = self.builder.$__LINE__(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_484_359.$$arity = 3); + }, $Ruby25__reduce_493$360.$$arity = 3); - Opal.defn(self, '$_reduce_485', TMP_Ruby23__reduce_485_360 = function $$_reduce_485(val, _values, result) { + Opal.def(self, '$_reduce_494', $Ruby25__reduce_494$361 = function $$_reduce_494(val, _values, result) { var self = this; result = self.builder.$__ENCODING__(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_485_360.$$arity = 3); + }, $Ruby25__reduce_494$361.$$arity = 3); - Opal.defn(self, '$_reduce_486', TMP_Ruby23__reduce_486_361 = function $$_reduce_486(val, _values, result) { + Opal.def(self, '$_reduce_495', $Ruby25__reduce_495$362 = function $$_reduce_495(val, _values, result) { var self = this; result = self.builder.$accessible(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_486_361.$$arity = 3); + }, $Ruby25__reduce_495$362.$$arity = 3); - Opal.defn(self, '$_reduce_487', TMP_Ruby23__reduce_487_362 = function $$_reduce_487(val, _values, result) { + Opal.def(self, '$_reduce_496', $Ruby25__reduce_496$363 = function $$_reduce_496(val, _values, result) { var self = this; result = self.builder.$accessible(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_487_362.$$arity = 3); + }, $Ruby25__reduce_496$363.$$arity = 3); - Opal.defn(self, '$_reduce_488', TMP_Ruby23__reduce_488_363 = function $$_reduce_488(val, _values, result) { + Opal.def(self, '$_reduce_497', $Ruby25__reduce_497$364 = function $$_reduce_497(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_488_363.$$arity = 3); + }, $Ruby25__reduce_497$364.$$arity = 3); - Opal.defn(self, '$_reduce_489', TMP_Ruby23__reduce_489_364 = function $$_reduce_489(val, _values, result) { + Opal.def(self, '$_reduce_498', $Ruby25__reduce_498$365 = function $$_reduce_498(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_489_364.$$arity = 3); + }, $Ruby25__reduce_498$365.$$arity = 3); - Opal.defn(self, '$_reduce_490', TMP_Ruby23__reduce_490_365 = function $$_reduce_490(val, _values, result) { + Opal.def(self, '$_reduce_499', $Ruby25__reduce_499$366 = function $$_reduce_499(val, _values, result) { var self = this; result = self.builder.$nth_ref(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_490_365.$$arity = 3); + }, $Ruby25__reduce_499$366.$$arity = 3); - Opal.defn(self, '$_reduce_491', TMP_Ruby23__reduce_491_366 = function $$_reduce_491(val, _values, result) { + Opal.def(self, '$_reduce_500', $Ruby25__reduce_500$367 = function $$_reduce_500(val, _values, result) { var self = this; result = self.builder.$back_ref(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_491_366.$$arity = 3); + }, $Ruby25__reduce_500$367.$$arity = 3); - Opal.defn(self, '$_reduce_492', TMP_Ruby23__reduce_492_367 = function $$_reduce_492(val, _values, result) { + Opal.def(self, '$_reduce_501', $Ruby25__reduce_501$368 = function $$_reduce_501(val, _values, result) { var self = this, $writer = nil; @@ -42921,25 +48877,25 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_492_367.$$arity = 3); + }, $Ruby25__reduce_501$368.$$arity = 3); - Opal.defn(self, '$_reduce_493', TMP_Ruby23__reduce_493_368 = function $$_reduce_493(val, _values, result) { + Opal.def(self, '$_reduce_502', $Ruby25__reduce_502$369 = function $$_reduce_502(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2)]; return result; - }, TMP_Ruby23__reduce_493_368.$$arity = 3); + }, $Ruby25__reduce_502$369.$$arity = 3); - Opal.defn(self, '$_reduce_494', TMP_Ruby23__reduce_494_369 = function $$_reduce_494(val, _values, result) { + Opal.def(self, '$_reduce_503', $Ruby25__reduce_503$370 = function $$_reduce_503(val, _values, result) { var self = this; result = nil; return result; - }, TMP_Ruby23__reduce_494_369.$$arity = 3); + }, $Ruby25__reduce_503$370.$$arity = 3); - Opal.defn(self, '$_reduce_495', TMP_Ruby23__reduce_495_370 = function $$_reduce_495(val, _values, result) { + Opal.def(self, '$_reduce_504', $Ruby25__reduce_504$371 = function $$_reduce_504(val, _values, result) { var self = this, $writer = nil; @@ -42949,9 +48905,9 @@ if (i == null) i = nil; $send(self.lexer, 'state=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_495_370.$$arity = 3); + }, $Ruby25__reduce_504$371.$$arity = 3); - Opal.defn(self, '$_reduce_496', TMP_Ruby23__reduce_496_371 = function $$_reduce_496(val, _values, result) { + Opal.def(self, '$_reduce_505', $Ruby25__reduce_505$372 = function $$_reduce_505(val, _values, result) { var self = this, $writer = nil; @@ -42961,9 +48917,9 @@ if (i == null) i = nil; $send(self.lexer, 'in_kwarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; - }, TMP_Ruby23__reduce_496_371.$$arity = 3); + }, $Ruby25__reduce_505$372.$$arity = 3); - Opal.defn(self, '$_reduce_497', TMP_Ruby23__reduce_497_372 = function $$_reduce_497(val, _values, result) { + Opal.def(self, '$_reduce_506', $Ruby25__reduce_506$373 = function $$_reduce_506(val, _values, result) { var self = this, $writer = nil; @@ -42973,258 +48929,258 @@ if (i == null) i = nil; $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(nil, val['$[]'](1), nil); return result; - }, TMP_Ruby23__reduce_497_372.$$arity = 3); + }, $Ruby25__reduce_506$373.$$arity = 3); - Opal.defn(self, '$_reduce_498', TMP_Ruby23__reduce_498_373 = function $$_reduce_498(val, _values, result) { + Opal.def(self, '$_reduce_507', $Ruby25__reduce_507$374 = function $$_reduce_507(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_498_373.$$arity = 3); + }, $Ruby25__reduce_507$374.$$arity = 3); - Opal.defn(self, '$_reduce_499', TMP_Ruby23__reduce_499_374 = function $$_reduce_499(val, _values, result) { + Opal.def(self, '$_reduce_508', $Ruby25__reduce_508$375 = function $$_reduce_508(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_499_374.$$arity = 3); + }, $Ruby25__reduce_508$375.$$arity = 3); - Opal.defn(self, '$_reduce_500', TMP_Ruby23__reduce_500_375 = function $$_reduce_500(val, _values, result) { + Opal.def(self, '$_reduce_509', $Ruby25__reduce_509$376 = function $$_reduce_509(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_500_375.$$arity = 3); + }, $Ruby25__reduce_509$376.$$arity = 3); - Opal.defn(self, '$_reduce_501', TMP_Ruby23__reduce_501_376 = function $$_reduce_501(val, _values, result) { + Opal.def(self, '$_reduce_510', $Ruby25__reduce_510$377 = function $$_reduce_510(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_501_376.$$arity = 3); + }, $Ruby25__reduce_510$377.$$arity = 3); - Opal.defn(self, '$_reduce_502', TMP_Ruby23__reduce_502_377 = function $$_reduce_502(val, _values, result) { + Opal.def(self, '$_reduce_511', $Ruby25__reduce_511$378 = function $$_reduce_511(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_502_377.$$arity = 3); + }, $Ruby25__reduce_511$378.$$arity = 3); - Opal.defn(self, '$_reduce_503', TMP_Ruby23__reduce_503_378 = function $$_reduce_503(val, _values, result) { + Opal.def(self, '$_reduce_512', $Ruby25__reduce_512$379 = function $$_reduce_512(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_503_378.$$arity = 3); + }, $Ruby25__reduce_512$379.$$arity = 3); - Opal.defn(self, '$_reduce_504', TMP_Ruby23__reduce_504_379 = function $$_reduce_504(val, _values, result) { + Opal.def(self, '$_reduce_513', $Ruby25__reduce_513$380 = function $$_reduce_513(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_504_379.$$arity = 3); + }, $Ruby25__reduce_513$380.$$arity = 3); - Opal.defn(self, '$_reduce_505', TMP_Ruby23__reduce_505_380 = function $$_reduce_505(val, _values, result) { + Opal.def(self, '$_reduce_514', $Ruby25__reduce_514$381 = function $$_reduce_514(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; - }, TMP_Ruby23__reduce_505_380.$$arity = 3); + }, $Ruby25__reduce_514$381.$$arity = 3); - Opal.defn(self, '$_reduce_506', TMP_Ruby23__reduce_506_381 = function $$_reduce_506(val, _values, result) { + Opal.def(self, '$_reduce_515', $Ruby25__reduce_515$382 = function $$_reduce_515(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_506_381.$$arity = 3); + }, $Ruby25__reduce_515$382.$$arity = 3); - Opal.defn(self, '$_reduce_507', TMP_Ruby23__reduce_507_382 = function $$_reduce_507(val, _values, result) { + Opal.def(self, '$_reduce_516', $Ruby25__reduce_516$383 = function $$_reduce_516(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_507_382.$$arity = 3); + }, $Ruby25__reduce_516$383.$$arity = 3); - Opal.defn(self, '$_reduce_508', TMP_Ruby23__reduce_508_383 = function $$_reduce_508(val, _values, result) { + Opal.def(self, '$_reduce_517', $Ruby25__reduce_517$384 = function $$_reduce_517(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_508_383.$$arity = 3); + }, $Ruby25__reduce_517$384.$$arity = 3); - Opal.defn(self, '$_reduce_509', TMP_Ruby23__reduce_509_384 = function $$_reduce_509(val, _values, result) { + Opal.def(self, '$_reduce_518', $Ruby25__reduce_518$385 = function $$_reduce_518(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_509_384.$$arity = 3); + }, $Ruby25__reduce_518$385.$$arity = 3); - Opal.defn(self, '$_reduce_510', TMP_Ruby23__reduce_510_385 = function $$_reduce_510(val, _values, result) { + Opal.def(self, '$_reduce_519', $Ruby25__reduce_519$386 = function $$_reduce_519(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_510_385.$$arity = 3); + }, $Ruby25__reduce_519$386.$$arity = 3); - Opal.defn(self, '$_reduce_511', TMP_Ruby23__reduce_511_386 = function $$_reduce_511(val, _values, result) { + Opal.def(self, '$_reduce_520', $Ruby25__reduce_520$387 = function $$_reduce_520(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_511_386.$$arity = 3); + }, $Ruby25__reduce_520$387.$$arity = 3); - Opal.defn(self, '$_reduce_512', TMP_Ruby23__reduce_512_387 = function $$_reduce_512(val, _values, result) { + Opal.def(self, '$_reduce_521', $Ruby25__reduce_521$388 = function $$_reduce_521(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; - }, TMP_Ruby23__reduce_512_387.$$arity = 3); + }, $Ruby25__reduce_521$388.$$arity = 3); - Opal.defn(self, '$_reduce_513', TMP_Ruby23__reduce_513_388 = function $$_reduce_513(val, _values, result) { + Opal.def(self, '$_reduce_522', $Ruby25__reduce_522$389 = function $$_reduce_522(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_513_388.$$arity = 3); + }, $Ruby25__reduce_522$389.$$arity = 3); - Opal.defn(self, '$_reduce_514', TMP_Ruby23__reduce_514_389 = function $$_reduce_514(val, _values, result) { + Opal.def(self, '$_reduce_523', $Ruby25__reduce_523$390 = function $$_reduce_523(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_514_389.$$arity = 3); + }, $Ruby25__reduce_523$390.$$arity = 3); - Opal.defn(self, '$_reduce_515', TMP_Ruby23__reduce_515_390 = function $$_reduce_515(val, _values, result) { + Opal.def(self, '$_reduce_524', $Ruby25__reduce_524$391 = function $$_reduce_524(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_515_390.$$arity = 3); + }, $Ruby25__reduce_524$391.$$arity = 3); - Opal.defn(self, '$_reduce_516', TMP_Ruby23__reduce_516_391 = function $$_reduce_516(val, _values, result) { + Opal.def(self, '$_reduce_525', $Ruby25__reduce_525$392 = function $$_reduce_525(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_516_391.$$arity = 3); + }, $Ruby25__reduce_525$392.$$arity = 3); - Opal.defn(self, '$_reduce_517', TMP_Ruby23__reduce_517_392 = function $$_reduce_517(val, _values, result) { + Opal.def(self, '$_reduce_526', $Ruby25__reduce_526$393 = function $$_reduce_526(val, _values, result) { var self = this; result = val['$[]'](0); return result; - }, TMP_Ruby23__reduce_517_392.$$arity = 3); + }, $Ruby25__reduce_526$393.$$arity = 3); - Opal.defn(self, '$_reduce_518', TMP_Ruby23__reduce_518_393 = function $$_reduce_518(val, _values, result) { + Opal.def(self, '$_reduce_527', $Ruby25__reduce_527$394 = function $$_reduce_527(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_518_393.$$arity = 3); + }, $Ruby25__reduce_527$394.$$arity = 3); - Opal.defn(self, '$_reduce_519', TMP_Ruby23__reduce_519_394 = function $$_reduce_519(val, _values, result) { + Opal.def(self, '$_reduce_528', $Ruby25__reduce_528$395 = function $$_reduce_528(val, _values, result) { var self = this; self.$diagnostic("error", "argument_const", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_519_394.$$arity = 3); + }, $Ruby25__reduce_528$395.$$arity = 3); - Opal.defn(self, '$_reduce_520', TMP_Ruby23__reduce_520_395 = function $$_reduce_520(val, _values, result) { + Opal.def(self, '$_reduce_529', $Ruby25__reduce_529$396 = function $$_reduce_529(val, _values, result) { var self = this; self.$diagnostic("error", "argument_ivar", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_520_395.$$arity = 3); + }, $Ruby25__reduce_529$396.$$arity = 3); - Opal.defn(self, '$_reduce_521', TMP_Ruby23__reduce_521_396 = function $$_reduce_521(val, _values, result) { + Opal.def(self, '$_reduce_530', $Ruby25__reduce_530$397 = function $$_reduce_530(val, _values, result) { var self = this; self.$diagnostic("error", "argument_gvar", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_521_396.$$arity = 3); + }, $Ruby25__reduce_530$397.$$arity = 3); - Opal.defn(self, '$_reduce_522', TMP_Ruby23__reduce_522_397 = function $$_reduce_522(val, _values, result) { + Opal.def(self, '$_reduce_531', $Ruby25__reduce_531$398 = function $$_reduce_531(val, _values, result) { var self = this; self.$diagnostic("error", "argument_cvar", nil, val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_522_397.$$arity = 3); + }, $Ruby25__reduce_531$398.$$arity = 3); - Opal.defn(self, '$_reduce_524', TMP_Ruby23__reduce_524_398 = function $$_reduce_524(val, _values, result) { + Opal.def(self, '$_reduce_533', $Ruby25__reduce_533$399 = function $$_reduce_533(val, _values, result) { var self = this; self.static_env.$declare(val['$[]'](0)['$[]'](0)); result = val['$[]'](0); return result; - }, TMP_Ruby23__reduce_524_398.$$arity = 3); + }, $Ruby25__reduce_533$399.$$arity = 3); - Opal.defn(self, '$_reduce_525', TMP_Ruby23__reduce_525_399 = function $$_reduce_525(val, _values, result) { + Opal.def(self, '$_reduce_534', $Ruby25__reduce_534$400 = function $$_reduce_534(val, _values, result) { var self = this; result = val['$[]'](0); return result; - }, TMP_Ruby23__reduce_525_399.$$arity = 3); + }, $Ruby25__reduce_534$400.$$arity = 3); - Opal.defn(self, '$_reduce_526', TMP_Ruby23__reduce_526_400 = function $$_reduce_526(val, _values, result) { + Opal.def(self, '$_reduce_535', $Ruby25__reduce_535$401 = function $$_reduce_535(val, _values, result) { var self = this; result = self.builder.$arg(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_526_400.$$arity = 3); + }, $Ruby25__reduce_535$401.$$arity = 3); - Opal.defn(self, '$_reduce_527', TMP_Ruby23__reduce_527_401 = function $$_reduce_527(val, _values, result) { + Opal.def(self, '$_reduce_536', $Ruby25__reduce_536$402 = function $$_reduce_536(val, _values, result) { var self = this; result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_527_401.$$arity = 3); + }, $Ruby25__reduce_536$402.$$arity = 3); - Opal.defn(self, '$_reduce_528', TMP_Ruby23__reduce_528_402 = function $$_reduce_528(val, _values, result) { + Opal.def(self, '$_reduce_537', $Ruby25__reduce_537$403 = function $$_reduce_537(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_528_402.$$arity = 3); + }, $Ruby25__reduce_537$403.$$arity = 3); - Opal.defn(self, '$_reduce_529', TMP_Ruby23__reduce_529_403 = function $$_reduce_529(val, _values, result) { + Opal.def(self, '$_reduce_538', $Ruby25__reduce_538$404 = function $$_reduce_538(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_529_403.$$arity = 3); + }, $Ruby25__reduce_538$404.$$arity = 3); - Opal.defn(self, '$_reduce_530', TMP_Ruby23__reduce_530_404 = function $$_reduce_530(val, _values, result) { + Opal.def(self, '$_reduce_539', $Ruby25__reduce_539$405 = function $$_reduce_539(val, _values, result) { var self = this; @@ -43232,446 +49188,455 @@ if (i == null) i = nil; self.static_env.$declare(val['$[]'](0)['$[]'](0)); result = val['$[]'](0); return result; - }, TMP_Ruby23__reduce_530_404.$$arity = 3); + }, $Ruby25__reduce_539$405.$$arity = 3); - Opal.defn(self, '$_reduce_531', TMP_Ruby23__reduce_531_405 = function $$_reduce_531(val, _values, result) { + Opal.def(self, '$_reduce_540', $Ruby25__reduce_540$406 = function $$_reduce_540(val, _values, result) { var self = this; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_531_405.$$arity = 3); + }, $Ruby25__reduce_540$406.$$arity = 3); - Opal.defn(self, '$_reduce_532', TMP_Ruby23__reduce_532_406 = function $$_reduce_532(val, _values, result) { + Opal.def(self, '$_reduce_541', $Ruby25__reduce_541$407 = function $$_reduce_541(val, _values, result) { var self = this; result = self.builder.$kwarg(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_532_406.$$arity = 3); + }, $Ruby25__reduce_541$407.$$arity = 3); - Opal.defn(self, '$_reduce_533', TMP_Ruby23__reduce_533_407 = function $$_reduce_533(val, _values, result) { + Opal.def(self, '$_reduce_542', $Ruby25__reduce_542$408 = function $$_reduce_542(val, _values, result) { var self = this; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_533_407.$$arity = 3); + }, $Ruby25__reduce_542$408.$$arity = 3); - Opal.defn(self, '$_reduce_534', TMP_Ruby23__reduce_534_408 = function $$_reduce_534(val, _values, result) { + Opal.def(self, '$_reduce_543', $Ruby25__reduce_543$409 = function $$_reduce_543(val, _values, result) { var self = this; result = self.builder.$kwarg(val['$[]'](0)); return result; - }, TMP_Ruby23__reduce_534_408.$$arity = 3); + }, $Ruby25__reduce_543$409.$$arity = 3); - Opal.defn(self, '$_reduce_535', TMP_Ruby23__reduce_535_409 = function $$_reduce_535(val, _values, result) { + Opal.def(self, '$_reduce_544', $Ruby25__reduce_544$410 = function $$_reduce_544(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_535_409.$$arity = 3); + }, $Ruby25__reduce_544$410.$$arity = 3); - Opal.defn(self, '$_reduce_536', TMP_Ruby23__reduce_536_410 = function $$_reduce_536(val, _values, result) { + Opal.def(self, '$_reduce_545', $Ruby25__reduce_545$411 = function $$_reduce_545(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_536_410.$$arity = 3); + }, $Ruby25__reduce_545$411.$$arity = 3); - Opal.defn(self, '$_reduce_537', TMP_Ruby23__reduce_537_411 = function $$_reduce_537(val, _values, result) { + Opal.def(self, '$_reduce_546', $Ruby25__reduce_546$412 = function $$_reduce_546(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_537_411.$$arity = 3); + }, $Ruby25__reduce_546$412.$$arity = 3); - Opal.defn(self, '$_reduce_538', TMP_Ruby23__reduce_538_412 = function $$_reduce_538(val, _values, result) { + Opal.def(self, '$_reduce_547', $Ruby25__reduce_547$413 = function $$_reduce_547(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_538_412.$$arity = 3); + }, $Ruby25__reduce_547$413.$$arity = 3); - Opal.defn(self, '$_reduce_541', TMP_Ruby23__reduce_541_413 = function $$_reduce_541(val, _values, result) { + Opal.def(self, '$_reduce_550', $Ruby25__reduce_550$414 = function $$_reduce_550(val, _values, result) { var self = this; self.static_env.$declare(val['$[]'](1)['$[]'](0)); result = [self.builder.$kwrestarg(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_541_413.$$arity = 3); + }, $Ruby25__reduce_550$414.$$arity = 3); - Opal.defn(self, '$_reduce_542', TMP_Ruby23__reduce_542_414 = function $$_reduce_542(val, _values, result) { + Opal.def(self, '$_reduce_551', $Ruby25__reduce_551$415 = function $$_reduce_551(val, _values, result) { var self = this; result = [self.builder.$kwrestarg(val['$[]'](0))]; return result; - }, TMP_Ruby23__reduce_542_414.$$arity = 3); + }, $Ruby25__reduce_551$415.$$arity = 3); - Opal.defn(self, '$_reduce_543', TMP_Ruby23__reduce_543_415 = function $$_reduce_543(val, _values, result) { + Opal.def(self, '$_reduce_552', $Ruby25__reduce_552$416 = function $$_reduce_552(val, _values, result) { var self = this; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_543_415.$$arity = 3); + }, $Ruby25__reduce_552$416.$$arity = 3); - Opal.defn(self, '$_reduce_544', TMP_Ruby23__reduce_544_416 = function $$_reduce_544(val, _values, result) { + Opal.def(self, '$_reduce_553', $Ruby25__reduce_553$417 = function $$_reduce_553(val, _values, result) { var self = this; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_544_416.$$arity = 3); + }, $Ruby25__reduce_553$417.$$arity = 3); - Opal.defn(self, '$_reduce_545', TMP_Ruby23__reduce_545_417 = function $$_reduce_545(val, _values, result) { + Opal.def(self, '$_reduce_554', $Ruby25__reduce_554$418 = function $$_reduce_554(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_545_417.$$arity = 3); + }, $Ruby25__reduce_554$418.$$arity = 3); - Opal.defn(self, '$_reduce_546', TMP_Ruby23__reduce_546_418 = function $$_reduce_546(val, _values, result) { + Opal.def(self, '$_reduce_555', $Ruby25__reduce_555$419 = function $$_reduce_555(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_546_418.$$arity = 3); + }, $Ruby25__reduce_555$419.$$arity = 3); - Opal.defn(self, '$_reduce_547', TMP_Ruby23__reduce_547_419 = function $$_reduce_547(val, _values, result) { + Opal.def(self, '$_reduce_556', $Ruby25__reduce_556$420 = function $$_reduce_556(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_547_419.$$arity = 3); + }, $Ruby25__reduce_556$420.$$arity = 3); - Opal.defn(self, '$_reduce_548', TMP_Ruby23__reduce_548_420 = function $$_reduce_548(val, _values, result) { + Opal.def(self, '$_reduce_557', $Ruby25__reduce_557$421 = function $$_reduce_557(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_548_420.$$arity = 3); + }, $Ruby25__reduce_557$421.$$arity = 3); - Opal.defn(self, '$_reduce_551', TMP_Ruby23__reduce_551_421 = function $$_reduce_551(val, _values, result) { + Opal.def(self, '$_reduce_560', $Ruby25__reduce_560$422 = function $$_reduce_560(val, _values, result) { var self = this; self.static_env.$declare(val['$[]'](1)['$[]'](0)); result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))]; return result; - }, TMP_Ruby23__reduce_551_421.$$arity = 3); + }, $Ruby25__reduce_560$422.$$arity = 3); - Opal.defn(self, '$_reduce_552', TMP_Ruby23__reduce_552_422 = function $$_reduce_552(val, _values, result) { + Opal.def(self, '$_reduce_561', $Ruby25__reduce_561$423 = function $$_reduce_561(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0))]; return result; - }, TMP_Ruby23__reduce_552_422.$$arity = 3); + }, $Ruby25__reduce_561$423.$$arity = 3); - Opal.defn(self, '$_reduce_555', TMP_Ruby23__reduce_555_423 = function $$_reduce_555(val, _values, result) { + Opal.def(self, '$_reduce_564', $Ruby25__reduce_564$424 = function $$_reduce_564(val, _values, result) { var self = this; self.static_env.$declare(val['$[]'](1)['$[]'](0)); result = self.builder.$blockarg(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_555_423.$$arity = 3); + }, $Ruby25__reduce_564$424.$$arity = 3); - Opal.defn(self, '$_reduce_556', TMP_Ruby23__reduce_556_424 = function $$_reduce_556(val, _values, result) { + Opal.def(self, '$_reduce_565', $Ruby25__reduce_565$425 = function $$_reduce_565(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_556_424.$$arity = 3); + }, $Ruby25__reduce_565$425.$$arity = 3); - Opal.defn(self, '$_reduce_557', TMP_Ruby23__reduce_557_425 = function $$_reduce_557(val, _values, result) { + Opal.def(self, '$_reduce_566', $Ruby25__reduce_566$426 = function $$_reduce_566(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_557_425.$$arity = 3); + }, $Ruby25__reduce_566$426.$$arity = 3); - Opal.defn(self, '$_reduce_559', TMP_Ruby23__reduce_559_426 = function $$_reduce_559(val, _values, result) { + Opal.def(self, '$_reduce_568', $Ruby25__reduce_568$427 = function $$_reduce_568(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_559_426.$$arity = 3); + }, $Ruby25__reduce_568$427.$$arity = 3); - Opal.defn(self, '$_reduce_560', TMP_Ruby23__reduce_560_427 = function $$_reduce_560(val, _values, result) { + Opal.def(self, '$_reduce_569', $Ruby25__reduce_569$428 = function $$_reduce_569(val, _values, result) { var self = this; result = []; return result; - }, TMP_Ruby23__reduce_560_427.$$arity = 3); + }, $Ruby25__reduce_569$428.$$arity = 3); - Opal.defn(self, '$_reduce_562', TMP_Ruby23__reduce_562_428 = function $$_reduce_562(val, _values, result) { + Opal.def(self, '$_reduce_571', $Ruby25__reduce_571$429 = function $$_reduce_571(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; - }, TMP_Ruby23__reduce_562_428.$$arity = 3); + }, $Ruby25__reduce_571$429.$$arity = 3); - Opal.defn(self, '$_reduce_563', TMP_Ruby23__reduce_563_429 = function $$_reduce_563(val, _values, result) { + Opal.def(self, '$_reduce_572', $Ruby25__reduce_572$430 = function $$_reduce_572(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_563_429.$$arity = 3); + }, $Ruby25__reduce_572$430.$$arity = 3); - Opal.defn(self, '$_reduce_564', TMP_Ruby23__reduce_564_430 = function $$_reduce_564(val, _values, result) { + Opal.def(self, '$_reduce_573', $Ruby25__reduce_573$431 = function $$_reduce_573(val, _values, result) { var self = this; result = self.builder.$pair(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; - }, TMP_Ruby23__reduce_564_430.$$arity = 3); + }, $Ruby25__reduce_573$431.$$arity = 3); - Opal.defn(self, '$_reduce_565', TMP_Ruby23__reduce_565_431 = function $$_reduce_565(val, _values, result) { + Opal.def(self, '$_reduce_574', $Ruby25__reduce_574$432 = function $$_reduce_574(val, _values, result) { var self = this; result = self.builder.$pair_keyword(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_565_431.$$arity = 3); + }, $Ruby25__reduce_574$432.$$arity = 3); - Opal.defn(self, '$_reduce_566', TMP_Ruby23__reduce_566_432 = function $$_reduce_566(val, _values, result) { + Opal.def(self, '$_reduce_575', $Ruby25__reduce_575$433 = function $$_reduce_575(val, _values, result) { var self = this; result = self.builder.$pair_quoted(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; - }, TMP_Ruby23__reduce_566_432.$$arity = 3); + }, $Ruby25__reduce_575$433.$$arity = 3); - Opal.defn(self, '$_reduce_567', TMP_Ruby23__reduce_567_433 = function $$_reduce_567(val, _values, result) { + Opal.def(self, '$_reduce_576', $Ruby25__reduce_576$434 = function $$_reduce_576(val, _values, result) { var self = this; result = self.builder.$kwsplat(val['$[]'](0), val['$[]'](1)); return result; - }, TMP_Ruby23__reduce_567_433.$$arity = 3); + }, $Ruby25__reduce_576$434.$$arity = 3); - Opal.defn(self, '$_reduce_580', TMP_Ruby23__reduce_580_434 = function $$_reduce_580(val, _values, result) { + Opal.def(self, '$_reduce_589', $Ruby25__reduce_589$435 = function $$_reduce_589(val, _values, result) { var self = this; result = ["dot", val['$[]'](0)['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_580_434.$$arity = 3); + }, $Ruby25__reduce_589$435.$$arity = 3); - Opal.defn(self, '$_reduce_581', TMP_Ruby23__reduce_581_435 = function $$_reduce_581(val, _values, result) { + Opal.def(self, '$_reduce_590', $Ruby25__reduce_590$436 = function $$_reduce_590(val, _values, result) { var self = this; result = ["anddot", val['$[]'](0)['$[]'](1)]; return result; - }, TMP_Ruby23__reduce_581_435.$$arity = 3); + }, $Ruby25__reduce_590$436.$$arity = 3); - Opal.defn(self, '$_reduce_586', TMP_Ruby23__reduce_586_436 = function $$_reduce_586(val, _values, result) { + Opal.def(self, '$_reduce_595', $Ruby25__reduce_595$437 = function $$_reduce_595(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_586_436.$$arity = 3); + }, $Ruby25__reduce_595$437.$$arity = 3); - Opal.defn(self, '$_reduce_587', TMP_Ruby23__reduce_587_437 = function $$_reduce_587(val, _values, result) { + Opal.def(self, '$_reduce_596', $Ruby25__reduce_596$438 = function $$_reduce_596(val, _values, result) { var self = this; result = val['$[]'](1); return result; - }, TMP_Ruby23__reduce_587_437.$$arity = 3); + }, $Ruby25__reduce_596$438.$$arity = 3); - Opal.defn(self, '$_reduce_591', TMP_Ruby23__reduce_591_438 = function $$_reduce_591(val, _values, result) { + Opal.def(self, '$_reduce_600', $Ruby25__reduce_600$439 = function $$_reduce_600(val, _values, result) { var self = this; self.$yyerrok(); return result; - }, TMP_Ruby23__reduce_591_438.$$arity = 3); + }, $Ruby25__reduce_600$439.$$arity = 3); - Opal.defn(self, '$_reduce_595', TMP_Ruby23__reduce_595_439 = function $$_reduce_595(val, _values, result) { + Opal.def(self, '$_reduce_604', $Ruby25__reduce_604$440 = function $$_reduce_604(val, _values, result) { var self = this; result = nil; return result; - }, TMP_Ruby23__reduce_595_439.$$arity = 3); - return (Opal.defn(self, '$_reduce_none', TMP_Ruby23__reduce_none_440 = function $$_reduce_none(val, _values, result) { + }, $Ruby25__reduce_604$440.$$arity = 3); + return (Opal.def(self, '$_reduce_none', $Ruby25__reduce_none$441 = function $$_reduce_none(val, _values, result) { var self = this; return val['$[]'](0) - }, TMP_Ruby23__reduce_none_440.$$arity = 3), nil) && '_reduce_none'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Base'), $nesting) + }, $Ruby25__reduce_none$441.$$arity = 3), nil) && '_reduce_none'; + })($nesting[0], $$$($$($nesting, 'Parser'), 'Base'), $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/ast/builder"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2; + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2; - Opal.add_stubs(['$require', '$new']); + Opal.add_stubs(['$require', '$emit_lambda=', '$-', '$new']); self.$require("opal/ast/node"); - self.$require("parser/ruby23"); + self.$require("parser/ruby25"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $AST, self = $AST = $module($base, 'AST'); + var self = $module($base, 'AST'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Builder(){}; - var self = $Builder = $klass($base, $super, 'Builder', $Builder); + var self = $klass($base, $super, 'Builder'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Builder_n_1; + var $nesting = [self].concat($parent_nesting), $Builder_n$1, $writer = nil; - return (Opal.defn(self, '$n', TMP_Builder_n_1 = function $$n(type, children, location) { + + + $writer = [true]; + $send(self, 'emit_lambda=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (Opal.def(self, '$n', $Builder_n$1 = function $$n(type, children, location) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": location})) - }, TMP_Builder_n_1.$$arity = 3), nil) && 'n' - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'Builders'), 'Default'), $nesting) + return $$$($$$($$$('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": location})) + }, $Builder_n$1.$$arity = 3), nil) && 'n'; + })($nesting[0], $$$($$$($$$('::', 'Parser'), 'Builders'), 'Default'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/base"] = function(Opal) { + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$require', '$new', '$current_node', '$loc', '$nil?', '$include?', '$type', '$updated', '$s', '$attr_accessor', '$current_node=', '$-']); + Opal.add_stubs(['$require', '$new', '$current_node', '$loc', '$+', '$stmts_of', '$begin_with_stmts', '$nil?', '$include?', '$type', '$children', '$length', '$===', '$[]', '$s', '$attr_accessor', '$current_node=', '$-', '$location=', '$raise']); self.$require("parser"); self.$require("opal/ast/node"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Base(){}; - var self = $Base = $klass($base, $super, 'Base', $Base); + var self = $klass($base, $super, 'Base'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Base_s_9, TMP_Base_s_10, TMP_Base_prepend_to_body_11, TMP_Base_append_to_body_12, TMP_Base_process_13; + var $nesting = [self].concat($parent_nesting), $Base_s$9, $Base_s$10, $Base_prepend_to_body$11, $Base_append_to_body$12, $Base_stmts_of$13, $Base_begin_with_stmts$14, $Base_process$15, $Base_error$16; (function($base, $super, $parent_nesting) { - function $DummyLocation(){}; - var self = $DummyLocation = $klass($base, $super, 'DummyLocation', $DummyLocation); + var self = $klass($base, $super, 'DummyLocation'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DummyLocation_node$eq_1, TMP_DummyLocation_expression_2, TMP_DummyLocation_begin_pos_3, TMP_DummyLocation_end_pos_4, TMP_DummyLocation_source_5, TMP_DummyLocation_line_6, TMP_DummyLocation_column_7, TMP_DummyLocation_last_line_8; + var $nesting = [self].concat($parent_nesting), $DummyLocation_node$eq$1, $DummyLocation_expression$2, $DummyLocation_begin_pos$3, $DummyLocation_end_pos$4, $DummyLocation_source$5, $DummyLocation_line$6, $DummyLocation_column$7, $DummyLocation_last_line$8; - Opal.defn(self, '$node=', TMP_DummyLocation_node$eq_1 = function($a_rest) { - var self = this; + Opal.def(self, '$node=', $DummyLocation_node$eq$1 = function($a) { + var $post_args, self = this; - return nil - }, TMP_DummyLocation_node$eq_1.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return nil; + }, $DummyLocation_node$eq$1.$$arity = -1); - Opal.defn(self, '$expression', TMP_DummyLocation_expression_2 = function $$expression() { + Opal.def(self, '$expression', $DummyLocation_expression$2 = function $$expression() { var self = this; return self - }, TMP_DummyLocation_expression_2.$$arity = 0); + }, $DummyLocation_expression$2.$$arity = 0); - Opal.defn(self, '$begin_pos', TMP_DummyLocation_begin_pos_3 = function $$begin_pos() { + Opal.def(self, '$begin_pos', $DummyLocation_begin_pos$3 = function $$begin_pos() { var self = this; return 0 - }, TMP_DummyLocation_begin_pos_3.$$arity = 0); + }, $DummyLocation_begin_pos$3.$$arity = 0); - Opal.defn(self, '$end_pos', TMP_DummyLocation_end_pos_4 = function $$end_pos() { + Opal.def(self, '$end_pos', $DummyLocation_end_pos$4 = function $$end_pos() { var self = this; return 0 - }, TMP_DummyLocation_end_pos_4.$$arity = 0); + }, $DummyLocation_end_pos$4.$$arity = 0); - Opal.defn(self, '$source', TMP_DummyLocation_source_5 = function $$source() { + Opal.def(self, '$source', $DummyLocation_source$5 = function $$source() { var self = this; return "" - }, TMP_DummyLocation_source_5.$$arity = 0); + }, $DummyLocation_source$5.$$arity = 0); - Opal.defn(self, '$line', TMP_DummyLocation_line_6 = function $$line() { + Opal.def(self, '$line', $DummyLocation_line$6 = function $$line() { var self = this; return 0 - }, TMP_DummyLocation_line_6.$$arity = 0); + }, $DummyLocation_line$6.$$arity = 0); - Opal.defn(self, '$column', TMP_DummyLocation_column_7 = function $$column() { + Opal.def(self, '$column', $DummyLocation_column$7 = function $$column() { var self = this; return 0 - }, TMP_DummyLocation_column_7.$$arity = 0); - return (Opal.defn(self, '$last_line', TMP_DummyLocation_last_line_8 = function $$last_line() { + }, $DummyLocation_column$7.$$arity = 0); + return (Opal.def(self, '$last_line', $DummyLocation_last_line$8 = function $$last_line() { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') - }, TMP_DummyLocation_last_line_8.$$arity = 0), nil) && 'last_line'; + return $$$($$($nesting, 'Float'), 'INFINITY') + }, $DummyLocation_last_line$8.$$arity = 0), nil) && 'last_line'; })($nesting[0], null, $nesting); - Opal.const_set($nesting[0], 'DUMMY_LOCATION', Opal.const_get_relative($nesting, 'DummyLocation').$new()); + Opal.const_set($nesting[0], 'DUMMY_LOCATION', $$($nesting, 'DummyLocation').$new()); - Opal.defn(self, '$s', TMP_Base_s_9 = function $$s(type, $a_rest) { - var self = this, children, loc = nil; + Opal.def(self, '$s', $Base_s$9 = function $$s(type, $a) { + var $post_args, children, self = this, loc = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - children = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - children[$arg_idx - 1] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + children = $post_args;; loc = (function() {if ($truthy(self.$current_node())) { return self.$current_node().$loc() - } else { - return Opal.const_get_relative($nesting, 'DUMMY_LOCATION') + } else { + return $$($nesting, 'DUMMY_LOCATION') }; return nil; })(); - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": loc})); - }, TMP_Base_s_9.$$arity = -2); - Opal.defs(self, '$s', TMP_Base_s_10 = function $$s(type, $a_rest) { - var self = this, children; - - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - children = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - children[$arg_idx - 1] = arguments[$arg_idx]; - } - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": Opal.const_get_relative($nesting, 'DUMMY_LOCATION')})) - }, TMP_Base_s_10.$$arity = -2); + return $$$($$$($$$('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": loc})); + }, $Base_s$9.$$arity = -2); + Opal.defs(self, '$s', $Base_s$10 = function $$s(type, $a) { + var $post_args, children, self = this; + + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + children = $post_args;; + return $$$($$$($$$('::', 'Opal'), 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": $$($nesting, 'DUMMY_LOCATION')})); + }, $Base_s$10.$$arity = -2); Opal.alias(self, "on_iter", "process_regular_node"); Opal.alias(self, "on_top", "process_regular_node"); Opal.alias(self, "on_zsuper", "process_regular_node"); @@ -43680,34 +49645,48 @@ Opal.modules["opal/rewriters/base"] = function(Opal) { Opal.alias(self, "on_jsattrasgn", "process_regular_node"); Opal.alias(self, "on_kwsplat", "process_regular_node"); - Opal.defn(self, '$prepend_to_body', TMP_Base_prepend_to_body_11 = function $$prepend_to_body(body, node) { - var self = this; + Opal.def(self, '$prepend_to_body', $Base_prepend_to_body$11 = function $$prepend_to_body(body, node) { + var self = this, stmts = nil; - if ($truthy(body['$nil?']())) { - return node - } else if ($truthy(["begin", "kwbegin"]['$include?'](body.$type()))) { - return body.$updated(nil, [node].concat(Opal.to_a(body))) - } else { - return self.$s("begin", node, body) - } - }, TMP_Base_prepend_to_body_11.$$arity = 2); + + stmts = $rb_plus(self.$stmts_of(node), self.$stmts_of(body)); + return self.$begin_with_stmts(stmts); + }, $Base_prepend_to_body$11.$$arity = 2); - Opal.defn(self, '$append_to_body', TMP_Base_append_to_body_12 = function $$append_to_body(body, node) { + Opal.def(self, '$append_to_body', $Base_append_to_body$12 = function $$append_to_body(body, node) { + var self = this, stmts = nil; + + + stmts = $rb_plus(self.$stmts_of(body), self.$stmts_of(node)); + return self.$begin_with_stmts(stmts); + }, $Base_append_to_body$12.$$arity = 2); + + Opal.def(self, '$stmts_of', $Base_stmts_of$13 = function $$stmts_of(node) { var self = this; - if ($truthy(body['$nil?']())) { - return node - } else if ($truthy(["begin", "kwbegin"]['$include?'](body.$type()))) { - return body.$updated(nil, [].concat(Opal.to_a(body)).concat([node])) - } else { - return self.$s("begin", body, node) + if ($truthy(node['$nil?']())) { + return [] + } else if ($truthy(["begin", "kwbegin"]['$include?'](node.$type()))) { + return node.$children() + } else { + return [node] } - }, TMP_Base_append_to_body_12.$$arity = 2); + }, $Base_stmts_of$13.$$arity = 1); + + Opal.def(self, '$begin_with_stmts', $Base_begin_with_stmts$14 = function $$begin_with_stmts(stmts) { + var self = this, $case = nil; + + return (function() {$case = stmts.$length(); + if ((0)['$===']($case)) {return nil} + else if ((1)['$===']($case)) {return stmts['$[]'](0)} + else {return $send(self, 's', ["begin"].concat(Opal.to_a(stmts)))}})() + }, $Base_begin_with_stmts$14.$$arity = 1); self.$attr_accessor("current_node"); - return (Opal.defn(self, '$process', TMP_Base_process_13 = function $$process(node) { - var self = this, $iter = TMP_Base_process_13.$$p, $yield = $iter || nil, $writer = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + Opal.def(self, '$process', $Base_process$15 = function $$process(node) { + var $iter = $Base_process$15.$$p, $yield = $iter || nil, self = this, $writer = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Base_process_13.$$p = null; + if ($iter) $Base_process$15.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; @@ -43718,42 +49697,53 @@ Opal.modules["opal/rewriters/base"] = function(Opal) { $writer = [node]; $send(self, 'current_node=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - return $send(self, Opal.find_super_dispatcher(self, 'process', TMP_Base_process_13, false), $zuper, $iter); + return $send(self, Opal.find_super_dispatcher(self, 'process', $Base_process$15, false), $zuper, $iter); } finally { (($writer = [nil]), $send(self, 'current_node=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) }; })() - }, TMP_Base_process_13.$$arity = 1), nil) && 'process'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'AST'), 'Processor'), $nesting) + }, $Base_process$15.$$arity = 1); + return (Opal.def(self, '$error', $Base_error$16 = function $$error(msg) { + var self = this, error = nil, $writer = nil; + + + error = $$$($$$('::', 'Opal'), 'RewritingError').$new(msg); + if ($truthy(self.$current_node())) { + + $writer = [self.$current_node().$loc()]; + $send(error, 'location=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];}; + return self.$raise(error); + }, $Base_error$16.$$arity = 1), nil) && 'error'; + })($nesting[0], $$$($$$($$$('::', 'Parser'), 'AST'), 'Processor'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$children', '$skip_check_present?', '$s', '$skip_check_present_not?', '$updated', '$process_all', '$==']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $OpalEngineCheck(){}; - var self = $OpalEngineCheck = $klass($base, $super, 'OpalEngineCheck', $OpalEngineCheck); + var self = $klass($base, $super, 'OpalEngineCheck'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_OpalEngineCheck_on_if_1, TMP_OpalEngineCheck_skip_check_present$q_2, TMP_OpalEngineCheck_skip_check_present_not$q_3; + var $nesting = [self].concat($parent_nesting), $OpalEngineCheck_on_if$1, $OpalEngineCheck_skip_check_present$ques$2, $OpalEngineCheck_skip_check_present_not$ques$3; - Opal.defn(self, '$on_if', TMP_OpalEngineCheck_on_if_1 = function $$on_if(node) { + Opal.def(self, '$on_if', $OpalEngineCheck_on_if$1 = function $$on_if(node) { var $a, self = this, test = nil, true_body = nil, false_body = nil; @@ -43763,61 +49753,60 @@ Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) { if ($truthy(self['$skip_check_present_not?'](test))) { true_body = self.$s("nil")}; return node.$updated(nil, self.$process_all([test, true_body, false_body])); - }, TMP_OpalEngineCheck_on_if_1.$$arity = 1); + }, $OpalEngineCheck_on_if$1.$$arity = 1); - Opal.defn(self, '$skip_check_present?', TMP_OpalEngineCheck_skip_check_present$q_2 = function(test) { + Opal.def(self, '$skip_check_present?', $OpalEngineCheck_skip_check_present$ques$2 = function(test) { var $a, self = this; - return ($truthy($a = test['$=='](Opal.const_get_relative($nesting, 'RUBY_ENGINE_CHECK'))) ? $a : test['$=='](Opal.const_get_relative($nesting, 'RUBY_PLATFORM_CHECK'))) - }, TMP_OpalEngineCheck_skip_check_present$q_2.$$arity = 1); + return ($truthy($a = test['$==']($$($nesting, 'RUBY_ENGINE_CHECK'))) ? $a : test['$==']($$($nesting, 'RUBY_PLATFORM_CHECK'))) + }, $OpalEngineCheck_skip_check_present$ques$2.$$arity = 1); - Opal.defn(self, '$skip_check_present_not?', TMP_OpalEngineCheck_skip_check_present_not$q_3 = function(test) { + Opal.def(self, '$skip_check_present_not?', $OpalEngineCheck_skip_check_present_not$ques$3 = function(test) { var $a, self = this; - return ($truthy($a = test['$=='](Opal.const_get_relative($nesting, 'RUBY_ENGINE_CHECK_NOT'))) ? $a : test['$=='](Opal.const_get_relative($nesting, 'RUBY_PLATFORM_CHECK_NOT'))) - }, TMP_OpalEngineCheck_skip_check_present_not$q_3.$$arity = 1); + return ($truthy($a = test['$==']($$($nesting, 'RUBY_ENGINE_CHECK_NOT'))) ? $a : test['$==']($$($nesting, 'RUBY_PLATFORM_CHECK_NOT'))) + }, $OpalEngineCheck_skip_check_present_not$ques$3.$$arity = 1); Opal.const_set($nesting[0], 'RUBY_ENGINE_CHECK', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "==", self.$s("str", "opal"))); Opal.const_set($nesting[0], 'RUBY_ENGINE_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "!=", self.$s("str", "opal"))); Opal.const_set($nesting[0], 'RUBY_PLATFORM_CHECK', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "==", self.$s("str", "opal"))); return Opal.const_set($nesting[0], 'RUBY_PLATFORM_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "!=", self.$s("str", "opal"))); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$+', '$find', '$map', '$s', '$next_tmp', '$class', '$type', '$===', '$<<', '$prepend_to_body', '$private', '$attr_reader', '$new', '$process', '$to_a', '$result']); + Opal.add_stubs(['$require', '$+', '$find', '$map', '$s', '$next_tmp', '$class', '$type', '$===', '$<<', '$prepend_to_body', '$attr_reader', '$new', '$process', '$to_a', '$result']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ForRewriter(){}; - var self = $ForRewriter = $klass($base, $super, 'ForRewriter', $ForRewriter); + var self = $klass($base, $super, 'ForRewriter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ForRewriter_reset_tmp_counter$B_1, TMP_ForRewriter_next_tmp_2, TMP_ForRewriter_on_for_4; + var $nesting = [self].concat($parent_nesting), $ForRewriter_reset_tmp_counter$excl$1, $ForRewriter_next_tmp$2, $ForRewriter_on_for$3; - Opal.defs(self, '$reset_tmp_counter!', TMP_ForRewriter_reset_tmp_counter$B_1 = function() { + Opal.defs(self, '$reset_tmp_counter!', $ForRewriter_reset_tmp_counter$excl$1 = function() { var self = this; return (self.counter = 0) - }, TMP_ForRewriter_reset_tmp_counter$B_1.$$arity = 0); - Opal.defs(self, '$next_tmp', TMP_ForRewriter_next_tmp_2 = function $$next_tmp() { + }, $ForRewriter_reset_tmp_counter$excl$1.$$arity = 0); + Opal.defs(self, '$next_tmp', $ForRewriter_next_tmp$2 = function $$next_tmp() { var $a, self = this; if (self.counter == null) self.counter = nil; @@ -43825,18 +49814,23 @@ Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) { self.counter = ($truthy($a = self.counter) ? $a : 0); self.counter = $rb_plus(self.counter, 1); return "" + "$for_tmp" + (self.counter); - }, TMP_ForRewriter_next_tmp_2.$$arity = 0); + }, $ForRewriter_next_tmp$2.$$arity = 0); - Opal.defn(self, '$on_for', TMP_ForRewriter_on_for_4 = function $$on_for(node) { - var $a, TMP_3, self = this, loop_variable = nil, iterating_value = nil, loop_body = nil, iterating_lvars = nil, lvars_declared_in_body = nil, outer_assigns = nil, tmp_loop_variable = nil, get_tmp_loop_variable = nil, loop_variable_assignment = nil, $case = nil; + Opal.def(self, '$on_for', $ForRewriter_on_for$3 = function $$on_for(node) { + var $a, $$4, self = this, loop_variable = nil, iterating_value = nil, loop_body = nil, iterating_lvars = nil, lvars_declared_in_body = nil, outer_assigns = nil, tmp_loop_variable = nil, get_tmp_loop_variable = nil, loop_variable_assignment = nil, $case = nil; $a = [].concat(Opal.to_a(node)), (loop_variable = ($a[0] == null ? nil : $a[0])), (iterating_value = ($a[1] == null ? nil : $a[1])), (loop_body = ($a[2] == null ? nil : $a[2])), $a; - iterating_lvars = Opal.const_get_relative($nesting, 'LocalVariableAssigns').$find(loop_variable); - lvars_declared_in_body = Opal.const_get_relative($nesting, 'LocalVariableAssigns').$find(loop_body); - outer_assigns = $send($rb_plus(iterating_lvars, lvars_declared_in_body), 'map', [], (TMP_3 = function(lvar_name){var self = TMP_3.$$s || this; -if (lvar_name == null) lvar_name = nil; - return self.$s("lvdeclare", lvar_name)}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)); + iterating_lvars = $$($nesting, 'LocalVariableAssigns').$find(loop_variable); + lvars_declared_in_body = $$($nesting, 'LocalVariableAssigns').$find(loop_body); + outer_assigns = $send($rb_plus(iterating_lvars, lvars_declared_in_body), 'map', [], ($$4 = function(lvar_name){var self = $$4.$$s || this; + + + + if (lvar_name == null) { + lvar_name = nil; + }; + return self.$s("lvdeclare", lvar_name);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); tmp_loop_variable = self.$class().$next_tmp(); get_tmp_loop_variable = self.$s("js_tmp", tmp_loop_variable); loop_variable_assignment = (function() {$case = loop_variable.$type(); @@ -43844,35 +49838,33 @@ if (lvar_name == null) lvar_name = nil; else {return loop_variable['$<<'](get_tmp_loop_variable)}})(); loop_body = self.$prepend_to_body(loop_body, loop_variable_assignment); node = self.$s("send", iterating_value, "each", self.$s("iter", self.$s("args", self.$s("arg", tmp_loop_variable)), loop_body)); - return $send(self, 's', ["begin"].concat(Opal.to_a(outer_assigns)).concat(node)); - }, TMP_ForRewriter_on_for_4.$$arity = 1); - self.$private(); + return $send(self, 's', ["begin"].concat(Opal.to_a(outer_assigns)).concat([node])); + }, $ForRewriter_on_for$3.$$arity = 1); return (function($base, $super, $parent_nesting) { - function $LocalVariableAssigns(){}; - var self = $LocalVariableAssigns = $klass($base, $super, 'LocalVariableAssigns', $LocalVariableAssigns); + var self = $klass($base, $super, 'LocalVariableAssigns'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LocalVariableAssigns_find_5, TMP_LocalVariableAssigns_initialize_6, TMP_LocalVariableAssigns_on_lvasgn_7; + var $nesting = [self].concat($parent_nesting), $LocalVariableAssigns_find$5, $LocalVariableAssigns_initialize$6, $LocalVariableAssigns_on_lvasgn$7; self.$attr_reader("result"); - Opal.defs(self, '$find', TMP_LocalVariableAssigns_find_5 = function $$find(node) { + Opal.defs(self, '$find', $LocalVariableAssigns_find$5 = function $$find(node) { var self = this, processor = nil; processor = self.$new(); processor.$process(node); return processor.$result().$to_a(); - }, TMP_LocalVariableAssigns_find_5.$$arity = 1); + }, $LocalVariableAssigns_find$5.$$arity = 1); - Opal.defn(self, '$initialize', TMP_LocalVariableAssigns_initialize_6 = function $$initialize() { + Opal.def(self, '$initialize', $LocalVariableAssigns_initialize$6 = function $$initialize() { var self = this; - return (self.result = Opal.const_get_relative($nesting, 'Set').$new()) - }, TMP_LocalVariableAssigns_initialize_6.$$arity = 0); - return (Opal.defn(self, '$on_lvasgn', TMP_LocalVariableAssigns_on_lvasgn_7 = function $$on_lvasgn(node) { - var $a, self = this, $iter = TMP_LocalVariableAssigns_on_lvasgn_7.$$p, $yield = $iter || nil, name = nil, _ = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + return (self.result = $$($nesting, 'Set').$new()) + }, $LocalVariableAssigns_initialize$6.$$arity = 0); + return (Opal.def(self, '$on_lvasgn', $LocalVariableAssigns_on_lvasgn$7 = function $$on_lvasgn(node) { + var $a, $iter = $LocalVariableAssigns_on_lvasgn$7.$$p, $yield = $iter || nil, self = this, name = nil, _ = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_LocalVariableAssigns_on_lvasgn_7.$$p = null; + if ($iter) $LocalVariableAssigns_on_lvasgn$7.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; @@ -43880,200 +49872,198 @@ if (lvar_name == null) lvar_name = nil; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; self.$result()['$<<'](name); - return $send(self, Opal.find_super_dispatcher(self, 'on_lvasgn', TMP_LocalVariableAssigns_on_lvasgn_7, false), $zuper, $iter); - }, TMP_LocalVariableAssigns_on_lvasgn_7.$$arity = 1), nil) && 'on_lvasgn'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + return $send(self, Opal.find_super_dispatcher(self, 'on_lvasgn', $LocalVariableAssigns_on_lvasgn$7, false), $zuper, $iter); + }, $LocalVariableAssigns_on_lvasgn$7.$$arity = 1), nil) && 'on_lvasgn'; + })($nesting[0], $$($nesting, 'Base'), $nesting); + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$s', '$=~', '$to_s', '$==', '$process_all', '$updated']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ExplicitWriterReturn(){}; - var self = $ExplicitWriterReturn = $klass($base, $super, 'ExplicitWriterReturn', $ExplicitWriterReturn); + var self = $klass($base, $super, 'ExplicitWriterReturn'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ExplicitWriterReturn_initialize_1, TMP_ExplicitWriterReturn_on_send_2, TMP_ExplicitWriterReturn_on_masgn_3; + var $nesting = [self].concat($parent_nesting), $ExplicitWriterReturn_initialize$1, $ExplicitWriterReturn_on_send$2, $ExplicitWriterReturn_on_masgn$3; - def.in_masgn = nil; + self.$$prototype.in_masgn = nil; - Opal.defn(self, '$initialize', TMP_ExplicitWriterReturn_initialize_1 = function $$initialize() { + Opal.def(self, '$initialize', $ExplicitWriterReturn_initialize$1 = function $$initialize() { var self = this; return (self.in_masgn = false) - }, TMP_ExplicitWriterReturn_initialize_1.$$arity = 0); + }, $ExplicitWriterReturn_initialize$1.$$arity = 0); Opal.const_set($nesting[0], 'TMP_NAME', "$writer"); - Opal.const_set($nesting[0], 'GET_ARGS_NODE', self.$s("lvar", Opal.const_get_relative($nesting, 'TMP_NAME'))); - Opal.const_set($nesting[0], 'RETURN_ARGS_NODE', self.$s("jsattr", Opal.const_get_relative($nesting, 'GET_ARGS_NODE'), self.$s("send", self.$s("jsattr", Opal.const_get_relative($nesting, 'GET_ARGS_NODE'), self.$s("str", "length")), "-", self.$s("int", 1)))); + Opal.const_set($nesting[0], 'GET_ARGS_NODE', self.$s("lvar", $$($nesting, 'TMP_NAME'))); + Opal.const_set($nesting[0], 'RETURN_ARGS_NODE', self.$s("jsattr", $$($nesting, 'GET_ARGS_NODE'), self.$s("send", self.$s("jsattr", $$($nesting, 'GET_ARGS_NODE'), self.$s("str", "length")), "-", self.$s("int", 1)))); - Opal.defn(self, '$on_send', TMP_ExplicitWriterReturn_on_send_2 = function $$on_send(node) { - var $a, self = this, $iter = TMP_ExplicitWriterReturn_on_send_2.$$p, $yield = $iter || nil, recv = nil, method_name = nil, args = nil, set_args_node = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$on_send', $ExplicitWriterReturn_on_send$2 = function $$on_send(node) { + var $a, $iter = $ExplicitWriterReturn_on_send$2.$$p, $yield = $iter || nil, self = this, recv = nil, method_name = nil, args = nil, set_args_node = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_ExplicitWriterReturn_on_send_2.$$p = null; + if ($iter) $ExplicitWriterReturn_on_send$2.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } if ($truthy(self.in_masgn)) { - return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_ExplicitWriterReturn_on_send_2, false), $zuper, $iter)}; + return $send(self, Opal.find_super_dispatcher(self, 'on_send', $ExplicitWriterReturn_on_send$2, false), $zuper, $iter)}; $a = [].concat(Opal.to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; - if ($truthy(($truthy($a = method_name.$to_s()['$=~'](new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "\\w+=" + (Opal.const_get_relative($nesting, 'REGEXP_END'))))) ? $a : method_name.$to_s()['$==']("[]=")))) { + if ($truthy(($truthy($a = method_name.$to_s()['$=~'](new RegExp("" + ($$($nesting, 'REGEXP_START')) + "\\w+=" + ($$($nesting, 'REGEXP_END'))))) ? $a : method_name.$to_s()['$==']("[]=")))) { - set_args_node = self.$s("lvasgn", Opal.const_get_relative($nesting, 'TMP_NAME'), $send(self, 's', ["array"].concat(Opal.to_a(self.$process_all(args))))); - return self.$s("begin", set_args_node, node.$updated(nil, [recv, method_name, self.$s("splat", Opal.const_get_relative($nesting, 'GET_ARGS_NODE'))]), Opal.const_get_relative($nesting, 'RETURN_ARGS_NODE')); - } else { - return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_ExplicitWriterReturn_on_send_2, false), $zuper, $iter) + set_args_node = self.$s("lvasgn", $$($nesting, 'TMP_NAME'), $send(self, 's', ["array"].concat(Opal.to_a(self.$process_all(args))))); + return self.$s("begin", set_args_node, node.$updated(nil, [recv, method_name, self.$s("splat", $$($nesting, 'GET_ARGS_NODE'))]), $$($nesting, 'RETURN_ARGS_NODE')); + } else { + return $send(self, Opal.find_super_dispatcher(self, 'on_send', $ExplicitWriterReturn_on_send$2, false), $zuper, $iter) }; - }, TMP_ExplicitWriterReturn_on_send_2.$$arity = 1); - return (Opal.defn(self, '$on_masgn', TMP_ExplicitWriterReturn_on_masgn_3 = function $$on_masgn(node) { - var self = this, $iter = TMP_ExplicitWriterReturn_on_masgn_3.$$p, $yield = $iter || nil, result = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + }, $ExplicitWriterReturn_on_send$2.$$arity = 1); + return (Opal.def(self, '$on_masgn', $ExplicitWriterReturn_on_masgn$3 = function $$on_masgn(node) { + var $iter = $ExplicitWriterReturn_on_masgn$3.$$p, $yield = $iter || nil, self = this, result = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_ExplicitWriterReturn_on_masgn_3.$$p = null; + if ($iter) $ExplicitWriterReturn_on_masgn$3.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } self.in_masgn = true; - result = $send(self, Opal.find_super_dispatcher(self, 'on_masgn', TMP_ExplicitWriterReturn_on_masgn_3, false), $zuper, $iter); + result = $send(self, Opal.find_super_dispatcher(self, 'on_masgn', $ExplicitWriterReturn_on_masgn$3, false), $zuper, $iter); self.in_masgn = false; return result; - }, TMP_ExplicitWriterReturn_on_masgn_3.$$arity = 1), nil) && 'on_masgn'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $ExplicitWriterReturn_on_masgn$3.$$arity = 1), nil) && 'on_masgn'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send, $hash2 = Opal.hash2; Opal.add_stubs(['$require', '$=~', '$!', '$valid_name?', '$class', '$to_sym', '$valid_ivar_name?', '$[]', '$to_s', '$updated', '$fix_var_name', '$fix_ivar_name']); self.$require("opal/rewriters/base"); self.$require("opal/regexp_anchors"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $JsReservedWords(){}; - var self = $JsReservedWords = $klass($base, $super, 'JsReservedWords', $JsReservedWords); + var self = $klass($base, $super, 'JsReservedWords'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JsReservedWords_valid_name$q_1, TMP_JsReservedWords_valid_ivar_name$q_2, TMP_JsReservedWords_fix_var_name_3, TMP_JsReservedWords_fix_ivar_name_4, TMP_JsReservedWords_on_lvar_5, TMP_JsReservedWords_on_lvasgn_6, TMP_JsReservedWords_on_ivar_7, TMP_JsReservedWords_on_ivasgn_8, TMP_JsReservedWords_on_restarg_9, TMP_JsReservedWords_on_argument_10; + var $nesting = [self].concat($parent_nesting), $JsReservedWords_valid_name$ques$1, $JsReservedWords_valid_ivar_name$ques$2, $JsReservedWords_fix_var_name$3, $JsReservedWords_fix_ivar_name$4, $JsReservedWords_on_lvar$5, $JsReservedWords_on_lvasgn$6, $JsReservedWords_on_ivar$7, $JsReservedWords_on_ivasgn$8, $JsReservedWords_on_restarg$9, $JsReservedWords_on_argument$10; - Opal.const_set($nesting[0], 'ES51_RESERVED_WORD', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.const_set($nesting[0], 'ES3_RESERVED_WORD_EXCLUSIVE', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.const_set($nesting[0], 'PROTO_SPECIAL_PROPS', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.const_set($nesting[0], 'PROTO_SPECIAL_METHODS', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:hasOwnProperty|valueOf)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.const_set($nesting[0], 'IMMUTABLE_PROPS', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:NaN|Infinity|undefined)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.const_set($nesting[0], 'BASIC_IDENTIFIER_RULES', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "[$_a-z][$_a-z\\d]*" + (Opal.const_get_relative($nesting, 'REGEXP_END')), 'i')); - Opal.const_set($nesting[0], 'RESERVED_FUNCTION_NAMES', new RegExp("" + (Opal.const_get_relative($nesting, 'REGEXP_START')) + "(?:Array)" + (Opal.const_get_relative($nesting, 'REGEXP_END')))); - Opal.defs(self, '$valid_name?', TMP_JsReservedWords_valid_name$q_1 = function(name) { + Opal.const_set($nesting[0], 'ES51_RESERVED_WORD', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)" + ($$($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'ES3_RESERVED_WORD_EXCLUSIVE', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)" + ($$($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'PROTO_SPECIAL_PROPS', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)" + ($$($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'PROTO_SPECIAL_METHODS', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:hasOwnProperty|valueOf)" + ($$($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'IMMUTABLE_PROPS', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:NaN|Infinity|undefined)" + ($$($nesting, 'REGEXP_END')))); + Opal.const_set($nesting[0], 'BASIC_IDENTIFIER_RULES', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "[$_a-z][$_a-z\\d]*" + ($$($nesting, 'REGEXP_END')), 'i')); + Opal.const_set($nesting[0], 'RESERVED_FUNCTION_NAMES', new RegExp("" + ($$($nesting, 'REGEXP_START')) + "(?:Array)" + ($$($nesting, 'REGEXP_END')))); + Opal.defs(self, '$valid_name?', $JsReservedWords_valid_name$ques$1 = function(name) { var $a, $b, $c, self = this; - return ($truthy($a = Opal.const_get_relative($nesting, 'BASIC_IDENTIFIER_RULES')['$=~'](name)) ? ($truthy($b = ($truthy($c = Opal.const_get_relative($nesting, 'ES51_RESERVED_WORD')['$=~'](name)) ? $c : Opal.const_get_relative($nesting, 'ES3_RESERVED_WORD_EXCLUSIVE')['$=~'](name))) ? $b : Opal.const_get_relative($nesting, 'IMMUTABLE_PROPS')['$=~'](name))['$!']() : $a) - }, TMP_JsReservedWords_valid_name$q_1.$$arity = 1); - Opal.defs(self, '$valid_ivar_name?', TMP_JsReservedWords_valid_ivar_name$q_2 = function(name) { + return ($truthy($a = $$($nesting, 'BASIC_IDENTIFIER_RULES')['$=~'](name)) ? ($truthy($b = ($truthy($c = $$($nesting, 'ES51_RESERVED_WORD')['$=~'](name)) ? $c : $$($nesting, 'ES3_RESERVED_WORD_EXCLUSIVE')['$=~'](name))) ? $b : $$($nesting, 'IMMUTABLE_PROPS')['$=~'](name))['$!']() : $a) + }, $JsReservedWords_valid_name$ques$1.$$arity = 1); + Opal.defs(self, '$valid_ivar_name?', $JsReservedWords_valid_ivar_name$ques$2 = function(name) { var $a, self = this; - return ($truthy($a = Opal.const_get_relative($nesting, 'PROTO_SPECIAL_PROPS')['$=~'](name)) ? $a : Opal.const_get_relative($nesting, 'PROTO_SPECIAL_METHODS')['$=~'](name))['$!']() - }, TMP_JsReservedWords_valid_ivar_name$q_2.$$arity = 1); + return ($truthy($a = $$($nesting, 'PROTO_SPECIAL_PROPS')['$=~'](name)) ? $a : $$($nesting, 'PROTO_SPECIAL_METHODS')['$=~'](name))['$!']() + }, $JsReservedWords_valid_ivar_name$ques$2.$$arity = 1); - Opal.defn(self, '$fix_var_name', TMP_JsReservedWords_fix_var_name_3 = function $$fix_var_name(name) { + Opal.def(self, '$fix_var_name', $JsReservedWords_fix_var_name$3 = function $$fix_var_name(name) { var self = this; if ($truthy(self.$class()['$valid_name?'](name))) { return name - } else { + } else { return (("" + (name)) + "$").$to_sym() } - }, TMP_JsReservedWords_fix_var_name_3.$$arity = 1); + }, $JsReservedWords_fix_var_name$3.$$arity = 1); - Opal.defn(self, '$fix_ivar_name', TMP_JsReservedWords_fix_ivar_name_4 = function $$fix_ivar_name(name) { + Opal.def(self, '$fix_ivar_name', $JsReservedWords_fix_ivar_name$4 = function $$fix_ivar_name(name) { var self = this; if ($truthy(self.$class()['$valid_ivar_name?'](name.$to_s()['$[]']($range(1, -1, false))))) { return name - } else { + } else { return (("" + (name)) + "$").$to_sym() } - }, TMP_JsReservedWords_fix_ivar_name_4.$$arity = 1); + }, $JsReservedWords_fix_ivar_name$4.$$arity = 1); - Opal.defn(self, '$on_lvar', TMP_JsReservedWords_on_lvar_5 = function $$on_lvar(node) { - var $a, self = this, $iter = TMP_JsReservedWords_on_lvar_5.$$p, $yield = $iter || nil, name = nil, _ = nil; + Opal.def(self, '$on_lvar', $JsReservedWords_on_lvar$5 = function $$on_lvar(node) { + var $a, $iter = $JsReservedWords_on_lvar$5.$$p, $yield = $iter || nil, self = this, name = nil, _ = nil; - if ($iter) TMP_JsReservedWords_on_lvar_5.$$p = null; + if ($iter) $JsReservedWords_on_lvar$5.$$p = null; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; node = node.$updated(nil, [self.$fix_var_name(name)]); - return $send(self, Opal.find_super_dispatcher(self, 'on_lvar', TMP_JsReservedWords_on_lvar_5, false), [node], null); - }, TMP_JsReservedWords_on_lvar_5.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'on_lvar', $JsReservedWords_on_lvar$5, false), [node], null); + }, $JsReservedWords_on_lvar$5.$$arity = 1); - Opal.defn(self, '$on_lvasgn', TMP_JsReservedWords_on_lvasgn_6 = function $$on_lvasgn(node) { - var $a, self = this, $iter = TMP_JsReservedWords_on_lvasgn_6.$$p, $yield = $iter || nil, name = nil, value = nil; + Opal.def(self, '$on_lvasgn', $JsReservedWords_on_lvasgn$6 = function $$on_lvasgn(node) { + var $a, $iter = $JsReservedWords_on_lvasgn$6.$$p, $yield = $iter || nil, self = this, name = nil, value = nil; - if ($iter) TMP_JsReservedWords_on_lvasgn_6.$$p = null; + if ($iter) $JsReservedWords_on_lvasgn$6.$$p = null; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(value)) { - node = node.$updated(nil, [self.$fix_var_name(name), value]) - } else { - node = node.$updated(nil, [self.$fix_var_name(name)]) - }; - return $send(self, Opal.find_super_dispatcher(self, 'on_lvasgn', TMP_JsReservedWords_on_lvasgn_6, false), [node], null); - }, TMP_JsReservedWords_on_lvasgn_6.$$arity = 1); + node = (function() {if ($truthy(value)) { + return node.$updated(nil, [self.$fix_var_name(name), value]) + } else { + return node.$updated(nil, [self.$fix_var_name(name)]) + }; return nil; })(); + return $send(self, Opal.find_super_dispatcher(self, 'on_lvasgn', $JsReservedWords_on_lvasgn$6, false), [node], null); + }, $JsReservedWords_on_lvasgn$6.$$arity = 1); - Opal.defn(self, '$on_ivar', TMP_JsReservedWords_on_ivar_7 = function $$on_ivar(node) { - var $a, self = this, $iter = TMP_JsReservedWords_on_ivar_7.$$p, $yield = $iter || nil, name = nil, _ = nil; + Opal.def(self, '$on_ivar', $JsReservedWords_on_ivar$7 = function $$on_ivar(node) { + var $a, $iter = $JsReservedWords_on_ivar$7.$$p, $yield = $iter || nil, self = this, name = nil, _ = nil; - if ($iter) TMP_JsReservedWords_on_ivar_7.$$p = null; + if ($iter) $JsReservedWords_on_ivar$7.$$p = null; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; node = node.$updated(nil, [self.$fix_ivar_name(name)]); - return $send(self, Opal.find_super_dispatcher(self, 'on_ivar', TMP_JsReservedWords_on_ivar_7, false), [node], null); - }, TMP_JsReservedWords_on_ivar_7.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'on_ivar', $JsReservedWords_on_ivar$7, false), [node], null); + }, $JsReservedWords_on_ivar$7.$$arity = 1); - Opal.defn(self, '$on_ivasgn', TMP_JsReservedWords_on_ivasgn_8 = function $$on_ivasgn(node) { - var $a, self = this, $iter = TMP_JsReservedWords_on_ivasgn_8.$$p, $yield = $iter || nil, name = nil, value = nil; + Opal.def(self, '$on_ivasgn', $JsReservedWords_on_ivasgn$8 = function $$on_ivasgn(node) { + var $a, $iter = $JsReservedWords_on_ivasgn$8.$$p, $yield = $iter || nil, self = this, name = nil, value = nil; - if ($iter) TMP_JsReservedWords_on_ivasgn_8.$$p = null; + if ($iter) $JsReservedWords_on_ivasgn$8.$$p = null; $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(value)) { - node = node.$updated(nil, [self.$fix_ivar_name(name), value]) - } else { - node = node.$updated(nil, [self.$fix_ivar_name(name)]) - }; - return $send(self, Opal.find_super_dispatcher(self, 'on_ivasgn', TMP_JsReservedWords_on_ivasgn_8, false), [node], null); - }, TMP_JsReservedWords_on_ivasgn_8.$$arity = 1); + node = (function() {if ($truthy(value)) { + return node.$updated(nil, [self.$fix_ivar_name(name), value]) + } else { + return node.$updated(nil, [self.$fix_ivar_name(name)]) + }; return nil; })(); + return $send(self, Opal.find_super_dispatcher(self, 'on_ivasgn', $JsReservedWords_on_ivasgn$8, false), [node], null); + }, $JsReservedWords_on_ivasgn$8.$$arity = 1); - Opal.defn(self, '$on_restarg', TMP_JsReservedWords_on_restarg_9 = function $$on_restarg(node) { + Opal.def(self, '$on_restarg', $JsReservedWords_on_restarg$9 = function $$on_restarg(node) { var $a, self = this, name = nil, _ = nil; @@ -44081,100 +50071,98 @@ Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) { if ($truthy(name)) { node = node.$updated(nil, [self.$fix_var_name(name)], $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})}))}; return node; - }, TMP_JsReservedWords_on_restarg_9.$$arity = 1); - return (Opal.defn(self, '$on_argument', TMP_JsReservedWords_on_argument_10 = function $$on_argument(node) { - var $a, self = this, $iter = TMP_JsReservedWords_on_argument_10.$$p, $yield = $iter || nil, name = nil, value = nil, fixed_name = nil, new_children = nil; + }, $JsReservedWords_on_restarg$9.$$arity = 1); + return (Opal.def(self, '$on_argument', $JsReservedWords_on_argument$10 = function $$on_argument(node) { + var $a, $iter = $JsReservedWords_on_argument$10.$$p, $yield = $iter || nil, self = this, name = nil, value = nil, fixed_name = nil, new_children = nil; - if ($iter) TMP_JsReservedWords_on_argument_10.$$p = null; + if ($iter) $JsReservedWords_on_argument$10.$$p = null; - node = $send(self, Opal.find_super_dispatcher(self, 'on_argument', TMP_JsReservedWords_on_argument_10, false), [node], null); + node = $send(self, Opal.find_super_dispatcher(self, 'on_argument', $JsReservedWords_on_argument$10, false), [node], null); $a = [].concat(Opal.to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; fixed_name = self.$fix_var_name(name); new_children = (function() {if ($truthy(value)) { return [fixed_name, value] - } else { + } else { return [fixed_name] }; return nil; })(); return node.$updated(nil, new_children, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})})); - }, TMP_JsReservedWords_on_argument_10.$$arity = 1), nil) && 'on_argument'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $JsReservedWords_on_argument$10.$$arity = 1), nil) && 'on_argument'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$require', '$s', '$updated', '$+', '$children']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $BlockToIter(){}; - var self = $BlockToIter = $klass($base, $super, 'BlockToIter', $BlockToIter); + var self = $klass($base, $super, 'BlockToIter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BlockToIter_on_block_1; + var $nesting = [self].concat($parent_nesting), $BlockToIter_on_block$1; - return (Opal.defn(self, '$on_block', TMP_BlockToIter_on_block_1 = function $$on_block(node) { - var $a, self = this, $iter = TMP_BlockToIter_on_block_1.$$p, $yield = $iter || nil, recvr = nil, args = nil, body = nil, iter_node = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + return (Opal.def(self, '$on_block', $BlockToIter_on_block$1 = function $$on_block(node) { + var $a, $iter = $BlockToIter_on_block$1.$$p, $yield = $iter || nil, self = this, recvr = nil, args = nil, body = nil, iter_node = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_BlockToIter_on_block_1.$$p = null; + if ($iter) $BlockToIter_on_block$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $a = [].concat(Opal.to_a($send(self, Opal.find_super_dispatcher(self, 'on_block', TMP_BlockToIter_on_block_1, false), $zuper, $iter))), (recvr = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + $a = [].concat(Opal.to_a($send(self, Opal.find_super_dispatcher(self, 'on_block', $BlockToIter_on_block$1, false), $zuper, $iter))), (recvr = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; iter_node = self.$s("iter", args, body); return recvr.$updated(nil, $rb_plus(recvr.$children(), [iter_node])); - }, TMP_BlockToIter_on_block_1.$$arity = 1), nil) && 'on_block' - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $BlockToIter_on_block$1.$$arity = 1), nil) && 'on_block' + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$==', '$type', '$===', '$!=', '$size', '$raise', '$first', '$to_js_attr_call', '$to_js_attr_assign_call', '$to_native_js_call', '$s']); + Opal.add_stubs(['$require', '$==', '$type', '$===', '$!=', '$size', '$error', '$first', '$to_js_attr_call', '$to_js_attr_assign_call', '$to_native_js_call', '$s']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $DotJsSyntax(){}; - var self = $DotJsSyntax = $klass($base, $super, 'DotJsSyntax', $DotJsSyntax); + var self = $klass($base, $super, 'DotJsSyntax'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DotJsSyntax_on_send_1, TMP_DotJsSyntax_to_native_js_call_2, TMP_DotJsSyntax_to_js_attr_call_3, TMP_DotJsSyntax_to_js_attr_assign_call_4; + var $nesting = [self].concat($parent_nesting), $DotJsSyntax_on_send$1, $DotJsSyntax_to_native_js_call$2, $DotJsSyntax_to_js_attr_call$3, $DotJsSyntax_to_js_attr_assign_call$4; - Opal.defn(self, '$on_send', TMP_DotJsSyntax_on_send_1 = function $$on_send(node) { - var $a, self = this, $iter = TMP_DotJsSyntax_on_send_1.$$p, $yield = $iter || nil, recv = nil, meth = nil, args = nil, recv_of_recv = nil, meth_of_recv = nil, _ = nil, $case = nil, property = nil, value = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$on_send', $DotJsSyntax_on_send$1 = function $$on_send(node) { + var $a, $iter = $DotJsSyntax_on_send$1.$$p, $yield = $iter || nil, self = this, recv = nil, meth = nil, args = nil, recv_of_recv = nil, meth_of_recv = nil, _ = nil, $case = nil, property = nil, value = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_DotJsSyntax_on_send_1.$$p = null; + if ($iter) $DotJsSyntax_on_send$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; @@ -44189,105 +50177,128 @@ Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) { $case = meth; if ("[]"['$===']($case)) { if ($truthy(args.$size()['$!='](1))) { - self.$raise(Opal.const_get_relative($nesting, 'SyntaxError'), ".JS[:property] syntax supports only one argument")}; + self.$error(".JS[:property] syntax supports only one argument")}; property = args.$first(); node = self.$to_js_attr_call(recv_of_recv, property);} else if ("[]="['$===']($case)) { if ($truthy(args.$size()['$!='](2))) { - self.$raise(Opal.const_get_relative($nesting, 'SyntaxError'), ".JS[:property]= syntax supports only two arguments")}; + self.$error(".JS[:property]= syntax supports only two arguments")}; $a = [].concat(Opal.to_a(args)), (property = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; node = self.$to_js_attr_assign_call(recv_of_recv, property, value);} else {node = self.$to_native_js_call(recv_of_recv, meth, args)}; - return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_DotJsSyntax_on_send_1, false), [node], null); - } else { - return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_DotJsSyntax_on_send_1, false), $zuper, $iter) - }; + return $send(self, Opal.find_super_dispatcher(self, 'on_send', $DotJsSyntax_on_send$1, false), [node], null); } else { - return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_DotJsSyntax_on_send_1, false), $zuper, $iter) + return $send(self, Opal.find_super_dispatcher(self, 'on_send', $DotJsSyntax_on_send$1, false), $zuper, $iter) + }; + } else { + return $send(self, Opal.find_super_dispatcher(self, 'on_send', $DotJsSyntax_on_send$1, false), $zuper, $iter) }; - }, TMP_DotJsSyntax_on_send_1.$$arity = 1); + }, $DotJsSyntax_on_send$1.$$arity = 1); - Opal.defn(self, '$to_native_js_call', TMP_DotJsSyntax_to_native_js_call_2 = function $$to_native_js_call(recv, meth, args) { + Opal.def(self, '$to_native_js_call', $DotJsSyntax_to_native_js_call$2 = function $$to_native_js_call(recv, meth, args) { var self = this; return $send(self, 's', ["jscall", recv, meth].concat(Opal.to_a(args))) - }, TMP_DotJsSyntax_to_native_js_call_2.$$arity = 3); + }, $DotJsSyntax_to_native_js_call$2.$$arity = 3); - Opal.defn(self, '$to_js_attr_call', TMP_DotJsSyntax_to_js_attr_call_3 = function $$to_js_attr_call(recv, property) { + Opal.def(self, '$to_js_attr_call', $DotJsSyntax_to_js_attr_call$3 = function $$to_js_attr_call(recv, property) { var self = this; return self.$s("jsattr", recv, property) - }, TMP_DotJsSyntax_to_js_attr_call_3.$$arity = 2); - return (Opal.defn(self, '$to_js_attr_assign_call', TMP_DotJsSyntax_to_js_attr_assign_call_4 = function $$to_js_attr_assign_call(recv, property, value) { + }, $DotJsSyntax_to_js_attr_call$3.$$arity = 2); + return (Opal.def(self, '$to_js_attr_assign_call', $DotJsSyntax_to_js_attr_assign_call$4 = function $$to_js_attr_assign_call(recv, property, value) { var self = this; return self.$s("jsattrasgn", recv, property, value) - }, TMP_DotJsSyntax_to_js_attr_assign_call_4.$$arity = 3), nil) && 'to_js_attr_assign_call'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $DotJsSyntax_to_js_attr_assign_call$4.$$arity = 3), nil) && 'to_js_attr_assign_call'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $lambda = Opal.lambda, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$require', '$+', '$lambda', '$updated', '$s', '$[]', '$==', '$type', '$new_temp', '$call', '$fetch', '$raise', '$process', '$include?']); + Opal.add_stubs(['$require', '$+', '$updated', '$s', '$==', '$[]', '$type', '$new_temp', '$freeze', '$call', '$fetch', '$error', '$process', '$include?']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $LogicalOperatorAssignment(){}; - var self = $LogicalOperatorAssignment = $klass($base, $super, 'LogicalOperatorAssignment', $LogicalOperatorAssignment); + var self = $klass($base, $super, 'LogicalOperatorAssignment'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LogicalOperatorAssignment_reset_tmp_counter$B_1, TMP_LogicalOperatorAssignment_new_temp_2, TMP_LogicalOperatorAssignment_3, TMP_LogicalOperatorAssignment_on_or_asgn_8, TMP_LogicalOperatorAssignment_on_and_asgn_10, TMP_LogicalOperatorAssignment_on_defined$q_11; + var $nesting = [self].concat($parent_nesting), $LogicalOperatorAssignment_reset_tmp_counter$excl$1, $LogicalOperatorAssignment_new_temp$2, $LogicalOperatorAssignment$3, $LogicalOperatorAssignment_on_or_asgn$7, $LogicalOperatorAssignment_on_and_asgn$9, $LogicalOperatorAssignment_on_defined$ques$11; - Opal.defs(self, '$reset_tmp_counter!', TMP_LogicalOperatorAssignment_reset_tmp_counter$B_1 = function() { + Opal.defs(self, '$reset_tmp_counter!', $LogicalOperatorAssignment_reset_tmp_counter$excl$1 = function() { var self = this; - return (Opal.class_variable_set($LogicalOperatorAssignment, '@@counter', 0)) - }, TMP_LogicalOperatorAssignment_reset_tmp_counter$B_1.$$arity = 0); - Opal.defs(self, '$new_temp', TMP_LogicalOperatorAssignment_new_temp_2 = function $$new_temp() { + return (Opal.class_variable_set($nesting[0], '@@counter', 0)) + }, $LogicalOperatorAssignment_reset_tmp_counter$excl$1.$$arity = 0); + Opal.defs(self, '$new_temp', $LogicalOperatorAssignment_new_temp$2 = function $$new_temp() { var $a, $b, self = this; - (Opal.class_variable_set($LogicalOperatorAssignment, '@@counter', ($truthy($a = (($b = $LogicalOperatorAssignment.$$cvars['@@counter']) == null ? nil : $b)) ? $a : 0))); - (Opal.class_variable_set($LogicalOperatorAssignment, '@@counter', $rb_plus((($a = $LogicalOperatorAssignment.$$cvars['@@counter']) == null ? nil : $a), 1))); - return "" + "$logical_op_recvr_tmp_" + ((($a = $LogicalOperatorAssignment.$$cvars['@@counter']) == null ? nil : $a)); - }, TMP_LogicalOperatorAssignment_new_temp_2.$$arity = 0); - Opal.const_set($nesting[0], 'GET_SET', $send(self, 'lambda', [], (TMP_LogicalOperatorAssignment_3 = function(get_type, set_type){var self = TMP_LogicalOperatorAssignment_3.$$s || this, TMP_4; -if (get_type == null) get_type = nil;if (set_type == null) set_type = nil; - return $send(self, 'lambda', [], (TMP_4 = function(lhs, rhs, root_type){var self = TMP_4.$$s || this, get_node = nil, condition_node = nil; -if (lhs == null) lhs = nil;if (rhs == null) rhs = nil;if (root_type == null) root_type = nil; + (Opal.class_variable_set($nesting[0], '@@counter', ($truthy($a = (($b = $nesting[0].$$cvars['@@counter']) == null ? nil : $b)) ? $a : 0))); + (Opal.class_variable_set($nesting[0], '@@counter', $rb_plus((($a = $nesting[0].$$cvars['@@counter']) == null ? nil : $a), 1))); + return "" + "$logical_op_recvr_tmp_" + ((($a = $nesting[0].$$cvars['@@counter']) == null ? nil : $a)); + }, $LogicalOperatorAssignment_new_temp$2.$$arity = 0); + Opal.const_set($nesting[0], 'GET_SET', $lambda(($LogicalOperatorAssignment$3 = function(get_type, set_type){var self = $LogicalOperatorAssignment$3.$$s || this, $$4; + + + if (get_type == null) { + get_type = nil; + }; + + if (set_type == null) { + set_type = nil; + }; + return $lambda(($$4 = function(lhs, rhs, root_type){var self = $$4.$$s || this, $a, get_node = nil, condition_node = nil, defined_node = nil; + + + + if (lhs == null) { + lhs = nil; + }; + + if (rhs == null) { + rhs = nil; + }; + + if (root_type == null) { + root_type = nil; + }; get_node = lhs.$updated(get_type); condition_node = self.$s(root_type, get_node, rhs); - return lhs.$updated(set_type, [].concat(Opal.to_a(lhs)).concat([condition_node]));}, TMP_4.$$s = self, TMP_4.$$arity = 3, TMP_4))}, TMP_LogicalOperatorAssignment_3.$$s = self, TMP_LogicalOperatorAssignment_3.$$arity = 2, TMP_LogicalOperatorAssignment_3))); - Opal.const_set($nesting[0], 'LocalVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("lvar", "lvasgn")); - Opal.const_set($nesting[0], 'InstanceVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("ivar", "ivasgn")); - Opal.const_set($nesting[0], 'ConstantHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("const", "casgn")); - Opal.const_set($nesting[0], 'GlobalVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("gvar", "gvasgn")); - Opal.const_set($nesting[0], 'ClassVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("cvar", "cvasgn")); + if ($truthy((($a = get_type['$==']("const")) ? root_type['$==']("or") : get_type['$==']("const")))) { + + defined_node = self.$s("defined?", get_node); + condition_node = self.$s("if", defined_node, self.$s("begin", condition_node), rhs);}; + return lhs.$updated(set_type, [].concat(Opal.to_a(lhs)).concat([condition_node]));}, $$4.$$s = self, $$4.$$arity = 3, $$4));}, $LogicalOperatorAssignment$3.$$s = self, $LogicalOperatorAssignment$3.$$arity = 2, $LogicalOperatorAssignment$3))); + Opal.const_set($nesting[0], 'LocalVariableHandler', $$($nesting, 'GET_SET')['$[]']("lvar", "lvasgn")); + Opal.const_set($nesting[0], 'InstanceVariableHandler', $$($nesting, 'GET_SET')['$[]']("ivar", "ivasgn")); + Opal.const_set($nesting[0], 'ConstantHandler', $$($nesting, 'GET_SET')['$[]']("const", "casgn")); + Opal.const_set($nesting[0], 'GlobalVariableHandler', $$($nesting, 'GET_SET')['$[]']("gvar", "gvasgn")); + Opal.const_set($nesting[0], 'ClassVariableHandler', $$($nesting, 'GET_SET')['$[]']("cvar", "cvasgn")); (function($base, $super, $parent_nesting) { - function $SendHandler(){}; - var self = $SendHandler = $klass($base, $super, 'SendHandler', $SendHandler); + var self = $klass($base, $super, 'SendHandler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SendHandler_call_5; + var $nesting = [self].concat($parent_nesting), $SendHandler_call$5; - return Opal.defs(self, '$call', TMP_SendHandler_call_5 = function $$call(lhs, rhs, root_type) { + return (Opal.defs(self, '$call', $SendHandler_call$5 = function $$call(lhs, rhs, root_type) { var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_writer = nil, get_or_set = nil; @@ -44303,18 +50314,17 @@ if (lhs == null) lhs = nil;if (rhs == null) rhs = nil;if (root_type == null) roo get_or_set = self.$s(root_type, call_reader, call_writer); if ($truthy(cache_recvr)) { return self.$s("begin", cache_recvr, get_or_set) - } else { + } else { return get_or_set }; - }, TMP_SendHandler_call_5.$$arity = 3) + }, $SendHandler_call$5.$$arity = 3), nil) && 'call' })($nesting[0], self, $nesting); (function($base, $super, $parent_nesting) { - function $ConditionalSendHandler(){}; - var self = $ConditionalSendHandler = $klass($base, $super, 'ConditionalSendHandler', $ConditionalSendHandler); + var self = $klass($base, $super, 'ConditionalSendHandler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConditionalSendHandler_call_6; + var $nesting = [self].concat($parent_nesting), $ConditionalSendHandler_call$6; - return Opal.defs(self, '$call', TMP_ConditionalSendHandler_call_6 = function $$call(lhs, rhs, root_type) { + return (Opal.defs(self, '$call', $ConditionalSendHandler_call$6 = function $$call(lhs, rhs, root_type) { var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_or_asgn = nil; @@ -44327,109 +50337,128 @@ if (lhs == null) lhs = nil;if (rhs == null) rhs = nil;if (root_type == null) roo plain_send = lhs.$updated("send", [recvr, meth].concat(Opal.to_a(args))); plain_or_asgn = self.$s(root_type, plain_send, rhs); return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_or_asgn)); - }, TMP_ConditionalSendHandler_call_6.$$arity = 3) + }, $ConditionalSendHandler_call$6.$$arity = 3), nil) && 'call' })($nesting[0], self, $nesting); - Opal.const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": Opal.const_get_relative($nesting, 'LocalVariableHandler'), "ivasgn": Opal.const_get_relative($nesting, 'InstanceVariableHandler'), "casgn": Opal.const_get_relative($nesting, 'ConstantHandler'), "gvasgn": Opal.const_get_relative($nesting, 'GlobalVariableHandler'), "cvasgn": Opal.const_get_relative($nesting, 'ClassVariableHandler'), "send": Opal.const_get_relative($nesting, 'SendHandler'), "csend": Opal.const_get_relative($nesting, 'ConditionalSendHandler')})); + Opal.const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$($nesting, 'LocalVariableHandler'), "ivasgn": $$($nesting, 'InstanceVariableHandler'), "casgn": $$($nesting, 'ConstantHandler'), "gvasgn": $$($nesting, 'GlobalVariableHandler'), "cvasgn": $$($nesting, 'ClassVariableHandler'), "send": $$($nesting, 'SendHandler'), "csend": $$($nesting, 'ConditionalSendHandler')}).$freeze()); - Opal.defn(self, '$on_or_asgn', TMP_LogicalOperatorAssignment_on_or_asgn_8 = function $$on_or_asgn(node) { - var $a, TMP_7, self = this, lhs = nil, rhs = nil, result = nil; + Opal.def(self, '$on_or_asgn', $LogicalOperatorAssignment_on_or_asgn$7 = function $$on_or_asgn(node) { + var $a, $$8, self = this, lhs = nil, rhs = nil, result = nil; $a = [].concat(Opal.to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; - result = $send(Opal.const_get_relative($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], (TMP_7 = function(){var self = TMP_7.$$s || this; + result = $send($$($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], ($$8 = function(){var self = $$8.$$s || this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'))}, TMP_7.$$s = self, TMP_7.$$arity = 0, TMP_7)).$call(lhs, rhs, "or"); + return self.$error("" + "cannot handle LHS type: " + (lhs.$type()))}, $$8.$$s = self, $$8.$$arity = 0, $$8)).$call(lhs, rhs, "or"); return self.$process(result); - }, TMP_LogicalOperatorAssignment_on_or_asgn_8.$$arity = 1); + }, $LogicalOperatorAssignment_on_or_asgn$7.$$arity = 1); - Opal.defn(self, '$on_and_asgn', TMP_LogicalOperatorAssignment_on_and_asgn_10 = function $$on_and_asgn(node) { - var $a, TMP_9, self = this, lhs = nil, rhs = nil, result = nil; + Opal.def(self, '$on_and_asgn', $LogicalOperatorAssignment_on_and_asgn$9 = function $$on_and_asgn(node) { + var $a, $$10, self = this, lhs = nil, rhs = nil, result = nil; $a = [].concat(Opal.to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; - result = $send(Opal.const_get_relative($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], (TMP_9 = function(){var self = TMP_9.$$s || this; + result = $send($$($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], ($$10 = function(){var self = $$10.$$s || this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'))}, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9)).$call(lhs, rhs, "and"); + return self.$error("" + "cannot handle LHS type: " + (lhs.$type()))}, $$10.$$s = self, $$10.$$arity = 0, $$10)).$call(lhs, rhs, "and"); return self.$process(result); - }, TMP_LogicalOperatorAssignment_on_and_asgn_10.$$arity = 1); + }, $LogicalOperatorAssignment_on_and_asgn$9.$$arity = 1); Opal.const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); - return (Opal.defn(self, '$on_defined?', TMP_LogicalOperatorAssignment_on_defined$q_11 = function(node) { - var $a, self = this, $iter = TMP_LogicalOperatorAssignment_on_defined$q_11.$$p, $yield = $iter || nil, inner = nil, _ = nil; + return (Opal.def(self, '$on_defined?', $LogicalOperatorAssignment_on_defined$ques$11 = function(node) { + var $a, $iter = $LogicalOperatorAssignment_on_defined$ques$11.$$p, $yield = $iter || nil, self = this, inner = nil, _ = nil; - if ($iter) TMP_LogicalOperatorAssignment_on_defined$q_11.$$p = null; + if ($iter) $LogicalOperatorAssignment_on_defined$ques$11.$$p = null; $a = [].concat(Opal.to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; if ($truthy(["or_asgn", "and_asgn"]['$include?'](inner.$type()))) { - return Opal.const_get_relative($nesting, 'ASSIGNMENT_STRING_NODE') - } else { - return $send(self, Opal.find_super_dispatcher(self, 'on_defined?', TMP_LogicalOperatorAssignment_on_defined$q_11, false), [node], null) + return $$($nesting, 'ASSIGNMENT_STRING_NODE') + } else { + return $send(self, Opal.find_super_dispatcher(self, 'on_defined?', $LogicalOperatorAssignment_on_defined$ques$11, false), [node], null) }; - }, TMP_LogicalOperatorAssignment_on_defined$q_11.$$arity = 1), nil) && 'on_defined?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $LogicalOperatorAssignment_on_defined$ques$11.$$arity = 1), nil) && 'on_defined?'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $lambda = Opal.lambda, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$require', '$+', '$lambda', '$updated', '$s', '$[]', '$==', '$type', '$new_temp', '$call', '$fetch', '$raise', '$process']); + Opal.add_stubs(['$require', '$+', '$updated', '$s', '$[]', '$==', '$type', '$new_temp', '$freeze', '$call', '$fetch', '$error', '$process']); self.$require("opal/rewriters/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $BinaryOperatorAssignment(){}; - var self = $BinaryOperatorAssignment = $klass($base, $super, 'BinaryOperatorAssignment', $BinaryOperatorAssignment); + var self = $klass($base, $super, 'BinaryOperatorAssignment'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BinaryOperatorAssignment_reset_tmp_counter$B_1, TMP_BinaryOperatorAssignment_new_temp_2, TMP_BinaryOperatorAssignment_3, TMP_BinaryOperatorAssignment_on_op_asgn_8, TMP_BinaryOperatorAssignment_on_defined$q_9; + var $nesting = [self].concat($parent_nesting), $BinaryOperatorAssignment_reset_tmp_counter$excl$1, $BinaryOperatorAssignment_new_temp$2, $BinaryOperatorAssignment$3, $BinaryOperatorAssignment_on_op_asgn$7, $BinaryOperatorAssignment_on_defined$ques$9; - Opal.defs(self, '$reset_tmp_counter!', TMP_BinaryOperatorAssignment_reset_tmp_counter$B_1 = function() { + Opal.defs(self, '$reset_tmp_counter!', $BinaryOperatorAssignment_reset_tmp_counter$excl$1 = function() { var self = this; - return (Opal.class_variable_set($BinaryOperatorAssignment, '@@counter', 0)) - }, TMP_BinaryOperatorAssignment_reset_tmp_counter$B_1.$$arity = 0); - Opal.defs(self, '$new_temp', TMP_BinaryOperatorAssignment_new_temp_2 = function $$new_temp() { + return (Opal.class_variable_set($nesting[0], '@@counter', 0)) + }, $BinaryOperatorAssignment_reset_tmp_counter$excl$1.$$arity = 0); + Opal.defs(self, '$new_temp', $BinaryOperatorAssignment_new_temp$2 = function $$new_temp() { var $a, $b, self = this; - (Opal.class_variable_set($BinaryOperatorAssignment, '@@counter', ($truthy($a = (($b = $BinaryOperatorAssignment.$$cvars['@@counter']) == null ? nil : $b)) ? $a : 0))); - (Opal.class_variable_set($BinaryOperatorAssignment, '@@counter', $rb_plus((($a = $BinaryOperatorAssignment.$$cvars['@@counter']) == null ? nil : $a), 1))); - return "" + "$binary_op_recvr_tmp_" + ((($a = $BinaryOperatorAssignment.$$cvars['@@counter']) == null ? nil : $a)); - }, TMP_BinaryOperatorAssignment_new_temp_2.$$arity = 0); - Opal.const_set($nesting[0], 'GET_SET', $send(self, 'lambda', [], (TMP_BinaryOperatorAssignment_3 = function(get_type, set_type){var self = TMP_BinaryOperatorAssignment_3.$$s || this, TMP_4; -if (get_type == null) get_type = nil;if (set_type == null) set_type = nil; - return $send(self, 'lambda', [], (TMP_4 = function(lhs, op, rhs){var self = TMP_4.$$s || this, get_node = nil, set_node = nil; -if (lhs == null) lhs = nil;if (op == null) op = nil;if (rhs == null) rhs = nil; + (Opal.class_variable_set($nesting[0], '@@counter', ($truthy($a = (($b = $nesting[0].$$cvars['@@counter']) == null ? nil : $b)) ? $a : 0))); + (Opal.class_variable_set($nesting[0], '@@counter', $rb_plus((($a = $nesting[0].$$cvars['@@counter']) == null ? nil : $a), 1))); + return "" + "$binary_op_recvr_tmp_" + ((($a = $nesting[0].$$cvars['@@counter']) == null ? nil : $a)); + }, $BinaryOperatorAssignment_new_temp$2.$$arity = 0); + Opal.const_set($nesting[0], 'GET_SET', $lambda(($BinaryOperatorAssignment$3 = function(get_type, set_type){var self = $BinaryOperatorAssignment$3.$$s || this, $$4; + + + if (get_type == null) { + get_type = nil; + }; + + if (set_type == null) { + set_type = nil; + }; + return $lambda(($$4 = function(lhs, operation, rhs){var self = $$4.$$s || this, get_node = nil, set_node = nil; + + + + if (lhs == null) { + lhs = nil; + }; + + if (operation == null) { + operation = nil; + }; + + if (rhs == null) { + rhs = nil; + }; get_node = lhs.$updated(get_type); - set_node = self.$s("send", get_node, op, rhs); - return lhs.$updated(set_type, [].concat(Opal.to_a(lhs)).concat([set_node]));}, TMP_4.$$s = self, TMP_4.$$arity = 3, TMP_4))}, TMP_BinaryOperatorAssignment_3.$$s = self, TMP_BinaryOperatorAssignment_3.$$arity = 2, TMP_BinaryOperatorAssignment_3))); - Opal.const_set($nesting[0], 'LocalVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("lvar", "lvasgn")); - Opal.const_set($nesting[0], 'InstanceVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("ivar", "ivasgn")); - Opal.const_set($nesting[0], 'ConstantHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("const", "casgn")); - Opal.const_set($nesting[0], 'GlobalVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("gvar", "gvasgn")); - Opal.const_set($nesting[0], 'ClassVariableHandler', Opal.const_get_relative($nesting, 'GET_SET')['$[]']("cvar", "cvasgn")); + set_node = self.$s("send", get_node, operation, rhs); + return lhs.$updated(set_type, [].concat(Opal.to_a(lhs)).concat([set_node]));}, $$4.$$s = self, $$4.$$arity = 3, $$4));}, $BinaryOperatorAssignment$3.$$s = self, $BinaryOperatorAssignment$3.$$arity = 2, $BinaryOperatorAssignment$3))); + Opal.const_set($nesting[0], 'LocalVariableHandler', $$($nesting, 'GET_SET')['$[]']("lvar", "lvasgn")); + Opal.const_set($nesting[0], 'InstanceVariableHandler', $$($nesting, 'GET_SET')['$[]']("ivar", "ivasgn")); + Opal.const_set($nesting[0], 'ConstantHandler', $$($nesting, 'GET_SET')['$[]']("const", "casgn")); + Opal.const_set($nesting[0], 'GlobalVariableHandler', $$($nesting, 'GET_SET')['$[]']("gvar", "gvasgn")); + Opal.const_set($nesting[0], 'ClassVariableHandler', $$($nesting, 'GET_SET')['$[]']("cvar", "cvasgn")); (function($base, $super, $parent_nesting) { - function $SendHandler(){}; - var self = $SendHandler = $klass($base, $super, 'SendHandler', $SendHandler); + var self = $klass($base, $super, 'SendHandler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SendHandler_call_5; + var $nesting = [self].concat($parent_nesting), $SendHandler_call$5; - return Opal.defs(self, '$call', TMP_SendHandler_call_5 = function $$call(lhs, op, rhs) { + return (Opal.defs(self, '$call', $SendHandler_call$5 = function $$call(lhs, operation, rhs) { var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_op = nil, call_writer = nil; @@ -44441,22 +50470,21 @@ if (lhs == null) lhs = nil;if (op == null) op = nil;if (rhs == null) rhs = nil; recvr = self.$s("js_tmp", recvr_tmp);}; writer_method = "" + (reader_method) + "="; call_reader = lhs.$updated("send", [recvr, reader_method].concat(Opal.to_a(args))); - call_op = self.$s("send", call_reader, op, rhs); + call_op = self.$s("send", call_reader, operation, rhs); call_writer = lhs.$updated("send", [recvr, writer_method].concat(Opal.to_a(args)).concat([call_op])); if ($truthy(cache_recvr)) { return self.$s("begin", cache_recvr, call_writer) - } else { + } else { return call_writer }; - }, TMP_SendHandler_call_5.$$arity = 3) + }, $SendHandler_call$5.$$arity = 3), nil) && 'call' })($nesting[0], self, $nesting); (function($base, $super, $parent_nesting) { - function $ConditionalSendHandler(){}; - var self = $ConditionalSendHandler = $klass($base, $super, 'ConditionalSendHandler', $ConditionalSendHandler); + var self = $klass($base, $super, 'ConditionalSendHandler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConditionalSendHandler_call_6; + var $nesting = [self].concat($parent_nesting), $ConditionalSendHandler_call$6; - return Opal.defs(self, '$call', TMP_ConditionalSendHandler_call_6 = function $$call(lhs, op, rhs) { + return (Opal.defs(self, '$call', $ConditionalSendHandler_call$6 = function $$call(lhs, operation, rhs) { var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_op_asgn = nil; @@ -44466,103 +50494,102 @@ if (lhs == null) lhs = nil;if (op == null) op = nil;if (rhs == null) rhs = nil; recvr = self.$s("js_tmp", recvr_tmp); recvr_is_nil = self.$s("send", recvr, "nil?"); plain_send = lhs.$updated("send", [recvr, meth].concat(Opal.to_a(args))); - plain_op_asgn = self.$s("op_asgn", plain_send, op, rhs); + plain_op_asgn = self.$s("op_asgn", plain_send, operation, rhs); return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_op_asgn)); - }, TMP_ConditionalSendHandler_call_6.$$arity = 3) + }, $ConditionalSendHandler_call$6.$$arity = 3), nil) && 'call' })($nesting[0], self, $nesting); - Opal.const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": Opal.const_get_relative($nesting, 'LocalVariableHandler'), "ivasgn": Opal.const_get_relative($nesting, 'InstanceVariableHandler'), "casgn": Opal.const_get_relative($nesting, 'ConstantHandler'), "gvasgn": Opal.const_get_relative($nesting, 'GlobalVariableHandler'), "cvasgn": Opal.const_get_relative($nesting, 'ClassVariableHandler'), "send": Opal.const_get_relative($nesting, 'SendHandler'), "csend": Opal.const_get_relative($nesting, 'ConditionalSendHandler')})); + Opal.const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$($nesting, 'LocalVariableHandler'), "ivasgn": $$($nesting, 'InstanceVariableHandler'), "casgn": $$($nesting, 'ConstantHandler'), "gvasgn": $$($nesting, 'GlobalVariableHandler'), "cvasgn": $$($nesting, 'ClassVariableHandler'), "send": $$($nesting, 'SendHandler'), "csend": $$($nesting, 'ConditionalSendHandler')}).$freeze()); - Opal.defn(self, '$on_op_asgn', TMP_BinaryOperatorAssignment_on_op_asgn_8 = function $$on_op_asgn(node) { - var $a, TMP_7, self = this, lhs = nil, op = nil, rhs = nil, result = nil; + Opal.def(self, '$on_op_asgn', $BinaryOperatorAssignment_on_op_asgn$7 = function $$on_op_asgn(node) { + var $a, $$8, self = this, lhs = nil, op = nil, rhs = nil, result = nil; $a = [].concat(Opal.to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (op = ($a[1] == null ? nil : $a[1])), (rhs = ($a[2] == null ? nil : $a[2])), $a; - result = $send(Opal.const_get_relative($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], (TMP_7 = function(){var self = TMP_7.$$s || this; + result = $send($$($nesting, 'HANDLERS'), 'fetch', [lhs.$type()], ($$8 = function(){var self = $$8.$$s || this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'))}, TMP_7.$$s = self, TMP_7.$$arity = 0, TMP_7)).$call(lhs, op, rhs); + return self.$error("" + "cannot handle LHS type: " + (lhs.$type()))}, $$8.$$s = self, $$8.$$arity = 0, $$8)).$call(lhs, op, rhs); return self.$process(result); - }, TMP_BinaryOperatorAssignment_on_op_asgn_8.$$arity = 1); + }, $BinaryOperatorAssignment_on_op_asgn$7.$$arity = 1); Opal.const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); - return (Opal.defn(self, '$on_defined?', TMP_BinaryOperatorAssignment_on_defined$q_9 = function(node) { - var $a, self = this, $iter = TMP_BinaryOperatorAssignment_on_defined$q_9.$$p, $yield = $iter || nil, inner = nil, _ = nil; + return (Opal.def(self, '$on_defined?', $BinaryOperatorAssignment_on_defined$ques$9 = function(node) { + var $a, $iter = $BinaryOperatorAssignment_on_defined$ques$9.$$p, $yield = $iter || nil, self = this, inner = nil, _ = nil; - if ($iter) TMP_BinaryOperatorAssignment_on_defined$q_9.$$p = null; + if ($iter) $BinaryOperatorAssignment_on_defined$ques$9.$$p = null; $a = [].concat(Opal.to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; if (inner.$type()['$==']("op_asgn")) { - return Opal.const_get_relative($nesting, 'ASSIGNMENT_STRING_NODE') - } else { - return $send(self, Opal.find_super_dispatcher(self, 'on_defined?', TMP_BinaryOperatorAssignment_on_defined$q_9, false), [node], null) + return $$($nesting, 'ASSIGNMENT_STRING_NODE') + } else { + return $send(self, Opal.find_super_dispatcher(self, 'on_defined?', $BinaryOperatorAssignment_on_defined$ques$9, false), [node], null) }; - }, TMP_BinaryOperatorAssignment_on_defined$q_9.$$arity = 1), nil) && 'on_defined?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $BinaryOperatorAssignment_on_defined$ques$9.$$arity = 1), nil) && 'on_defined?'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$new', '$include?', '$type', '$<<', '$==', '$process_regular_node', '$updated', '$inspect', '$warn']); self.$require("opal/rewriters/base"); self.$require("set"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Hashes, self = $Hashes = $module($base, 'Hashes'); + var self = $module($base, 'Hashes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $KeyDuplicatesRewriter(){}; - var self = $KeyDuplicatesRewriter = $klass($base, $super, 'KeyDuplicatesRewriter', $KeyDuplicatesRewriter); + var self = $klass($base, $super, 'KeyDuplicatesRewriter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KeyDuplicatesRewriter_initialize_1, TMP_KeyDuplicatesRewriter_on_hash_2, TMP_KeyDuplicatesRewriter_on_pair_3, TMP_KeyDuplicatesRewriter_on_kwsplat_4; + var $nesting = [self].concat($parent_nesting), $KeyDuplicatesRewriter_initialize$1, $KeyDuplicatesRewriter_on_hash$2, $KeyDuplicatesRewriter_on_pair$3, $KeyDuplicatesRewriter_on_kwsplat$4; - def.keys = nil; + self.$$prototype.keys = nil; - Opal.defn(self, '$initialize', TMP_KeyDuplicatesRewriter_initialize_1 = function $$initialize() { + Opal.def(self, '$initialize', $KeyDuplicatesRewriter_initialize$1 = function $$initialize() { var self = this; - return (self.keys = Opal.const_get_relative($nesting, 'UniqKeysSet').$new()) - }, TMP_KeyDuplicatesRewriter_initialize_1.$$arity = 0); + return (self.keys = $$($nesting, 'UniqKeysSet').$new()) + }, $KeyDuplicatesRewriter_initialize$1.$$arity = 0); - Opal.defn(self, '$on_hash', TMP_KeyDuplicatesRewriter_on_hash_2 = function $$on_hash(node) { - var $a, self = this, $iter = TMP_KeyDuplicatesRewriter_on_hash_2.$$p, $yield = $iter || nil, previous_keys = nil; + Opal.def(self, '$on_hash', $KeyDuplicatesRewriter_on_hash$2 = function $$on_hash(node) { + var $a, $iter = $KeyDuplicatesRewriter_on_hash$2.$$p, $yield = $iter || nil, self = this, previous_keys = nil; - if ($iter) TMP_KeyDuplicatesRewriter_on_hash_2.$$p = null; + if ($iter) $KeyDuplicatesRewriter_on_hash$2.$$p = null; return (function() { try { - $a = [self.keys, Opal.const_get_relative($nesting, 'UniqKeysSet').$new()], (previous_keys = $a[0]), (self.keys = $a[1]), $a; - return $send(self, Opal.find_super_dispatcher(self, 'on_hash', TMP_KeyDuplicatesRewriter_on_hash_2, false), [node], null); + $a = [self.keys, $$($nesting, 'UniqKeysSet').$new()], (previous_keys = $a[0]), (self.keys = $a[1]), $a; + return $send(self, Opal.find_super_dispatcher(self, 'on_hash', $KeyDuplicatesRewriter_on_hash$2, false), [node], null); } finally { (self.keys = previous_keys) }; })() - }, TMP_KeyDuplicatesRewriter_on_hash_2.$$arity = 1); + }, $KeyDuplicatesRewriter_on_hash$2.$$arity = 1); - Opal.defn(self, '$on_pair', TMP_KeyDuplicatesRewriter_on_pair_3 = function $$on_pair(node) { - var $a, self = this, $iter = TMP_KeyDuplicatesRewriter_on_pair_3.$$p, $yield = $iter || nil, key = nil, _value = nil; + Opal.def(self, '$on_pair', $KeyDuplicatesRewriter_on_pair$3 = function $$on_pair(node) { + var $a, $iter = $KeyDuplicatesRewriter_on_pair$3.$$p, $yield = $iter || nil, self = this, key = nil, _value = nil; - if ($iter) TMP_KeyDuplicatesRewriter_on_pair_3.$$p = null; + if ($iter) $KeyDuplicatesRewriter_on_pair$3.$$p = null; $a = [].concat(Opal.to_a(node)), (key = ($a[0] == null ? nil : $a[0])), (_value = ($a[1] == null ? nil : $a[1])), $a; if ($truthy(["str", "sym"]['$include?'](key.$type()))) { self.keys['$<<'](key)}; - return $send(self, Opal.find_super_dispatcher(self, 'on_pair', TMP_KeyDuplicatesRewriter_on_pair_3, false), [node], null); - }, TMP_KeyDuplicatesRewriter_on_pair_3.$$arity = 1); + return $send(self, Opal.find_super_dispatcher(self, 'on_pair', $KeyDuplicatesRewriter_on_pair$3, false), [node], null); + }, $KeyDuplicatesRewriter_on_pair$3.$$arity = 1); - Opal.defn(self, '$on_kwsplat', TMP_KeyDuplicatesRewriter_on_kwsplat_4 = function $$on_kwsplat(node) { + Opal.def(self, '$on_kwsplat', $KeyDuplicatesRewriter_on_kwsplat$4 = function $$on_kwsplat(node) { var $a, self = this, hash = nil, _ = nil; @@ -44570,22 +50597,21 @@ Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) { if (hash.$type()['$==']("hash")) { hash = self.$process_regular_node(hash)}; return node.$updated(nil, [hash]); - }, TMP_KeyDuplicatesRewriter_on_kwsplat_4.$$arity = 1); + }, $KeyDuplicatesRewriter_on_kwsplat$4.$$arity = 1); return (function($base, $super, $parent_nesting) { - function $UniqKeysSet(){}; - var self = $UniqKeysSet = $klass($base, $super, 'UniqKeysSet', $UniqKeysSet); + var self = $klass($base, $super, 'UniqKeysSet'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UniqKeysSet_initialize_5, TMP_UniqKeysSet_$lt$lt_6; + var $nesting = [self].concat($parent_nesting), $UniqKeysSet_initialize$5, $UniqKeysSet_$lt$lt$6; - def.set = nil; + self.$$prototype.set = nil; - Opal.defn(self, '$initialize', TMP_UniqKeysSet_initialize_5 = function $$initialize() { + Opal.def(self, '$initialize', $UniqKeysSet_initialize$5 = function $$initialize() { var self = this; - return (self.set = Opal.const_get_relative($nesting, 'Set').$new()) - }, TMP_UniqKeysSet_initialize_5.$$arity = 0); - return (Opal.defn(self, '$<<', TMP_UniqKeysSet_$lt$lt_6 = function(element) { + return (self.set = $$($nesting, 'Set').$new()) + }, $UniqKeysSet_initialize$5.$$arity = 0); + return (Opal.def(self, '$<<', $UniqKeysSet_$lt$lt$6 = function(element) { var $a, self = this, key = nil, _ = nil; if ($truthy(self.set['$include?'](element))) { @@ -44593,24 +50619,630 @@ Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) { $a = [].concat(Opal.to_a(element)), (key = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; key = (function() {if (element.$type()['$==']("str")) { return key.$inspect() - } else { + } else { return "" + ":" + (key) }; return nil; })(); - return Opal.const_get_relative($nesting, 'Kernel').$warn("" + "warning: key " + (key) + " is duplicated and overwritten"); - } else { + return $$($nesting, 'Kernel').$warn("" + "warning: key " + (key) + " is duplicated and overwritten"); + } else { return self.set['$<<'](element) } - }, TMP_UniqKeysSet_$lt$lt_6.$$arity = 1), nil) && '<<'; + }, $UniqKeysSet_$lt$lt$6.$$arity = 1), nil) && '<<'; })($nesting[0], null, $nesting); - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'Rewriters'), 'Base'), $nesting) + })($nesting[0], $$$($$$($$$('::', 'Opal'), 'Rewriters'), 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/rewriters/dump_args"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2; + + Opal.add_stubs(['$require', '$updated']); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'DumpArgs'); + + var $nesting = [self].concat($parent_nesting), $DumpArgs_on_def$1, $DumpArgs_on_defs$2, $DumpArgs_on_iter$3; + + + + Opal.def(self, '$on_def', $DumpArgs_on_def$1 = function $$on_def(node) { + var $a, $iter = $DumpArgs_on_def$1.$$p, $yield = $iter || nil, self = this, _mid = nil, args = nil, _body = nil; + + if ($iter) $DumpArgs_on_def$1.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_def', $DumpArgs_on_def$1, false), [node], null); + $a = [].concat(Opal.to_a(node)), (_mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (_body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, $DumpArgs_on_def$1.$$arity = 1); + + Opal.def(self, '$on_defs', $DumpArgs_on_defs$2 = function $$on_defs(node) { + var $a, $iter = $DumpArgs_on_defs$2.$$p, $yield = $iter || nil, self = this, _recv = nil, _mid = nil, args = nil, _body = nil; + + if ($iter) $DumpArgs_on_defs$2.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_defs', $DumpArgs_on_defs$2, false), [node], null); + $a = [].concat(Opal.to_a(node)), (_recv = ($a[0] == null ? nil : $a[0])), (_mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (_body = ($a[3] == null ? nil : $a[3])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, $DumpArgs_on_defs$2.$$arity = 1); + return (Opal.def(self, '$on_iter', $DumpArgs_on_iter$3 = function $$on_iter(node) { + var $a, $iter = $DumpArgs_on_iter$3.$$p, $yield = $iter || nil, self = this, args = nil, _body = nil; + + if ($iter) $DumpArgs_on_iter$3.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_iter', $DumpArgs_on_iter$3, false), [node], null); + $a = [].concat(Opal.to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (_body = ($a[1] == null ? nil : $a[1])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, $DumpArgs_on_iter$3.$$arity = 1), nil) && 'on_iter'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) { + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + + Opal.add_stubs(['$require', '$new', '$updated', '$rewritten', '$initialization', '$s', '$prepend_to_body', '$attr_reader', '$split!', '$+', '$each', '$children', '$==', '$type', '$new_mlhs_tmp', '$process', '$<<', '$length', '$[]', '$empty?']); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MlhsArgs'); + + var $nesting = [self].concat($parent_nesting), $MlhsArgs_on_def$1, $MlhsArgs_on_defs$2, $MlhsArgs_on_iter$3; + + + + Opal.def(self, '$on_def', $MlhsArgs_on_def$1 = function $$on_def(node) { + var $a, $iter = $MlhsArgs_on_def$1.$$p, $yield = $iter || nil, self = this, mid = nil, args = nil, body = nil, arguments$ = nil; + + if ($iter) $MlhsArgs_on_def$1.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_def', $MlhsArgs_on_def$1, false), [node], null); + $a = [].concat(Opal.to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + arguments$ = $$($nesting, 'Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy($a = body) ? $a : self.$s("nil")); + body = self.$prepend_to_body(body, arguments$.$initialization());}; + return node.$updated(nil, [mid, args, body]); + }, $MlhsArgs_on_def$1.$$arity = 1); + + Opal.def(self, '$on_defs', $MlhsArgs_on_defs$2 = function $$on_defs(node) { + var $a, $iter = $MlhsArgs_on_defs$2.$$p, $yield = $iter || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, arguments$ = nil; + + if ($iter) $MlhsArgs_on_defs$2.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_defs', $MlhsArgs_on_defs$2, false), [node], null); + $a = [].concat(Opal.to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + arguments$ = $$($nesting, 'Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy($a = body) ? $a : self.$s("nil")); + body = self.$prepend_to_body(body, arguments$.$initialization());}; + return node.$updated(nil, [recv, mid, args, body]); + }, $MlhsArgs_on_defs$2.$$arity = 1); + + Opal.def(self, '$on_iter', $MlhsArgs_on_iter$3 = function $$on_iter(node) { + var $a, $iter = $MlhsArgs_on_iter$3.$$p, $yield = $iter || nil, self = this, args = nil, body = nil, arguments$ = nil; + + if ($iter) $MlhsArgs_on_iter$3.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_iter', $MlhsArgs_on_iter$3, false), [node], null); + $a = [].concat(Opal.to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + arguments$ = $$($nesting, 'Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy($a = body) ? $a : self.$s("nil")); + body = self.$prepend_to_body(body, arguments$.$initialization());}; + return node.$updated(nil, [args, body]); + }, $MlhsArgs_on_iter$3.$$arity = 1); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Arguments'); + + var $nesting = [self].concat($parent_nesting), $Arguments_initialize$4, $Arguments_reset_tmp_counter$excl$5, $Arguments_new_mlhs_tmp$6, $Arguments_split$excl$7; + + self.$$prototype.counter = self.$$prototype.args = self.$$prototype.initialization = nil; + + self.$attr_reader("rewritten", "initialization"); + + Opal.def(self, '$initialize', $Arguments_initialize$4 = function $$initialize(args) { + var self = this; + + + self.args = args; + self.rewritten = []; + self.initialization = []; + self.rewriter = $$($nesting, 'MlhsRewriter').$new(); + return self['$split!'](); + }, $Arguments_initialize$4.$$arity = 1); + + Opal.def(self, '$reset_tmp_counter!', $Arguments_reset_tmp_counter$excl$5 = function() { + var self = this; + + return (self.counter = 0) + }, $Arguments_reset_tmp_counter$excl$5.$$arity = 0); + + Opal.def(self, '$new_mlhs_tmp', $Arguments_new_mlhs_tmp$6 = function $$new_mlhs_tmp() { + var $a, self = this; + + + self.counter = ($truthy($a = self.counter) ? $a : 0); + self.counter = $rb_plus(self.counter, 1); + return "" + "$mlhs_tmp" + (self.counter); + }, $Arguments_new_mlhs_tmp$6.$$arity = 0); + return (Opal.def(self, '$split!', $Arguments_split$excl$7 = function() { + var $$8, self = this; + + + $send(self.args.$children(), 'each', [], ($$8 = function(arg){var self = $$8.$$s || this, var_name = nil, rhs = nil, mlhs = nil; + if (self.rewriter == null) self.rewriter = nil; + if (self.initialization == null) self.initialization = nil; + if (self.rewritten == null) self.rewritten = nil; + + + + if (arg == null) { + arg = nil; + }; + if (arg.$type()['$==']("mlhs")) { + + var_name = self.$new_mlhs_tmp(); + rhs = self.$s("lvar", var_name); + mlhs = self.rewriter.$process(arg); + self.initialization['$<<'](self.$s("masgn", mlhs, rhs)); + return self.rewritten['$<<'](self.$s("arg", var_name).$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": var_name})}))); + } else { + return self.rewritten['$<<'](arg) + };}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + if (self.initialization.$length()['$=='](1)) { + return (self.initialization = self.initialization['$[]'](0)) + } else if ($truthy(self.initialization['$empty?']())) { + return (self.initialization = nil) + } else { + return (self.initialization = $send(self, 's', ["begin"].concat(Opal.to_a(self.initialization)))) + }; + }, $Arguments_split$excl$7.$$arity = 0), nil) && 'split!'; + })($nesting[0], $$($nesting, 'Base'), $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MlhsRewriter'); + + var $nesting = [self].concat($parent_nesting), $MlhsRewriter_on_arg$9, $MlhsRewriter_on_restarg$10; + + + + Opal.def(self, '$on_arg', $MlhsRewriter_on_arg$9 = function $$on_arg(node) { + var self = this; + + return node.$updated("lvasgn") + }, $MlhsRewriter_on_arg$9.$$arity = 1); + return (Opal.def(self, '$on_restarg', $MlhsRewriter_on_restarg$10 = function $$on_restarg(node) { + var self = this, name = nil; + + + name = node.$children()['$[]'](0); + if ($truthy(name)) { + return self.$s("splat", node.$updated("lvasgn")) + } else { + return self.$s("splat") + }; + }, $MlhsRewriter_on_restarg$10.$$arity = 1), nil) && 'on_restarg'; + })($nesting[0], $$($nesting, 'Base'), $nesting); + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/rewriters/arguments"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + + Opal.add_stubs(['$attr_reader', '$each', '$type', '$===', '$<<', '$any?', '$raise', '$!', '$nil?', '$has_any_kwargs?', '$can_inline_kwargs?', '$empty?']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Arguments'); + + var $nesting = [self].concat($parent_nesting), $Arguments_initialize$1, $Arguments_has_post_args$ques$3, $Arguments_has_any_kwargs$ques$4, $Arguments_can_inline_kwargs$ques$5; + + self.$$prototype.restarg = self.$$prototype.postargs = self.$$prototype.kwargs = self.$$prototype.kwoptargs = self.$$prototype.kwrestarg = self.$$prototype.optargs = nil; + + self.$attr_reader("args", "optargs", "restarg", "postargs", "kwargs", "kwoptargs", "kwrestarg", "shadowargs", "blockarg"); + + Opal.def(self, '$initialize', $Arguments_initialize$1 = function $$initialize(args) { + var $$2, self = this; + + + self.args = []; + self.optargs = []; + self.restarg = nil; + self.postargs = []; + self.kwargs = []; + self.kwoptargs = []; + self.kwrestarg = nil; + self.shadowargs = []; + self.blockarg = nil; + return $send(args, 'each', [], ($$2 = function(arg){var self = $$2.$$s || this, $a, $case = nil; + if (self.restarg == null) self.restarg = nil; + if (self.optargs == null) self.optargs = nil; + if (self.postargs == null) self.postargs = nil; + if (self.args == null) self.args = nil; + if (self.kwargs == null) self.kwargs = nil; + if (self.kwoptargs == null) self.kwoptargs = nil; + if (self.shadowargs == null) self.shadowargs = nil; + + + + if (arg == null) { + arg = nil; + }; + return (function() {$case = arg.$type(); + if ("arg"['$===']($case) || "mlhs"['$===']($case)) {return (function() {if ($truthy(($truthy($a = self.restarg) ? $a : self.optargs['$any?']()))) { + return self.postargs + } else { + return self.args + }; return nil; })()['$<<'](arg)} + else if ("optarg"['$===']($case)) {return self.optargs['$<<'](arg)} + else if ("restarg"['$===']($case)) {return (self.restarg = arg)} + else if ("kwarg"['$===']($case)) {return self.kwargs['$<<'](arg)} + else if ("kwoptarg"['$===']($case)) {return self.kwoptargs['$<<'](arg)} + else if ("kwrestarg"['$===']($case)) {return (self.kwrestarg = arg)} + else if ("shadowarg"['$===']($case)) {return self.shadowargs['$<<'](arg)} + else if ("blockarg"['$===']($case)) {return (self.blockarg = arg)} + else {return self.$raise("" + "Unsupported arg type " + (arg.$type()))}})();}, $$2.$$s = self, $$2.$$arity = 1, $$2)); + }, $Arguments_initialize$1.$$arity = 1); + + Opal.def(self, '$has_post_args?', $Arguments_has_post_args$ques$3 = function() { + var $a, $b, self = this; + + return ($truthy($a = ($truthy($b = self.restarg['$nil?']()['$!']()) ? $b : self.postargs['$any?']())) ? $a : ($truthy($b = self['$has_any_kwargs?']()) ? self['$can_inline_kwargs?']()['$!']() : $b)) + }, $Arguments_has_post_args$ques$3.$$arity = 0); + + Opal.def(self, '$has_any_kwargs?', $Arguments_has_any_kwargs$ques$4 = function() { + var $a, $b, self = this; + + return ($truthy($a = ($truthy($b = self.kwargs['$any?']()) ? $b : self.kwoptargs['$any?']())) ? $a : self.kwrestarg['$nil?']()['$!']()) + }, $Arguments_has_any_kwargs$ques$4.$$arity = 0); + return (Opal.def(self, '$can_inline_kwargs?', $Arguments_can_inline_kwargs$ques$5 = function() { + var $a, $b, self = this; + + return ($truthy($a = ($truthy($b = self.optargs['$empty?']()) ? self.restarg['$nil?']() : $b)) ? self.postargs['$empty?']() : $a) + }, $Arguments_can_inline_kwargs$ques$5.$$arity = 0), nil) && 'can_inline_kwargs?'; + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/rewriters/inline_args"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + + Opal.add_stubs(['$require', '$s', '$new', '$updated', '$inline', '$prepend_to_body', '$initialization', '$attr_reader', '$freeze', '$children', '$each', '$send', '$any?', '$blockarg', '$<<', '$shadowargs', '$args', '$==', '$[]', '$has_post_args?', '$length', '$has_any_kwargs?', '$can_inline_kwargs?', '$kwargs', '$kwoptargs', '$kwrestarg', '$postargs', '$optargs', '$args_to_keep', '$restarg']); + + self.$require("opal/rewriters/base"); + self.$require("opal/rewriters/arguments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'InlineArgs'); + + var $nesting = [self].concat($parent_nesting), $InlineArgs_on_def$1, $InlineArgs_on_defs$2, $InlineArgs_on_iter$3; + + + + Opal.def(self, '$on_def', $InlineArgs_on_def$1 = function $$on_def(node) { + var $a, $iter = $InlineArgs_on_def$1.$$p, $yield = $iter || nil, self = this, mid = nil, args = nil, body = nil, initializer = nil, inline_args = nil; + + if ($iter) $InlineArgs_on_def$1.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_def', $InlineArgs_on_def$1, false), [node], null); + $a = [].concat(Opal.to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + body = ($truthy($a = body) ? $a : self.$s("nil")); + initializer = $$($nesting, 'Initializer').$new(args, $hash2(["type"], {"type": "def"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [mid, inline_args, body]); + }, $InlineArgs_on_def$1.$$arity = 1); + + Opal.def(self, '$on_defs', $InlineArgs_on_defs$2 = function $$on_defs(node) { + var $a, $iter = $InlineArgs_on_defs$2.$$p, $yield = $iter || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, initializer = nil, inline_args = nil; + + if ($iter) $InlineArgs_on_defs$2.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_defs', $InlineArgs_on_defs$2, false), [node], null); + $a = [].concat(Opal.to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + body = ($truthy($a = body) ? $a : self.$s("nil")); + initializer = $$($nesting, 'Initializer').$new(args, $hash2(["type"], {"type": "defs"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [recv, mid, inline_args, body]); + }, $InlineArgs_on_defs$2.$$arity = 1); + + Opal.def(self, '$on_iter', $InlineArgs_on_iter$3 = function $$on_iter(node) { + var $a, $iter = $InlineArgs_on_iter$3.$$p, $yield = $iter || nil, self = this, args = nil, body = nil, initializer = nil, inline_args = nil; + + if ($iter) $InlineArgs_on_iter$3.$$p = null; + + node = $send(self, Opal.find_super_dispatcher(self, 'on_iter', $InlineArgs_on_iter$3, false), [node], null); + $a = [].concat(Opal.to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + body = ($truthy($a = body) ? $a : self.$s("nil")); + initializer = $$($nesting, 'Initializer').$new(args, $hash2(["type"], {"type": "iter"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [inline_args, body]); + }, $InlineArgs_on_iter$3.$$arity = 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Initializer'); + + var $nesting = [self].concat($parent_nesting), $Initializer_initialize$4, $Initializer_extract_blockarg$6, $Initializer_initialize_shadowargs$7, $Initializer_extract_args$9, $Initializer_prepare_post_args$11, $Initializer_prepare_kwargs$12, $Initializer_extract_kwargs$13, $Initializer_extract_kwoptargs$15, $Initializer_extract_kwrestarg$17, $Initializer_extract_post_args$18, $Initializer_extract_optargs$20, $Initializer_extract_restarg$22, $Initializer_args_to_keep$23; + + self.$$prototype.initialization = self.$$prototype.args = self.$$prototype.inline = nil; + + self.$attr_reader("inline", "initialization"); + Opal.const_set($nesting[0], 'STEPS', ["extract_blockarg", "initialize_shadowargs", "extract_args", "prepare_post_args", "prepare_kwargs", "extract_optargs", "extract_restarg", "extract_post_args", "extract_kwargs", "extract_kwoptargs", "extract_kwrestarg"].$freeze()); + + Opal.def(self, '$initialize', $Initializer_initialize$4 = function $$initialize(args, $kwargs) { + var type, $$5, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'type')) { + throw Opal.ArgumentError.$new('missing keyword: type'); + } + type = $kwargs.$$smap["type"];; + self.args = $$($nesting, 'Arguments').$new(args.$children()); + self.inline = []; + self.initialization = []; + self.type = type; + self.underscore_found = false; + $send($$($nesting, 'STEPS'), 'each', [], ($$5 = function(step){var self = $$5.$$s || this; + + + + if (step == null) { + step = nil; + }; + return self.$send(step);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); + if ($truthy(self.initialization['$any?']())) { + return (self.initialization = $send(self, 's', ["begin"].concat(Opal.to_a(self.initialization)))) + } else { + return (self.initialization = nil) + }; + }, $Initializer_initialize$4.$$arity = 2); + + Opal.def(self, '$extract_blockarg', $Initializer_extract_blockarg$6 = function $$extract_blockarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$blockarg()))) { + return self.initialization['$<<'](arg.$updated("extract_blockarg")) + } else { + return nil + } + }, $Initializer_extract_blockarg$6.$$arity = 0); + + Opal.def(self, '$initialize_shadowargs', $Initializer_initialize_shadowargs$7 = function $$initialize_shadowargs() { + var $$8, self = this; + + return $send(self.args.$shadowargs(), 'each', [], ($$8 = function(arg){var self = $$8.$$s || this; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) { + arg = nil; + }; + return self.initialization['$<<'](arg.$updated("initialize_shadowarg"));}, $$8.$$s = self, $$8.$$arity = 1, $$8)) + }, $Initializer_initialize_shadowargs$7.$$arity = 0); + + Opal.def(self, '$extract_args', $Initializer_extract_args$9 = function $$extract_args() { + var $$10, self = this; + + return $send(self.args.$args(), 'each', [], ($$10 = function(arg){var self = $$10.$$s || this; + if (self.type == null) self.type = nil; + if (self.initialization == null) self.initialization = nil; + if (self.underscore_found == null) self.underscore_found = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) { + arg = nil; + }; + if (self.type['$==']("iter")) { + + self.initialization['$<<'](arg.$updated("initialize_iter_arg")); + if (arg.$children()['$[]'](0)['$==']("_")) { + + if ($truthy(self.underscore_found)) { + arg = self.$s("fake_arg")}; + self.underscore_found = true;};}; + return self.inline['$<<'](arg);}, $$10.$$s = self, $$10.$$arity = 1, $$10)) + }, $Initializer_extract_args$9.$$arity = 0); + + Opal.def(self, '$prepare_post_args', $Initializer_prepare_post_args$11 = function $$prepare_post_args() { + var self = this; + + if ($truthy(self.args['$has_post_args?']())) { + return self.initialization['$<<'](self.$s("prepare_post_args", self.args.$args().$length())) + } else { + return nil + } + }, $Initializer_prepare_post_args$11.$$arity = 0); + + Opal.def(self, '$prepare_kwargs', $Initializer_prepare_kwargs$12 = function $$prepare_kwargs() { + var self = this; + + + if ($truthy(self.args['$has_any_kwargs?']())) { + } else { + return nil + }; + if ($truthy(self.args['$can_inline_kwargs?']())) { + self.inline['$<<'](self.$s("arg", "$kwargs")) + } else { + + self.initialization['$<<'](self.$s("extract_kwargs")); + self.inline['$<<'](self.$s("fake_arg")); + }; + return self.initialization['$<<'](self.$s("ensure_kwargs_are_kwargs")); + }, $Initializer_prepare_kwargs$12.$$arity = 0); + + Opal.def(self, '$extract_kwargs', $Initializer_extract_kwargs$13 = function $$extract_kwargs() { + var $$14, self = this; + + return $send(self.args.$kwargs(), 'each', [], ($$14 = function(arg){var self = $$14.$$s || this; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) { + arg = nil; + }; + return self.initialization['$<<'](arg.$updated("extract_kwarg"));}, $$14.$$s = self, $$14.$$arity = 1, $$14)) + }, $Initializer_extract_kwargs$13.$$arity = 0); + + Opal.def(self, '$extract_kwoptargs', $Initializer_extract_kwoptargs$15 = function $$extract_kwoptargs() { + var $$16, self = this; + + return $send(self.args.$kwoptargs(), 'each', [], ($$16 = function(arg){var self = $$16.$$s || this; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) { + arg = nil; + }; + return self.initialization['$<<'](arg.$updated("extract_kwoptarg"));}, $$16.$$s = self, $$16.$$arity = 1, $$16)) + }, $Initializer_extract_kwoptargs$15.$$arity = 0); + + Opal.def(self, '$extract_kwrestarg', $Initializer_extract_kwrestarg$17 = function $$extract_kwrestarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$kwrestarg()))) { + return self.initialization['$<<'](arg.$updated("extract_kwrestarg")) + } else { + return nil + } + }, $Initializer_extract_kwrestarg$17.$$arity = 0); + + Opal.def(self, '$extract_post_args', $Initializer_extract_post_args$18 = function $$extract_post_args() { + var $$19, self = this; + + return $send(self.args.$postargs(), 'each', [], ($$19 = function(arg){var self = $$19.$$s || this; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) { + arg = nil; + }; + self.initialization['$<<'](arg.$updated("extract_post_arg")); + return self.inline['$<<'](self.$s("fake_arg"));}, $$19.$$s = self, $$19.$$arity = 1, $$19)) + }, $Initializer_extract_post_args$18.$$arity = 0); + + Opal.def(self, '$extract_optargs', $Initializer_extract_optargs$20 = function $$extract_optargs() { + var $$21, self = this, has_post_args = nil; + + + has_post_args = self.args['$has_post_args?'](); + return $send(self.args.$optargs(), 'each', [], ($$21 = function(arg){var self = $$21.$$s || this, $a, arg_name = nil, default_value = nil; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) { + arg = nil; + }; + if ($truthy(has_post_args)) { + + $a = [].concat(Opal.to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (default_value = ($a[1] == null ? nil : $a[1])), $a; + self.initialization['$<<'](arg.$updated("extract_post_optarg", [arg_name, default_value, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + + self.inline['$<<'](arg.$updated("arg")); + return self.initialization['$<<'](arg.$updated("extract_optarg")); + };}, $$21.$$s = self, $$21.$$arity = 1, $$21)); + }, $Initializer_extract_optargs$20.$$arity = 0); + + Opal.def(self, '$extract_restarg', $Initializer_extract_restarg$22 = function $$extract_restarg() { + var self = this, arg = nil, arg_name = nil; + + if ($truthy((arg = self.args.$restarg()))) { + + arg_name = arg.$children()['$[]'](0); + self.initialization['$<<'](arg.$updated("extract_restarg", [arg_name, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + return nil + } + }, $Initializer_extract_restarg$22.$$arity = 0); + return (Opal.def(self, '$args_to_keep', $Initializer_args_to_keep$23 = function $$args_to_keep() { + var self = this; + + return self.args.$postargs().$length() + }, $Initializer_args_to_keep$23.$$arity = 0), nil) && 'args_to_keep'; + })($nesting[0], $$$($$$($$$('::', 'Opal'), 'Rewriters'), 'Base'), $nesting); + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriter"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$<<', '$list', '$delete', '$use', '$disabled?', '$class', '$each', '$new', '$process']); @@ -44623,47 +51255,49 @@ Opal.modules["opal/rewriter"] = function(Opal) { self.$require("opal/rewriters/logical_operator_assignment"); self.$require("opal/rewriters/binary_operator_assignment"); self.$require("opal/rewriters/hashes/key_duplicates_rewriter"); + self.$require("opal/rewriters/dump_args"); + self.$require("opal/rewriters/mlhs_args"); + self.$require("opal/rewriters/inline_args"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Rewriter(){}; - var self = $Rewriter = $klass($base, $super, 'Rewriter', $Rewriter); + var self = $klass($base, $super, 'Rewriter'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rewriter_initialize_6, TMP_Rewriter_process_8; + var $nesting = [self].concat($parent_nesting), $Rewriter_initialize$6, $Rewriter_process$7; - def.sexp = nil; + self.$$prototype.sexp = nil; (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_list_1, TMP_use_2, TMP_delete_3, TMP_disable_4, TMP_disabled$q_5; + var $nesting = [self].concat($parent_nesting), $list$1, $use$2, $delete$3, $disable$4, $disabled$ques$5; - Opal.defn(self, '$list', TMP_list_1 = function $$list() { + Opal.def(self, '$list', $list$1 = function $$list() { var $a, self = this; if (self.list == null) self.list = nil; return (self.list = ($truthy($a = self.list) ? $a : [])) - }, TMP_list_1.$$arity = 0); + }, $list$1.$$arity = 0); - Opal.defn(self, '$use', TMP_use_2 = function $$use(rewriter) { + Opal.def(self, '$use', $use$2 = function $$use(rewriter) { var self = this; return self.$list()['$<<'](rewriter) - }, TMP_use_2.$$arity = 1); + }, $use$2.$$arity = 1); - Opal.defn(self, '$delete', TMP_delete_3 = function(rewriter) { + Opal.def(self, '$delete', $delete$3 = function(rewriter) { var self = this; return self.$list().$delete(rewriter) - }, TMP_delete_3.$$arity = 1); + }, $delete$3.$$arity = 1); - Opal.defn(self, '$disable', TMP_disable_4 = function $$disable() { - var self = this, $iter = TMP_disable_4.$$p, $yield = $iter || nil; + Opal.def(self, '$disable', $disable$4 = function $$disable() { + var $iter = $disable$4.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_disable_4.$$p = null; + if ($iter) $disable$4.$$p = null; return (function() { try { self.disabled = true; @@ -44671,334 +51305,498 @@ Opal.modules["opal/rewriter"] = function(Opal) { } finally { (self.disabled = false) }; })() - }, TMP_disable_4.$$arity = 0); - return (Opal.defn(self, '$disabled?', TMP_disabled$q_5 = function() { + }, $disable$4.$$arity = 0); + return (Opal.def(self, '$disabled?', $disabled$ques$5 = function() { var $a, self = this; if (self.disabled == null) self.disabled = nil; if ($truthy((($a = self['disabled'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { return self.disabled - } else { + } else { return nil } - }, TMP_disabled$q_5.$$arity = 0), nil) && 'disabled?'; + }, $disabled$ques$5.$$arity = 0), nil) && 'disabled?'; })(Opal.get_singleton_class(self), $nesting); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'OpalEngineCheck')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'ForRewriter')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'BlockToIter')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'DotJsSyntax')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'JsReservedWords')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'LogicalOperatorAssignment')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'BinaryOperatorAssignment')); - self.$use(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'ExplicitWriterReturn')); - self.$use(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Rewriters'), 'Hashes'), 'KeyDuplicatesRewriter')); - - Opal.defn(self, '$initialize', TMP_Rewriter_initialize_6 = function $$initialize(sexp) { + self.$use($$$($$($nesting, 'Rewriters'), 'OpalEngineCheck')); + self.$use($$$($$($nesting, 'Rewriters'), 'ForRewriter')); + self.$use($$$($$($nesting, 'Rewriters'), 'BlockToIter')); + self.$use($$$($$($nesting, 'Rewriters'), 'DotJsSyntax')); + self.$use($$$($$($nesting, 'Rewriters'), 'JsReservedWords')); + self.$use($$$($$($nesting, 'Rewriters'), 'LogicalOperatorAssignment')); + self.$use($$$($$($nesting, 'Rewriters'), 'BinaryOperatorAssignment')); + self.$use($$$($$($nesting, 'Rewriters'), 'ExplicitWriterReturn')); + self.$use($$$($$$($$($nesting, 'Rewriters'), 'Hashes'), 'KeyDuplicatesRewriter')); + self.$use($$$($$($nesting, 'Rewriters'), 'DumpArgs')); + self.$use($$$($$($nesting, 'Rewriters'), 'MlhsArgs')); + self.$use($$$($$($nesting, 'Rewriters'), 'InlineArgs')); + + Opal.def(self, '$initialize', $Rewriter_initialize$6 = function $$initialize(sexp) { var self = this; return (self.sexp = sexp) - }, TMP_Rewriter_initialize_6.$$arity = 1); - return (Opal.defn(self, '$process', TMP_Rewriter_process_8 = function $$process() { - var TMP_7, self = this; + }, $Rewriter_initialize$6.$$arity = 1); + return (Opal.def(self, '$process', $Rewriter_process$7 = function $$process() { + var $$8, self = this; if ($truthy(self.$class()['$disabled?']())) { return self.sexp}; - $send(self.$class().$list(), 'each', [], (TMP_7 = function(rewriter_class){var self = TMP_7.$$s || this, rewriter = nil; + $send(self.$class().$list(), 'each', [], ($$8 = function(rewriter_class){var self = $$8.$$s || this, rewriter = nil; if (self.sexp == null) self.sexp = nil; -if (rewriter_class == null) rewriter_class = nil; + + + if (rewriter_class == null) { + rewriter_class = nil; + }; rewriter = rewriter_class.$new(); - return (self.sexp = rewriter.$process(self.sexp));}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); + return (self.sexp = rewriter.$process(self.sexp));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); return self.sexp; - }, TMP_Rewriter_process_8.$$arity = 0), nil) && 'process'; + }, $Rewriter_process$7.$$arity = 0), nil) && 'process'; })($nesting[0], null, $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/parser/source_buffer"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$attr_accessor', '$all_errors_are_fatal=', '$diagnostics', '$-', '$ignore_warnings=', '$==', '$lambda', '$consumer=', '$puts', '$render', '$diagnostics_consumer=', '$new', '$rewrite', '$process']); - - self.$require("opal/ast/builder"); - self.$require("opal/rewriter"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $parent_nesting) { - var $Source, self = $Source = $module($base, 'Source'); + var self = $module($base, 'Parser'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Buffer(){}; - var self = $Buffer = $klass($base, $super, 'Buffer', $Buffer); + var self = $klass($base, $super, 'SourceBuffer'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Buffer_recognize_encoding_1; + var $nesting = [self].concat($parent_nesting), $SourceBuffer_recognize_encoding$1; - return Opal.defs(self, '$recognize_encoding', TMP_Buffer_recognize_encoding_1 = function $$recognize_encoding(string) { - var $a, self = this, $iter = TMP_Buffer_recognize_encoding_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + return (Opal.defs(self, '$recognize_encoding', $SourceBuffer_recognize_encoding$1 = function $$recognize_encoding(string) { + var $a, $iter = $SourceBuffer_recognize_encoding$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_Buffer_recognize_encoding_1.$$p = null; + if ($iter) $SourceBuffer_recognize_encoding$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - return ($truthy($a = $send(self, Opal.find_super_dispatcher(self, 'recognize_encoding', TMP_Buffer_recognize_encoding_1, false, $Buffer), $zuper, $iter)) ? $a : Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8')) - }, TMP_Buffer_recognize_encoding_1.$$arity = 1) - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Parser'), 'Source'), 'Buffer'), $nesting) - })($nesting[0], $nesting); - (function($base, $super, $parent_nesting) { - function $Parser(){}; - var self = $Parser = $klass($base, $super, 'Parser', $Parser); + return ($truthy($a = $send(self, Opal.find_super_dispatcher(self, 'recognize_encoding', $SourceBuffer_recognize_encoding$1, false, self.$$class.$$prototype), $zuper, $iter)) ? $a : $$$($$($nesting, 'Encoding'), 'UTF_8')) + }, $SourceBuffer_recognize_encoding$1.$$arity = 1), nil) && 'recognize_encoding' + })($nesting[0], $$$($$$($$$('::', 'Parser'), 'Source'), 'Buffer'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Parser_4, TMP_Parser_initialize_5, TMP_Parser_parse_6, TMP_Parser_rewrite_7, $writer = nil; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/parser/default_config"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $lambda = Opal.lambda, $truthy = Opal.truthy; + + Opal.add_stubs(['$attr_accessor', '$all_errors_are_fatal=', '$diagnostics', '$-', '$ignore_warnings=', '$diagnostics_consumer', '$consumer=', '$extend', '$!=', '$diagnostics_consumer=', '$new', '$rewrite', '$process', '$default_parser', '$default_parser_class']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); - (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_default_parser_2; + (function($base, $parent_nesting) { + var self = $module($base, 'DefaultConfig'); + + var $nesting = [self].concat($parent_nesting), $DefaultConfig_included$2, $DefaultConfig_initialize$4, $DefaultConfig_parse$5, $DefaultConfig_rewrite$6; - self.$attr_accessor("diagnostics_consumer"); - return (Opal.defn(self, '$default_parser', TMP_default_parser_2 = function $$default_parser() { - var TMP_3, self = this, $iter = TMP_default_parser_2.$$p, $yield = $iter || nil, parser = nil, $writer = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + (function($base, $parent_nesting) { + var self = $module($base, 'ClassMethods'); + + var $nesting = [self].concat($parent_nesting), $ClassMethods_default_parser$1; - if ($iter) TMP_default_parser_2.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - parser = $send(self, Opal.find_super_dispatcher(self, 'default_parser', TMP_default_parser_2, false), $zuper, $iter); - $writer = [true]; - $send(parser.$diagnostics(), 'all_errors_are_fatal=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; + self.$attr_accessor("diagnostics_consumer"); - $writer = [false]; - $send(parser.$diagnostics(), 'ignore_warnings=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if (Opal.const_get_relative($nesting, 'RUBY_ENGINE')['$==']("opal")) { + Opal.def(self, '$default_parser', $ClassMethods_default_parser$1 = function $$default_parser() { + var $iter = $ClassMethods_default_parser$1.$$p, $yield = $iter || nil, self = this, parser = nil, $writer = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + if ($iter) $ClassMethods_default_parser$1.$$p = null; + // Prepare super implicit arguments + for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { + $zuper[$zuper_i] = arguments[$zuper_i]; + } + + parser = $send(self, Opal.find_super_dispatcher(self, 'default_parser', $ClassMethods_default_parser$1, false), $zuper, $iter); + + $writer = [true]; + $send(parser.$diagnostics(), 'all_errors_are_fatal=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(parser.$diagnostics(), 'ignore_warnings=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; - $writer = [$send(self, 'lambda', [], (TMP_3 = function(diag){var self = TMP_3.$$s || this; -if (diag == null) diag = nil; - return nil}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3))]; + $writer = [self.$diagnostics_consumer()]; $send(parser.$diagnostics(), 'consumer=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)]; + $writer[$rb_minus($writer["length"], 1)];; + return parser; + }, $ClassMethods_default_parser$1.$$arity = 0); + })($nesting[0], $nesting); + Opal.defs(self, '$included', $DefaultConfig_included$2 = function $$included(klass) { + var $$3, self = this, $writer = nil; + + + klass.$extend($$($nesting, 'ClassMethods')); + + $writer = [$lambda(($$3 = function(diagnostic){var self = $$3.$$s || this; + + + + if (diagnostic == null) { + diagnostic = nil; + }; + if ($truthy($$($nesting, 'RUBY_ENGINE')['$!=']("opal"))) { + return nil } else { - nil - }; - return parser; - }, TMP_default_parser_2.$$arity = 0), nil) && 'default_parser'; + return nil + };}, $$3.$$s = self, $$3.$$arity = 1, $$3))]; + $send(klass, 'diagnostics_consumer=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, $DefaultConfig_included$2.$$arity = 1); + + Opal.def(self, '$initialize', $DefaultConfig_initialize$4 = function $$initialize($a) { + var $post_args, $iter = $DefaultConfig_initialize$4.$$p, $yield = $iter || nil, self = this; + + if ($iter) $DefaultConfig_initialize$4.$$p = null; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $DefaultConfig_initialize$4, false), [$$$($$$($$($nesting, 'Opal'), 'AST'), 'Builder').$new()], null); + }, $DefaultConfig_initialize$4.$$arity = -1); + + Opal.def(self, '$parse', $DefaultConfig_parse$5 = function $$parse(source_buffer) { + var $iter = $DefaultConfig_parse$5.$$p, $yield = $iter || nil, self = this, parsed = nil, rewriten = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + if ($iter) $DefaultConfig_parse$5.$$p = null; + // Prepare super implicit arguments + for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { + $zuper[$zuper_i] = arguments[$zuper_i]; + } + + parsed = $send(self, Opal.find_super_dispatcher(self, 'parse', $DefaultConfig_parse$5, false), $zuper, $iter); + rewriten = self.$rewrite(parsed); + return rewriten; + }, $DefaultConfig_parse$5.$$arity = 1); + + Opal.def(self, '$rewrite', $DefaultConfig_rewrite$6 = function $$rewrite(node) { + var self = this; + + return $$$($$($nesting, 'Opal'), 'Rewriter').$new(node).$process() + }, $DefaultConfig_rewrite$6.$$arity = 1); + })($nesting[0], $nesting); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $default_parser$7; + + + self.$attr_accessor("default_parser_class"); + return (Opal.def(self, '$default_parser', $default_parser$7 = function $$default_parser() { + var self = this; + + return self.$default_parser_class().$default_parser() + }, $default_parser$7.$$arity = 0), nil) && 'default_parser'; })(Opal.get_singleton_class(self), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; + + Opal.add_stubs(['$include', '$default_parser_class=', '$-']); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'WithRubyLexer'); + + var $nesting = [self].concat($parent_nesting), $writer = nil; + + + self.$include($$$($$$($$($nesting, 'Opal'), 'Parser'), 'DefaultConfig')); + + $writer = [self]; + $send($$$($$($nesting, 'Opal'), 'Parser'), 'default_parser_class=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + })($$$($$($nesting, 'Opal'), 'Parser'), $$$($$($nesting, 'Parser'), 'Ruby25'), $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/parser/patch"] = function(Opal) { + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + + Opal.add_stubs(['$==', '$source', '$unpack', '$+', '$to_a', '$lines', '$end_with?', '$<<', '$map', '$chomp']); + if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Lexer'); + + var $nesting = [self].concat($parent_nesting), $Lexer_source_buffer$eq$1; + + self.$$prototype.source_buffer = nil; + return (Opal.def(self, '$source_buffer=', $Lexer_source_buffer$eq$1 = function(source_buffer) { + var self = this, source = nil; + + + self.source_buffer = source_buffer; + if ($truthy(self.source_buffer)) { + + source = self.source_buffer.$source(); + return (self.source_pts = source.$unpack("U*")); + } else { + return (self.source_pts = nil) + }; + }, $Lexer_source_buffer$eq$1.$$arity = 1), nil) && 'source_buffer=' + })($$($nesting, 'Parser'), null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Literal'); + + var $nesting = [self].concat($parent_nesting), $Literal_extend_string$2; + + self.$$prototype.buffer_s = self.$$prototype.buffer = nil; - $writer = [$send(self, 'lambda', [], (TMP_Parser_4 = function(diagnostic){var self = TMP_Parser_4.$$s || this; - if ($gvars.stderr == null) $gvars.stderr = nil; -if (diagnostic == null) diagnostic = nil; - return $gvars.stderr.$puts(diagnostic.$render())}, TMP_Parser_4.$$s = self, TMP_Parser_4.$$arity = 1, TMP_Parser_4))]; - $send(self, 'diagnostics_consumer=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - Opal.defn(self, '$initialize', TMP_Parser_initialize_5 = function $$initialize($a_rest) { - var self = this, $iter = TMP_Parser_initialize_5.$$p, $yield = $iter || nil; + Opal.udef(self, '$' + "extend_string");; + return (Opal.def(self, '$extend_string', $Literal_extend_string$2 = function $$extend_string(string, ts, te) { + var $a, self = this; - if ($iter) TMP_Parser_initialize_5.$$p = null; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Parser_initialize_5, false), [Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'AST'), 'Builder').$new()], null) - }, TMP_Parser_initialize_5.$$arity = -1); - - Opal.defn(self, '$parse', TMP_Parser_parse_6 = function $$parse(source_buffer) { - var self = this, $iter = TMP_Parser_parse_6.$$p, $yield = $iter || nil, parsed = nil, rewriten = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + + self.buffer_s = ($truthy($a = self.buffer_s) ? $a : ts); + self.buffer_e = te; + return (self.buffer = $rb_plus(self.buffer, string)); + }, $Literal_extend_string$2.$$arity = 3), nil) && 'extend_string'; + })($$$($$($nesting, 'Parser'), 'Lexer'), null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $Buffer_source_lines$3; + + self.$$prototype.lines = self.$$prototype.source = nil; + return (Opal.def(self, '$source_lines', $Buffer_source_lines$3 = function $$source_lines() { + var $a, $$4, self = this, lines = nil; + + return (self.lines = ($truthy($a = self.lines) ? $a : ((lines = self.source.$lines().$to_a()), (function() {if ($truthy(self.source['$end_with?']("\n"))) { + return lines['$<<']("") + } else { + return nil + }; return nil; })(), $send(lines, 'map', [], ($$4 = function(line){var self = $$4.$$s || this; - if ($iter) TMP_Parser_parse_6.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - parsed = $send(self, Opal.find_super_dispatcher(self, 'parse', TMP_Parser_parse_6, false), $zuper, $iter); - rewriten = self.$rewrite(parsed); - return rewriten; - }, TMP_Parser_parse_6.$$arity = 1); - return (Opal.defn(self, '$rewrite', TMP_Parser_rewrite_7 = function $$rewrite(node) { - var self = this; + + if (line == null) { + line = nil; + }; + return line.$chomp("\n");}, $$4.$$s = self, $$4.$$arity = 1, $$4))))) + }, $Buffer_source_lines$3.$$arity = 0), nil) && 'source_lines' + })($$$($$($nesting, 'Parser'), 'Source'), null, $nesting); + } else { + return nil + } +}; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Rewriter').$new(node).$process() - }, TMP_Parser_rewrite_7.$$arity = 1), nil) && 'rewrite'; - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'Ruby23'), $nesting); - })($nesting[0], $nesting); +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/parser"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; + + Opal.add_stubs(['$require', '$==']); + + self.$require("opal/ast/builder"); + self.$require("opal/rewriter"); + self.$require("opal/parser/source_buffer"); + self.$require("opal/parser/default_config"); + self.$require("opal/parser/with_ruby_lexer"); + if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { + return self.$require("opal/parser/patch") + } else { + return nil + }; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/fragment"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$attr_reader', '$to_s', '$inspect', '$def?', '$find_parent_def', '$mid', '$line', '$column']); + Opal.add_stubs(['$attr_reader', '$to_s', '$inspect', '$type', '$===', '$first', '$children', '$[]', '$line', '$column']); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Fragment(){}; - var self = $Fragment = $klass($base, $super, 'Fragment', $Fragment); + var self = $klass($base, $super, 'Fragment'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Fragment_initialize_1, TMP_Fragment_inspect_2, TMP_Fragment_source_map_name_3, TMP_Fragment_line_4, TMP_Fragment_column_5; + var $nesting = [self].concat($parent_nesting), $Fragment_initialize$1, $Fragment_inspect$2, $Fragment_source_map_name$3, $Fragment_line$4, $Fragment_column$5; - def.code = def.scope = def.sexp = nil; + self.$$prototype.code = self.$$prototype.sexp = nil; self.$attr_reader("code"); - Opal.defn(self, '$initialize', TMP_Fragment_initialize_1 = function $$initialize(code, scope, sexp) { + Opal.def(self, '$initialize', $Fragment_initialize$1 = function $$initialize(code, scope, sexp) { var self = this; + + if (sexp == null) { sexp = nil; - } - + }; self.code = code.$to_s(); self.sexp = sexp; return (self.scope = scope); - }, TMP_Fragment_initialize_1.$$arity = -3); + }, $Fragment_initialize$1.$$arity = -3); - Opal.defn(self, '$inspect', TMP_Fragment_inspect_2 = function $$inspect() { + Opal.def(self, '$inspect', $Fragment_inspect$2 = function $$inspect() { var self = this; return "" + "f(" + (self.code.$inspect()) + ")" - }, TMP_Fragment_inspect_2.$$arity = 0); + }, $Fragment_inspect$2.$$arity = 0); - Opal.defn(self, '$source_map_name', TMP_Fragment_source_map_name_3 = function $$source_map_name() { - var $a, self = this, def_node = nil; + Opal.def(self, '$source_map_name', $Fragment_source_map_name$3 = function $$source_map_name() { + var self = this, $case = nil; - - if ($truthy(self.scope)) { - } else { - return nil - }; - def_node = (function() {if ($truthy(self.scope['$def?']())) { - return self.scope - } else { - return self.scope.$find_parent_def() - }; return nil; })(); - return ($truthy($a = def_node) ? def_node.$mid() : $a); - }, TMP_Fragment_source_map_name_3.$$arity = 0); + return (function() {$case = self.sexp.$type(); + if ("top"['$===']($case) || "begin"['$===']($case) || "newline"['$===']($case) || "js_return"['$===']($case)) {return nil} + else if ("self"['$===']($case)) {return "self"} + else if ("module"['$===']($case)) {return "module"} + else if ("class"['$===']($case)) {return "class"} + else if ("int"['$===']($case)) {return self.sexp.$children().$first()} + else if ("def"['$===']($case)) {return self.sexp.$children().$first()} + else if ("defs"['$===']($case)) {return self.sexp.$children()['$[]'](1)} + else if ("send"['$===']($case)) {return self.sexp.$children()['$[]'](1)} + else if ("lvar"['$===']($case) || "lvasgn"['$===']($case) || "lvdeclare"['$===']($case) || "ivar"['$===']($case) || "ivasgn"['$===']($case) || "gvar"['$===']($case) || "cvar"['$===']($case) || "cvasgn"['$===']($case) || "gvars"['$===']($case) || "gvasgn"['$===']($case)) {return self.sexp.$children().$first()} + else { return nil }})() + }, $Fragment_source_map_name$3.$$arity = 0); - Opal.defn(self, '$line', TMP_Fragment_line_4 = function $$line() { + Opal.def(self, '$line', $Fragment_line$4 = function $$line() { var self = this; if ($truthy(self.sexp)) { return self.sexp.$line() - } else { + } else { return nil } - }, TMP_Fragment_line_4.$$arity = 0); - return (Opal.defn(self, '$column', TMP_Fragment_column_5 = function $$column() { + }, $Fragment_line$4.$$arity = 0); + return (Opal.def(self, '$column', $Fragment_column$5 = function $$column() { var self = this; if ($truthy(self.sexp)) { return self.sexp.$column() - } else { + } else { return nil } - }, TMP_Fragment_column_5.$$arity = 0), nil) && 'column'; + }, $Fragment_column$5.$$arity = 0), nil) && 'column'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/helpers"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$valid_name?', '$inspect', '$=~', '$to_s', '$+', '$indent', '$compiler', '$to_proc', '$parser_indent', '$push', '$current_indent', '$js_truthy_optimize', '$helper', '$fragment', '$expr', '$==', '$type', '$[]', '$children', '$uses_block!', '$scope', '$block_name', '$handlers', '$include?', '$truthy_optimize?', '$new_temp', '$wrap']); self.$require("opal/regexp_anchors"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Helpers, self = $Helpers = $module($base, 'Helpers'); + var self = $module($base, 'Helpers'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Helpers_property_1, TMP_Helpers_valid_name$q_2, TMP_Helpers_mid_to_jsid_3, TMP_Helpers_indent_4, TMP_Helpers_current_indent_5, TMP_Helpers_line_6, TMP_Helpers_empty_line_7, TMP_Helpers_js_truthy_8, TMP_Helpers_js_falsy_9, TMP_Helpers_js_truthy_optimize_10, TMP_Helpers_conditional_send_11; + var $nesting = [self].concat($parent_nesting), $Helpers_property$1, $Helpers_valid_name$ques$2, $Helpers_mid_to_jsid$3, $Helpers_indent$4, $Helpers_current_indent$5, $Helpers_line$6, $Helpers_empty_line$7, $Helpers_js_truthy$8, $Helpers_js_falsy$9, $Helpers_js_truthy_optimize$10, $Helpers_conditional_send$11; - Opal.defn(self, '$property', TMP_Helpers_property_1 = function $$property(name) { + Opal.def(self, '$property', $Helpers_property$1 = function $$property(name) { var self = this; if ($truthy(self['$valid_name?'](name))) { return "" + "." + (name) - } else { + } else { return "" + "[" + (name.$inspect()) + "]" } - }, TMP_Helpers_property_1.$$arity = 1); + }, $Helpers_property$1.$$arity = 1); - Opal.defn(self, '$valid_name?', TMP_Helpers_valid_name$q_2 = function(name) { + Opal.def(self, '$valid_name?', $Helpers_valid_name$ques$2 = function(name) { var self = this; - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Rewriters'), 'JsReservedWords')['$valid_name?'](name) - }, TMP_Helpers_valid_name$q_2.$$arity = 1); + return $$$($$$($$($nesting, 'Opal'), 'Rewriters'), 'JsReservedWords')['$valid_name?'](name) + }, $Helpers_valid_name$ques$2.$$arity = 1); - Opal.defn(self, '$mid_to_jsid', TMP_Helpers_mid_to_jsid_3 = function $$mid_to_jsid(mid) { + Opal.def(self, '$mid_to_jsid', $Helpers_mid_to_jsid$3 = function $$mid_to_jsid(mid) { var self = this; if ($truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[/['$=~'](mid.$to_s()))) { return "" + "['$" + (mid) + "']" - } else { + } else { return $rb_plus(".$", mid) } - }, TMP_Helpers_mid_to_jsid_3.$$arity = 1); + }, $Helpers_mid_to_jsid$3.$$arity = 1); - Opal.defn(self, '$indent', TMP_Helpers_indent_4 = function $$indent() { - var self = this, $iter = TMP_Helpers_indent_4.$$p, block = $iter || nil; + Opal.def(self, '$indent', $Helpers_indent$4 = function $$indent() { + var $iter = $Helpers_indent$4.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Helpers_indent_4.$$p = null; - return $send(self.$compiler(), 'indent', [], block.$to_proc()) - }, TMP_Helpers_indent_4.$$arity = 0); + if ($iter) $Helpers_indent$4.$$p = null; + + + if ($iter) $Helpers_indent$4.$$p = null;; + return $send(self.$compiler(), 'indent', [], block.$to_proc()); + }, $Helpers_indent$4.$$arity = 0); - Opal.defn(self, '$current_indent', TMP_Helpers_current_indent_5 = function $$current_indent() { + Opal.def(self, '$current_indent', $Helpers_current_indent$5 = function $$current_indent() { var self = this; return self.$compiler().$parser_indent() - }, TMP_Helpers_current_indent_5.$$arity = 0); + }, $Helpers_current_indent$5.$$arity = 0); - Opal.defn(self, '$line', TMP_Helpers_line_6 = function $$line($a_rest) { - var self = this, strs; + Opal.def(self, '$line', $Helpers_line$6 = function $$line($a) { + var $post_args, strs, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; self.$push("" + "\n" + (self.$current_indent())); return $send(self, 'push', Opal.to_a(strs)); - }, TMP_Helpers_line_6.$$arity = -1); + }, $Helpers_line$6.$$arity = -1); - Opal.defn(self, '$empty_line', TMP_Helpers_empty_line_7 = function $$empty_line() { + Opal.def(self, '$empty_line', $Helpers_empty_line$7 = function $$empty_line() { var self = this; return self.$push("\n") - }, TMP_Helpers_empty_line_7.$$arity = 0); + }, $Helpers_empty_line$7.$$arity = 0); - Opal.defn(self, '$js_truthy', TMP_Helpers_js_truthy_8 = function $$js_truthy(sexp) { + Opal.def(self, '$js_truthy', $Helpers_js_truthy$8 = function $$js_truthy(sexp) { var self = this, optimize = nil; @@ -45006,9 +51804,9 @@ Opal.modules["opal/nodes/helpers"] = function(Opal) { return optimize}; self.$helper("truthy"); return [self.$fragment("$truthy("), self.$expr(sexp), self.$fragment(")")]; - }, TMP_Helpers_js_truthy_8.$$arity = 1); + }, $Helpers_js_truthy$8.$$arity = 1); - Opal.defn(self, '$js_falsy', TMP_Helpers_js_falsy_9 = function $$js_falsy(sexp) { + Opal.def(self, '$js_falsy', $Helpers_js_falsy$9 = function $$js_falsy(sexp) { var self = this, mid = nil; @@ -45021,117 +51819,130 @@ Opal.modules["opal/nodes/helpers"] = function(Opal) { return "" + (self.$scope().$block_name()) + " === nil";};}; self.$helper("falsy"); return [self.$fragment("$falsy("), self.$expr(sexp), self.$fragment(")")]; - }, TMP_Helpers_js_falsy_9.$$arity = 1); + }, $Helpers_js_falsy$9.$$arity = 1); - Opal.defn(self, '$js_truthy_optimize', TMP_Helpers_js_truthy_optimize_10 = function $$js_truthy_optimize(sexp) { + Opal.def(self, '$js_truthy_optimize', $Helpers_js_truthy_optimize$10 = function $$js_truthy_optimize(sexp) { var $a, $b, self = this, mid = nil, receiver_handler_class = nil, receiver = nil, allow_optimization_on_type = nil; if (sexp.$type()['$==']("send")) { mid = sexp.$children()['$[]'](1); receiver_handler_class = ($truthy($a = (receiver = sexp.$children()['$[]'](0))) ? self.$compiler().$handlers()['$[]'](receiver.$type()) : $a); - allow_optimization_on_type = ($truthy($a = ($truthy($b = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Compiler'), 'COMPARE')['$include?'](mid.$to_s())) ? receiver_handler_class : $b)) ? receiver_handler_class['$truthy_optimize?']() : $a); + allow_optimization_on_type = ($truthy($a = ($truthy($b = $$$($$($nesting, 'Compiler'), 'COMPARE')['$include?'](mid.$to_s())) ? receiver_handler_class : $b)) ? receiver_handler_class['$truthy_optimize?']() : $a); if ($truthy(($truthy($a = ($truthy($b = allow_optimization_on_type) ? $b : mid['$==']("block_given?"))) ? $a : mid['$==']("==")))) { return self.$expr(sexp) - } else { + } else { return nil }; - } else { + } else { return nil } - }, TMP_Helpers_js_truthy_optimize_10.$$arity = 1); + }, $Helpers_js_truthy_optimize$10.$$arity = 1); - Opal.defn(self, '$conditional_send', TMP_Helpers_conditional_send_11 = function $$conditional_send(recvr) { - var self = this, $iter = TMP_Helpers_conditional_send_11.$$p, $yield = $iter || nil, receiver_temp = nil; + Opal.def(self, '$conditional_send', $Helpers_conditional_send$11 = function $$conditional_send(recvr) { + var $iter = $Helpers_conditional_send$11.$$p, $yield = $iter || nil, self = this, receiver_temp = nil; - if ($iter) TMP_Helpers_conditional_send_11.$$p = null; + if ($iter) $Helpers_conditional_send$11.$$p = null; receiver_temp = self.$scope().$new_temp(); self.$push("" + (receiver_temp) + " = ", recvr); self.$push("" + ", (" + (receiver_temp) + " === nil || " + (receiver_temp) + " == null) ? nil : "); Opal.yield1($yield, receiver_temp); return self.$wrap("(", ")"); - }, TMP_Helpers_conditional_send_11.$$arity = 1); + }, $Helpers_conditional_send$11.$$arity = 1); })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/base"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; - Opal.add_stubs(['$require', '$include', '$each', '$[]=', '$handlers', '$-', '$each_with_index', '$define_method', '$[]', '$children', '$attr_reader', '$type', '$compile', '$raise', '$is_a?', '$fragment', '$<<', '$reverse', '$unshift', '$push', '$new', '$scope', '$error', '$s', '$==', '$process', '$expr', '$add_scope_local', '$to_sym', '$add_scope_ivar', '$add_scope_gvar', '$add_scope_temp', '$helper', '$with_temp', '$to_proc', '$in_while?', '$instance_variable_get', '$has_rescue_else?', '$in_ensure', '$in_ensure?', '$!', '$class_scope?', '$parent', '$closest_module_node', '$name', '$comments', '$compiler', '$loc']); + Opal.add_stubs(['$require', '$include', '$each', '$[]=', '$handlers', '$-', '$each_with_index', '$define_method', '$[]', '$children', '$attr_reader', '$type', '$compile', '$raise', '$is_a?', '$fragment', '$<<', '$reverse', '$unshift', '$push', '$new', '$scope', '$error', '$s', '$==', '$process', '$expr', '$add_scope_local', '$to_sym', '$add_scope_ivar', '$add_scope_gvar', '$add_scope_temp', '$helper', '$with_temp', '$to_proc', '$in_while?', '$instance_variable_get', '$has_rescue_else?', '$in_ensure', '$in_ensure?', '$!', '$class_scope?', '$sclass?', '$+', '$parent', '$class_variable_owner_nesting_level', '$comments', '$compiler', '$loc']); self.$require("opal/nodes/helpers"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $Base(){}; - var self = $Base = $klass($base, $super, 'Base', $Base); + var self = $klass($base, $super, 'Base'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Base_handlers_1, TMP_Base_handle_3, TMP_Base_children_6, TMP_Base_truthy_optimize$q_7, TMP_Base_initialize_8, TMP_Base_children_9, TMP_Base_compile_to_fragments_10, TMP_Base_compile_11, TMP_Base_push_13, TMP_Base_unshift_15, TMP_Base_wrap_16, TMP_Base_fragment_17, TMP_Base_error_18, TMP_Base_scope_19, TMP_Base_s_20, TMP_Base_expr$q_21, TMP_Base_recv$q_22, TMP_Base_stmt$q_23, TMP_Base_process_24, TMP_Base_expr_25, TMP_Base_recv_26, TMP_Base_stmt_27, TMP_Base_expr_or_nil_28, TMP_Base_add_local_29, TMP_Base_add_ivar_30, TMP_Base_add_gvar_31, TMP_Base_add_temp_32, TMP_Base_helper_33, TMP_Base_with_temp_34, TMP_Base_in_while$q_35, TMP_Base_while_loop_36, TMP_Base_has_rescue_else$q_37, TMP_Base_in_ensure_38, TMP_Base_in_ensure$q_39, TMP_Base_closest_module_node_40, TMP_Base_class_variable_owner_41, TMP_Base_comments_42; + var $nesting = [self].concat($parent_nesting), $Base_handlers$1, $Base_handle$2, $Base_children$4, $Base_truthy_optimize$ques$7, $Base_initialize$8, $Base_children$9, $Base_compile_to_fragments$10, $Base_compile$11, $Base_push$12, $Base_unshift$14, $Base_wrap$16, $Base_fragment$17, $Base_error$18, $Base_scope$19, $Base_s$20, $Base_expr$ques$21, $Base_recv$ques$22, $Base_stmt$ques$23, $Base_process$24, $Base_expr$25, $Base_recv$26, $Base_stmt$27, $Base_expr_or_nil$28, $Base_add_local$29, $Base_add_ivar$30, $Base_add_gvar$31, $Base_add_temp$32, $Base_helper$33, $Base_with_temp$34, $Base_in_while$ques$35, $Base_while_loop$36, $Base_has_rescue_else$ques$37, $Base_in_ensure$38, $Base_in_ensure$ques$39, $Base_class_variable_owner_nesting_level$40, $Base_class_variable_owner$41, $Base_comments$42; - def.sexp = def.fragments = def.compiler = def.level = nil; + self.$$prototype.sexp = self.$$prototype.fragments = self.$$prototype.compiler = self.$$prototype.level = nil; - self.$include(Opal.const_get_relative($nesting, 'Helpers')); - Opal.defs(self, '$handlers', TMP_Base_handlers_1 = function $$handlers() { + self.$include($$($nesting, 'Helpers')); + Opal.defs(self, '$handlers', $Base_handlers$1 = function $$handlers() { var $a, self = this; if (self.handlers == null) self.handlers = nil; return (self.handlers = ($truthy($a = self.handlers) ? $a : $hash2([], {}))) - }, TMP_Base_handlers_1.$$arity = 0); - Opal.defs(self, '$handle', TMP_Base_handle_3 = function $$handle($a_rest) { - var TMP_2, self = this, types; + }, $Base_handlers$1.$$arity = 0); + Opal.defs(self, '$handle', $Base_handle$2 = function $$handle($a) { + var $post_args, types, $$3, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + types = $post_args;; + return $send(types, 'each', [], ($$3 = function(type){var self = $$3.$$s || this, $writer = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - types = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - types[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(types, 'each', [], (TMP_2 = function(type){var self = TMP_2.$$s || this, $writer = nil; -if (type == null) type = nil; + + if (type == null) { + type = nil; + }; $writer = [type, self]; - $send(Opal.const_get_relative($nesting, 'Base').$handlers(), '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)) - }, TMP_Base_handle_3.$$arity = -1); - Opal.defs(self, '$children', TMP_Base_children_6 = function $$children($a_rest) { - var TMP_4, self = this, names; - - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - names = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - names[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(names, 'each_with_index', [], (TMP_4 = function(name, idx){var self = TMP_4.$$s || this, TMP_5; -if (name == null) name = nil;if (idx == null) idx = nil; - return $send(self, 'define_method', [name], (TMP_5 = function(){var self = TMP_5.$$s || this; + $send($$($nesting, 'Base').$handlers(), '[]=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, $$3.$$s = self, $$3.$$arity = 1, $$3)); + }, $Base_handle$2.$$arity = -1); + Opal.defs(self, '$children', $Base_children$4 = function $$children($a) { + var $post_args, names, $$5, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + names = $post_args;; + return $send(names, 'each_with_index', [], ($$5 = function(name, idx){var self = $$5.$$s || this, $$6; + + + + if (name == null) { + name = nil; + }; + + if (idx == null) { + idx = nil; + }; + return $send(self, 'define_method', [name], ($$6 = function(){var self = $$6.$$s || this; if (self.sexp == null) self.sexp = nil; - return self.sexp.$children()['$[]'](idx)}, TMP_5.$$s = self, TMP_5.$$arity = 0, TMP_5))}, TMP_4.$$s = self, TMP_4.$$arity = 2, TMP_4)) - }, TMP_Base_children_6.$$arity = -1); - Opal.defs(self, '$truthy_optimize?', TMP_Base_truthy_optimize$q_7 = function() { + return self.sexp.$children()['$[]'](idx)}, $$6.$$s = self, $$6.$$arity = 0, $$6));}, $$5.$$s = self, $$5.$$arity = 2, $$5)); + }, $Base_children$4.$$arity = -1); + Opal.defs(self, '$truthy_optimize?', $Base_truthy_optimize$ques$7 = function() { var self = this; return false - }, TMP_Base_truthy_optimize$q_7.$$arity = 0); + }, $Base_truthy_optimize$ques$7.$$arity = 0); self.$attr_reader("compiler", "type"); - Opal.defn(self, '$initialize', TMP_Base_initialize_8 = function $$initialize(sexp, level, compiler) { + Opal.def(self, '$initialize', $Base_initialize$8 = function $$initialize(sexp, level, compiler) { var self = this; @@ -45139,15 +51950,15 @@ if (name == null) name = nil;if (idx == null) idx = nil; self.type = sexp.$type(); self.level = level; return (self.compiler = compiler); - }, TMP_Base_initialize_8.$$arity = 3); + }, $Base_initialize$8.$$arity = 3); - Opal.defn(self, '$children', TMP_Base_children_9 = function $$children() { + Opal.def(self, '$children', $Base_children$9 = function $$children() { var self = this; return self.sexp.$children() - }, TMP_Base_children_9.$$arity = 0); + }, $Base_children$9.$$arity = 0); - Opal.defn(self, '$compile_to_fragments', TMP_Base_compile_to_fragments_10 = function $$compile_to_fragments() { + Opal.def(self, '$compile_to_fragments', $Base_compile_to_fragments$10 = function $$compile_to_fragments() { var $a, self = this; @@ -45156,242 +51967,259 @@ if (name == null) name = nil;if (idx == null) idx = nil; self.fragments = []; self.$compile(); return self.fragments; - }, TMP_Base_compile_to_fragments_10.$$arity = 0); + }, $Base_compile_to_fragments$10.$$arity = 0); - Opal.defn(self, '$compile', TMP_Base_compile_11 = function $$compile() { + Opal.def(self, '$compile', $Base_compile$11 = function $$compile() { var self = this; return self.$raise("Not Implemented") - }, TMP_Base_compile_11.$$arity = 0); + }, $Base_compile$11.$$arity = 0); - Opal.defn(self, '$push', TMP_Base_push_13 = function $$push($a_rest) { - var TMP_12, self = this, strs; + Opal.def(self, '$push', $Base_push$12 = function $$push($a) { + var $post_args, strs, $$13, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(strs, 'each', [], (TMP_12 = function(str){var self = TMP_12.$$s || this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; + return $send(strs, 'each', [], ($$13 = function(str){var self = $$13.$$s || this; if (self.fragments == null) self.fragments = nil; -if (str == null) str = nil; + - if ($truthy(str['$is_a?'](Opal.const_get_relative($nesting, 'String')))) { + + if (str == null) { + str = nil; + }; + if ($truthy(str['$is_a?']($$($nesting, 'String')))) { str = self.$fragment(str)}; - return self.fragments['$<<'](str);}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)) - }, TMP_Base_push_13.$$arity = -1); + return self.fragments['$<<'](str);}, $$13.$$s = self, $$13.$$arity = 1, $$13)); + }, $Base_push$12.$$arity = -1); - Opal.defn(self, '$unshift', TMP_Base_unshift_15 = function $$unshift($a_rest) { - var TMP_14, self = this, strs; + Opal.def(self, '$unshift', $Base_unshift$14 = function $$unshift($a) { + var $post_args, strs, $$15, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - strs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - strs[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(strs.$reverse(), 'each', [], (TMP_14 = function(str){var self = TMP_14.$$s || this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + strs = $post_args;; + return $send(strs.$reverse(), 'each', [], ($$15 = function(str){var self = $$15.$$s || this; if (self.fragments == null) self.fragments = nil; -if (str == null) str = nil; + - if ($truthy(str['$is_a?'](Opal.const_get_relative($nesting, 'String')))) { + + if (str == null) { + str = nil; + }; + if ($truthy(str['$is_a?']($$($nesting, 'String')))) { str = self.$fragment(str)}; - return self.fragments.$unshift(str);}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)) - }, TMP_Base_unshift_15.$$arity = -1); + return self.fragments.$unshift(str);}, $$15.$$s = self, $$15.$$arity = 1, $$15)); + }, $Base_unshift$14.$$arity = -1); - Opal.defn(self, '$wrap', TMP_Base_wrap_16 = function $$wrap(pre, post) { + Opal.def(self, '$wrap', $Base_wrap$16 = function $$wrap(pre, post) { var self = this; self.$unshift(pre); return self.$push(post); - }, TMP_Base_wrap_16.$$arity = 2); + }, $Base_wrap$16.$$arity = 2); - Opal.defn(self, '$fragment', TMP_Base_fragment_17 = function $$fragment(str) { + Opal.def(self, '$fragment', $Base_fragment$17 = function $$fragment(str) { var self = this; - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Fragment').$new(str, self.$scope(), self.sexp) - }, TMP_Base_fragment_17.$$arity = 1); + return $$$($$($nesting, 'Opal'), 'Fragment').$new(str, self.$scope(), self.sexp) + }, $Base_fragment$17.$$arity = 1); - Opal.defn(self, '$error', TMP_Base_error_18 = function $$error(msg) { + Opal.def(self, '$error', $Base_error$18 = function $$error(msg) { var self = this; return self.compiler.$error(msg) - }, TMP_Base_error_18.$$arity = 1); + }, $Base_error$18.$$arity = 1); - Opal.defn(self, '$scope', TMP_Base_scope_19 = function $$scope() { + Opal.def(self, '$scope', $Base_scope$19 = function $$scope() { var self = this; return self.compiler.$scope() - }, TMP_Base_scope_19.$$arity = 0); + }, $Base_scope$19.$$arity = 0); - Opal.defn(self, '$s', TMP_Base_s_20 = function $$s($a_rest) { - var self = this, args; + Opal.def(self, '$s', $Base_s$20 = function $$s($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.compiler, 's', Opal.to_a(args)) - }, TMP_Base_s_20.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.compiler, 's', Opal.to_a(args)); + }, $Base_s$20.$$arity = -1); - Opal.defn(self, '$expr?', TMP_Base_expr$q_21 = function() { + Opal.def(self, '$expr?', $Base_expr$ques$21 = function() { var self = this; return self.level['$==']("expr") - }, TMP_Base_expr$q_21.$$arity = 0); + }, $Base_expr$ques$21.$$arity = 0); - Opal.defn(self, '$recv?', TMP_Base_recv$q_22 = function() { + Opal.def(self, '$recv?', $Base_recv$ques$22 = function() { var self = this; return self.level['$==']("recv") - }, TMP_Base_recv$q_22.$$arity = 0); + }, $Base_recv$ques$22.$$arity = 0); - Opal.defn(self, '$stmt?', TMP_Base_stmt$q_23 = function() { + Opal.def(self, '$stmt?', $Base_stmt$ques$23 = function() { var self = this; return self.level['$==']("stmt") - }, TMP_Base_stmt$q_23.$$arity = 0); + }, $Base_stmt$ques$23.$$arity = 0); - Opal.defn(self, '$process', TMP_Base_process_24 = function $$process(sexp, level) { + Opal.def(self, '$process', $Base_process$24 = function $$process(sexp, level) { var self = this; + + if (level == null) { level = "expr"; - } - return self.compiler.$process(sexp, level) - }, TMP_Base_process_24.$$arity = -2); + }; + return self.compiler.$process(sexp, level); + }, $Base_process$24.$$arity = -2); - Opal.defn(self, '$expr', TMP_Base_expr_25 = function $$expr(sexp) { + Opal.def(self, '$expr', $Base_expr$25 = function $$expr(sexp) { var self = this; return self.compiler.$process(sexp, "expr") - }, TMP_Base_expr_25.$$arity = 1); + }, $Base_expr$25.$$arity = 1); - Opal.defn(self, '$recv', TMP_Base_recv_26 = function $$recv(sexp) { + Opal.def(self, '$recv', $Base_recv$26 = function $$recv(sexp) { var self = this; return self.compiler.$process(sexp, "recv") - }, TMP_Base_recv_26.$$arity = 1); + }, $Base_recv$26.$$arity = 1); - Opal.defn(self, '$stmt', TMP_Base_stmt_27 = function $$stmt(sexp) { + Opal.def(self, '$stmt', $Base_stmt$27 = function $$stmt(sexp) { var self = this; return self.compiler.$process(sexp, "stmt") - }, TMP_Base_stmt_27.$$arity = 1); + }, $Base_stmt$27.$$arity = 1); - Opal.defn(self, '$expr_or_nil', TMP_Base_expr_or_nil_28 = function $$expr_or_nil(sexp) { + Opal.def(self, '$expr_or_nil', $Base_expr_or_nil$28 = function $$expr_or_nil(sexp) { var self = this; if ($truthy(sexp)) { return self.$expr(sexp) - } else { + } else { return "nil" } - }, TMP_Base_expr_or_nil_28.$$arity = 1); + }, $Base_expr_or_nil$28.$$arity = 1); - Opal.defn(self, '$add_local', TMP_Base_add_local_29 = function $$add_local(name) { + Opal.def(self, '$add_local', $Base_add_local$29 = function $$add_local(name) { var self = this; return self.$scope().$add_scope_local(name.$to_sym()) - }, TMP_Base_add_local_29.$$arity = 1); + }, $Base_add_local$29.$$arity = 1); - Opal.defn(self, '$add_ivar', TMP_Base_add_ivar_30 = function $$add_ivar(name) { + Opal.def(self, '$add_ivar', $Base_add_ivar$30 = function $$add_ivar(name) { var self = this; return self.$scope().$add_scope_ivar(name) - }, TMP_Base_add_ivar_30.$$arity = 1); + }, $Base_add_ivar$30.$$arity = 1); - Opal.defn(self, '$add_gvar', TMP_Base_add_gvar_31 = function $$add_gvar(name) { + Opal.def(self, '$add_gvar', $Base_add_gvar$31 = function $$add_gvar(name) { var self = this; return self.$scope().$add_scope_gvar(name) - }, TMP_Base_add_gvar_31.$$arity = 1); + }, $Base_add_gvar$31.$$arity = 1); - Opal.defn(self, '$add_temp', TMP_Base_add_temp_32 = function $$add_temp(temp) { + Opal.def(self, '$add_temp', $Base_add_temp$32 = function $$add_temp(temp) { var self = this; return self.$scope().$add_scope_temp(temp) - }, TMP_Base_add_temp_32.$$arity = 1); + }, $Base_add_temp$32.$$arity = 1); - Opal.defn(self, '$helper', TMP_Base_helper_33 = function $$helper(name) { + Opal.def(self, '$helper', $Base_helper$33 = function $$helper(name) { var self = this; return self.compiler.$helper(name) - }, TMP_Base_helper_33.$$arity = 1); + }, $Base_helper$33.$$arity = 1); - Opal.defn(self, '$with_temp', TMP_Base_with_temp_34 = function $$with_temp() { - var self = this, $iter = TMP_Base_with_temp_34.$$p, block = $iter || nil; + Opal.def(self, '$with_temp', $Base_with_temp$34 = function $$with_temp() { + var $iter = $Base_with_temp$34.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Base_with_temp_34.$$p = null; - return $send(self.compiler, 'with_temp', [], block.$to_proc()) - }, TMP_Base_with_temp_34.$$arity = 0); + if ($iter) $Base_with_temp$34.$$p = null; + + + if ($iter) $Base_with_temp$34.$$p = null;; + return $send(self.compiler, 'with_temp', [], block.$to_proc()); + }, $Base_with_temp$34.$$arity = 0); - Opal.defn(self, '$in_while?', TMP_Base_in_while$q_35 = function() { + Opal.def(self, '$in_while?', $Base_in_while$ques$35 = function() { var self = this; return self.compiler['$in_while?']() - }, TMP_Base_in_while$q_35.$$arity = 0); + }, $Base_in_while$ques$35.$$arity = 0); - Opal.defn(self, '$while_loop', TMP_Base_while_loop_36 = function $$while_loop() { + Opal.def(self, '$while_loop', $Base_while_loop$36 = function $$while_loop() { var self = this; return self.compiler.$instance_variable_get("@while_loop") - }, TMP_Base_while_loop_36.$$arity = 0); + }, $Base_while_loop$36.$$arity = 0); - Opal.defn(self, '$has_rescue_else?', TMP_Base_has_rescue_else$q_37 = function() { + Opal.def(self, '$has_rescue_else?', $Base_has_rescue_else$ques$37 = function() { var self = this; return self.$scope()['$has_rescue_else?']() - }, TMP_Base_has_rescue_else$q_37.$$arity = 0); + }, $Base_has_rescue_else$ques$37.$$arity = 0); - Opal.defn(self, '$in_ensure', TMP_Base_in_ensure_38 = function $$in_ensure() { - var self = this, $iter = TMP_Base_in_ensure_38.$$p, block = $iter || nil; + Opal.def(self, '$in_ensure', $Base_in_ensure$38 = function $$in_ensure() { + var $iter = $Base_in_ensure$38.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Base_in_ensure_38.$$p = null; - return $send(self.$scope(), 'in_ensure', [], block.$to_proc()) - }, TMP_Base_in_ensure_38.$$arity = 0); + if ($iter) $Base_in_ensure$38.$$p = null; + + + if ($iter) $Base_in_ensure$38.$$p = null;; + return $send(self.$scope(), 'in_ensure', [], block.$to_proc()); + }, $Base_in_ensure$38.$$arity = 0); - Opal.defn(self, '$in_ensure?', TMP_Base_in_ensure$q_39 = function() { + Opal.def(self, '$in_ensure?', $Base_in_ensure$ques$39 = function() { var self = this; return self.$scope()['$in_ensure?']() - }, TMP_Base_in_ensure$q_39.$$arity = 0); + }, $Base_in_ensure$ques$39.$$arity = 0); - Opal.defn(self, '$closest_module_node', TMP_Base_closest_module_node_40 = function $$closest_module_node() { - var $a, $b, self = this, current = nil; + Opal.def(self, '$class_variable_owner_nesting_level', $Base_class_variable_owner_nesting_level$40 = function $$class_variable_owner_nesting_level() { + var $a, $b, self = this, cvar_scope = nil, nesting_level = nil; - current = self.$scope(); - while ($truthy(($truthy($b = current) ? current['$class_scope?']()['$!']() : $b))) { - current = current.$parent() + cvar_scope = self.$scope(); + nesting_level = 0; + while ($truthy(($truthy($b = cvar_scope) ? cvar_scope['$class_scope?']()['$!']() : $b))) { + + if ($truthy(cvar_scope['$sclass?']())) { + nesting_level = $rb_plus(nesting_level, 1)}; + cvar_scope = cvar_scope.$parent(); }; - return current; - }, TMP_Base_closest_module_node_40.$$arity = 0); + return nesting_level; + }, $Base_class_variable_owner_nesting_level$40.$$arity = 0); - Opal.defn(self, '$class_variable_owner', TMP_Base_class_variable_owner_41 = function $$class_variable_owner() { + Opal.def(self, '$class_variable_owner', $Base_class_variable_owner$41 = function $$class_variable_owner() { var self = this; - if ($truthy(self.$closest_module_node())) { - return "" + "$" + (self.$closest_module_node().$name()) - } else { + if ($truthy(self.$scope())) { + return "" + "$nesting[" + (self.$class_variable_owner_nesting_level()) + "]" + } else { return "Opal.Object" } - }, TMP_Base_class_variable_owner_41.$$arity = 0); - return (Opal.defn(self, '$comments', TMP_Base_comments_42 = function $$comments() { + }, $Base_class_variable_owner$41.$$arity = 0); + return (Opal.def(self, '$comments', $Base_comments$42 = function $$comments() { var self = this; return self.$compiler().$comments()['$[]'](self.sexp.$loc()) - }, TMP_Base_comments_42.$$arity = 0), nil) && 'comments'; + }, $Base_comments$42.$$arity = 0), nil) && 'comments'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/literal"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -45402,200 +52230,211 @@ Opal.modules["opal/nodes/literal"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $lambda = Opal.lambda; - Opal.add_stubs(['$require', '$handle', '$push', '$to_s', '$type', '$children', '$value', '$recv?', '$wrap', '$join', '$keys', '$gsub', '$even?', '$length', '$+', '$chop', '$[]', '$encoding', '$!=', '$force_encoding', '$inspect', '$to_i', '$to_utf16', '$translate_escape_chars', '$name', '$lambda', '$upcase', '$<=', '$call', '$-', '$>>', '$&', '$attr_accessor', '$extract_flags_and_value', '$select!', '$flags', '$=~', '$warning', '$compiler', '$===', '$compile_dynamic_regexp', '$compile_static_regexp', '$any?', '$expr', '$new', '$map', '$to_proc', '$flags=', '$s', '$value=', '$include?', '$is_a?', '$==', '$updated', '$delete', '$source', '$expression', '$loc', '$regexp', '$each', '$first', '$raise', '$each_with_index', '$compile_inline?', '$helper', '$compile_inline', '$compile_range_initialize', '$start', '$finish', '$numerator', '$denominator', '$real', '$imag']); + Opal.add_stubs(['$require', '$handle', '$push', '$to_s', '$type', '$children', '$value', '$recv?', '$wrap', '$freeze', '$join', '$keys', '$gsub', '$even?', '$length', '$last_match', '$+', '$chop', '$[]', '$encoding', '$!=', '$inspect', '$to_i', '$to_utf16', '$translate_escape_chars', '$name', '$upcase', '$<=', '$call', '$-', '$>>', '$&', '$attr_accessor', '$extract_flags_and_value', '$select!', '$flags', '$=~', '$warning', '$compiler', '$===', '$compile_dynamic_regexp', '$compile_static_regexp', '$any?', '$expr', '$new', '$map', '$to_proc', '$flags=', '$s', '$value=', '$include?', '$is_a?', '$==', '$updated', '$delete', '$source', '$expression', '$loc', '$regexp', '$each', '$compile_inline?', '$helper', '$compile_inline', '$compile_range_initialize', '$start', '$finish', '$raise', '$numerator', '$denominator', '$real', '$imag']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ValueNode(){}; - var self = $ValueNode = $klass($base, $super, 'ValueNode', $ValueNode); + var self = $klass($base, $super, 'ValueNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ValueNode_compile_1, TMP_ValueNode_truthy_optimize$q_2; + var $nesting = [self].concat($parent_nesting), $ValueNode_compile$1, $ValueNode_truthy_optimize$ques$2; self.$handle("true", "false", "self", "nil"); - Opal.defn(self, '$compile', TMP_ValueNode_compile_1 = function $$compile() { + Opal.def(self, '$compile', $ValueNode_compile$1 = function $$compile() { var self = this; return self.$push(self.$type().$to_s()) - }, TMP_ValueNode_compile_1.$$arity = 0); - return Opal.defs(self, '$truthy_optimize?', TMP_ValueNode_truthy_optimize$q_2 = function() { + }, $ValueNode_compile$1.$$arity = 0); + return (Opal.defs(self, '$truthy_optimize?', $ValueNode_truthy_optimize$ques$2 = function() { var self = this; return true - }, TMP_ValueNode_truthy_optimize$q_2.$$arity = 0); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ValueNode_truthy_optimize$ques$2.$$arity = 0), nil) && 'truthy_optimize?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $NumericNode(){}; - var self = $NumericNode = $klass($base, $super, 'NumericNode', $NumericNode); + var self = $klass($base, $super, 'NumericNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NumericNode_compile_3, TMP_NumericNode_truthy_optimize$q_4; + var $nesting = [self].concat($parent_nesting), $NumericNode_compile$3, $NumericNode_truthy_optimize$ques$4; self.$handle("int", "float"); self.$children("value"); - Opal.defn(self, '$compile', TMP_NumericNode_compile_3 = function $$compile() { + Opal.def(self, '$compile', $NumericNode_compile$3 = function $$compile() { var self = this; self.$push(self.$value().$to_s()); if ($truthy(self['$recv?']())) { return self.$wrap("(", ")") - } else { + } else { return nil }; - }, TMP_NumericNode_compile_3.$$arity = 0); - return Opal.defs(self, '$truthy_optimize?', TMP_NumericNode_truthy_optimize$q_4 = function() { + }, $NumericNode_compile$3.$$arity = 0); + return (Opal.defs(self, '$truthy_optimize?', $NumericNode_truthy_optimize$ques$4 = function() { var self = this; return true - }, TMP_NumericNode_truthy_optimize$q_4.$$arity = 0); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $NumericNode_truthy_optimize$ques$4.$$arity = 0), nil) && 'truthy_optimize?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $StringNode(){}; - var self = $StringNode = $klass($base, $super, 'StringNode', $StringNode); + var self = $klass($base, $super, 'StringNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_StringNode_translate_escape_chars_6, TMP_StringNode_compile_8, TMP_StringNode_to_utf16_10; + var $nesting = [self].concat($parent_nesting), $StringNode_translate_escape_chars$5, $StringNode_compile$7, $StringNode_to_utf16$9; self.$handle("str"); self.$children("value"); - Opal.const_set($nesting[0], 'ESCAPE_CHARS', $hash2(["a", "e"], {"a": "\\u0007", "e": "\\u001b"})); - Opal.const_set($nesting[0], 'ESCAPE_REGEX', new RegExp("" + "(\\\\+)([" + (Opal.const_get_relative($nesting, 'ESCAPE_CHARS').$keys().$join("")) + "])")); + Opal.const_set($nesting[0], 'ESCAPE_CHARS', $hash2(["a", "e"], {"a": "\\u0007", "e": "\\u001b"}).$freeze()); + Opal.const_set($nesting[0], 'ESCAPE_REGEX', new RegExp("" + "(\\\\+)([" + ($$($nesting, 'ESCAPE_CHARS').$keys().$join("")) + "])")); - Opal.defn(self, '$translate_escape_chars', TMP_StringNode_translate_escape_chars_6 = function $$translate_escape_chars(inspect_string) { - var TMP_5, self = this; + Opal.def(self, '$translate_escape_chars', $StringNode_translate_escape_chars$5 = function $$translate_escape_chars(inspect_string) { + var $$6, self = this; - return $send(inspect_string, 'gsub', [Opal.const_get_relative($nesting, 'ESCAPE_REGEX')], (TMP_5 = function(original){var self = TMP_5.$$s || this, $a; -if (original == null) original = nil; - if ($truthy((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$length()['$even?']())) { + return $send(inspect_string, 'gsub', [$$($nesting, 'ESCAPE_REGEX')], ($$6 = function(original){var self = $$6.$$s || this; + + + + if (original == null) { + original = nil; + }; + if ($truthy($$($nesting, 'Regexp').$last_match(1).$length()['$even?']())) { return original - } else { - return $rb_plus((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$chop(), Opal.const_get_relative($nesting, 'ESCAPE_CHARS')['$[]']((($a = $gvars['~']) === nil ? nil : $a['$[]'](2)))) - }}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)) - }, TMP_StringNode_translate_escape_chars_6.$$arity = 1); + } else { + return $rb_plus($$($nesting, 'Regexp').$last_match(1).$chop(), $$($nesting, 'ESCAPE_CHARS')['$[]']($$($nesting, 'Regexp').$last_match(2))) + };}, $$6.$$s = self, $$6.$$arity = 1, $$6)) + }, $StringNode_translate_escape_chars$5.$$arity = 1); - Opal.defn(self, '$compile', TMP_StringNode_compile_8 = function $$compile() { - var TMP_7, $a, self = this, string_value = nil, encoding = nil, should_encode = nil, sanitized_value = nil; + Opal.def(self, '$compile', $StringNode_compile$7 = function $$compile() { + var $$8, $a, self = this, string_value = nil, encoding = nil, should_encode = nil, sanitized_value = nil; string_value = self.$value(); encoding = string_value.$encoding(); - should_encode = encoding['$!='](Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Encoding'), 'UTF_8')); - if ($truthy(should_encode)) { - string_value = string_value.$force_encoding("UTF-8")}; - sanitized_value = $send(string_value.$inspect(), 'gsub', [/\\u\{([0-9a-f]+)\}/], (TMP_7 = function(match){var self = TMP_7.$$s || this, $a, code_point = nil; -if (match == null) match = nil; - - code_point = (($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$to_i(16); - return self.$to_utf16(code_point);}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); + should_encode = encoding['$!=']($$$($$($nesting, 'Encoding'), 'UTF_8')); + sanitized_value = $send(string_value.$inspect(), 'gsub', [/\\u\{([0-9a-f]+)\}/], ($$8 = function(){var self = $$8.$$s || this, code_point = nil; + + + code_point = $$($nesting, 'Regexp').$last_match(1).$to_i(16); + return self.$to_utf16(code_point);}, $$8.$$s = self, $$8.$$arity = 0, $$8)); self.$push(self.$translate_escape_chars(sanitized_value)); - if ($truthy(($truthy($a = should_encode) ? Opal.const_get_relative($nesting, 'RUBY_ENGINE')['$!=']("opal") : $a))) { + if ($truthy(($truthy($a = should_encode) ? $$($nesting, 'RUBY_ENGINE')['$!=']("opal") : $a))) { return self.$push(".$force_encoding(\"", encoding.$name(), "\")") - } else { + } else { return nil }; - }, TMP_StringNode_compile_8.$$arity = 0); - return (Opal.defn(self, '$to_utf16', TMP_StringNode_to_utf16_10 = function $$to_utf16(code_point) { - var TMP_9, self = this, ten_bits = nil, u = nil, lead_surrogate = nil, tail_surrogate = nil; + }, $StringNode_compile$7.$$arity = 0); + return (Opal.def(self, '$to_utf16', $StringNode_to_utf16$9 = function $$to_utf16(code_point) { + var $$10, self = this, ten_bits = nil, u = nil, lead_surrogate = nil, tail_surrogate = nil; ten_bits = 1023; - u = $send(self, 'lambda', [], (TMP_9 = function(code_unit){var self = TMP_9.$$s || this; -if (code_unit == null) code_unit = nil; - return $rb_plus("\\u", code_unit.$to_s(16).$upcase())}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); + u = $lambda(($$10 = function(code_unit){var self = $$10.$$s || this; + + + + if (code_unit == null) { + code_unit = nil; + }; + return $rb_plus("\\u", code_unit.$to_s(16).$upcase());}, $$10.$$s = self, $$10.$$arity = 1, $$10)); if ($truthy($rb_le(code_point, 65535))) { return u.$call(code_point)}; code_point = $rb_minus(code_point, 65536); lead_surrogate = $rb_plus(55296, code_point['$>>'](10)); tail_surrogate = $rb_plus(56320, code_point['$&'](ten_bits)); return $rb_plus(u.$call(lead_surrogate), u.$call(tail_surrogate)); - }, TMP_StringNode_to_utf16_10.$$arity = 1), nil) && 'to_utf16'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $StringNode_to_utf16$9.$$arity = 1), nil) && 'to_utf16'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $SymbolNode(){}; - var self = $SymbolNode = $klass($base, $super, 'SymbolNode', $SymbolNode); + var self = $klass($base, $super, 'SymbolNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SymbolNode_compile_11; + var $nesting = [self].concat($parent_nesting), $SymbolNode_compile$11; self.$handle("sym"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_SymbolNode_compile_11 = function $$compile() { + return (Opal.def(self, '$compile', $SymbolNode_compile$11 = function $$compile() { var self = this; return self.$push(self.$value().$to_s().$inspect()) - }, TMP_SymbolNode_compile_11.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $SymbolNode_compile$11.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $RegexpNode(){}; - var self = $RegexpNode = $klass($base, $super, 'RegexpNode', $RegexpNode); + var self = $klass($base, $super, 'RegexpNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RegexpNode_initialize_12, TMP_RegexpNode_compile_14, TMP_RegexpNode_compile_dynamic_regexp_15, TMP_RegexpNode_compile_static_regexp_16, TMP_RegexpNode_extract_flags_and_value_18, TMP_RegexpNode_raw_value_19; + var $nesting = [self].concat($parent_nesting), $RegexpNode_initialize$12, $RegexpNode_compile$13, $RegexpNode_compile_dynamic_regexp$15, $RegexpNode_compile_static_regexp$16, $RegexpNode_extract_flags_and_value$17, $RegexpNode_raw_value$19; - def.sexp = nil; + self.$$prototype.sexp = nil; self.$handle("regexp"); self.$attr_accessor("value", "flags"); Opal.const_set($nesting[0], 'SUPPORTED_FLAGS', /[gimuy]/); - Opal.defn(self, '$initialize', TMP_RegexpNode_initialize_12 = function $$initialize($a_rest) { - var self = this, $iter = TMP_RegexpNode_initialize_12.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $RegexpNode_initialize$12 = function $$initialize($a) { + var $post_args, $iter = $RegexpNode_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_RegexpNode_initialize_12.$$p = null; + if ($iter) $RegexpNode_initialize$12.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_RegexpNode_initialize_12, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $RegexpNode_initialize$12, false), $zuper, $iter); return self.$extract_flags_and_value(); - }, TMP_RegexpNode_initialize_12.$$arity = -1); + }, $RegexpNode_initialize$12.$$arity = -1); - Opal.defn(self, '$compile', TMP_RegexpNode_compile_14 = function $$compile() { - var TMP_13, self = this, $case = nil; + Opal.def(self, '$compile', $RegexpNode_compile$13 = function $$compile() { + var $$14, self = this, $case = nil; + + + $send(self.$flags(), 'select!', [], ($$14 = function(flag){var self = $$14.$$s || this; - $send(self.$flags(), 'select!', [], (TMP_13 = function(flag){var self = TMP_13.$$s || this; -if (flag == null) flag = nil; - if ($truthy(Opal.const_get_relative($nesting, 'SUPPORTED_FLAGS')['$=~'](flag))) { + + if (flag == null) { + flag = nil; + }; + if ($truthy($$($nesting, 'SUPPORTED_FLAGS')['$=~'](flag))) { return true - } else { + } else { self.$compiler().$warning("" + "Skipping the '" + (flag) + "' Regexp flag as it's not widely supported by JavaScript vendors."); return false; - }}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13)); + };}, $$14.$$s = self, $$14.$$arity = 1, $$14)); return (function() {$case = self.$value().$type(); if ("dstr"['$===']($case) || "begin"['$===']($case)) {return self.$compile_dynamic_regexp()} else if ("str"['$===']($case)) {return self.$compile_static_regexp()} else { return nil }})(); - }, TMP_RegexpNode_compile_14.$$arity = 0); + }, $RegexpNode_compile$13.$$arity = 0); - Opal.defn(self, '$compile_dynamic_regexp', TMP_RegexpNode_compile_dynamic_regexp_15 = function $$compile_dynamic_regexp() { + Opal.def(self, '$compile_dynamic_regexp', $RegexpNode_compile_dynamic_regexp$15 = function $$compile_dynamic_regexp() { var self = this; if ($truthy(self.$flags()['$any?']())) { return self.$push("new RegExp(", self.$expr(self.$value()), "" + ", '" + (self.$flags().$join()) + "')") - } else { + } else { return self.$push("new RegExp(", self.$expr(self.$value()), ")") } - }, TMP_RegexpNode_compile_dynamic_regexp_15.$$arity = 0); + }, $RegexpNode_compile_dynamic_regexp$15.$$arity = 0); - Opal.defn(self, '$compile_static_regexp', TMP_RegexpNode_compile_static_regexp_16 = function $$compile_static_regexp() { + Opal.def(self, '$compile_static_regexp', $RegexpNode_compile_static_regexp$16 = function $$compile_static_regexp() { var self = this, value = nil, $case = nil, message = nil; @@ -45605,11 +52444,11 @@ if (flag == null) flag = nil; else if (/\?<\w+\>/['$===']($case)) { message = "" + "named captures are not supported in javascript: " + (value.$inspect()); return self.$push("" + "self.$raise(new SyntaxError('" + (message) + "'))");} - else {return self.$push("" + (Opal.const_get_relative($nesting, 'Regexp').$new(value).$inspect()) + (self.$flags().$join()))}})(); - }, TMP_RegexpNode_compile_static_regexp_16.$$arity = 0); + else {return self.$push("" + ($$($nesting, 'Regexp').$new(value).$inspect()) + (self.$flags().$join()))}})(); + }, $RegexpNode_compile_static_regexp$16.$$arity = 0); - Opal.defn(self, '$extract_flags_and_value', TMP_RegexpNode_extract_flags_and_value_18 = function $$extract_flags_and_value() { - var $a, $b, TMP_17, self = this, values = nil, flags_sexp = nil, $writer = nil, $case = nil, parts = nil; + Opal.def(self, '$extract_flags_and_value', $RegexpNode_extract_flags_and_value$17 = function $$extract_flags_and_value() { + var $a, $b, $$18, self = this, values = nil, flags_sexp = nil, $writer = nil, $case = nil, parts = nil; $a = [].concat(Opal.to_a(self.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (values = $slice.call($a, 0, $b)), (flags_sexp = ($a[$b] == null ? nil : $a[$b])), $a; @@ -45617,30 +52456,29 @@ if (flag == null) flag = nil; $writer = [$send(flags_sexp.$children(), 'map', [], "to_s".$to_proc())]; $send(self, 'flags=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - $case = values.$length(); - if ((0)['$===']($case)) { - $writer = [self.$s("str", "")]; - $send(self, 'value=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];} - else if ((1)['$===']($case)) { - $writer = [values['$[]'](0)]; - $send(self, 'value=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];} - else { - $writer = [$send(self, 's', ["dstr"].concat(Opal.to_a(values)))]; + + $writer = [(function() {$case = values.$length(); + if ((0)['$===']($case)) {return self.$s("str", "")} + else if ((1)['$===']($case)) {return values['$[]'](0)} + else {return $send(self, 's', ["dstr"].concat(Opal.to_a(values)))}})()]; $send(self, 'value=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; + $writer[$rb_minus($writer["length"], 1)];; if ($truthy(self.$flags()['$include?']("x"))) { - parts = $send(self.$value().$children(), 'map', [], (TMP_17 = function(part){var self = TMP_17.$$s || this, $c, trimmed_value = nil; -if (part == null) part = nil; - if ($truthy(($truthy($c = part['$is_a?'](Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node'))) ? part.$type()['$==']("str") : $c))) { + parts = $send(self.$value().$children(), 'map', [], ($$18 = function(part){var self = $$18.$$s || this, $c, trimmed_value = nil; + + + + if (part == null) { + part = nil; + }; + if ($truthy(($truthy($c = part['$is_a?']($$$($$$($$$('::', 'Opal'), 'AST'), 'Node'))) ? part.$type()['$==']("str") : $c))) { trimmed_value = part.$children()['$[]'](0).$gsub(/^\s*\#.*/, "").$gsub(/\s/, ""); return self.$s("str", trimmed_value); - } else { + } else { return part - }}, TMP_17.$$s = self, TMP_17.$$arity = 1, TMP_17)); + };}, $$18.$$s = self, $$18.$$arity = 1, $$18)); $writer = [self.$value().$updated(nil, parts)]; $send(self, 'value=', Opal.to_a($writer)); @@ -45651,290 +52489,255 @@ if (part == null) part = nil; $writer = [self.$s("str", self.$value().$children()['$[]'](0).$gsub("\\A", "^").$gsub("\\z", "$"))]; $send(self, 'value=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - } else { + } else { return nil }; - }, TMP_RegexpNode_extract_flags_and_value_18.$$arity = 0); - return (Opal.defn(self, '$raw_value', TMP_RegexpNode_raw_value_19 = function $$raw_value() { + }, $RegexpNode_extract_flags_and_value$17.$$arity = 0); + return (Opal.def(self, '$raw_value', $RegexpNode_raw_value$19 = function $$raw_value() { var self = this, $writer = nil; $writer = [self.sexp.$loc().$expression().$source()]; $send(self, 'value=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; - }, TMP_RegexpNode_raw_value_19.$$arity = 0), nil) && 'raw_value'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $RegexpNode_raw_value$19.$$arity = 0), nil) && 'raw_value'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $MatchCurrentLineNode(){}; - var self = $MatchCurrentLineNode = $klass($base, $super, 'MatchCurrentLineNode', $MatchCurrentLineNode); + var self = $klass($base, $super, 'MatchCurrentLineNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchCurrentLineNode_compile_20; + var $nesting = [self].concat($parent_nesting), $MatchCurrentLineNode_compile$20; self.$handle("match_current_line"); self.$children("regexp"); - return (Opal.defn(self, '$compile', TMP_MatchCurrentLineNode_compile_20 = function $$compile() { + return (Opal.def(self, '$compile', $MatchCurrentLineNode_compile$20 = function $$compile() { var self = this, gvar_sexp = nil, send_node = nil; gvar_sexp = self.$s("gvar", "$_"); send_node = self.$s("send", gvar_sexp, "=~", self.$regexp()); return self.$push(self.$expr(send_node)); - }, TMP_MatchCurrentLineNode_compile_20.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $MatchCurrentLineNode_compile$20.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $XStringNode(){}; - var self = $XStringNode = $klass($base, $super, 'XStringNode', $XStringNode); + var self = $klass($base, $super, 'DynamicStringNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_XStringNode_compile_22; - - - self.$handle("xstr"); - return (Opal.defn(self, '$compile', TMP_XStringNode_compile_22 = function $$compile() { - var TMP_21, self = this; - - - $send(self.$children(), 'each', [], (TMP_21 = function(child){var self = TMP_21.$$s || this, $case = nil, value = nil, str = nil; -if (child == null) child = nil; - return (function() {$case = child.$type(); - if ("str"['$===']($case)) { - value = child.$loc().$expression().$source(); - return self.$push(Opal.const_get_relative($nesting, 'Fragment').$new(value, nil));} - else if ("begin"['$===']($case)) {return self.$push(self.$expr(child))} - else if ("gvar"['$===']($case) || "ivar"['$===']($case)) {return self.$push(self.$expr(child))} - else if ("js_return"['$===']($case)) { - self.$push("return "); - str = child.$children().$first(); - value = str.$loc().$expression().$source(); - return self.$push(Opal.const_get_relative($nesting, 'Fragment').$new(value, nil));} - else {return self.$raise("" + "Unsupported xstr part: " + (child.$type()))}})()}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21)); - if ($truthy(self['$recv?']())) { - return self.$wrap("(", ")") - } else { - return nil - }; - }, TMP_XStringNode_compile_22.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); - (function($base, $super, $parent_nesting) { - function $DynamicStringNode(){}; - var self = $DynamicStringNode = $klass($base, $super, 'DynamicStringNode', $DynamicStringNode); - - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DynamicStringNode_compile_24; + var $nesting = [self].concat($parent_nesting), $DynamicStringNode_compile$21; self.$handle("dstr"); - return (Opal.defn(self, '$compile', TMP_DynamicStringNode_compile_24 = function $$compile() { - var TMP_23, self = this; + return (Opal.def(self, '$compile', $DynamicStringNode_compile$21 = function $$compile() { + var $$22, self = this; self.$push("\"\""); - return $send(self.$children(), 'each_with_index', [], (TMP_23 = function(part, idx){var self = TMP_23.$$s || this; -if (part == null) part = nil;if (idx == null) idx = nil; + return $send(self.$children(), 'each', [], ($$22 = function(part){var self = $$22.$$s || this; + + + if (part == null) { + part = nil; + }; self.$push(" + "); if (part.$type()['$==']("str")) { self.$push(part.$children()['$[]'](0).$inspect()) - } else { + } else { self.$push("(", self.$expr(part), ")") }; if ($truthy(self['$recv?']())) { return self.$wrap("(", ")") - } else { + } else { return nil - };}, TMP_23.$$s = self, TMP_23.$$arity = 2, TMP_23)); - }, TMP_DynamicStringNode_compile_24.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + };}, $$22.$$s = self, $$22.$$arity = 1, $$22)); + }, $DynamicStringNode_compile$21.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $DynamicSymbolNode(){}; - var self = $DynamicSymbolNode = $klass($base, $super, 'DynamicSymbolNode', $DynamicSymbolNode); + var self = $klass($base, $super, 'DynamicSymbolNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$handle("dsym") - })($nesting[0], Opal.const_get_relative($nesting, 'DynamicStringNode'), $nesting); + })($nesting[0], $$($nesting, 'DynamicStringNode'), $nesting); (function($base, $super, $parent_nesting) { - function $RangeNode(){}; - var self = $RangeNode = $klass($base, $super, 'RangeNode', $RangeNode); + var self = $klass($base, $super, 'RangeNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RangeNode_compile_25, TMP_RangeNode_compile_inline$q_26, TMP_RangeNode_compile_inline_27, TMP_RangeNode_compile_range_initialize_28; + var $nesting = [self].concat($parent_nesting), $RangeNode_compile$23, $RangeNode_compile_inline$ques$24, $RangeNode_compile_inline$25, $RangeNode_compile_range_initialize$26; self.$children("start", "finish"); - Opal.const_set($nesting[0], 'SIMPLE_CHILDREN_TYPES', ["int", "float", "str", "sym"]); + Opal.const_set($nesting[0], 'SIMPLE_CHILDREN_TYPES', ["int", "float", "str", "sym"].$freeze()); - Opal.defn(self, '$compile', TMP_RangeNode_compile_25 = function $$compile() { + Opal.def(self, '$compile', $RangeNode_compile$23 = function $$compile() { var self = this; if ($truthy(self['$compile_inline?']())) { self.$helper("range"); return self.$compile_inline(); - } else { + } else { return self.$compile_range_initialize() } - }, TMP_RangeNode_compile_25.$$arity = 0); + }, $RangeNode_compile$23.$$arity = 0); - Opal.defn(self, '$compile_inline?', TMP_RangeNode_compile_inline$q_26 = function() { + Opal.def(self, '$compile_inline?', $RangeNode_compile_inline$ques$24 = function() { var $a, $b, self = this; - return ($truthy($a = (($b = self.$start().$type()['$=='](self.$finish().$type())) ? Opal.const_get_relative($nesting, 'SIMPLE_CHILDREN_TYPES')['$include?'](self.$start().$type()) : self.$start().$type()['$=='](self.$finish().$type()))) ? Opal.const_get_relative($nesting, 'SIMPLE_CHILDREN_TYPES')['$include?'](self.$finish().$type()) : $a) - }, TMP_RangeNode_compile_inline$q_26.$$arity = 0); + return ($truthy($a = (($b = self.$start().$type()['$=='](self.$finish().$type())) ? $$($nesting, 'SIMPLE_CHILDREN_TYPES')['$include?'](self.$start().$type()) : self.$start().$type()['$=='](self.$finish().$type()))) ? $$($nesting, 'SIMPLE_CHILDREN_TYPES')['$include?'](self.$finish().$type()) : $a) + }, $RangeNode_compile_inline$ques$24.$$arity = 0); - Opal.defn(self, '$compile_inline', TMP_RangeNode_compile_inline_27 = function $$compile_inline() { + Opal.def(self, '$compile_inline', $RangeNode_compile_inline$25 = function $$compile_inline() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_RangeNode_compile_inline_27.$$arity = 0); - return (Opal.defn(self, '$compile_range_initialize', TMP_RangeNode_compile_range_initialize_28 = function $$compile_range_initialize() { + return self.$raise($$($nesting, 'NotImplementedError')) + }, $RangeNode_compile_inline$25.$$arity = 0); + return (Opal.def(self, '$compile_range_initialize', $RangeNode_compile_range_initialize$26 = function $$compile_range_initialize() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_RangeNode_compile_range_initialize_28.$$arity = 0), nil) && 'compile_range_initialize'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return self.$raise($$($nesting, 'NotImplementedError')) + }, $RangeNode_compile_range_initialize$26.$$arity = 0), nil) && 'compile_range_initialize'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $InclusiveRangeNode(){}; - var self = $InclusiveRangeNode = $klass($base, $super, 'InclusiveRangeNode', $InclusiveRangeNode); + var self = $klass($base, $super, 'InclusiveRangeNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InclusiveRangeNode_compile_inline_29, TMP_InclusiveRangeNode_compile_range_initialize_30; + var $nesting = [self].concat($parent_nesting), $InclusiveRangeNode_compile_inline$27, $InclusiveRangeNode_compile_range_initialize$28; self.$handle("irange"); - Opal.defn(self, '$compile_inline', TMP_InclusiveRangeNode_compile_inline_29 = function $$compile_inline() { + Opal.def(self, '$compile_inline', $InclusiveRangeNode_compile_inline$27 = function $$compile_inline() { var self = this; return self.$push("$range(", self.$expr(self.$start()), ", ", self.$expr(self.$finish()), ", false)") - }, TMP_InclusiveRangeNode_compile_inline_29.$$arity = 0); - return (Opal.defn(self, '$compile_range_initialize', TMP_InclusiveRangeNode_compile_range_initialize_30 = function $$compile_range_initialize() { + }, $InclusiveRangeNode_compile_inline$27.$$arity = 0); + return (Opal.def(self, '$compile_range_initialize', $InclusiveRangeNode_compile_range_initialize$28 = function $$compile_range_initialize() { var self = this; return self.$push("Opal.Range.$new(", self.$expr(self.$start()), ", ", self.$expr(self.$finish()), ", false)") - }, TMP_InclusiveRangeNode_compile_range_initialize_30.$$arity = 0), nil) && 'compile_range_initialize'; - })($nesting[0], Opal.const_get_relative($nesting, 'RangeNode'), $nesting); + }, $InclusiveRangeNode_compile_range_initialize$28.$$arity = 0), nil) && 'compile_range_initialize'; + })($nesting[0], $$($nesting, 'RangeNode'), $nesting); (function($base, $super, $parent_nesting) { - function $ExclusiveRangeNode(){}; - var self = $ExclusiveRangeNode = $klass($base, $super, 'ExclusiveRangeNode', $ExclusiveRangeNode); + var self = $klass($base, $super, 'ExclusiveRangeNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ExclusiveRangeNode_compile_inline_31, TMP_ExclusiveRangeNode_compile_range_initialize_32; + var $nesting = [self].concat($parent_nesting), $ExclusiveRangeNode_compile_inline$29, $ExclusiveRangeNode_compile_range_initialize$30; self.$handle("erange"); - Opal.defn(self, '$compile_inline', TMP_ExclusiveRangeNode_compile_inline_31 = function $$compile_inline() { + Opal.def(self, '$compile_inline', $ExclusiveRangeNode_compile_inline$29 = function $$compile_inline() { var self = this; return self.$push("$range(", self.$expr(self.$start()), ", ", self.$expr(self.$finish()), ", true)") - }, TMP_ExclusiveRangeNode_compile_inline_31.$$arity = 0); - return (Opal.defn(self, '$compile_range_initialize', TMP_ExclusiveRangeNode_compile_range_initialize_32 = function $$compile_range_initialize() { + }, $ExclusiveRangeNode_compile_inline$29.$$arity = 0); + return (Opal.def(self, '$compile_range_initialize', $ExclusiveRangeNode_compile_range_initialize$30 = function $$compile_range_initialize() { var self = this; return self.$push("Opal.Range.$new(", self.$expr(self.$start()), ",", self.$expr(self.$finish()), ", true)") - }, TMP_ExclusiveRangeNode_compile_range_initialize_32.$$arity = 0), nil) && 'compile_range_initialize'; - })($nesting[0], Opal.const_get_relative($nesting, 'RangeNode'), $nesting); + }, $ExclusiveRangeNode_compile_range_initialize$30.$$arity = 0), nil) && 'compile_range_initialize'; + })($nesting[0], $$($nesting, 'RangeNode'), $nesting); (function($base, $super, $parent_nesting) { - function $RationalNode(){}; - var self = $RationalNode = $klass($base, $super, 'RationalNode', $RationalNode); + var self = $klass($base, $super, 'RationalNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RationalNode_compile_33; + var $nesting = [self].concat($parent_nesting), $RationalNode_compile$31; self.$handle("rational"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_RationalNode_compile_33 = function $$compile() { + return (Opal.def(self, '$compile', $RationalNode_compile$31 = function $$compile() { var self = this; return self.$push("" + "Opal.Rational.$new(" + (self.$value().$numerator()) + ", " + (self.$value().$denominator()) + ")") - }, TMP_RationalNode_compile_33.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $RationalNode_compile$31.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $ComplexNode(){}; - var self = $ComplexNode = $klass($base, $super, 'ComplexNode', $ComplexNode); + var self = $klass($base, $super, 'ComplexNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ComplexNode_compile_34; + var $nesting = [self].concat($parent_nesting), $ComplexNode_compile$32; self.$handle("complex"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_ComplexNode_compile_34 = function $$compile() { + return (Opal.def(self, '$compile', $ComplexNode_compile$32 = function $$compile() { var self = this; return self.$push("" + "Opal.Complex.$new(" + (self.$value().$real()) + ", " + (self.$value().$imag()) + ")") - }, TMP_ComplexNode_compile_34.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ComplexNode_compile$32.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/variables"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; Opal.add_stubs(['$require', '$handle', '$children', '$irb?', '$compiler', '$top?', '$scope', '$using_irb?', '$push', '$to_s', '$var_name', '$with_temp', '$property', '$wrap', '$add_local', '$expr', '$value', '$recv?', '$expr?', '$[]', '$name', '$add_ivar', '$helper', '$add_gvar', '$===', '$handle_global_match', '$handle_post_match', '$handle_pre_match', '$raise', '$index', '$class_variable_owner']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $LocalVariableNode(){}; - var self = $LocalVariableNode = $klass($base, $super, 'LocalVariableNode', $LocalVariableNode); + var self = $klass($base, $super, 'LocalVariableNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LocalVariableNode_using_irb$q_1, TMP_LocalVariableNode_compile_3; + var $nesting = [self].concat($parent_nesting), $LocalVariableNode_using_irb$ques$1, $LocalVariableNode_compile$2; self.$handle("lvar"); self.$children("var_name"); - Opal.defn(self, '$using_irb?', TMP_LocalVariableNode_using_irb$q_1 = function() { + Opal.def(self, '$using_irb?', $LocalVariableNode_using_irb$ques$1 = function() { var $a, self = this; return ($truthy($a = self.$compiler()['$irb?']()) ? self.$scope()['$top?']() : $a) - }, TMP_LocalVariableNode_using_irb$q_1.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_LocalVariableNode_compile_3 = function $$compile() { - var TMP_2, self = this; + }, $LocalVariableNode_using_irb$ques$1.$$arity = 0); + return (Opal.def(self, '$compile', $LocalVariableNode_compile$2 = function $$compile() { + var $$3, self = this; if ($truthy(self['$using_irb?']())) { - } else { + } else { return self.$push(self.$var_name().$to_s()) }; - return $send(self, 'with_temp', [], (TMP_2 = function(tmp){var self = TMP_2.$$s || this; -if (tmp == null) tmp = nil; + return $send(self, 'with_temp', [], ($$3 = function(tmp){var self = $$3.$$s || this; + + + if (tmp == null) { + tmp = nil; + }; self.$push(self.$property(self.$var_name().$to_s())); - return self.$wrap("" + "((" + (tmp) + " = Opal.irb_vars", "" + ") == null ? nil : " + (tmp) + ")");}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - }, TMP_LocalVariableNode_compile_3.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return self.$wrap("" + "((" + (tmp) + " = Opal.irb_vars", "" + ") == null ? nil : " + (tmp) + ")");}, $$3.$$s = self, $$3.$$arity = 1, $$3)); + }, $LocalVariableNode_compile$2.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $LocalAssignNode(){}; - var self = $LocalAssignNode = $klass($base, $super, 'LocalAssignNode', $LocalAssignNode); + var self = $klass($base, $super, 'LocalAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LocalAssignNode_using_irb$q_4, TMP_LocalAssignNode_compile_5; + var $nesting = [self].concat($parent_nesting), $LocalAssignNode_using_irb$ques$4, $LocalAssignNode_compile$5; self.$handle("lvasgn"); self.$children("var_name", "value"); - Opal.defn(self, '$using_irb?', TMP_LocalAssignNode_using_irb$q_4 = function() { + Opal.def(self, '$using_irb?', $LocalAssignNode_using_irb$ques$4 = function() { var $a, self = this; return ($truthy($a = self.$compiler()['$irb?']()) ? self.$scope()['$top?']() : $a) - }, TMP_LocalAssignNode_using_irb$q_4.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_LocalAssignNode_compile_5 = function $$compile() { + }, $LocalAssignNode_using_irb$ques$4.$$arity = 0); + return (Opal.def(self, '$compile', $LocalAssignNode_compile$5 = function $$compile() { var $a, $b, self = this; if ($truthy(self['$using_irb?']())) { self.$push("" + "Opal.irb_vars" + (self.$property(self.$var_name().$to_s())) + " = ") - } else { + } else { self.$add_local(self.$var_name().$to_s()); self.$push("" + (self.$var_name()) + " = "); @@ -45942,68 +52745,65 @@ if (tmp == null) tmp = nil; self.$push(self.$expr(self.$value())); if ($truthy(($truthy($a = ($truthy($b = self['$recv?']()) ? $b : self['$expr?']())) ? self.$value() : $a))) { return self.$wrap("(", ")") - } else { + } else { return nil }; - }, TMP_LocalAssignNode_compile_5.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $LocalAssignNode_compile$5.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $LocalDeclareNode(){}; - var self = $LocalDeclareNode = $klass($base, $super, 'LocalDeclareNode', $LocalDeclareNode); + var self = $klass($base, $super, 'LocalDeclareNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LocalDeclareNode_compile_6; + var $nesting = [self].concat($parent_nesting), $LocalDeclareNode_compile$6; self.$handle("lvdeclare"); self.$children("var_name"); - return (Opal.defn(self, '$compile', TMP_LocalDeclareNode_compile_6 = function $$compile() { + return (Opal.def(self, '$compile', $LocalDeclareNode_compile$6 = function $$compile() { var self = this; self.$add_local(self.$var_name().$to_s()); return nil; - }, TMP_LocalDeclareNode_compile_6.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $LocalDeclareNode_compile$6.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $InstanceVariableNode(){}; - var self = $InstanceVariableNode = $klass($base, $super, 'InstanceVariableNode', $InstanceVariableNode); + var self = $klass($base, $super, 'InstanceVariableNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InstanceVariableNode_var_name_7, TMP_InstanceVariableNode_compile_8; + var $nesting = [self].concat($parent_nesting), $InstanceVariableNode_var_name$7, $InstanceVariableNode_compile$8; self.$handle("ivar"); self.$children("name"); - Opal.defn(self, '$var_name', TMP_InstanceVariableNode_var_name_7 = function $$var_name() { + Opal.def(self, '$var_name', $InstanceVariableNode_var_name$7 = function $$var_name() { var self = this; return self.$name().$to_s()['$[]']($range(1, -1, false)) - }, TMP_InstanceVariableNode_var_name_7.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_InstanceVariableNode_compile_8 = function $$compile() { + }, $InstanceVariableNode_var_name$7.$$arity = 0); + return (Opal.def(self, '$compile', $InstanceVariableNode_compile$8 = function $$compile() { var self = this, name = nil; name = self.$property(self.$var_name()); self.$add_ivar(name); return self.$push("" + "self" + (name)); - }, TMP_InstanceVariableNode_compile_8.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $InstanceVariableNode_compile$8.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $InstanceAssignNode(){}; - var self = $InstanceAssignNode = $klass($base, $super, 'InstanceAssignNode', $InstanceAssignNode); + var self = $klass($base, $super, 'InstanceAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InstanceAssignNode_var_name_9, TMP_InstanceAssignNode_compile_10; + var $nesting = [self].concat($parent_nesting), $InstanceAssignNode_var_name$9, $InstanceAssignNode_compile$10; self.$handle("ivasgn"); self.$children("name", "value"); - Opal.defn(self, '$var_name', TMP_InstanceAssignNode_var_name_9 = function $$var_name() { + Opal.def(self, '$var_name', $InstanceAssignNode_var_name$9 = function $$var_name() { var self = this; return self.$name().$to_s()['$[]']($range(1, -1, false)) - }, TMP_InstanceAssignNode_var_name_9.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_InstanceAssignNode_compile_10 = function $$compile() { + }, $InstanceAssignNode_var_name$9.$$arity = 0); + return (Opal.def(self, '$compile', $InstanceAssignNode_compile$10 = function $$compile() { var $a, $b, self = this, name = nil; @@ -46012,27 +52812,26 @@ if (tmp == null) tmp = nil; self.$push(self.$expr(self.$value())); if ($truthy(($truthy($a = ($truthy($b = self['$recv?']()) ? $b : self['$expr?']())) ? self.$value() : $a))) { return self.$wrap("(", ")") - } else { + } else { return nil }; - }, TMP_InstanceAssignNode_compile_10.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $InstanceAssignNode_compile$10.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $GlobalVariableNode(){}; - var self = $GlobalVariableNode = $klass($base, $super, 'GlobalVariableNode', $GlobalVariableNode); + var self = $klass($base, $super, 'GlobalVariableNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_GlobalVariableNode_var_name_11, TMP_GlobalVariableNode_compile_12; + var $nesting = [self].concat($parent_nesting), $GlobalVariableNode_var_name$11, $GlobalVariableNode_compile$12; self.$handle("gvar"); self.$children("name"); - Opal.defn(self, '$var_name', TMP_GlobalVariableNode_var_name_11 = function $$var_name() { + Opal.def(self, '$var_name', $GlobalVariableNode_var_name$11 = function $$var_name() { var self = this; return self.$name().$to_s()['$[]']($range(1, -1, false)) - }, TMP_GlobalVariableNode_var_name_11.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_GlobalVariableNode_compile_12 = function $$compile() { + }, $GlobalVariableNode_var_name$11.$$arity = 0); + return (Opal.def(self, '$compile', $GlobalVariableNode_compile$12 = function $$compile() { var self = this, name = nil; @@ -46040,21 +52839,20 @@ if (tmp == null) tmp = nil; name = self.$property(self.$var_name()); self.$add_gvar(name); return self.$push("" + "$gvars" + (name)); - }, TMP_GlobalVariableNode_compile_12.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $GlobalVariableNode_compile$12.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $BackRefNode(){}; - var self = $BackRefNode = $klass($base, $super, 'BackRefNode', $BackRefNode); + var self = $klass($base, $super, 'BackRefNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BackRefNode_compile_13, TMP_BackRefNode_handle_global_match_15, TMP_BackRefNode_handle_pre_match_17, TMP_BackRefNode_handle_post_match_19; + var $nesting = [self].concat($parent_nesting), $BackRefNode_compile$13, $BackRefNode_handle_global_match$14, $BackRefNode_handle_pre_match$16, $BackRefNode_handle_post_match$18; self.$handle("back_ref"); - Opal.defn(self, '$compile', TMP_BackRefNode_compile_13 = function $$compile() { - var self = this, $iter = TMP_BackRefNode_compile_13.$$p, $yield = $iter || nil, $case = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$compile', $BackRefNode_compile$13 = function $$compile() { + var $iter = $BackRefNode_compile$13.$$p, $yield = $iter || nil, self = this, $case = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_BackRefNode_compile_13.$$p = null; + if ($iter) $BackRefNode_compile$13.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; @@ -46065,49 +52863,63 @@ if (tmp == null) tmp = nil; if ("&"['$===']($case)) {return self.$handle_global_match()} else if ("'"['$===']($case)) {return self.$handle_post_match()} else if ("`"['$===']($case)) {return self.$handle_pre_match()} - else if ("+"['$===']($case)) {return $send(self, Opal.find_super_dispatcher(self, 'compile', TMP_BackRefNode_compile_13, false), $zuper, $iter)} - else {return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError'))}})(); - }, TMP_BackRefNode_compile_13.$$arity = 0); - - Opal.defn(self, '$handle_global_match', TMP_BackRefNode_handle_global_match_15 = function $$handle_global_match() { - var TMP_14, self = this; - - return $send(self, 'with_temp', [], (TMP_14 = function(tmp){var self = TMP_14.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](0))")}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)) - }, TMP_BackRefNode_handle_global_match_15.$$arity = 0); - - Opal.defn(self, '$handle_pre_match', TMP_BackRefNode_handle_pre_match_17 = function $$handle_pre_match() { - var TMP_16, self = this; - - return $send(self, 'with_temp', [], (TMP_16 = function(tmp){var self = TMP_16.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$pre_match())")}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16)) - }, TMP_BackRefNode_handle_pre_match_17.$$arity = 0); - return (Opal.defn(self, '$handle_post_match', TMP_BackRefNode_handle_post_match_19 = function $$handle_post_match() { - var TMP_18, self = this; - - return $send(self, 'with_temp', [], (TMP_18 = function(tmp){var self = TMP_18.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$post_match())")}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18)) - }, TMP_BackRefNode_handle_post_match_19.$$arity = 0), nil) && 'handle_post_match'; - })($nesting[0], Opal.const_get_relative($nesting, 'GlobalVariableNode'), $nesting); + else if ("+"['$===']($case)) {return $send(self, Opal.find_super_dispatcher(self, 'compile', $BackRefNode_compile$13, false), $zuper, $iter)} + else {return self.$raise($$($nesting, 'NotImplementedError'))}})(); + }, $BackRefNode_compile$13.$$arity = 0); + + Opal.def(self, '$handle_global_match', $BackRefNode_handle_global_match$14 = function $$handle_global_match() { + var $$15, self = this; + + return $send(self, 'with_temp', [], ($$15 = function(tmp){var self = $$15.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](0))");}, $$15.$$s = self, $$15.$$arity = 1, $$15)) + }, $BackRefNode_handle_global_match$14.$$arity = 0); + + Opal.def(self, '$handle_pre_match', $BackRefNode_handle_pre_match$16 = function $$handle_pre_match() { + var $$17, self = this; + + return $send(self, 'with_temp', [], ($$17 = function(tmp){var self = $$17.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$pre_match())");}, $$17.$$s = self, $$17.$$arity = 1, $$17)) + }, $BackRefNode_handle_pre_match$16.$$arity = 0); + return (Opal.def(self, '$handle_post_match', $BackRefNode_handle_post_match$18 = function $$handle_post_match() { + var $$19, self = this; + + return $send(self, 'with_temp', [], ($$19 = function(tmp){var self = $$19.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$post_match())");}, $$19.$$s = self, $$19.$$arity = 1, $$19)) + }, $BackRefNode_handle_post_match$18.$$arity = 0), nil) && 'handle_post_match'; + })($nesting[0], $$($nesting, 'GlobalVariableNode'), $nesting); (function($base, $super, $parent_nesting) { - function $GlobalAssignNode(){}; - var self = $GlobalAssignNode = $klass($base, $super, 'GlobalAssignNode', $GlobalAssignNode); + var self = $klass($base, $super, 'GlobalAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_GlobalAssignNode_var_name_20, TMP_GlobalAssignNode_compile_21; + var $nesting = [self].concat($parent_nesting), $GlobalAssignNode_var_name$20, $GlobalAssignNode_compile$21; self.$handle("gvasgn"); self.$children("name", "value"); - Opal.defn(self, '$var_name', TMP_GlobalAssignNode_var_name_20 = function $$var_name() { + Opal.def(self, '$var_name', $GlobalAssignNode_var_name$20 = function $$var_name() { var self = this; return self.$name().$to_s()['$[]']($range(1, -1, false)) - }, TMP_GlobalAssignNode_var_name_20.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_GlobalAssignNode_compile_21 = function $$compile() { + }, $GlobalAssignNode_var_name$20.$$arity = 0); + return (Opal.def(self, '$compile', $GlobalAssignNode_compile$21 = function $$compile() { var $a, $b, self = this, name = nil; @@ -46117,207 +52929,210 @@ if (tmp == null) tmp = nil; self.$push(self.$expr(self.$value())); if ($truthy(($truthy($a = ($truthy($b = self['$recv?']()) ? $b : self['$expr?']())) ? self.$value() : $a))) { return self.$wrap("(", ")") - } else { + } else { return nil }; - }, TMP_GlobalAssignNode_compile_21.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $GlobalAssignNode_compile$21.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $NthrefNode(){}; - var self = $NthrefNode = $klass($base, $super, 'NthrefNode', $NthrefNode); + var self = $klass($base, $super, 'NthrefNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NthrefNode_compile_23; + var $nesting = [self].concat($parent_nesting), $NthrefNode_compile$22; self.$handle("nth_ref"); self.$children("index"); - return (Opal.defn(self, '$compile', TMP_NthrefNode_compile_23 = function $$compile() { - var TMP_22, self = this; + return (Opal.def(self, '$compile', $NthrefNode_compile$22 = function $$compile() { + var $$23, self = this; self.$helper("gvars"); - return $send(self, 'with_temp', [], (TMP_22 = function(tmp){var self = TMP_22.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](" + (self.$index()) + "))")}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)); - }, TMP_NthrefNode_compile_23.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return $send(self, 'with_temp', [], ($$23 = function(tmp){var self = $$23.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](" + (self.$index()) + "))");}, $$23.$$s = self, $$23.$$arity = 1, $$23)); + }, $NthrefNode_compile$22.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $ClassVariableNode(){}; - var self = $ClassVariableNode = $klass($base, $super, 'ClassVariableNode', $ClassVariableNode); + var self = $klass($base, $super, 'ClassVariableNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ClassVariableNode_compile_25; + var $nesting = [self].concat($parent_nesting), $ClassVariableNode_compile$24; self.$handle("cvar"); self.$children("name"); - return (Opal.defn(self, '$compile', TMP_ClassVariableNode_compile_25 = function $$compile() { - var TMP_24, self = this; - - return $send(self, 'with_temp', [], (TMP_24 = function(tmp){var self = TMP_24.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "((" + (tmp) + " = " + (self.$class_variable_owner()) + ".$$cvars['" + (self.$name()) + "']) == null ? nil : " + (tmp) + ")")}, TMP_24.$$s = self, TMP_24.$$arity = 1, TMP_24)) - }, TMP_ClassVariableNode_compile_25.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return (Opal.def(self, '$compile', $ClassVariableNode_compile$24 = function $$compile() { + var $$25, self = this; + + return $send(self, 'with_temp', [], ($$25 = function(tmp){var self = $$25.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "((" + (tmp) + " = " + (self.$class_variable_owner()) + ".$$cvars['" + (self.$name()) + "']) == null ? nil : " + (tmp) + ")");}, $$25.$$s = self, $$25.$$arity = 1, $$25)) + }, $ClassVariableNode_compile$24.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $ClassVarAssignNode(){}; - var self = $ClassVarAssignNode = $klass($base, $super, 'ClassVarAssignNode', $ClassVarAssignNode); + var self = $klass($base, $super, 'ClassVarAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ClassVarAssignNode_compile_26; + var $nesting = [self].concat($parent_nesting), $ClassVarAssignNode_compile$26; self.$handle("cvasgn"); self.$children("name", "value"); - return (Opal.defn(self, '$compile', TMP_ClassVarAssignNode_compile_26 = function $$compile() { + return (Opal.def(self, '$compile', $ClassVarAssignNode_compile$26 = function $$compile() { var self = this; return self.$push("" + "(Opal.class_variable_set(" + (self.$class_variable_owner()) + ", '" + (self.$name()) + "', ", self.$expr(self.$value()), "))") - }, TMP_ClassVarAssignNode_compile_26.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ClassVarAssignNode_compile$26.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/constants"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$handle', '$children', '$magical_data_const?', '$push', '$const_scope', '$recv', '$name', '$eval?', '$compiler', '$nil?', '$==', '$eof_content', '$base', '$expr', '$value']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ConstNode(){}; - var self = $ConstNode = $klass($base, $super, 'ConstNode', $ConstNode); + var self = $klass($base, $super, 'ConstNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConstNode_compile_1, TMP_ConstNode_magical_data_const$q_2; + var $nesting = [self].concat($parent_nesting), $ConstNode_compile$1, $ConstNode_magical_data_const$ques$2; self.$handle("const"); self.$children("const_scope", "name"); - Opal.defn(self, '$compile', TMP_ConstNode_compile_1 = function $$compile() { + Opal.def(self, '$compile', $ConstNode_compile$1 = function $$compile() { var self = this; if ($truthy(self['$magical_data_const?']())) { return self.$push("$__END__") } else if ($truthy(self.$const_scope())) { - return self.$push("Opal.const_get_qualified(", self.$recv(self.$const_scope()), "" + ", '" + (self.$name()) + "')") + return self.$push("$$$(", self.$recv(self.$const_scope()), "" + ", '" + (self.$name()) + "')") } else if ($truthy(self.$compiler()['$eval?']())) { - return self.$push("" + "Opal.const_get_relative($nesting, '" + (self.$name()) + "')") - } else { - return self.$push("" + "Opal.const_get_relative($nesting, '" + (self.$name()) + "')") + return self.$push("" + "$$($nesting, '" + (self.$name()) + "')") + } else { + return self.$push("" + "$$($nesting, '" + (self.$name()) + "')") } - }, TMP_ConstNode_compile_1.$$arity = 0); - return (Opal.defn(self, '$magical_data_const?', TMP_ConstNode_magical_data_const$q_2 = function() { + }, $ConstNode_compile$1.$$arity = 0); + return (Opal.def(self, '$magical_data_const?', $ConstNode_magical_data_const$ques$2 = function() { var $a, $b, self = this; return ($truthy($a = ($truthy($b = self.$const_scope()['$nil?']()) ? self.$name()['$==']("DATA") : $b)) ? self.$compiler().$eof_content() : $a) - }, TMP_ConstNode_magical_data_const$q_2.$$arity = 0), nil) && 'magical_data_const?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ConstNode_magical_data_const$ques$2.$$arity = 0), nil) && 'magical_data_const?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $CbaseNode(){}; - var self = $CbaseNode = $klass($base, $super, 'CbaseNode', $CbaseNode); + var self = $klass($base, $super, 'CbaseNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CbaseNode_compile_3; + var $nesting = [self].concat($parent_nesting), $CbaseNode_compile$3; self.$handle("cbase"); - return (Opal.defn(self, '$compile', TMP_CbaseNode_compile_3 = function $$compile() { + return (Opal.def(self, '$compile', $CbaseNode_compile$3 = function $$compile() { var self = this; return self.$push("'::'") - }, TMP_CbaseNode_compile_3.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $CbaseNode_compile$3.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $ConstAssignNode(){}; - var self = $ConstAssignNode = $klass($base, $super, 'ConstAssignNode', $ConstAssignNode); + var self = $klass($base, $super, 'ConstAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConstAssignNode_compile_4; + var $nesting = [self].concat($parent_nesting), $ConstAssignNode_compile$4; self.$handle("casgn"); self.$children("base", "name", "value"); - return (Opal.defn(self, '$compile', TMP_ConstAssignNode_compile_4 = function $$compile() { + return (Opal.def(self, '$compile', $ConstAssignNode_compile$4 = function $$compile() { var self = this; if ($truthy(self.$base())) { return self.$push("Opal.const_set(", self.$expr(self.$base()), "" + ", '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") - } else { + } else { return self.$push("" + "Opal.const_set($nesting[0], '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") } - }, TMP_ConstAssignNode_compile_4.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ConstAssignNode_compile$4.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["pathname"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $module = Opal.module; Opal.add_stubs(['$require', '$include', '$quote', '$===', '$to_s', '$path', '$respond_to?', '$to_path', '$is_a?', '$nil?', '$raise', '$class', '$==', '$attr_reader', '$!', '$relative?', '$chop_basename', '$basename', '$=~', '$new', '$source', '$[]', '$rindex', '$sub', '$absolute?', '$expand_path', '$plus', '$unshift', '$length', '$!=', '$empty?', '$first', '$shift', '$+', '$join', '$dirname', '$pop', '$reverse_each', '$directory?', '$extname', '$<=>', '$nonzero?', '$proc', '$casecmp', '$cleanpath', '$inspect', '$include?', '$fill', '$map', '$entries']); self.$require("corelib/comparable"); (function($base, $super, $parent_nesting) { - function $Pathname(){}; - var self = $Pathname = $klass($base, $super, 'Pathname', $Pathname); + var self = $klass($base, $super, 'Pathname'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Pathname_initialize_1, TMP_Pathname_$eq$eq_2, TMP_Pathname_absolute$q_3, TMP_Pathname_relative$q_4, TMP_Pathname_chop_basename_5, TMP_Pathname_root$q_6, TMP_Pathname_parent_7, TMP_Pathname_sub_8, TMP_Pathname_cleanpath_9, TMP_Pathname_to_path_10, TMP_Pathname_hash_11, TMP_Pathname_expand_path_12, TMP_Pathname_$_13, TMP_Pathname_plus_14, TMP_Pathname_join_16, TMP_Pathname_split_17, TMP_Pathname_dirname_18, TMP_Pathname_basename_19, TMP_Pathname_directory$q_20, TMP_Pathname_extname_21, TMP_Pathname_$lt$eq$gt_22, TMP_Pathname_23, TMP_Pathname_24, TMP_Pathname_relative_path_from_25, TMP_Pathname_entries_27; + var $nesting = [self].concat($parent_nesting), $Pathname_initialize$1, $Pathname_$eq_eq$2, $Pathname_absolute$ques$3, $Pathname_relative$ques$4, $Pathname_chop_basename$5, $Pathname_root$ques$6, $Pathname_parent$7, $Pathname_sub$8, $Pathname_cleanpath$9, $Pathname_to_path$10, $Pathname_hash$11, $Pathname_expand_path$12, $Pathname_$plus$13, $Pathname_plus$14, $Pathname_join$15, $Pathname_split$17, $Pathname_dirname$18, $Pathname_basename$19, $Pathname_directory$ques$20, $Pathname_extname$21, $Pathname_$lt_eq_gt$22, $Pathname$23, $Pathname$24, $Pathname_relative_path_from$25, $Pathname_entries$26; - def.path = nil; + self.$$prototype.path = nil; - self.$include(Opal.const_get_relative($nesting, 'Comparable')); - Opal.const_set($nesting[0], 'SEPARATOR_PAT', new RegExp(Opal.const_get_relative($nesting, 'Regexp').$quote(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'File'), 'SEPARATOR')))); + self.$include($$($nesting, 'Comparable')); + Opal.const_set($nesting[0], 'SEPARATOR_PAT', new RegExp($$($nesting, 'Regexp').$quote($$$($$($nesting, 'File'), 'SEPARATOR')))); - Opal.defn(self, '$initialize', TMP_Pathname_initialize_1 = function $$initialize(path) { + Opal.def(self, '$initialize', $Pathname_initialize$1 = function $$initialize(path) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Pathname')['$==='](path))) { + if ($truthy($$($nesting, 'Pathname')['$==='](path))) { self.path = path.$path().$to_s() } else if ($truthy(path['$respond_to?']("to_path"))) { self.path = path.$to_path() - } else if ($truthy(path['$is_a?'](Opal.const_get_relative($nesting, 'String')))) { + } else if ($truthy(path['$is_a?']($$($nesting, 'String')))) { self.path = path } else if ($truthy(path['$nil?']())) { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "no implicit conversion of nil into String") - } else { - self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "no implicit conversion of " + (path.$class()) + " into String") + self.$raise($$($nesting, 'TypeError'), "no implicit conversion of nil into String") + } else { + self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (path.$class()) + " into String") }; if (self.path['$==']("\u0000")) { - return self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')) - } else { + return self.$raise($$($nesting, 'ArgumentError')) + } else { return nil }; - }, TMP_Pathname_initialize_1.$$arity = 1); + }, $Pathname_initialize$1.$$arity = 1); self.$attr_reader("path"); - Opal.defn(self, '$==', TMP_Pathname_$eq$eq_2 = function(other) { + Opal.def(self, '$==', $Pathname_$eq_eq$2 = function(other) { var self = this; return other.$path()['$=='](self.path) - }, TMP_Pathname_$eq$eq_2.$$arity = 1); + }, $Pathname_$eq_eq$2.$$arity = 1); - Opal.defn(self, '$absolute?', TMP_Pathname_absolute$q_3 = function() { + Opal.def(self, '$absolute?', $Pathname_absolute$ques$3 = function() { var self = this; return self['$relative?']()['$!']() - }, TMP_Pathname_absolute$q_3.$$arity = 0); + }, $Pathname_absolute$ques$3.$$arity = 0); - Opal.defn(self, '$relative?', TMP_Pathname_relative$q_4 = function() { + Opal.def(self, '$relative?', $Pathname_relative$ques$4 = function() { var $a, $b, $c, self = this, path = nil, r = nil; @@ -46326,27 +53141,27 @@ Opal.modules["pathname"] = function(Opal) { $c = r, $b = Opal.to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c }; return path['$=='](""); - }, TMP_Pathname_relative$q_4.$$arity = 0); + }, $Pathname_relative$ques$4.$$arity = 0); - Opal.defn(self, '$chop_basename', TMP_Pathname_chop_basename_5 = function $$chop_basename(path) { + Opal.def(self, '$chop_basename', $Pathname_chop_basename$5 = function $$chop_basename(path) { var self = this, base = nil; - base = Opal.const_get_relative($nesting, 'File').$basename(path); - if ($truthy(Opal.const_get_relative($nesting, 'Regexp').$new("" + "^" + (Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { + base = $$($nesting, 'File').$basename(path); + if ($truthy($$($nesting, 'Regexp').$new("" + "^" + ($$$($$($nesting, 'Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { return nil - } else { + } else { return [path['$[]'](0, path.$rindex(base)), base] }; - }, TMP_Pathname_chop_basename_5.$$arity = 1); + }, $Pathname_chop_basename$5.$$arity = 1); - Opal.defn(self, '$root?', TMP_Pathname_root$q_6 = function() { + Opal.def(self, '$root?', $Pathname_root$ques$6 = function() { var self = this; return self.path['$==']("/") - }, TMP_Pathname_root$q_6.$$arity = 0); + }, $Pathname_root$ques$6.$$arity = 0); - Opal.defn(self, '$parent', TMP_Pathname_parent_7 = function $$parent() { + Opal.def(self, '$parent', $Pathname_parent$7 = function $$parent() { var self = this, new_path = nil; @@ -46354,60 +53169,59 @@ Opal.modules["pathname"] = function(Opal) { if (new_path['$==']("")) { new_path = (function() {if ($truthy(self['$absolute?']())) { return "/" - } else { + } else { return "." }; return nil; })()}; - return Opal.const_get_relative($nesting, 'Pathname').$new(new_path); - }, TMP_Pathname_parent_7.$$arity = 0); + return $$($nesting, 'Pathname').$new(new_path); + }, $Pathname_parent$7.$$arity = 0); - Opal.defn(self, '$sub', TMP_Pathname_sub_8 = function $$sub($a_rest) { - var self = this, args; + Opal.def(self, '$sub', $Pathname_sub$8 = function $$sub($a) { + var $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return Opal.const_get_relative($nesting, 'Pathname').$new($send(self.path, 'sub', Opal.to_a(args))) - }, TMP_Pathname_sub_8.$$arity = -1); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $$($nesting, 'Pathname').$new($send(self.path, 'sub', Opal.to_a(args))); + }, $Pathname_sub$8.$$arity = -1); - Opal.defn(self, '$cleanpath', TMP_Pathname_cleanpath_9 = function $$cleanpath() { + Opal.def(self, '$cleanpath', $Pathname_cleanpath$9 = function $$cleanpath() { var self = this; return Opal.normalize(self.path) - }, TMP_Pathname_cleanpath_9.$$arity = 0); + }, $Pathname_cleanpath$9.$$arity = 0); - Opal.defn(self, '$to_path', TMP_Pathname_to_path_10 = function $$to_path() { + Opal.def(self, '$to_path', $Pathname_to_path$10 = function $$to_path() { var self = this; return self.path - }, TMP_Pathname_to_path_10.$$arity = 0); + }, $Pathname_to_path$10.$$arity = 0); - Opal.defn(self, '$hash', TMP_Pathname_hash_11 = function $$hash() { + Opal.def(self, '$hash', $Pathname_hash$11 = function $$hash() { var self = this; return self.path - }, TMP_Pathname_hash_11.$$arity = 0); + }, $Pathname_hash$11.$$arity = 0); - Opal.defn(self, '$expand_path', TMP_Pathname_expand_path_12 = function $$expand_path() { + Opal.def(self, '$expand_path', $Pathname_expand_path$12 = function $$expand_path() { var self = this; - return Opal.const_get_relative($nesting, 'File').$expand_path(self.path) - }, TMP_Pathname_expand_path_12.$$arity = 0); + return $$($nesting, 'Pathname').$new($$($nesting, 'File').$expand_path(self.path)) + }, $Pathname_expand_path$12.$$arity = 0); - Opal.defn(self, '$+', TMP_Pathname_$_13 = function(other) { + Opal.def(self, '$+', $Pathname_$plus$13 = function(other) { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Pathname')['$==='](other))) { - } else { - other = Opal.const_get_relative($nesting, 'Pathname').$new(other) + if ($truthy($$($nesting, 'Pathname')['$==='](other))) { + } else { + other = $$($nesting, 'Pathname').$new(other) }; - return Opal.const_get_relative($nesting, 'Pathname').$new(self.$plus(self.path, other.$to_s())); - }, TMP_Pathname_$_13.$$arity = 1); + return $$($nesting, 'Pathname').$new(self.$plus(self.path, other.$to_s())); + }, $Pathname_$plus$13.$$arity = 1); - Opal.defn(self, '$plus', TMP_Pathname_plus_14 = function $$plus(path1, path2) { + Opal.def(self, '$plus', $Pathname_plus$14 = function $$plus(path1, path2) { var $a, $b, $c, self = this, prefix2 = nil, index_list2 = nil, basename_list2 = nil, r2 = nil, basename2 = nil, prefix1 = nil, r1 = nil, basename1 = nil, suffix2 = nil; @@ -46431,7 +53245,7 @@ Opal.modules["pathname"] = function(Opal) { basename_list2.$shift(); }; if ($truthy((r1 = self.$chop_basename(prefix1)))) { - } else { + } else { break; }; $c = r1, $b = Opal.to_ary($c), (prefix1 = ($b[0] == null ? nil : $b[0])), (basename1 = ($b[1] == null ? nil : $b[1])), $c; @@ -46445,7 +53259,7 @@ Opal.modules["pathname"] = function(Opal) { basename_list2.$shift(); }; r1 = self.$chop_basename(prefix1); - if ($truthy(($truthy($a = r1['$!']()) ? new RegExp(Opal.const_get_relative($nesting, 'SEPARATOR_PAT'))['$=~'](Opal.const_get_relative($nesting, 'File').$basename(prefix1)) : $a))) { + if ($truthy(($truthy($a = r1['$!']()) ? new RegExp($$($nesting, 'SEPARATOR_PAT'))['$=~']($$($nesting, 'File').$basename(prefix1)) : $a))) { while ($truthy(($truthy($b = basename_list2['$empty?']()['$!']()) ? basename_list2.$first()['$==']("..") : $b))) { index_list2.$shift(); @@ -46455,104 +53269,124 @@ Opal.modules["pathname"] = function(Opal) { suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false)); if ($truthy(r1)) { - return Opal.const_get_relative($nesting, 'File').$join(prefix1, suffix2) - } else { + return $$($nesting, 'File').$join(prefix1, suffix2) + } else { return $rb_plus(prefix1, suffix2) }; } else if ($truthy(r1)) { return prefix1 - } else { - return Opal.const_get_relative($nesting, 'File').$dirname(prefix1) + } else { + return $$($nesting, 'File').$dirname(prefix1) }; - }, TMP_Pathname_plus_14.$$arity = 2); + }, $Pathname_plus$14.$$arity = 2); - Opal.defn(self, '$join', TMP_Pathname_join_16 = function $$join($a_rest) {try { + Opal.def(self, '$join', $Pathname_join$15 = function $$join($a) {try { - var TMP_15, self = this, args, result = nil; + var $post_args, args, $$16, self = this, result = nil; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if ($truthy(args['$empty?']())) { return self}; result = args.$pop(); - if ($truthy(Opal.const_get_relative($nesting, 'Pathname')['$==='](result))) { - } else { - result = Opal.const_get_relative($nesting, 'Pathname').$new(result) + if ($truthy($$($nesting, 'Pathname')['$==='](result))) { + } else { + result = $$($nesting, 'Pathname').$new(result) }; if ($truthy(result['$absolute?']())) { return result}; - $send(args, 'reverse_each', [], (TMP_15 = function(arg){var self = TMP_15.$$s || this; -if (arg == null) arg = nil; + $send(args, 'reverse_each', [], ($$16 = function(arg){var self = $$16.$$s || this; + - if ($truthy(Opal.const_get_relative($nesting, 'Pathname')['$==='](arg))) { - } else { - arg = Opal.const_get_relative($nesting, 'Pathname').$new(arg) + + if (arg == null) { + arg = nil; + }; + if ($truthy($$($nesting, 'Pathname')['$==='](arg))) { + } else { + arg = $$($nesting, 'Pathname').$new(arg) }; result = $rb_plus(arg, result); if ($truthy(result['$absolute?']())) { Opal.ret(result) - } else { + } else { return nil - };}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)); + };}, $$16.$$s = self, $$16.$$arity = 1, $$16)); return $rb_plus(self, result); } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_Pathname_join_16.$$arity = -1); + }, $Pathname_join$15.$$arity = -1); - Opal.defn(self, '$split', TMP_Pathname_split_17 = function $$split() { + Opal.def(self, '$split', $Pathname_split$17 = function $$split() { var self = this; return [self.$dirname(), self.$basename()] - }, TMP_Pathname_split_17.$$arity = 0); + }, $Pathname_split$17.$$arity = 0); - Opal.defn(self, '$dirname', TMP_Pathname_dirname_18 = function $$dirname() { + Opal.def(self, '$dirname', $Pathname_dirname$18 = function $$dirname() { var self = this; - return Opal.const_get_relative($nesting, 'Pathname').$new(Opal.const_get_relative($nesting, 'File').$dirname(self.path)) - }, TMP_Pathname_dirname_18.$$arity = 0); + return $$($nesting, 'Pathname').$new($$($nesting, 'File').$dirname(self.path)) + }, $Pathname_dirname$18.$$arity = 0); - Opal.defn(self, '$basename', TMP_Pathname_basename_19 = function $$basename() { + Opal.def(self, '$basename', $Pathname_basename$19 = function $$basename() { var self = this; - return Opal.const_get_relative($nesting, 'Pathname').$new(Opal.const_get_relative($nesting, 'File').$basename(self.path)) - }, TMP_Pathname_basename_19.$$arity = 0); + return $$($nesting, 'Pathname').$new($$($nesting, 'File').$basename(self.path)) + }, $Pathname_basename$19.$$arity = 0); - Opal.defn(self, '$directory?', TMP_Pathname_directory$q_20 = function() { + Opal.def(self, '$directory?', $Pathname_directory$ques$20 = function() { var self = this; - return Opal.const_get_relative($nesting, 'File')['$directory?'](self.path) - }, TMP_Pathname_directory$q_20.$$arity = 0); + return $$($nesting, 'File')['$directory?'](self.path) + }, $Pathname_directory$ques$20.$$arity = 0); - Opal.defn(self, '$extname', TMP_Pathname_extname_21 = function $$extname() { + Opal.def(self, '$extname', $Pathname_extname$21 = function $$extname() { var self = this; - return Opal.const_get_relative($nesting, 'File').$extname(self.path) - }, TMP_Pathname_extname_21.$$arity = 0); + return $$($nesting, 'File').$extname(self.path) + }, $Pathname_extname$21.$$arity = 0); - Opal.defn(self, '$<=>', TMP_Pathname_$lt$eq$gt_22 = function(other) { + Opal.def(self, '$<=>', $Pathname_$lt_eq_gt$22 = function(other) { var self = this; return self.$path()['$<=>'](other.$path()) - }, TMP_Pathname_$lt$eq$gt_22.$$arity = 1); + }, $Pathname_$lt_eq_gt$22.$$arity = 1); Opal.alias(self, "eql?", "=="); Opal.alias(self, "===", "=="); Opal.alias(self, "to_str", "to_path"); Opal.alias(self, "to_s", "to_path"); - Opal.const_set($nesting[0], 'SAME_PATHS', (function() {if ($truthy(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'File'), 'FNM_SYSCASE')['$nonzero?']())) { - return $send(self, 'proc', [], (TMP_Pathname_23 = function(a, b){var self = TMP_Pathname_23.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - return a.$casecmp(b)['$=='](0)}, TMP_Pathname_23.$$s = self, TMP_Pathname_23.$$arity = 2, TMP_Pathname_23)) - } else { - return $send(self, 'proc', [], (TMP_Pathname_24 = function(a, b){var self = TMP_Pathname_24.$$s || this; -if (a == null) a = nil;if (b == null) b = nil; - return a['$=='](b)}, TMP_Pathname_24.$$s = self, TMP_Pathname_24.$$arity = 2, TMP_Pathname_24)) + Opal.const_set($nesting[0], 'SAME_PATHS', (function() {if ($truthy($$$($$($nesting, 'File'), 'FNM_SYSCASE')['$nonzero?']())) { + return $send(self, 'proc', [], ($Pathname$23 = function(a, b){var self = $Pathname$23.$$s || this; + + + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + return a.$casecmp(b)['$=='](0);}, $Pathname$23.$$s = self, $Pathname$23.$$arity = 2, $Pathname$23)) + } else { + return $send(self, 'proc', [], ($Pathname$24 = function(a, b){var self = $Pathname$24.$$s || this; + + + + if (a == null) { + a = nil; + }; + + if (b == null) { + b = nil; + }; + return a['$=='](b);}, $Pathname$24.$$s = self, $Pathname$24.$$arity = 2, $Pathname$24)) }; return nil; })()); - Opal.defn(self, '$relative_path_from', TMP_Pathname_relative_path_from_25 = function $$relative_path_from(base_directory) { + Opal.def(self, '$relative_path_from', $Pathname_relative_path_from$25 = function $$relative_path_from(base_directory) { var $a, $b, $c, self = this, dest_directory = nil, dest_prefix = nil, dest_names = nil, r = nil, basename = nil, base_prefix = nil, base_names = nil, relpath_names = nil; @@ -46574,192 +53408,196 @@ if (a == null) a = nil;if (b == null) b = nil; if ($truthy(basename['$!=']("."))) { base_names.$unshift(basename)}; }; - if ($truthy(Opal.const_get_relative($nesting, 'SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) + if ($truthy($$($nesting, 'SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { + } else { + self.$raise($$($nesting, 'ArgumentError'), "" + "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) }; - while ($truthy(($truthy($b = ($truthy($c = dest_names['$empty?']()['$!']()) ? base_names['$empty?']()['$!']() : $c)) ? Opal.const_get_relative($nesting, 'SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first()) : $b))) { + while ($truthy(($truthy($b = ($truthy($c = dest_names['$empty?']()['$!']()) ? base_names['$empty?']()['$!']() : $c)) ? $$($nesting, 'SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first()) : $b))) { dest_names.$shift(); base_names.$shift(); }; if ($truthy(base_names['$include?'](".."))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "base_directory has ..: " + (base_directory.$inspect()))}; + self.$raise($$($nesting, 'ArgumentError'), "" + "base_directory has ..: " + (base_directory.$inspect()))}; base_names.$fill(".."); relpath_names = $rb_plus(base_names, dest_names); if ($truthy(relpath_names['$empty?']())) { - return Opal.const_get_relative($nesting, 'Pathname').$new(".") - } else { - return Opal.const_get_relative($nesting, 'Pathname').$new($send(Opal.const_get_relative($nesting, 'File'), 'join', Opal.to_a(relpath_names))) + return $$($nesting, 'Pathname').$new(".") + } else { + return $$($nesting, 'Pathname').$new($send($$($nesting, 'File'), 'join', Opal.to_a(relpath_names))) }; - }, TMP_Pathname_relative_path_from_25.$$arity = 1); - return (Opal.defn(self, '$entries', TMP_Pathname_entries_27 = function $$entries() { - var TMP_26, self = this; + }, $Pathname_relative_path_from$25.$$arity = 1); + return (Opal.def(self, '$entries', $Pathname_entries$26 = function $$entries() { + var $$27, self = this; + + return $send($$($nesting, 'Dir').$entries(self.path), 'map', [], ($$27 = function(f){var self = $$27.$$s || this; - return $send(Opal.const_get_relative($nesting, 'Dir').$entries(self.path), 'map', [], (TMP_26 = function(f){var self = TMP_26.$$s || this; -if (f == null) f = nil; - return self.$class().$new(f)}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26)) - }, TMP_Pathname_entries_27.$$arity = 0), nil) && 'entries'; + + + if (f == null) { + f = nil; + }; + return self.$class().$new(f);}, $$27.$$s = self, $$27.$$arity = 1, $$27)) + }, $Pathname_entries$26.$$arity = 0), nil) && 'entries'; })($nesting[0], null, $nesting); return (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_Pathname_28; + var $nesting = [self].concat($parent_nesting), $Kernel_Pathname$28; - Opal.defn(self, '$Pathname', TMP_Kernel_Pathname_28 = function $$Pathname(path) { + Opal.def(self, '$Pathname', $Kernel_Pathname$28 = function $$Pathname(path) { var self = this; - return Opal.const_get_relative($nesting, 'Pathname').$new(path) - }, TMP_Kernel_Pathname_28.$$arity = 1) + return $$($nesting, 'Pathname').$new(path) + }, $Kernel_Pathname$28.$$arity = 1) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/runtime_helpers"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$new', '$children', '$==', '$s', '$include?', '$to_sym', '$<<', '$define_method', '$to_proc', '$meth', '$__send__', '$raise', '$helper', '$[]', '$arglist', '$js_truthy', '$js_falsy']); self.$require("set"); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $RuntimeHelpers(){}; - var self = $RuntimeHelpers = $klass($base, $super, 'RuntimeHelpers', $RuntimeHelpers); + var self = $klass($base, $super, 'RuntimeHelpers'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RuntimeHelpers_s_1, TMP_RuntimeHelpers_compatible$q_2, TMP_RuntimeHelpers_helper_3, TMP_RuntimeHelpers_compile_4, TMP_RuntimeHelpers_5, TMP_RuntimeHelpers_6; + var $nesting = [self].concat($parent_nesting), $RuntimeHelpers_s$1, $RuntimeHelpers_compatible$ques$2, $RuntimeHelpers_helper$3, $RuntimeHelpers_compile$4, $RuntimeHelpers$5, $RuntimeHelpers$6; - Opal.const_set($nesting[0], 'HELPERS', Opal.const_get_relative($nesting, 'Set').$new()); + Opal.const_set($nesting[0], 'HELPERS', $$($nesting, 'Set').$new()); self.$children("recvr", "meth", "arglist"); - Opal.defs(self, '$s', TMP_RuntimeHelpers_s_1 = function $$s(type, $a_rest) { - var self = this, children; - - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - children = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - children[$arg_idx - 1] = arguments[$arg_idx]; - } - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node').$new(type, children) - }, TMP_RuntimeHelpers_s_1.$$arity = -2); - Opal.defs(self, '$compatible?', TMP_RuntimeHelpers_compatible$q_2 = function(recvr, meth, arglist) { + Opal.defs(self, '$s', $RuntimeHelpers_s$1 = function $$s(type, $a) { + var $post_args, children, self = this; + + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + children = $post_args;; + return $$$($$$($$$('::', 'Opal'), 'AST'), 'Node').$new(type, children); + }, $RuntimeHelpers_s$1.$$arity = -2); + Opal.defs(self, '$compatible?', $RuntimeHelpers_compatible$ques$2 = function(recvr, meth) { var $a, self = this; - return (($a = recvr['$=='](self.$s("const", nil, "Opal"))) ? Opal.const_get_relative($nesting, 'HELPERS')['$include?'](meth.$to_sym()) : recvr['$=='](self.$s("const", nil, "Opal"))) - }, TMP_RuntimeHelpers_compatible$q_2.$$arity = 3); - Opal.defs(self, '$helper', TMP_RuntimeHelpers_helper_3 = function $$helper(name) { - var self = this, $iter = TMP_RuntimeHelpers_helper_3.$$p, block = $iter || nil; + return (($a = recvr['$=='](self.$s("const", nil, "Opal"))) ? $$($nesting, 'HELPERS')['$include?'](meth.$to_sym()) : recvr['$=='](self.$s("const", nil, "Opal"))) + }, $RuntimeHelpers_compatible$ques$2.$$arity = 2); + Opal.defs(self, '$helper', $RuntimeHelpers_helper$3 = function $$helper(name) { + var $iter = $RuntimeHelpers_helper$3.$$p, block = $iter || nil, self = this; - if ($iter) TMP_RuntimeHelpers_helper_3.$$p = null; + if ($iter) $RuntimeHelpers_helper$3.$$p = null; - Opal.const_get_relative($nesting, 'HELPERS')['$<<'](name); + + if ($iter) $RuntimeHelpers_helper$3.$$p = null;; + $$($nesting, 'HELPERS')['$<<'](name); return $send(self, 'define_method', ["" + "compile_" + (name)], block.$to_proc()); - }, TMP_RuntimeHelpers_helper_3.$$arity = 1); + }, $RuntimeHelpers_helper$3.$$arity = 1); - Opal.defn(self, '$compile', TMP_RuntimeHelpers_compile_4 = function $$compile() { + Opal.def(self, '$compile', $RuntimeHelpers_compile$4 = function $$compile() { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'HELPERS')['$include?'](self.$meth().$to_sym()))) { + if ($truthy($$($nesting, 'HELPERS')['$include?'](self.$meth().$to_sym()))) { return self.$__send__("" + "compile_" + (self.$meth())) - } else { + } else { return self.$raise("" + "Helper not supported: " + (self.$meth())) } - }, TMP_RuntimeHelpers_compile_4.$$arity = 0); - $send(self, 'helper', ["truthy?"], (TMP_RuntimeHelpers_5 = function(){var self = TMP_RuntimeHelpers_5.$$s || this, sexp = nil; + }, $RuntimeHelpers_compile$4.$$arity = 0); + $send(self, 'helper', ["truthy?"], ($RuntimeHelpers$5 = function(){var self = $RuntimeHelpers$5.$$s || this, sexp = nil; if ($truthy((sexp = self.$arglist().$children()['$[]'](0)))) { - } else { + } else { self.$raise("truthy? requires an object") }; - return self.$js_truthy(sexp);}, TMP_RuntimeHelpers_5.$$s = self, TMP_RuntimeHelpers_5.$$arity = 0, TMP_RuntimeHelpers_5)); - return $send(self, 'helper', ["falsy?"], (TMP_RuntimeHelpers_6 = function(){var self = TMP_RuntimeHelpers_6.$$s || this, sexp = nil; + return self.$js_truthy(sexp);}, $RuntimeHelpers$5.$$s = self, $RuntimeHelpers$5.$$arity = 0, $RuntimeHelpers$5)); + return $send(self, 'helper', ["falsy?"], ($RuntimeHelpers$6 = function(){var self = $RuntimeHelpers$6.$$s || this, sexp = nil; if ($truthy((sexp = self.$arglist().$children()['$[]'](0)))) { - } else { + } else { self.$raise("falsy? requires an object") }; - return self.$js_falsy(sexp);}, TMP_RuntimeHelpers_6.$$s = self, TMP_RuntimeHelpers_6.$$arity = 0, TMP_RuntimeHelpers_6)); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + return self.$js_falsy(sexp);}, $RuntimeHelpers$6.$$s = self, $RuntimeHelpers$6.$$arity = 0, $RuntimeHelpers$6)); + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/rewriters/break_finder"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs(['$require']); self.$require("opal/rewriter"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); + var self = $module($base, 'Rewriters'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $BreakFinder(){}; - var self = $BreakFinder = $klass($base, $super, 'BreakFinder', $BreakFinder); + var self = $klass($base, $super, 'BreakFinder'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BreakFinder_initialize_1, TMP_BreakFinder_found_break$q_2, TMP_BreakFinder_on_break_3, TMP_BreakFinder_stop_lookup_4; + var $nesting = [self].concat($parent_nesting), $BreakFinder_initialize$1, $BreakFinder_found_break$ques$2, $BreakFinder_on_break$3, $BreakFinder_stop_lookup$4; - def.found_break = nil; + self.$$prototype.found_break = nil; - Opal.defn(self, '$initialize', TMP_BreakFinder_initialize_1 = function $$initialize() { + Opal.def(self, '$initialize', $BreakFinder_initialize$1 = function $$initialize() { var self = this; return (self.found_break = false) - }, TMP_BreakFinder_initialize_1.$$arity = 0); + }, $BreakFinder_initialize$1.$$arity = 0); - Opal.defn(self, '$found_break?', TMP_BreakFinder_found_break$q_2 = function() { + Opal.def(self, '$found_break?', $BreakFinder_found_break$ques$2 = function() { var self = this; return self.found_break - }, TMP_BreakFinder_found_break$q_2.$$arity = 0); + }, $BreakFinder_found_break$ques$2.$$arity = 0); - Opal.defn(self, '$on_break', TMP_BreakFinder_on_break_3 = function $$on_break(node) { + Opal.def(self, '$on_break', $BreakFinder_on_break$3 = function $$on_break(node) { var self = this; self.found_break = true; return node; - }, TMP_BreakFinder_on_break_3.$$arity = 1); + }, $BreakFinder_on_break$3.$$arity = 1); - Opal.defn(self, '$stop_lookup', TMP_BreakFinder_stop_lookup_4 = function $$stop_lookup(node) { + Opal.def(self, '$stop_lookup', $BreakFinder_stop_lookup$4 = function $$stop_lookup(node) { var self = this; return nil - }, TMP_BreakFinder_stop_lookup_4.$$arity = 1); + }, $BreakFinder_stop_lookup$4.$$arity = 1); Opal.alias(self, "on_for", "stop_lookup"); Opal.alias(self, "on_while", "stop_lookup"); Opal.alias(self, "on_while_post", "stop_lookup"); Opal.alias(self, "on_until", "stop_lookup"); Opal.alias(self, "on_until_post", "stop_lookup"); return Opal.alias(self, "on_block", "stop_lookup"); - })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Rewriters'), 'Base'), $nesting) + })($nesting[0], $$$($$$($$($nesting, 'Opal'), 'Rewriters'), 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/call"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -46767,9 +53605,9 @@ Opal.modules["opal/nodes/call"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - Opal.add_stubs(['$require', '$handle', '$attr_reader', '$[]=', '$-', '$define_method', '$to_proc', '$include?', '$type', '$s', '$handle_special', '$record_method?', '$<<', '$method_calls', '$compiler', '$to_sym', '$meth', '$using_irb?', '$compile_irb_var', '$default_compile', '$private', '$iter', '$new', '$process', '$found_break?', '$splat?', '$invoke_using_send?', '$compile_using_send', '$compile_simple_call_chain', '$compile_break_catcher', '$helper', '$push', '$compile_receiver', '$compile_method_name', '$compile_arguments', '$compile_block_pass', '$recv', '$receiver_sexp', '$expr', '$arglist', '$empty?', '$children', '$iter_has_break?', '$unshift', '$line', '$method_jsid', '$any?', '$==', '$recvr', '$mid_to_jsid', '$to_s', '$with_temp', '$intern', '$irb?', '$top?', '$scope', '$nil?', '$updated', '$method', '$arity', '$[]', '$compatible?', '$compile', '$sexp_with_arglist', '$call', '$each', '$add_special', '$inline_operators?', '$operator_helpers', '$fragment', '$resolve', '$requires', '$file', '$dirname', '$cleanpath', '$join', '$Pathname', '$inspect', '$class_scope?', '$required_trees', '$force_encoding', '$encoding', '$+', '$handle_block_given_call', '$def?', '$mid', '$arity_check?', '$push_nesting?', '$first', '$size', '$last', '$handle_part', '$map', '$===', '$expand_path', '$split', '$dynamic_require_severity', '$error', '$warning', '$inject', '$pop']); + Opal.add_stubs(['$require', '$handle', '$attr_reader', '$freeze', '$[]=', '$-', '$define_method', '$to_proc', '$include?', '$type', '$s', '$handle_special', '$record_method?', '$<<', '$method_calls', '$compiler', '$to_sym', '$meth', '$using_irb?', '$compile_irb_var', '$default_compile', '$private', '$iter', '$new', '$process', '$found_break?', '$splat?', '$invoke_using_send?', '$compile_using_send', '$compile_simple_call_chain', '$compile_break_catcher', '$helper', '$push', '$compile_receiver', '$compile_method_name', '$compile_arguments', '$compile_block_pass', '$recv', '$receiver_sexp', '$expr', '$arglist', '$empty?', '$children', '$iter_has_break?', '$unshift', '$line', '$method_jsid', '$any?', '$==', '$recvr', '$mid_to_jsid', '$to_s', '$with_temp', '$intern', '$irb?', '$top?', '$scope', '$nil?', '$updated', '$method', '$arity', '$[]', '$compatible?', '$compile', '$sexp_with_arglist', '$each', '$add_special', '$inline_operators?', '$operator_helpers', '$fragment', '$call', '$resolve', '$requires', '$file', '$dirname', '$cleanpath', '$join', '$Pathname', '$inspect', '$class_scope?', '$required_trees', '$force_encoding', '$encoding', '$+', '$handle_block_given_call', '$def?', '$mid', '$arity_check?', '$push_nesting?', '$first', '$size', '$last', '$handle_part', '$map', '$is_a?', '$expand_path', '$split', '$dynamic_require_severity', '$===', '$error', '$warning', '$each_with_object', '$pop']); self.$require("set"); self.$require("pathname"); @@ -46777,112 +53615,117 @@ Opal.modules["opal/nodes/call"] = function(Opal) { self.$require("opal/nodes/runtime_helpers"); self.$require("opal/rewriters/break_finder"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $CallNode(){}; - var self = $CallNode = $klass($base, $super, 'CallNode', $CallNode); + var self = $klass($base, $super, 'CallNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CallNode_add_special_1, TMP_CallNode_initialize_2, TMP_CallNode_compile_4, TMP_CallNode_iter_has_break$q_5, TMP_CallNode_invoke_using_send$q_6, TMP_CallNode_default_compile_7, TMP_CallNode_compile_using_send_8, TMP_CallNode_compile_receiver_9, TMP_CallNode_compile_method_name_10, TMP_CallNode_compile_arguments_11, TMP_CallNode_compile_block_pass_12, TMP_CallNode_compile_break_catcher_13, TMP_CallNode_compile_simple_call_chain_14, TMP_CallNode_splat$q_16, TMP_CallNode_receiver_sexp_17, TMP_CallNode_method_jsid_18, TMP_CallNode_record_method$q_19, TMP_CallNode_compile_irb_var_21, TMP_CallNode_using_irb$q_22, TMP_CallNode_sexp_with_arglist_23, TMP_CallNode_handle_special_24, TMP_CallNode_25, TMP_CallNode_27, TMP_CallNode_28, TMP_CallNode_29, TMP_CallNode_30, TMP_CallNode_31, TMP_CallNode_32, TMP_CallNode_33, TMP_CallNode_34, TMP_CallNode_35, TMP_CallNode_36, TMP_CallNode_37, TMP_CallNode_push_nesting$q_38; + var $nesting = [self].concat($parent_nesting), $CallNode_add_special$1, $CallNode_initialize$2, $CallNode_compile$3, $CallNode_iter_has_break$ques$5, $CallNode_invoke_using_send$ques$6, $CallNode_default_compile$7, $CallNode_compile_using_send$8, $CallNode_compile_receiver$9, $CallNode_compile_method_name$10, $CallNode_compile_arguments$11, $CallNode_compile_block_pass$12, $CallNode_compile_break_catcher$13, $CallNode_compile_simple_call_chain$14, $CallNode_splat$ques$15, $CallNode_receiver_sexp$17, $CallNode_method_jsid$18, $CallNode_record_method$ques$19, $CallNode_compile_irb_var$20, $CallNode_using_irb$ques$22, $CallNode_sexp_with_arglist$23, $CallNode_handle_special$24, $CallNode$25, $CallNode$27, $CallNode$28, $CallNode$29, $CallNode$30, $CallNode$31, $CallNode$32, $CallNode$33, $CallNode$34, $CallNode$35, $CallNode$36, $CallNode$37, $CallNode_push_nesting$ques$38; - def.sexp = def.compiler = def.level = nil; + self.$$prototype.sexp = self.$$prototype.compiler = self.$$prototype.level = nil; self.$handle("send"); self.$attr_reader("recvr", "meth", "arglist", "iter"); Opal.const_set($nesting[0], 'SPECIALS', $hash2([], {})); - Opal.const_set($nesting[0], 'OPERATORS', $hash2(["+", "-", "*", "/", "<", "<=", ">", ">="], {"+": "plus", "-": "minus", "*": "times", "/": "divide", "<": "lt", "<=": "le", ">": "gt", ">=": "ge"})); - Opal.defs(self, '$add_special', TMP_CallNode_add_special_1 = function $$add_special(name, options) { - var self = this, $iter = TMP_CallNode_add_special_1.$$p, handler = $iter || nil, $writer = nil; + Opal.const_set($nesting[0], 'OPERATORS', $hash2(["+", "-", "*", "/", "<", "<=", ">", ">="], {"+": "plus", "-": "minus", "*": "times", "/": "divide", "<": "lt", "<=": "le", ">": "gt", ">=": "ge"}).$freeze()); + Opal.defs(self, '$add_special', $CallNode_add_special$1 = function $$add_special(name, options) { + var $iter = $CallNode_add_special$1.$$p, handler = $iter || nil, self = this, $writer = nil; + if ($iter) $CallNode_add_special$1.$$p = null; + + + if ($iter) $CallNode_add_special$1.$$p = null;; + if (options == null) { options = $hash2([], {}); - } - if ($iter) TMP_CallNode_add_special_1.$$p = null; - + }; $writer = [name, options]; - $send(Opal.const_get_relative($nesting, 'SPECIALS'), '[]=', Opal.to_a($writer)); + $send($$($nesting, 'SPECIALS'), '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return $send(self, 'define_method', ["" + "handle_" + (name)], handler.$to_proc()); - }, TMP_CallNode_add_special_1.$$arity = -2); + }, $CallNode_add_special$1.$$arity = -2); - Opal.defn(self, '$initialize', TMP_CallNode_initialize_2 = function $$initialize($a_rest) { - var $b, $c, self = this, $iter = TMP_CallNode_initialize_2.$$p, $yield = $iter || nil, args = nil, rest = nil, last_arg = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $CallNode_initialize$2 = function $$initialize($a) { + var $post_args, $b, $c, $iter = $CallNode_initialize$2.$$p, $yield = $iter || nil, self = this, args = nil, rest = nil, last_arg = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_CallNode_initialize_2.$$p = null; + if ($iter) $CallNode_initialize$2.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_CallNode_initialize_2, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $CallNode_initialize$2, false), $zuper, $iter); $b = [].concat(Opal.to_a(self.sexp)), (self.recvr = ($b[0] == null ? nil : $b[0])), (self.meth = ($b[1] == null ? nil : $b[1])), (args = $slice.call($b, 2)), $b; $b = [].concat(Opal.to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_arg = ($b[$c] == null ? nil : $b[$c])), $b; if ($truthy(($truthy($b = last_arg) ? ["iter", "block_pass"]['$include?'](last_arg.$type()) : $b))) { self.iter = last_arg; args = rest; - } else { + } else { self.iter = nil }; return (self.arglist = $send(self, 's', ["arglist"].concat(Opal.to_a(args)))); - }, TMP_CallNode_initialize_2.$$arity = -1); + }, $CallNode_initialize$2.$$arity = -1); - Opal.defn(self, '$compile', TMP_CallNode_compile_4 = function $$compile() {try { + Opal.def(self, '$compile', $CallNode_compile$3 = function $$compile() {try { - var TMP_3, self = this; + var $$4, self = this; - return $send(self, 'handle_special', [], (TMP_3 = function(){var self = TMP_3.$$s || this; + return $send(self, 'handle_special', [], ($$4 = function(){var self = $$4.$$s || this; if ($truthy(self['$record_method?']())) { self.$compiler().$method_calls()['$<<'](self.$meth().$to_sym())}; if ($truthy(self['$using_irb?']())) { Opal.ret(self.$compile_irb_var())}; - return self.$default_compile();}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3)) + return self.$default_compile();}, $$4.$$s = self, $$4.$$arity = 0, $$4)) } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, TMP_CallNode_compile_4.$$arity = 0); + }, $CallNode_compile$3.$$arity = 0); self.$private(); - Opal.defn(self, '$iter_has_break?', TMP_CallNode_iter_has_break$q_5 = function() { + Opal.def(self, '$iter_has_break?', $CallNode_iter_has_break$ques$5 = function() { var self = this, finder = nil; if ($truthy(self.$iter())) { - } else { + } else { return false }; - finder = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder = $$$($$$($$($nesting, 'Opal'), 'Rewriters'), 'BreakFinder').$new(); finder.$process(self.$iter()); return finder['$found_break?'](); - }, TMP_CallNode_iter_has_break$q_5.$$arity = 0); + }, $CallNode_iter_has_break$ques$5.$$arity = 0); - Opal.defn(self, '$invoke_using_send?', TMP_CallNode_invoke_using_send$q_6 = function() { + Opal.def(self, '$invoke_using_send?', $CallNode_invoke_using_send$ques$6 = function() { var $a, self = this; return ($truthy($a = self.$iter()) ? $a : self['$splat?']()) - }, TMP_CallNode_invoke_using_send$q_6.$$arity = 0); + }, $CallNode_invoke_using_send$ques$6.$$arity = 0); - Opal.defn(self, '$default_compile', TMP_CallNode_default_compile_7 = function $$default_compile() { + Opal.def(self, '$default_compile', $CallNode_default_compile$7 = function $$default_compile() { var self = this; if ($truthy(self['$invoke_using_send?']())) { self.$compile_using_send() - } else { + } else { self.$compile_simple_call_chain() }; return self.$compile_break_catcher(); - }, TMP_CallNode_default_compile_7.$$arity = 0); + }, $CallNode_default_compile$7.$$arity = 0); - Opal.defn(self, '$compile_using_send', TMP_CallNode_compile_using_send_8 = function $$compile_using_send() { + Opal.def(self, '$compile_using_send', $CallNode_compile_using_send$8 = function $$compile_using_send() { var self = this; @@ -46893,21 +53736,21 @@ Opal.modules["opal/nodes/call"] = function(Opal) { self.$compile_arguments(); self.$compile_block_pass(); return self.$push(")"); - }, TMP_CallNode_compile_using_send_8.$$arity = 0); + }, $CallNode_compile_using_send$8.$$arity = 0); - Opal.defn(self, '$compile_receiver', TMP_CallNode_compile_receiver_9 = function $$compile_receiver() { + Opal.def(self, '$compile_receiver', $CallNode_compile_receiver$9 = function $$compile_receiver() { var self = this; return self.$push(self.$recv(self.$receiver_sexp())) - }, TMP_CallNode_compile_receiver_9.$$arity = 0); + }, $CallNode_compile_receiver$9.$$arity = 0); - Opal.defn(self, '$compile_method_name', TMP_CallNode_compile_method_name_10 = function $$compile_method_name() { + Opal.def(self, '$compile_method_name', $CallNode_compile_method_name$10 = function $$compile_method_name() { var self = this; return self.$push("" + ", '" + (self.$meth()) + "'") - }, TMP_CallNode_compile_method_name_10.$$arity = 0); + }, $CallNode_compile_method_name$10.$$arity = 0); - Opal.defn(self, '$compile_arguments', TMP_CallNode_compile_arguments_11 = function $$compile_arguments() { + Opal.def(self, '$compile_arguments', $CallNode_compile_arguments$11 = function $$compile_arguments() { var self = this; @@ -46916,22 +53759,22 @@ Opal.modules["opal/nodes/call"] = function(Opal) { return self.$push(self.$expr(self.$arglist())) } else if ($truthy(self.$arglist().$children()['$empty?']())) { return self.$push("[]") - } else { + } else { return self.$push("[", self.$expr(self.$arglist()), "]") }; - }, TMP_CallNode_compile_arguments_11.$$arity = 0); + }, $CallNode_compile_arguments$11.$$arity = 0); - Opal.defn(self, '$compile_block_pass', TMP_CallNode_compile_block_pass_12 = function $$compile_block_pass() { + Opal.def(self, '$compile_block_pass', $CallNode_compile_block_pass$12 = function $$compile_block_pass() { var self = this; if ($truthy(self.$iter())) { return self.$push(", ", self.$expr(self.$iter())) - } else { + } else { return nil } - }, TMP_CallNode_compile_block_pass_12.$$arity = 0); + }, $CallNode_compile_block_pass$12.$$arity = 0); - Opal.defn(self, '$compile_break_catcher', TMP_CallNode_compile_break_catcher_13 = function $$compile_break_catcher() { + Opal.def(self, '$compile_break_catcher', $CallNode_compile_break_catcher$13 = function $$compile_break_catcher() { var self = this; if ($truthy(self['$iter_has_break?']())) { @@ -46939,89 +53782,115 @@ Opal.modules["opal/nodes/call"] = function(Opal) { self.$unshift("return "); self.$unshift("(function(){var $brk = Opal.new_brk(); try {"); return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()"); - } else { + } else { return nil } - }, TMP_CallNode_compile_break_catcher_13.$$arity = 0); + }, $CallNode_compile_break_catcher$13.$$arity = 0); - Opal.defn(self, '$compile_simple_call_chain', TMP_CallNode_compile_simple_call_chain_14 = function $$compile_simple_call_chain() { + Opal.def(self, '$compile_simple_call_chain', $CallNode_compile_simple_call_chain$14 = function $$compile_simple_call_chain() { var self = this; return self.$push(self.$recv(self.$receiver_sexp()), self.$method_jsid(), "(", self.$expr(self.$arglist()), ")") - }, TMP_CallNode_compile_simple_call_chain_14.$$arity = 0); + }, $CallNode_compile_simple_call_chain$14.$$arity = 0); - Opal.defn(self, '$splat?', TMP_CallNode_splat$q_16 = function() { - var TMP_15, self = this; + Opal.def(self, '$splat?', $CallNode_splat$ques$15 = function() { + var $$16, self = this; + + return $send(self.$arglist().$children(), 'any?', [], ($$16 = function(a){var self = $$16.$$s || this; - return $send(self.$arglist().$children(), 'any?', [], (TMP_15 = function(a){var self = TMP_15.$$s || this; -if (a == null) a = nil; - return a.$type()['$==']("splat")}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)) - }, TMP_CallNode_splat$q_16.$$arity = 0); + + + if (a == null) { + a = nil; + }; + return a.$type()['$==']("splat");}, $$16.$$s = self, $$16.$$arity = 1, $$16)) + }, $CallNode_splat$ques$15.$$arity = 0); - Opal.defn(self, '$receiver_sexp', TMP_CallNode_receiver_sexp_17 = function $$receiver_sexp() { + Opal.def(self, '$receiver_sexp', $CallNode_receiver_sexp$17 = function $$receiver_sexp() { var $a, self = this; return ($truthy($a = self.$recvr()) ? $a : self.$s("self")) - }, TMP_CallNode_receiver_sexp_17.$$arity = 0); + }, $CallNode_receiver_sexp$17.$$arity = 0); - Opal.defn(self, '$method_jsid', TMP_CallNode_method_jsid_18 = function $$method_jsid() { + Opal.def(self, '$method_jsid', $CallNode_method_jsid$18 = function $$method_jsid() { var self = this; return self.$mid_to_jsid(self.$meth().$to_s()) - }, TMP_CallNode_method_jsid_18.$$arity = 0); + }, $CallNode_method_jsid$18.$$arity = 0); - Opal.defn(self, '$record_method?', TMP_CallNode_record_method$q_19 = function() { + Opal.def(self, '$record_method?', $CallNode_record_method$ques$19 = function() { var self = this; return true - }, TMP_CallNode_record_method$q_19.$$arity = 0); + }, $CallNode_record_method$ques$19.$$arity = 0); - Opal.defn(self, '$compile_irb_var', TMP_CallNode_compile_irb_var_21 = function $$compile_irb_var() { - var TMP_20, self = this; + Opal.def(self, '$compile_irb_var', $CallNode_compile_irb_var$20 = function $$compile_irb_var() { + var $$21, self = this; + + return $send(self, 'with_temp', [], ($$21 = function(tmp){var self = $$21.$$s || this, lvar = nil, call = nil; - return $send(self, 'with_temp', [], (TMP_20 = function(tmp){var self = TMP_20.$$s || this, lvar = nil, call = nil; -if (tmp == null) tmp = nil; + + if (tmp == null) { + tmp = nil; + }; lvar = self.$meth(); call = self.$s("send", self.$s("self"), self.$meth().$intern(), self.$s("arglist")); - return self.$push("" + "((" + (tmp) + " = Opal.irb_vars." + (lvar) + ") == null ? ", self.$expr(call), "" + " : " + (tmp) + ")");}, TMP_20.$$s = self, TMP_20.$$arity = 1, TMP_20)) - }, TMP_CallNode_compile_irb_var_21.$$arity = 0); + return self.$push("" + "((" + (tmp) + " = Opal.irb_vars." + (lvar) + ") == null ? ", self.$expr(call), "" + " : " + (tmp) + ")");}, $$21.$$s = self, $$21.$$arity = 1, $$21)) + }, $CallNode_compile_irb_var$20.$$arity = 0); - Opal.defn(self, '$using_irb?', TMP_CallNode_using_irb$q_22 = function() { + Opal.def(self, '$using_irb?', $CallNode_using_irb$ques$22 = function() { var $a, $b, $c, $d, self = this; return ($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = self.compiler['$irb?']()) ? self.$scope()['$top?']() : $d)) ? self.$arglist()['$=='](self.$s("arglist")) : $c)) ? self.$recvr()['$nil?']() : $b)) ? self.$iter()['$nil?']() : $a) - }, TMP_CallNode_using_irb$q_22.$$arity = 0); + }, $CallNode_using_irb$ques$22.$$arity = 0); - Opal.defn(self, '$sexp_with_arglist', TMP_CallNode_sexp_with_arglist_23 = function $$sexp_with_arglist() { + Opal.def(self, '$sexp_with_arglist', $CallNode_sexp_with_arglist$23 = function $$sexp_with_arglist() { var self = this; return self.sexp.$updated(nil, [self.$recvr(), self.$meth(), self.$arglist()]) - }, TMP_CallNode_sexp_with_arglist_23.$$arity = 0); + }, $CallNode_sexp_with_arglist$23.$$arity = 0); - Opal.defn(self, '$handle_special', TMP_CallNode_handle_special_24 = function $$handle_special() { - var self = this, $iter = TMP_CallNode_handle_special_24.$$p, compile_default = $iter || nil, method = nil; + Opal.def(self, '$handle_special', $CallNode_handle_special$24 = function $$handle_special() { + var $iter = $CallNode_handle_special$24.$$p, compile_default = $iter || nil, self = this, method = nil; - if ($iter) TMP_CallNode_handle_special_24.$$p = null; - if ($truthy(Opal.const_get_relative($nesting, 'SPECIALS')['$include?'](self.$meth()))) { + if ($iter) $CallNode_handle_special$24.$$p = null; + + + if ($iter) $CallNode_handle_special$24.$$p = null;; + if ($truthy($$($nesting, 'SPECIALS')['$include?'](self.$meth()))) { method = self.$method("" + "handle_" + (self.$meth())); if (method.$arity()['$=='](1)) { return method['$[]'](compile_default) - } else { + } else { return method['$[]']() }; - } else if ($truthy(Opal.const_get_relative($nesting, 'RuntimeHelpers')['$compatible?'](self.$recvr(), self.$meth(), self.$arglist()))) { - return self.$push(Opal.const_get_relative($nesting, 'RuntimeHelpers').$new(self.$sexp_with_arglist(), self.level, self.compiler).$compile()) - } else { - return compile_default.$call() - } - }, TMP_CallNode_handle_special_24.$$arity = 0); - $send(Opal.const_get_relative($nesting, 'OPERATORS'), 'each', [], (TMP_CallNode_25 = function(operator, name){var self = TMP_CallNode_25.$$s || this, TMP_26; -if (operator == null) operator = nil;if (name == null) name = nil; - return $send(self, 'add_special', [operator.$to_sym()], (TMP_26 = function(compile_default){var self = TMP_26.$$s || this, $a, lhs = nil, rhs = nil; -if (compile_default == null) compile_default = nil; - if ($truthy(self.$compiler()['$inline_operators?']())) { + } else if ($truthy($$($nesting, 'RuntimeHelpers')['$compatible?'](self.$recvr(), self.$meth()))) { + return self.$push($$($nesting, 'RuntimeHelpers').$new(self.$sexp_with_arglist(), self.level, self.compiler).$compile()) + } else { + return Opal.yieldX(compile_default, []); + }; + }, $CallNode_handle_special$24.$$arity = 0); + $send($$($nesting, 'OPERATORS'), 'each', [], ($CallNode$25 = function(operator, name){var self = $CallNode$25.$$s || this, $$26; + + + + if (operator == null) { + operator = nil; + }; + + if (name == null) { + name = nil; + }; + return $send(self, 'add_special', [operator.$to_sym()], ($$26 = function(compile_default){var self = $$26.$$s || this, $a, lhs = nil, rhs = nil; + + + + if (compile_default == null) { + compile_default = nil; + }; + if ($truthy(self.$compiler()['$inline_operators?']())) { if ($truthy(self['$record_method?']())) { self.$compiler().$method_calls()['$<<'](operator.$to_sym())}; @@ -47032,138 +53901,158 @@ if (compile_default == null) compile_default = nil; self.$push(self.$fragment(", ")); self.$push(rhs); return self.$push(self.$fragment(")")); - } else { + } else { return compile_default.$call() - }}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26))}, TMP_CallNode_25.$$s = self, TMP_CallNode_25.$$arity = 2, TMP_CallNode_25)); - $send(self, 'add_special', ["require"], (TMP_CallNode_27 = function(compile_default){var self = TMP_CallNode_27.$$s || this, str = nil; -if (compile_default == null) compile_default = nil; + };}, $$26.$$s = self, $$26.$$arity = 1, $$26));}, $CallNode$25.$$s = self, $CallNode$25.$$arity = 2, $CallNode$25)); + $send(self, 'add_special', ["require"], ($CallNode$27 = function(compile_default){var self = $CallNode$27.$$s || this, str = nil; + - str = Opal.const_get_relative($nesting, 'DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](0)).$resolve(); + + if (compile_default == null) { + compile_default = nil; + }; + str = $$($nesting, 'DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](0)).$resolve(); if ($truthy(str['$nil?']())) { - } else { + } else { self.$compiler().$requires()['$<<'](str) }; - return compile_default.$call();}, TMP_CallNode_27.$$s = self, TMP_CallNode_27.$$arity = 1, TMP_CallNode_27)); - $send(self, 'add_special', ["require_relative"], (TMP_CallNode_28 = function(_compile_default){var self = TMP_CallNode_28.$$s || this, arg = nil, file = nil, dir = nil; -if (_compile_default == null) _compile_default = nil; + return compile_default.$call();}, $CallNode$27.$$s = self, $CallNode$27.$$arity = 1, $CallNode$27)); + $send(self, 'add_special', ["require_relative"], ($CallNode$28 = function(){var self = $CallNode$28.$$s || this, arg = nil, file = nil, dir = nil; + arg = self.$arglist().$children()['$[]'](0); file = self.$compiler().$file(); if (arg.$type()['$==']("str")) { - dir = Opal.const_get_relative($nesting, 'File').$dirname(file); + dir = $$($nesting, 'File').$dirname(file); self.$compiler().$requires()['$<<'](self.$Pathname(dir).$join(arg.$children()['$[]'](0)).$cleanpath().$to_s());}; self.$push(self.$fragment("" + "self.$require(" + (file.$inspect()) + "+ '/../' + ")); self.$push(self.$process(self.$arglist())); - return self.$push(self.$fragment(")"));}, TMP_CallNode_28.$$s = self, TMP_CallNode_28.$$arity = 1, TMP_CallNode_28)); - $send(self, 'add_special', ["autoload"], (TMP_CallNode_29 = function(compile_default){var self = TMP_CallNode_29.$$s || this, str = nil; -if (compile_default == null) compile_default = nil; - if ($truthy(self.$scope()['$class_scope?']())) { + return self.$push(self.$fragment(")"));}, $CallNode$28.$$s = self, $CallNode$28.$$arity = 0, $CallNode$28)); + $send(self, 'add_special', ["autoload"], ($CallNode$29 = function(compile_default){var self = $CallNode$29.$$s || this, str = nil; + + + + if (compile_default == null) { + compile_default = nil; + }; + if ($truthy(self.$scope()['$class_scope?']())) { - str = Opal.const_get_relative($nesting, 'DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](1)).$resolve(); + str = $$($nesting, 'DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](1)).$resolve(); if ($truthy(str['$nil?']())) { - } else { + } else { self.$compiler().$requires()['$<<'](str) }; return compile_default.$call(); - } else { + } else { return nil - }}, TMP_CallNode_29.$$s = self, TMP_CallNode_29.$$arity = 1, TMP_CallNode_29)); - $send(self, 'add_special', ["require_tree"], (TMP_CallNode_30 = function(compile_default){var self = TMP_CallNode_30.$$s || this, $a, first_arg = nil, rest = nil, relative_path = nil, dir = nil, full_path = nil; -if (compile_default == null) compile_default = nil; + };}, $CallNode$29.$$s = self, $CallNode$29.$$arity = 1, $CallNode$29)); + $send(self, 'add_special', ["require_tree"], ($CallNode$30 = function(compile_default){var self = $CallNode$30.$$s || this, $a, first_arg = nil, rest = nil, relative_path = nil, dir = nil, full_path = nil; + + + if (compile_default == null) { + compile_default = nil; + }; $a = [].concat(Opal.to_a(self.$arglist().$children())), (first_arg = ($a[0] == null ? nil : $a[0])), (rest = $slice.call($a, 1)), $a; if (first_arg.$type()['$==']("str")) { relative_path = first_arg.$children()['$[]'](0); self.$compiler().$required_trees()['$<<'](relative_path); - dir = Opal.const_get_relative($nesting, 'File').$dirname(self.$compiler().$file()); + dir = $$($nesting, 'File').$dirname(self.$compiler().$file()); full_path = self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s(); full_path.$force_encoding(relative_path.$encoding()); first_arg = first_arg.$updated(nil, [full_path]);}; self.arglist = self.$arglist().$updated(nil, $rb_plus([first_arg], rest)); - return compile_default.$call();}, TMP_CallNode_30.$$s = self, TMP_CallNode_30.$$arity = 1, TMP_CallNode_30)); - $send(self, 'add_special', ["block_given?"], (TMP_CallNode_31 = function(compile_default){var self = TMP_CallNode_31.$$s || this; + return compile_default.$call();}, $CallNode$30.$$s = self, $CallNode$30.$$arity = 1, $CallNode$30)); + $send(self, 'add_special', ["block_given?"], ($CallNode$31 = function(){var self = $CallNode$31.$$s || this; if (self.sexp == null) self.sexp = nil; -if (compile_default == null) compile_default = nil; - return self.$push(self.$compiler().$handle_block_given_call(self.sexp))}, TMP_CallNode_31.$$s = self, TMP_CallNode_31.$$arity = 1, TMP_CallNode_31)); - $send(self, 'add_special', ["__callee__"], (TMP_CallNode_32 = function(compile_default){var self = TMP_CallNode_32.$$s || this; -if (compile_default == null) compile_default = nil; + + return self.$push(self.$compiler().$handle_block_given_call(self.sexp))}, $CallNode$31.$$s = self, $CallNode$31.$$arity = 0, $CallNode$31)); + $send(self, 'add_special', ["__callee__"], ($CallNode$32 = function(){var self = $CallNode$32.$$s || this; + if ($truthy(self.$scope()['$def?']())) { return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) - } else { + } else { return self.$push(self.$fragment("nil")) - }}, TMP_CallNode_32.$$s = self, TMP_CallNode_32.$$arity = 1, TMP_CallNode_32)); - $send(self, 'add_special', ["__method__"], (TMP_CallNode_33 = function(compile_default){var self = TMP_CallNode_33.$$s || this; -if (compile_default == null) compile_default = nil; + }}, $CallNode$32.$$s = self, $CallNode$32.$$arity = 0, $CallNode$32)); + $send(self, 'add_special', ["__method__"], ($CallNode$33 = function(){var self = $CallNode$33.$$s || this; + if ($truthy(self.$scope()['$def?']())) { return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) - } else { + } else { return self.$push(self.$fragment("nil")) - }}, TMP_CallNode_33.$$s = self, TMP_CallNode_33.$$arity = 1, TMP_CallNode_33)); - $send(self, 'add_special', ["debugger"], (TMP_CallNode_34 = function(compile_default){var self = TMP_CallNode_34.$$s || this; -if (compile_default == null) compile_default = nil; - return self.$push(self.$fragment("debugger"))}, TMP_CallNode_34.$$s = self, TMP_CallNode_34.$$arity = 1, TMP_CallNode_34)); - $send(self, 'add_special', ["__OPAL_COMPILER_CONFIG__"], (TMP_CallNode_35 = function(compile_default){var self = TMP_CallNode_35.$$s || this; -if (compile_default == null) compile_default = nil; - return self.$push(self.$fragment("" + "Opal.hash({ arity_check: " + (self.$compiler()['$arity_check?']()) + " })"))}, TMP_CallNode_35.$$s = self, TMP_CallNode_35.$$arity = 1, TMP_CallNode_35)); - $send(self, 'add_special', ["nesting"], (TMP_CallNode_36 = function(compile_default){var self = TMP_CallNode_36.$$s || this, push_nesting = nil; -if (compile_default == null) compile_default = nil; - - push_nesting = self['$push_nesting?'](self.$children()); + }}, $CallNode$33.$$s = self, $CallNode$33.$$arity = 0, $CallNode$33)); + $send(self, 'add_special', ["debugger"], ($CallNode$34 = function(){var self = $CallNode$34.$$s || this; + + return self.$push(self.$fragment("debugger"))}, $CallNode$34.$$s = self, $CallNode$34.$$arity = 0, $CallNode$34)); + $send(self, 'add_special', ["__OPAL_COMPILER_CONFIG__"], ($CallNode$35 = function(){var self = $CallNode$35.$$s || this; + + return self.$push(self.$fragment("" + "Opal.hash({ arity_check: " + (self.$compiler()['$arity_check?']()) + " })"))}, $CallNode$35.$$s = self, $CallNode$35.$$arity = 0, $CallNode$35)); + $send(self, 'add_special', ["nesting"], ($CallNode$36 = function(compile_default){var self = $CallNode$36.$$s || this, push_nesting = nil; + + + + if (compile_default == null) { + compile_default = nil; + }; + push_nesting = self['$push_nesting?'](); if ($truthy(push_nesting)) { self.$push("(Opal.Module.$$nesting = $nesting, ")}; compile_default.$call(); if ($truthy(push_nesting)) { return self.$push(")") - } else { + } else { return nil - };}, TMP_CallNode_36.$$s = self, TMP_CallNode_36.$$arity = 1, TMP_CallNode_36)); - $send(self, 'add_special', ["constants"], (TMP_CallNode_37 = function(compile_default){var self = TMP_CallNode_37.$$s || this, push_nesting = nil; -if (compile_default == null) compile_default = nil; + };}, $CallNode$36.$$s = self, $CallNode$36.$$arity = 1, $CallNode$36)); + $send(self, 'add_special', ["constants"], ($CallNode$37 = function(compile_default){var self = $CallNode$37.$$s || this, push_nesting = nil; + - push_nesting = self['$push_nesting?'](self.$children()); + + if (compile_default == null) { + compile_default = nil; + }; + push_nesting = self['$push_nesting?'](); if ($truthy(push_nesting)) { self.$push("(Opal.Module.$$nesting = $nesting, ")}; compile_default.$call(); if ($truthy(push_nesting)) { return self.$push(")") - } else { + } else { return nil - };}, TMP_CallNode_37.$$s = self, TMP_CallNode_37.$$arity = 1, TMP_CallNode_37)); + };}, $CallNode$37.$$s = self, $CallNode$37.$$arity = 1, $CallNode$37)); - Opal.defn(self, '$push_nesting?', TMP_CallNode_push_nesting$q_38 = function(recv) { - var $a, $b, $c, self = this; + Opal.def(self, '$push_nesting?', $CallNode_push_nesting$ques$38 = function() { + var $a, $b, $c, self = this, recv = nil; recv = self.$children().$first(); return (($a = self.$children().$size()['$=='](2)) ? ($truthy($b = recv['$nil?']()) ? $b : (($c = recv.$type()['$==']("const")) ? recv.$children().$last()['$==']("Module") : recv.$type()['$==']("const"))) : self.$children().$size()['$=='](2)); - }, TMP_CallNode_push_nesting$q_38.$$arity = 1); + }, $CallNode_push_nesting$ques$38.$$arity = 0); return (function($base, $super, $parent_nesting) { - function $DependencyResolver(){}; - var self = $DependencyResolver = $klass($base, $super, 'DependencyResolver', $DependencyResolver); + var self = $klass($base, $super, 'DependencyResolver'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DependencyResolver_initialize_39, TMP_DependencyResolver_resolve_40, TMP_DependencyResolver_handle_part_42, TMP_DependencyResolver_expand_path_44; + var $nesting = [self].concat($parent_nesting), $DependencyResolver_initialize$39, $DependencyResolver_resolve$40, $DependencyResolver_handle_part$41, $DependencyResolver_expand_path$43; - def.sexp = def.compiler = nil; + self.$$prototype.sexp = self.$$prototype.compiler = nil; - Opal.defn(self, '$initialize', TMP_DependencyResolver_initialize_39 = function $$initialize(compiler, sexp) { + Opal.def(self, '$initialize', $DependencyResolver_initialize$39 = function $$initialize(compiler, sexp) { var self = this; self.compiler = compiler; return (self.sexp = sexp); - }, TMP_DependencyResolver_initialize_39.$$arity = 2); + }, $DependencyResolver_initialize$39.$$arity = 2); - Opal.defn(self, '$resolve', TMP_DependencyResolver_resolve_40 = function $$resolve() { + Opal.def(self, '$resolve', $DependencyResolver_resolve$40 = function $$resolve() { var self = this; return self.$handle_part(self.sexp) - }, TMP_DependencyResolver_resolve_40.$$arity = 0); + }, $DependencyResolver_resolve$40.$$arity = 0); - Opal.defn(self, '$handle_part', TMP_DependencyResolver_handle_part_42 = function $$handle_part(sexp) { - var $a, $b, TMP_41, self = this, type = nil, recv = nil, meth = nil, args = nil, parts = nil, msg = nil, $case = nil; + Opal.def(self, '$handle_part', $DependencyResolver_handle_part$41 = function $$handle_part(sexp) { + var $a, $b, $$42, self = this, type = nil, recv = nil, meth = nil, args = nil, parts = nil, msg = nil, $case = nil; type = sexp.$type(); @@ -47172,10 +54061,15 @@ if (compile_default == null) compile_default = nil; } else if (type['$==']("send")) { $b = sexp.$children(), $a = Opal.to_ary($b), (recv = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $b; - parts = $send(args, 'map', [], (TMP_41 = function(s){var self = TMP_41.$$s || this; -if (s == null) s = nil; - return self.$handle_part(s)}, TMP_41.$$s = self, TMP_41.$$arity = 1, TMP_41)); - if ($truthy(($truthy($a = ($truthy($b = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node')['$==='](recv)) ? recv.$type()['$==']("const") : $b)) ? recv.$children().$last()['$==']("File") : $a))) { + parts = $send(args, 'map', [], ($$42 = function(s){var self = $$42.$$s || this; + + + + if (s == null) { + s = nil; + }; + return self.$handle_part(s);}, $$42.$$s = self, $$42.$$arity = 1, $$42)); + if ($truthy(($truthy($a = ($truthy($b = recv['$is_a?']($$$($$$($$$('::', 'Opal'), 'AST'), 'Node'))) ? recv.$type()['$==']("const") : $b)) ? recv.$children().$last()['$==']("File") : $a))) { if (meth['$==']("expand_path")) { return $send(self, 'expand_path', Opal.to_a(parts)) } else if (meth['$==']("join")) { @@ -47187,160 +54081,173 @@ if (s == null) s = nil; if ("error"['$===']($case)) {return self.compiler.$error(msg, self.sexp.$line())} else if ("warning"['$===']($case)) {return self.compiler.$warning(msg, self.sexp.$line())} else { return nil }})(); - }, TMP_DependencyResolver_handle_part_42.$$arity = 1); - return (Opal.defn(self, '$expand_path', TMP_DependencyResolver_expand_path_44 = function $$expand_path(path, base) { - var TMP_43, self = this; + }, $DependencyResolver_handle_part$41.$$arity = 1); + return (Opal.def(self, '$expand_path', $DependencyResolver_expand_path$43 = function $$expand_path(path, base) { + var $$44, self = this; + + if (base == null) { base = ""; - } - return $send(((("" + (base)) + "/") + (path)).$split("/"), 'inject', [[]], (TMP_43 = function(p, part){var self = TMP_43.$$s || this; -if (p == null) p = nil;if (part == null) part = nil; + }; + return $send(((("" + (base)) + "/") + (path)).$split("/"), 'each_with_object', [[]], ($$44 = function(part, p){var self = $$44.$$s || this; + + + if (part == null) { + part = nil; + }; + + if (p == null) { + p = nil; + }; if (part['$==']("")) { + return nil } else if (part['$==']("..")) { - p.$pop() - } else { - p['$<<'](part) - }; - return p;}, TMP_43.$$s = self, TMP_43.$$arity = 2, TMP_43)).$join("/") - }, TMP_DependencyResolver_expand_path_44.$$arity = -2), nil) && 'expand_path'; + return p.$pop() + } else { + return p['$<<'](part) + };}, $$44.$$s = self, $$44.$$arity = 2, $$44)).$join("/"); + }, $DependencyResolver_expand_path$43.$$arity = -2), nil) && 'expand_path'; })($nesting[0], null, $nesting); - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/csend"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$require', '$handle', '$helper', '$conditional_send', '$recv', '$receiver_sexp', '$push', '$compile_method_name', '$compile_arguments', '$compile_block_pass']); self.$require("opal/nodes/call"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $CSendNode(){}; - var self = $CSendNode = $klass($base, $super, 'CSendNode', $CSendNode); + var self = $klass($base, $super, 'CSendNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CSendNode_default_compile_2; + var $nesting = [self].concat($parent_nesting), $CSendNode_default_compile$1; self.$handle("csend"); - return (Opal.defn(self, '$default_compile', TMP_CSendNode_default_compile_2 = function $$default_compile() { - var TMP_1, self = this; + return (Opal.def(self, '$default_compile', $CSendNode_default_compile$1 = function $$default_compile() { + var $$2, self = this; self.$helper("send"); - return $send(self, 'conditional_send', [self.$recv(self.$receiver_sexp())], (TMP_1 = function(receiver_temp){var self = TMP_1.$$s || this; -if (receiver_temp == null) receiver_temp = nil; + return $send(self, 'conditional_send', [self.$recv(self.$receiver_sexp())], ($$2 = function(receiver_temp){var self = $$2.$$s || this; + + + if (receiver_temp == null) { + receiver_temp = nil; + }; self.$push("$send(", receiver_temp); self.$compile_method_name(); self.$compile_arguments(); self.$compile_block_pass(); - return self.$push(")");}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); - }, TMP_CSendNode_default_compile_2.$$arity = 0), nil) && 'default_compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'CallNode'), $nesting) + return self.$push(")");}, $$2.$$s = self, $$2.$$arity = 1, $$2)); + }, $CSendNode_default_compile$1.$$arity = 0), nil) && 'default_compile'; + })($nesting[0], $$($nesting, 'CallNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/call_special"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$handle', '$children', '$push', '$recv', '$recvr', '$expr', '$property', '$value', '$<<', '$default_compile', '$meth', '$receiver_sexp', '$method_jsid', '$compile_arguments', '$iter', '$s', '$lhs', '$rhs', '$process']); self.$require("opal/nodes/base"); self.$require("opal/nodes/call"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $JsAttrNode(){}; - var self = $JsAttrNode = $klass($base, $super, 'JsAttrNode', $JsAttrNode); + var self = $klass($base, $super, 'JsAttrNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JsAttrNode_compile_1; + var $nesting = [self].concat($parent_nesting), $JsAttrNode_compile$1; self.$handle("jsattr"); self.$children("recvr", "property"); - return (Opal.defn(self, '$compile', TMP_JsAttrNode_compile_1 = function $$compile() { + return (Opal.def(self, '$compile', $JsAttrNode_compile$1 = function $$compile() { var self = this; return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "]") - }, TMP_JsAttrNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $JsAttrNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $JsAttrAsgnNode(){}; - var self = $JsAttrAsgnNode = $klass($base, $super, 'JsAttrAsgnNode', $JsAttrAsgnNode); + var self = $klass($base, $super, 'JsAttrAsgnNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JsAttrAsgnNode_compile_2; + var $nesting = [self].concat($parent_nesting), $JsAttrAsgnNode_compile$2; self.$handle("jsattrasgn"); self.$children("recvr", "property", "value"); - return (Opal.defn(self, '$compile', TMP_JsAttrAsgnNode_compile_2 = function $$compile() { + return (Opal.def(self, '$compile', $JsAttrAsgnNode_compile$2 = function $$compile() { var self = this; return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "] = ", self.$expr(self.$value())) - }, TMP_JsAttrAsgnNode_compile_2.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $JsAttrAsgnNode_compile$2.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $JsCallNode(){}; - var self = $JsCallNode = $klass($base, $super, 'JsCallNode', $JsCallNode); + var self = $klass($base, $super, 'JsCallNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JsCallNode_initialize_3, TMP_JsCallNode_compile_4, TMP_JsCallNode_method_jsid_5, TMP_JsCallNode_compile_using_send_6; + var $nesting = [self].concat($parent_nesting), $JsCallNode_initialize$3, $JsCallNode_compile$4, $JsCallNode_method_jsid$5, $JsCallNode_compile_using_send$6; - def.iter = def.arglist = nil; + self.$$prototype.iter = self.$$prototype.arglist = nil; self.$handle("jscall"); - Opal.defn(self, '$initialize', TMP_JsCallNode_initialize_3 = function $$initialize($a_rest) { - var self = this, $iter = TMP_JsCallNode_initialize_3.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $JsCallNode_initialize$3 = function $$initialize($a) { + var $post_args, $iter = $JsCallNode_initialize$3.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_JsCallNode_initialize_3.$$p = null; + if ($iter) $JsCallNode_initialize$3.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_JsCallNode_initialize_3, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $JsCallNode_initialize$3, false), $zuper, $iter); if ($truthy(self.iter)) { self.arglist = self.arglist['$<<'](self.iter)}; return (self.iter = nil); - }, TMP_JsCallNode_initialize_3.$$arity = -1); + }, $JsCallNode_initialize$3.$$arity = -1); - Opal.defn(self, '$compile', TMP_JsCallNode_compile_4 = function $$compile() { + Opal.def(self, '$compile', $JsCallNode_compile$4 = function $$compile() { var self = this; return self.$default_compile() - }, TMP_JsCallNode_compile_4.$$arity = 0); + }, $JsCallNode_compile$4.$$arity = 0); - Opal.defn(self, '$method_jsid', TMP_JsCallNode_method_jsid_5 = function $$method_jsid() { + Opal.def(self, '$method_jsid', $JsCallNode_method_jsid$5 = function $$method_jsid() { var self = this; return "" + "." + (self.$meth()) - }, TMP_JsCallNode_method_jsid_5.$$arity = 0); - return (Opal.defn(self, '$compile_using_send', TMP_JsCallNode_compile_using_send_6 = function $$compile_using_send() { + }, $JsCallNode_method_jsid$5.$$arity = 0); + return (Opal.def(self, '$compile_using_send', $JsCallNode_compile_using_send$6 = function $$compile_using_send() { var self = this; @@ -47349,31 +54256,30 @@ Opal.modules["opal/nodes/call_special"] = function(Opal) { if ($truthy(self.$iter())) { self.$push(".concat(", self.$expr(self.$iter()), ")")}; return self.$push(")"); - }, TMP_JsCallNode_compile_using_send_6.$$arity = 0), nil) && 'compile_using_send'; - })($nesting[0], Opal.const_get_relative($nesting, 'CallNode'), $nesting); + }, $JsCallNode_compile_using_send$6.$$arity = 0), nil) && 'compile_using_send'; + })($nesting[0], $$($nesting, 'CallNode'), $nesting); (function($base, $super, $parent_nesting) { - function $Match3Node(){}; - var self = $Match3Node = $klass($base, $super, 'Match3Node', $Match3Node); + var self = $klass($base, $super, 'Match3Node'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Match3Node_compile_7; + var $nesting = [self].concat($parent_nesting), $Match3Node_compile$7; - def.level = nil; + self.$$prototype.level = nil; self.$handle("match_with_lvasgn"); self.$children("lhs", "rhs"); - return (Opal.defn(self, '$compile', TMP_Match3Node_compile_7 = function $$compile() { + return (Opal.def(self, '$compile', $Match3Node_compile$7 = function $$compile() { var self = this, sexp = nil; sexp = self.$s("send", self.$lhs(), "=~", self.$rhs()); return self.$push(self.$process(sexp, self.level)); - }, TMP_Match3Node_compile_7.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $Match3Node_compile$7.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/scope"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -47381,28 +54287,27 @@ Opal.modules["opal/nodes/scope"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - Opal.add_stubs(['$require', '$attr_accessor', '$attr_reader', '$indent', '$scope', '$compiler', '$scope=', '$-', '$call', '$==', '$!', '$class?', '$dup', '$push', '$map', '$ivars', '$gvars', '$parser_indent', '$empty?', '$join', '$+', '$proto', '$%', '$fragment', '$def_in_class?', '$add_proto_ivar', '$include?', '$<<', '$has_local?', '$has_temp?', '$pop', '$next_temp', '$succ', '$uses_block!', '$identify!', '$compact', '$parent', '$name', '$scope_name', '$mid', '$unique_temp', '$add_scope_temp', '$def?', '$type', '$rescue_else_sexp']); + Opal.add_stubs(['$require', '$attr_accessor', '$attr_reader', '$indent', '$scope', '$compiler', '$scope=', '$-', '$==', '$!', '$class?', '$dup', '$push', '$map', '$ivars', '$gvars', '$parser_indent', '$empty?', '$join', '$+', '$fragment', '$def_in_class?', '$add_proto_ivar', '$include?', '$<<', '$has_local?', '$has_temp?', '$pop', '$next_temp', '$loop', '$succ', '$uses_block!', '$identify!', '$compact', '$parent', '$name', '$scope_name', '$mid', '$unique_temp', '$add_scope_temp', '$def?', '$type', '$nil?', '$rescue_else_sexp']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ScopeNode(){}; - var self = $ScopeNode = $klass($base, $super, 'ScopeNode', $ScopeNode); + var self = $klass($base, $super, 'ScopeNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ScopeNode_initialize_1, TMP_ScopeNode_in_scope_2, TMP_ScopeNode_class_scope$q_4, TMP_ScopeNode_class$q_5, TMP_ScopeNode_module$q_6, TMP_ScopeNode_sclass$q_7, TMP_ScopeNode_top$q_8, TMP_ScopeNode_iter$q_9, TMP_ScopeNode_def$q_10, TMP_ScopeNode_def_in_class$q_11, TMP_ScopeNode_proto_12, TMP_ScopeNode_to_vars_17, TMP_ScopeNode_add_scope_ivar_18, TMP_ScopeNode_add_scope_gvar_19, TMP_ScopeNode_add_proto_ivar_20, TMP_ScopeNode_add_arg_21, TMP_ScopeNode_add_scope_local_22, TMP_ScopeNode_has_local$q_23, TMP_ScopeNode_add_scope_temp_24, TMP_ScopeNode_has_temp$q_25, TMP_ScopeNode_new_temp_26, TMP_ScopeNode_next_temp_27, TMP_ScopeNode_queue_temp_28, TMP_ScopeNode_push_while_29, TMP_ScopeNode_pop_while_30, TMP_ScopeNode_in_while$q_31, TMP_ScopeNode_uses_block$B_32, TMP_ScopeNode_identify$B_33, TMP_ScopeNode_identity_34, TMP_ScopeNode_find_parent_def_35, TMP_ScopeNode_get_super_chain_36, TMP_ScopeNode_uses_block$q_37, TMP_ScopeNode_has_rescue_else$q_38, TMP_ScopeNode_in_ensure_39, TMP_ScopeNode_in_ensure$q_40; + var $nesting = [self].concat($parent_nesting), $ScopeNode_initialize$1, $ScopeNode_in_scope$2, $ScopeNode_class_scope$ques$4, $ScopeNode_class$ques$5, $ScopeNode_module$ques$6, $ScopeNode_sclass$ques$7, $ScopeNode_top$ques$8, $ScopeNode_iter$ques$9, $ScopeNode_def$ques$10, $ScopeNode_def_in_class$ques$11, $ScopeNode_to_vars$12, $ScopeNode_add_scope_ivar$17, $ScopeNode_add_scope_gvar$18, $ScopeNode_add_proto_ivar$19, $ScopeNode_add_arg$20, $ScopeNode_add_scope_local$21, $ScopeNode_has_local$ques$22, $ScopeNode_add_scope_temp$23, $ScopeNode_has_temp$ques$24, $ScopeNode_new_temp$25, $ScopeNode_next_temp$26, $ScopeNode_queue_temp$28, $ScopeNode_push_while$29, $ScopeNode_pop_while$30, $ScopeNode_in_while$ques$31, $ScopeNode_uses_block$excl$32, $ScopeNode_identify$excl$33, $ScopeNode_find_parent_def$34, $ScopeNode_super_chain$35, $ScopeNode_uses_block$ques$36, $ScopeNode_has_rescue_else$ques$37, $ScopeNode_in_ensure$38, $ScopeNode_in_ensure$ques$39; - def.type = def.defs = def.parent = def.temps = def.locals = def.compiler = def.proto_ivars = def.ivars = def.gvars = def.args = def.queue = def.unique = def.while_stack = def.identity = def.uses_block = def.in_ensure = nil; + self.$$prototype.type = self.$$prototype.defs = self.$$prototype.parent = self.$$prototype.temps = self.$$prototype.locals = self.$$prototype.compiler = self.$$prototype.proto_ivars = self.$$prototype.ivars = self.$$prototype.gvars = self.$$prototype.args = self.$$prototype.queue = self.$$prototype.while_stack = self.$$prototype.identity = self.$$prototype.uses_block = self.$$prototype.in_ensure = nil; self.$attr_accessor("parent"); self.$attr_accessor("name"); @@ -47419,16 +54324,19 @@ Opal.modules["opal/nodes/scope"] = function(Opal) { self.$attr_accessor("catch_return", "has_break"); self.$attr_accessor("rescue_else_sexp"); - Opal.defn(self, '$initialize', TMP_ScopeNode_initialize_1 = function $$initialize($a_rest) { - var self = this, $iter = TMP_ScopeNode_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $ScopeNode_initialize$1 = function $$initialize($a) { + var $post_args, $iter = $ScopeNode_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_ScopeNode_initialize_1.$$p = null; + if ($iter) $ScopeNode_initialize$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_ScopeNode_initialize_1, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $ScopeNode_initialize$1, false), $zuper, $iter); self.locals = []; self.temps = []; self.args = []; @@ -47444,13 +54352,13 @@ Opal.modules["opal/nodes/scope"] = function(Opal) { self.uses_block = false; self.in_ensure = false; return (self.proto_ivars = []); - }, TMP_ScopeNode_initialize_1.$$arity = -1); + }, $ScopeNode_initialize$1.$$arity = -1); - Opal.defn(self, '$in_scope', TMP_ScopeNode_in_scope_2 = function $$in_scope() { - var TMP_3, self = this, $iter = TMP_ScopeNode_in_scope_2.$$p, block = $iter || nil; + Opal.def(self, '$in_scope', $ScopeNode_in_scope$2 = function $$in_scope() { + var $$3, $iter = $ScopeNode_in_scope$2.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_ScopeNode_in_scope_2.$$p = null; - return $send(self, 'indent', [], (TMP_3 = function(){var self = TMP_3.$$s || this, $writer = nil; + if ($iter) $ScopeNode_in_scope$2.$$p = null; + return $send(self, 'indent', [], ($$3 = function(){var self = $$3.$$s || this, $writer = nil; if (self.parent == null) self.parent = nil; @@ -47459,160 +54367,174 @@ Opal.modules["opal/nodes/scope"] = function(Opal) { $writer = [self]; $send(self.$compiler(), 'scope=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - block.$call(self); + Opal.yield1($yield, self); $writer = [self.parent]; $send(self.$compiler(), 'scope=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3)) - }, TMP_ScopeNode_in_scope_2.$$arity = 0); + return $writer[$rb_minus($writer["length"], 1)];;}, $$3.$$s = self, $$3.$$arity = 0, $$3)) + }, $ScopeNode_in_scope$2.$$arity = 0); - Opal.defn(self, '$class_scope?', TMP_ScopeNode_class_scope$q_4 = function() { + Opal.def(self, '$class_scope?', $ScopeNode_class_scope$ques$4 = function() { var $a, self = this; return ($truthy($a = self.type['$==']("class")) ? $a : self.type['$==']("module")) - }, TMP_ScopeNode_class_scope$q_4.$$arity = 0); + }, $ScopeNode_class_scope$ques$4.$$arity = 0); - Opal.defn(self, '$class?', TMP_ScopeNode_class$q_5 = function() { + Opal.def(self, '$class?', $ScopeNode_class$ques$5 = function() { var self = this; return self.type['$==']("class") - }, TMP_ScopeNode_class$q_5.$$arity = 0); + }, $ScopeNode_class$ques$5.$$arity = 0); - Opal.defn(self, '$module?', TMP_ScopeNode_module$q_6 = function() { + Opal.def(self, '$module?', $ScopeNode_module$ques$6 = function() { var self = this; return self.type['$==']("module") - }, TMP_ScopeNode_module$q_6.$$arity = 0); + }, $ScopeNode_module$ques$6.$$arity = 0); - Opal.defn(self, '$sclass?', TMP_ScopeNode_sclass$q_7 = function() { + Opal.def(self, '$sclass?', $ScopeNode_sclass$ques$7 = function() { var self = this; return self.type['$==']("sclass") - }, TMP_ScopeNode_sclass$q_7.$$arity = 0); + }, $ScopeNode_sclass$ques$7.$$arity = 0); - Opal.defn(self, '$top?', TMP_ScopeNode_top$q_8 = function() { + Opal.def(self, '$top?', $ScopeNode_top$ques$8 = function() { var self = this; return self.type['$==']("top") - }, TMP_ScopeNode_top$q_8.$$arity = 0); + }, $ScopeNode_top$ques$8.$$arity = 0); - Opal.defn(self, '$iter?', TMP_ScopeNode_iter$q_9 = function() { + Opal.def(self, '$iter?', $ScopeNode_iter$ques$9 = function() { var self = this; return self.type['$==']("iter") - }, TMP_ScopeNode_iter$q_9.$$arity = 0); + }, $ScopeNode_iter$ques$9.$$arity = 0); - Opal.defn(self, '$def?', TMP_ScopeNode_def$q_10 = function() { + Opal.def(self, '$def?', $ScopeNode_def$ques$10 = function() { var $a, self = this; return ($truthy($a = self.type['$==']("def")) ? $a : self.type['$==']("defs")) - }, TMP_ScopeNode_def$q_10.$$arity = 0); + }, $ScopeNode_def$ques$10.$$arity = 0); - Opal.defn(self, '$def_in_class?', TMP_ScopeNode_def_in_class$q_11 = function() { + Opal.def(self, '$def_in_class?', $ScopeNode_def_in_class$ques$11 = function() { var $a, $b, $c, self = this; return ($truthy($a = ($truthy($b = ($truthy($c = self.defs['$!']()) ? self.type['$==']("def") : $c)) ? self.parent : $b)) ? self.parent['$class?']() : $a) - }, TMP_ScopeNode_def_in_class$q_11.$$arity = 0); + }, $ScopeNode_def_in_class$ques$11.$$arity = 0); - Opal.defn(self, '$proto', TMP_ScopeNode_proto_12 = function $$proto() { - var self = this; - - return "def" - }, TMP_ScopeNode_proto_12.$$arity = 0); - - Opal.defn(self, '$to_vars', TMP_ScopeNode_to_vars_17 = function $$to_vars() { - var TMP_13, TMP_14, TMP_15, $a, TMP_16, self = this, vars = nil, iv = nil, gv = nil, indent = nil, str = nil, pvars = nil, result = nil; + Opal.def(self, '$to_vars', $ScopeNode_to_vars$12 = function $$to_vars() { + var $$13, $$14, $$15, $a, $$16, self = this, vars = nil, iv = nil, gv = nil, indent = nil, str = nil, pvars = nil, result = nil; vars = self.temps.$dup(); - $send(vars, 'push', Opal.to_a($send(self.locals, 'map', [], (TMP_13 = function(l){var self = TMP_13.$$s || this; -if (l == null) l = nil; - return "" + (l) + " = nil"}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13)))); - iv = $send(self.$ivars(), 'map', [], (TMP_14 = function(ivar){var self = TMP_14.$$s || this; -if (ivar == null) ivar = nil; - return "" + "if (self" + (ivar) + " == null) self" + (ivar) + " = nil;\n"}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)); - gv = $send(self.$gvars(), 'map', [], (TMP_15 = function(gvar){var self = TMP_15.$$s || this; -if (gvar == null) gvar = nil; - return "" + "if ($gvars" + (gvar) + " == null) $gvars" + (gvar) + " = nil;\n"}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)); + $send(vars, 'push', Opal.to_a($send(self.locals, 'map', [], ($$13 = function(l){var self = $$13.$$s || this; + + + + if (l == null) { + l = nil; + }; + return "" + (l) + " = nil";}, $$13.$$s = self, $$13.$$arity = 1, $$13)))); + iv = $send(self.$ivars(), 'map', [], ($$14 = function(ivar){var self = $$14.$$s || this; + + + + if (ivar == null) { + ivar = nil; + }; + return "" + "if (self" + (ivar) + " == null) self" + (ivar) + " = nil;\n";}, $$14.$$s = self, $$14.$$arity = 1, $$14)); + gv = $send(self.$gvars(), 'map', [], ($$15 = function(gvar){var self = $$15.$$s || this; + + + + if (gvar == null) { + gvar = nil; + }; + return "" + "if ($gvars" + (gvar) + " == null) $gvars" + (gvar) + " = nil;\n";}, $$15.$$s = self, $$15.$$arity = 1, $$15)); indent = self.compiler.$parser_indent(); str = (function() {if ($truthy(vars['$empty?']())) { return "" - } else { + } else { return "" + "var " + (vars.$join(", ")) + ";\n" }; return nil; })(); if ($truthy(self.$ivars()['$empty?']())) { - } else { + } else { str = $rb_plus(str, "" + (indent) + (iv.$join(indent))) }; if ($truthy(self.$gvars()['$empty?']())) { - } else { + } else { str = $rb_plus(str, "" + (indent) + (gv.$join(indent))) }; if ($truthy(($truthy($a = self['$class?']()) ? self.proto_ivars['$empty?']()['$!']() : $a))) { - pvars = $send(self.proto_ivars, 'map', [], (TMP_16 = function(i){var self = TMP_16.$$s || this; -if (i == null) i = nil; - return "" + (self.$proto()) + (i)}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16)).$join(" = "); - result = "%s\n%s%s = nil;"['$%']([str, indent, pvars]); - } else { + pvars = $send(self.proto_ivars, 'map', [], ($$16 = function(i){var self = $$16.$$s || this; + + + + if (i == null) { + i = nil; + }; + return "" + "self.$$prototype" + (i);}, $$16.$$s = self, $$16.$$arity = 1, $$16)).$join(" = "); + result = "" + (str) + "\n" + (indent) + (pvars) + " = nil;"; + } else { result = str }; return self.$fragment(result); - }, TMP_ScopeNode_to_vars_17.$$arity = 0); + }, $ScopeNode_to_vars$12.$$arity = 0); - Opal.defn(self, '$add_scope_ivar', TMP_ScopeNode_add_scope_ivar_18 = function $$add_scope_ivar(ivar) { + Opal.def(self, '$add_scope_ivar', $ScopeNode_add_scope_ivar$17 = function $$add_scope_ivar(ivar) { var self = this; if ($truthy(self['$def_in_class?']())) { return self.parent.$add_proto_ivar(ivar) } else if ($truthy(self.ivars['$include?'](ivar))) { return nil - } else { + } else { return self.ivars['$<<'](ivar) } - }, TMP_ScopeNode_add_scope_ivar_18.$$arity = 1); + }, $ScopeNode_add_scope_ivar$17.$$arity = 1); - Opal.defn(self, '$add_scope_gvar', TMP_ScopeNode_add_scope_gvar_19 = function $$add_scope_gvar(gvar) { + Opal.def(self, '$add_scope_gvar', $ScopeNode_add_scope_gvar$18 = function $$add_scope_gvar(gvar) { var self = this; if ($truthy(self.gvars['$include?'](gvar))) { return nil - } else { + } else { return self.gvars['$<<'](gvar) } - }, TMP_ScopeNode_add_scope_gvar_19.$$arity = 1); + }, $ScopeNode_add_scope_gvar$18.$$arity = 1); - Opal.defn(self, '$add_proto_ivar', TMP_ScopeNode_add_proto_ivar_20 = function $$add_proto_ivar(ivar) { + Opal.def(self, '$add_proto_ivar', $ScopeNode_add_proto_ivar$19 = function $$add_proto_ivar(ivar) { var self = this; if ($truthy(self.proto_ivars['$include?'](ivar))) { return nil - } else { + } else { return self.proto_ivars['$<<'](ivar) } - }, TMP_ScopeNode_add_proto_ivar_20.$$arity = 1); + }, $ScopeNode_add_proto_ivar$19.$$arity = 1); - Opal.defn(self, '$add_arg', TMP_ScopeNode_add_arg_21 = function $$add_arg(arg) { + Opal.def(self, '$add_arg', $ScopeNode_add_arg$20 = function $$add_arg(arg) { var self = this; if ($truthy(self.args['$include?'](arg))) { - } else { + } else { self.args['$<<'](arg) }; return arg; - }, TMP_ScopeNode_add_arg_21.$$arity = 1); + }, $ScopeNode_add_arg$20.$$arity = 1); - Opal.defn(self, '$add_scope_local', TMP_ScopeNode_add_scope_local_22 = function $$add_scope_local(local) { + Opal.def(self, '$add_scope_local', $ScopeNode_add_scope_local$21 = function $$add_scope_local(local) { var self = this; if ($truthy(self['$has_local?'](local))) { return nil}; return self.locals['$<<'](local); - }, TMP_ScopeNode_add_scope_local_22.$$arity = 1); + }, $ScopeNode_add_scope_local$21.$$arity = 1); - Opal.defn(self, '$has_local?', TMP_ScopeNode_has_local$q_23 = function(local) { + Opal.def(self, '$has_local?', $ScopeNode_has_local$ques$22 = function(local) { var $a, $b, self = this; @@ -47621,98 +54543,104 @@ if (i == null) i = nil; if ($truthy(($truthy($a = self.parent) ? self.type['$==']("iter") : $a))) { return self.parent['$has_local?'](local)}; return false; - }, TMP_ScopeNode_has_local$q_23.$$arity = 1); + }, $ScopeNode_has_local$ques$22.$$arity = 1); - Opal.defn(self, '$add_scope_temp', TMP_ScopeNode_add_scope_temp_24 = function $$add_scope_temp(tmp) { + Opal.def(self, '$add_scope_temp', $ScopeNode_add_scope_temp$23 = function $$add_scope_temp(tmp) { var self = this; if ($truthy(self['$has_temp?'](tmp))) { return nil}; return self.temps.$push(tmp); - }, TMP_ScopeNode_add_scope_temp_24.$$arity = 1); + }, $ScopeNode_add_scope_temp$23.$$arity = 1); - Opal.defn(self, '$has_temp?', TMP_ScopeNode_has_temp$q_25 = function(tmp) { + Opal.def(self, '$has_temp?', $ScopeNode_has_temp$ques$24 = function(tmp) { var self = this; return self.temps['$include?'](tmp) - }, TMP_ScopeNode_has_temp$q_25.$$arity = 1); + }, $ScopeNode_has_temp$ques$24.$$arity = 1); - Opal.defn(self, '$new_temp', TMP_ScopeNode_new_temp_26 = function $$new_temp() { + Opal.def(self, '$new_temp', $ScopeNode_new_temp$25 = function $$new_temp() { var self = this, tmp = nil; if ($truthy(self.queue['$empty?']())) { - } else { + } else { return self.queue.$pop() }; tmp = self.$next_temp(); self.temps['$<<'](tmp); return tmp; - }, TMP_ScopeNode_new_temp_26.$$arity = 0); + }, $ScopeNode_new_temp$25.$$arity = 0); - Opal.defn(self, '$next_temp', TMP_ScopeNode_next_temp_27 = function $$next_temp() { - var $a, self = this, tmp = nil; + Opal.def(self, '$next_temp', $ScopeNode_next_temp$26 = function $$next_temp() { + var $$27, self = this, tmp = nil; + + + tmp = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$27 = function(){var self = $$27.$$s || this; + if (self.unique == null) self.unique = nil; - while ($truthy(true)) { - tmp = "" + "$" + (self.unique); self.unique = self.unique.$succ(); if ($truthy(self['$has_local?'](tmp))) { - } else { - break; - }; - }; + return nil + } else { + + Opal.brk(nil, $brk) + };}, $$27.$$s = self, $$27.$$brk = $brk, $$27.$$arity = 0, $$27)) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); return tmp; - }, TMP_ScopeNode_next_temp_27.$$arity = 0); + }, $ScopeNode_next_temp$26.$$arity = 0); - Opal.defn(self, '$queue_temp', TMP_ScopeNode_queue_temp_28 = function $$queue_temp(name) { + Opal.def(self, '$queue_temp', $ScopeNode_queue_temp$28 = function $$queue_temp(name) { var self = this; return self.queue['$<<'](name) - }, TMP_ScopeNode_queue_temp_28.$$arity = 1); + }, $ScopeNode_queue_temp$28.$$arity = 1); - Opal.defn(self, '$push_while', TMP_ScopeNode_push_while_29 = function $$push_while() { + Opal.def(self, '$push_while', $ScopeNode_push_while$29 = function $$push_while() { var self = this, info = nil; info = $hash2([], {}); self.while_stack.$push(info); return info; - }, TMP_ScopeNode_push_while_29.$$arity = 0); + }, $ScopeNode_push_while$29.$$arity = 0); - Opal.defn(self, '$pop_while', TMP_ScopeNode_pop_while_30 = function $$pop_while() { + Opal.def(self, '$pop_while', $ScopeNode_pop_while$30 = function $$pop_while() { var self = this; return self.while_stack.$pop() - }, TMP_ScopeNode_pop_while_30.$$arity = 0); + }, $ScopeNode_pop_while$30.$$arity = 0); - Opal.defn(self, '$in_while?', TMP_ScopeNode_in_while$q_31 = function() { + Opal.def(self, '$in_while?', $ScopeNode_in_while$ques$31 = function() { var self = this; return self.while_stack['$empty?']()['$!']() - }, TMP_ScopeNode_in_while$q_31.$$arity = 0); + }, $ScopeNode_in_while$ques$31.$$arity = 0); - Opal.defn(self, '$uses_block!', TMP_ScopeNode_uses_block$B_32 = function() { + Opal.def(self, '$uses_block!', $ScopeNode_uses_block$excl$32 = function() { var $a, self = this; if ($truthy((($a = self.type['$==']("iter")) ? self.parent : self.type['$==']("iter")))) { return self.parent['$uses_block!']() - } else { + } else { self.uses_block = true; return self['$identify!'](); } - }, TMP_ScopeNode_uses_block$B_32.$$arity = 0); + }, $ScopeNode_uses_block$excl$32.$$arity = 0); - Opal.defn(self, '$identify!', TMP_ScopeNode_identify$B_33 = function(name) { + Opal.def(self, '$identify!', $ScopeNode_identify$excl$33 = function(name) { var $a, $b, $c, self = this; + + if (name == null) { name = nil; - } - + }; if ($truthy(self.identity)) { return self.identity}; name = ($truthy($a = name) ? $a : [($truthy($b = self.$parent()) ? ($truthy($c = self.$parent().$name()) ? $c : self.$parent().$scope_name()) : $b), self.$mid()].$compact().$join("_")); @@ -47720,15 +54648,10 @@ if (i == null) i = nil; if ($truthy(self.parent)) { self.parent.$add_scope_temp(self.identity)}; return self.identity; - }, TMP_ScopeNode_identify$B_33.$$arity = -1); - - Opal.defn(self, '$identity', TMP_ScopeNode_identity_34 = function $$identity() { - var self = this; - - return self.identity - }, TMP_ScopeNode_identity_34.$$arity = 0); + }, $ScopeNode_identify$excl$33.$$arity = -1); + self.$attr_reader("identity"); - Opal.defn(self, '$find_parent_def', TMP_ScopeNode_find_parent_def_35 = function $$find_parent_def() { + Opal.def(self, '$find_parent_def', $ScopeNode_find_parent_def$34 = function $$find_parent_def() { var $a, self = this, scope = nil; @@ -47738,9 +54661,9 @@ if (i == null) i = nil; return scope} }; return nil; - }, TMP_ScopeNode_find_parent_def_35.$$arity = 0); + }, $ScopeNode_find_parent_def$34.$$arity = 0); - Opal.defn(self, '$get_super_chain', TMP_ScopeNode_get_super_chain_36 = function $$get_super_chain() { + Opal.def(self, '$super_chain', $ScopeNode_super_chain$35 = function $$super_chain() { var $a, self = this, chain = nil, scope = nil, defn = nil, mid = nil; @@ -47756,1399 +54679,1515 @@ if (i == null) i = nil; defn = scope['$identify!'](); mid = "" + "'" + (scope.$mid()) + "'"; break;; - } else { + } else { break; } }; return [chain, defn, mid]; - }, TMP_ScopeNode_get_super_chain_36.$$arity = 0); + }, $ScopeNode_super_chain$35.$$arity = 0); - Opal.defn(self, '$uses_block?', TMP_ScopeNode_uses_block$q_37 = function() { + Opal.def(self, '$uses_block?', $ScopeNode_uses_block$ques$36 = function() { var self = this; return self.uses_block - }, TMP_ScopeNode_uses_block$q_37.$$arity = 0); + }, $ScopeNode_uses_block$ques$36.$$arity = 0); - Opal.defn(self, '$has_rescue_else?', TMP_ScopeNode_has_rescue_else$q_38 = function() { + Opal.def(self, '$has_rescue_else?', $ScopeNode_has_rescue_else$ques$37 = function() { var self = this; - return self.$rescue_else_sexp()['$!']()['$!']() - }, TMP_ScopeNode_has_rescue_else$q_38.$$arity = 0); + return self.$rescue_else_sexp()['$nil?']()['$!']() + }, $ScopeNode_has_rescue_else$ques$37.$$arity = 0); - Opal.defn(self, '$in_ensure', TMP_ScopeNode_in_ensure_39 = function $$in_ensure() { - var self = this, $iter = TMP_ScopeNode_in_ensure_39.$$p, $yield = $iter || nil, result = nil; + Opal.def(self, '$in_ensure', $ScopeNode_in_ensure$38 = function $$in_ensure() { + var $iter = $ScopeNode_in_ensure$38.$$p, $yield = $iter || nil, self = this, result = nil; - if ($iter) TMP_ScopeNode_in_ensure_39.$$p = null; + if ($iter) $ScopeNode_in_ensure$38.$$p = null; if (($yield !== nil)) { - } else { + } else { return nil }; self.in_ensure = true; result = Opal.yieldX($yield, []); self.in_ensure = false; return result; - }, TMP_ScopeNode_in_ensure_39.$$arity = 0); - return (Opal.defn(self, '$in_ensure?', TMP_ScopeNode_in_ensure$q_40 = function() { + }, $ScopeNode_in_ensure$38.$$arity = 0); + return (Opal.def(self, '$in_ensure?', $ScopeNode_in_ensure$ques$39 = function() { var self = this; - return self.in_ensure['$!']()['$!']() - }, TMP_ScopeNode_in_ensure$q_40.$$arity = 0), nil) && 'in_ensure?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + return self.in_ensure + }, $ScopeNode_in_ensure$ques$39.$$arity = 0), nil) && 'in_ensure?'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/module"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$name_and_base', '$helper', '$push', '$line', '$in_scope', '$name=', '$scope', '$-', '$add_temp', '$proto', '$stmt', '$body', '$s', '$empty_line', '$to_vars', '$cid', '$nil?', '$expr']); + Opal.add_stubs(['$require', '$handle', '$children', '$name_and_base', '$helper', '$push', '$line', '$in_scope', '$name=', '$scope', '$-', '$add_temp', '$stmt', '$body', '$s', '$empty_line', '$to_vars', '$cid', '$nil?', '$expr']); self.$require("opal/nodes/scope"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ModuleNode(){}; - var self = $ModuleNode = $klass($base, $super, 'ModuleNode', $ModuleNode); + var self = $klass($base, $super, 'ModuleNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ModuleNode_compile_2, TMP_ModuleNode_name_and_base_3; + var $nesting = [self].concat($parent_nesting), $ModuleNode_compile$1, $ModuleNode_name_and_base$3; self.$handle("module"); self.$children("cid", "body"); - Opal.defn(self, '$compile', TMP_ModuleNode_compile_2 = function $$compile() { - var $a, $b, TMP_1, self = this, name = nil, base = nil; + Opal.def(self, '$compile', $ModuleNode_compile$1 = function $$compile() { + var $a, $b, $$2, self = this, name = nil, base = nil; $b = self.$name_and_base(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; self.$helper("module"); self.$push("(function($base, $parent_nesting) {"); - self.$line("" + " var $" + (name) + ", self = $" + (name) + " = $module($base, '" + (name) + "');"); - $send(self, 'in_scope', [], (TMP_1 = function(){var self = TMP_1.$$s || this, $c, $writer = nil, body_code = nil; + self.$line("" + " var self = $module($base, '" + (name) + "');"); + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this, $c, $writer = nil, body_code = nil; $writer = [name]; $send(self.$scope(), 'name=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - self.$add_temp("" + (self.$scope().$proto()) + " = self.$$proto"); self.$add_temp("$nesting = [self].concat($parent_nesting)"); body_code = self.$stmt(($truthy($c = self.$body()) ? $c : self.$s("nil"))); self.$empty_line(); self.$line(self.$scope().$to_vars()); - return self.$line(body_code);}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return self.$line(body_code);}, $$2.$$s = self, $$2.$$arity = 0, $$2)); return self.$line("})(", base, ", $nesting)"); - }, TMP_ModuleNode_compile_2.$$arity = 0); - return (Opal.defn(self, '$name_and_base', TMP_ModuleNode_name_and_base_3 = function $$name_and_base() { + }, $ModuleNode_compile$1.$$arity = 0); + return (Opal.def(self, '$name_and_base', $ModuleNode_name_and_base$3 = function $$name_and_base() { var $a, $b, self = this, base = nil, name = nil; $b = self.$cid().$children(), $a = Opal.to_ary($b), (base = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $b; if ($truthy(base['$nil?']())) { return [name, "$nesting[0]"] - } else { + } else { return [name, self.$expr(base)] }; - }, TMP_ModuleNode_name_and_base_3.$$arity = 0), nil) && 'name_and_base'; - })($nesting[0], Opal.const_get_relative($nesting, 'ScopeNode'), $nesting) + }, $ModuleNode_name_and_base$3.$$arity = 0), nil) && 'name_and_base'; + })($nesting[0], $$($nesting, 'ScopeNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/class"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$name_and_base', '$helper', '$push', '$line', '$in_scope', '$name=', '$scope', '$-', '$add_temp', '$proto', '$body_code', '$empty_line', '$to_vars', '$super_code', '$sup', '$expr', '$stmt', '$returns', '$compiler', '$body', '$s']); + Opal.add_stubs(['$require', '$handle', '$children', '$name_and_base', '$helper', '$push', '$line', '$in_scope', '$name=', '$scope', '$-', '$add_temp', '$body_code', '$empty_line', '$to_vars', '$super_code', '$sup', '$expr', '$stmt', '$returns', '$compiler', '$body', '$s']); self.$require("opal/nodes/module"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ClassNode(){}; - var self = $ClassNode = $klass($base, $super, 'ClassNode', $ClassNode); + var self = $klass($base, $super, 'ClassNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ClassNode_compile_2, TMP_ClassNode_super_code_3, TMP_ClassNode_body_code_4; + var $nesting = [self].concat($parent_nesting), $ClassNode_compile$1, $ClassNode_super_code$3, $ClassNode_body_code$4; self.$handle("class"); self.$children("cid", "sup", "body"); - Opal.defn(self, '$compile', TMP_ClassNode_compile_2 = function $$compile() { - var $a, $b, TMP_1, self = this, name = nil, base = nil; + Opal.def(self, '$compile', $ClassNode_compile$1 = function $$compile() { + var $a, $b, $$2, self = this, name = nil, base = nil; $b = self.$name_and_base(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; self.$helper("klass"); self.$push("(function($base, $super, $parent_nesting) {"); - self.$line("" + " function $" + (name) + "(){};"); - self.$line("" + " var self = $" + (name) + " = $klass($base, $super, '" + (name) + "', $" + (name) + ");"); - $send(self, 'in_scope', [], (TMP_1 = function(){var self = TMP_1.$$s || this, $writer = nil, body_code = nil; + self.$line("" + " var self = $klass($base, $super, '" + (name) + "');"); + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this, $writer = nil, body_code = nil; $writer = [name]; $send(self.$scope(), 'name=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - self.$add_temp("" + (self.$scope().$proto()) + " = self.$$proto"); self.$add_temp("$nesting = [self].concat($parent_nesting)"); body_code = self.$body_code(); self.$empty_line(); self.$line(self.$scope().$to_vars()); - return self.$line(body_code);}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return self.$line(body_code);}, $$2.$$s = self, $$2.$$arity = 0, $$2)); return self.$line("})(", base, ", ", self.$super_code(), ", $nesting)"); - }, TMP_ClassNode_compile_2.$$arity = 0); + }, $ClassNode_compile$1.$$arity = 0); - Opal.defn(self, '$super_code', TMP_ClassNode_super_code_3 = function $$super_code() { + Opal.def(self, '$super_code', $ClassNode_super_code$3 = function $$super_code() { var self = this; if ($truthy(self.$sup())) { return self.$expr(self.$sup()) - } else { + } else { return "null" } - }, TMP_ClassNode_super_code_3.$$arity = 0); - return (Opal.defn(self, '$body_code', TMP_ClassNode_body_code_4 = function $$body_code() { + }, $ClassNode_super_code$3.$$arity = 0); + return (Opal.def(self, '$body_code', $ClassNode_body_code$4 = function $$body_code() { var $a, self = this; return self.$stmt(self.$compiler().$returns(($truthy($a = self.$body()) ? $a : self.$s("nil")))) - }, TMP_ClassNode_body_code_4.$$arity = 0), nil) && 'body_code'; - })($nesting[0], Opal.const_get_relative($nesting, 'ModuleNode'), $nesting) + }, $ClassNode_body_code$4.$$arity = 0), nil) && 'body_code'; + })($nesting[0], $$($nesting, 'ModuleNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/singleton_class"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; Opal.add_stubs(['$require', '$handle', '$children', '$push', '$in_scope', '$add_temp', '$stmt', '$returns', '$compiler', '$body', '$line', '$to_vars', '$scope', '$recv', '$object']); self.$require("opal/nodes/scope"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $SingletonClassNode(){}; - var self = $SingletonClassNode = $klass($base, $super, 'SingletonClassNode', $SingletonClassNode); + var self = $klass($base, $super, 'SingletonClassNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SingletonClassNode_compile_2; + var $nesting = [self].concat($parent_nesting), $SingletonClassNode_compile$1; self.$handle("sclass"); self.$children("object", "body"); - return (Opal.defn(self, '$compile', TMP_SingletonClassNode_compile_2 = function $$compile() { - var TMP_1, self = this; + return (Opal.def(self, '$compile', $SingletonClassNode_compile$1 = function $$compile() { + var $$2, self = this; self.$push("(function(self, $parent_nesting) {"); - $send(self, 'in_scope', [], (TMP_1 = function(){var self = TMP_1.$$s || this, body_stmt = nil; + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this, body_stmt = nil; - self.$add_temp("def = self.$$proto"); self.$add_temp("$nesting = [self].concat($parent_nesting)"); body_stmt = self.$stmt(self.$compiler().$returns(self.$body())); self.$line(self.$scope().$to_vars()); - return self.$line(body_stmt);}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return self.$line(body_stmt);}, $$2.$$s = self, $$2.$$arity = 0, $$2)); return self.$line("})(Opal.get_singleton_class(", self.$recv(self.$object()), "), $nesting)"); - }, TMP_SingletonClassNode_compile_2.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'ScopeNode'), $nesting) + }, $SingletonClassNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'ScopeNode'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/arg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$children', '$add_arg', '$scope', '$name', '$push', '$to_s']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ArgNode'); + + var $nesting = [self].concat($parent_nesting), $ArgNode_compile$1; + + + self.$handle("arg"); + self.$children("name"); + return (Opal.def(self, '$compile', $ArgNode_compile$1 = function $$compile() { + var self = this; + + + self.$scope().$add_arg(self.$name()); + return self.$push(self.$name().$to_s()); + }, $ArgNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/inline_args"] = function(Opal) { +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/arity_check"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } + function $rb_lt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); + } function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + function $rb_gt(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$push', '$join', '$arg_names', '$inject', '$children', '$type', '$===', '$<<', '$add_arg', '$next_temp', '$scope', '$[]=', '$mlhs_mapping', '$-', '$!', '$[]', '$meta', '$!=', '$+', '$raise', '$inspect']); + Opal.add_stubs(['$require', '$handle', '$children', '$new', '$args_node', '$args', '$optargs', '$restarg', '$postargs', '$kwargs', '$kwoptargs', '$kwrestarg', '$arity', '$arity=', '$scope', '$-', '$arity_check?', '$compiler', '$empty?', '$arity_checks', '$inspect', '$to_s', '$mid', '$line', '$push', '$join', '$compact', '$size', '$all_args', '$!', '$-@', '$<', '$+', '$>', '$<<', '$any?', '$has_only_optional_kwargs?', '$negative_arity', '$positive_arity', '$select', '$include?', '$type', '$has_required_kwargs?', '$all?', '$==', '$def?', '$class_scope?', '$top?', '$parent', '$class?', '$name', '$module?', '$identity']); self.$require("opal/nodes/base"); + self.$require("opal/rewriters/arguments"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); + (function($base, $super, $parent_nesting) { - function $InlineArgs(){}; - var self = $InlineArgs = $klass($base, $super, 'InlineArgs', $InlineArgs); + var self = $klass($base, $super, 'ArityCheckNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InlineArgs_compile_1, TMP_InlineArgs_arg_names_3, TMP_InlineArgs_add_arg_4; + var $nesting = [self].concat($parent_nesting), $ArityCheckNode_initialize$1, $ArityCheckNode_compile$2, $ArityCheckNode_kwargs$3, $ArityCheckNode_all_args$4, $ArityCheckNode_arity_checks$5, $ArityCheckNode_arity$6, $ArityCheckNode_negative_arity$7, $ArityCheckNode_positive_arity$9, $ArityCheckNode_has_only_optional_kwargs$ques$10, $ArityCheckNode_has_required_kwargs$ques$12; + self.$$prototype.kwargs = self.$$prototype.kwoptargs = self.$$prototype.kwrestarg = self.$$prototype.all_args = self.$$prototype.args = self.$$prototype.optargs = self.$$prototype.restarg = self.$$prototype.postargs = self.$$prototype.arity_checks = nil; - self.$handle("inline_args"); + self.$handle("arity_check"); + self.$children("args_node"); - Opal.defn(self, '$compile', TMP_InlineArgs_compile_1 = function $$compile() { - var self = this; + Opal.def(self, '$initialize', $ArityCheckNode_initialize$1 = function $$initialize($a) { + var $post_args, $iter = $ArityCheckNode_initialize$1.$$p, $yield = $iter || nil, self = this, arguments$ = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - return self.$push(self.$arg_names().$join(", ")) - }, TMP_InlineArgs_compile_1.$$arity = 0); + if ($iter) $ArityCheckNode_initialize$1.$$p = null; + // Prepare super implicit arguments + for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { + $zuper[$zuper_i] = arguments[$zuper_i]; + } + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $ArityCheckNode_initialize$1, false), $zuper, $iter); + arguments$ = $$$($$($nesting, 'Rewriters'), 'Arguments').$new(self.$args_node().$children()); + self.args = arguments$.$args(); + self.optargs = arguments$.$optargs(); + self.restarg = arguments$.$restarg(); + self.postargs = arguments$.$postargs(); + self.kwargs = arguments$.$kwargs(); + self.kwoptargs = arguments$.$kwoptargs(); + return (self.kwrestarg = arguments$.$kwrestarg()); + }, $ArityCheckNode_initialize$1.$$arity = -1); - Opal.defn(self, '$arg_names', TMP_InlineArgs_arg_names_3 = function $$arg_names() { - var TMP_2, self = this, done_kwargs = nil; + Opal.def(self, '$compile', $ArityCheckNode_compile$2 = function $$compile() { + var self = this, $writer = nil, meth = nil; - done_kwargs = false; - return $send(self.$children(), 'inject', [[]], (TMP_2 = function(result, arg){var self = TMP_2.$$s || this, $a, $case = nil, tmp = nil, $writer = nil, arg_name = nil, _ = nil, tmp_arg_name = nil; -if (result == null) result = nil;if (arg == null) arg = nil; - $case = arg.$type(); - if ("kwarg"['$===']($case) || "kwoptarg"['$===']($case) || "kwrestarg"['$===']($case)) { - if ($truthy(done_kwargs)) { - } else { - - done_kwargs = true; - result['$<<']("$kwargs"); - }; - self.$add_arg(arg);} - else if ("mlhs"['$===']($case)) { - tmp = self.$scope().$next_temp(); - result['$<<'](tmp); - - $writer = [arg, tmp]; - $send(self.$scope().$mlhs_mapping(), '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];;} - else if ("arg"['$===']($case) || "optarg"['$===']($case)) { - $a = [].concat(Opal.to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(($truthy($a = arg.$meta()['$[]']("inline")['$!']()) ? arg_name['$[]'](0)['$!=']("$") : $a))) { - arg_name = "" + "$" + (arg_name)}; - result['$<<'](arg_name); - self.$add_arg(arg);} - else if ("restarg"['$===']($case)) { - tmp_arg_name = $rb_plus(self.$scope().$next_temp(), "_rest"); - result['$<<'](tmp_arg_name); - self.$add_arg(arg);} - else {self.$raise("" + "Unknown argument type " + (arg.$inspect()))}; - return result;}, TMP_2.$$s = self, TMP_2.$$arity = 2, TMP_2)); - }, TMP_InlineArgs_arg_names_3.$$arity = 0); - return (Opal.defn(self, '$add_arg', TMP_InlineArgs_add_arg_4 = function $$add_arg(arg) { - var $a, self = this, arg_name = nil, _ = nil; - - - $a = [].concat(Opal.to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(arg_name)) { - return self.$scope().$add_arg(arg_name) + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(self.$compiler()['$arity_check?']())) { + } else { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { + return nil + } else { + + meth = self.$scope().$mid().$to_s().$inspect(); + self.$line("var $arity = arguments.length;"); + return self.$push("" + " if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.ac($arity, " + (self.$arity()) + ", this, " + (meth) + "); }"); + }; + }, $ArityCheckNode_compile$2.$$arity = 0); + + Opal.def(self, '$kwargs', $ArityCheckNode_kwargs$3 = function $$kwargs() { + var self = this; + + return [].concat(Opal.to_a(self.kwargs)).concat(Opal.to_a(self.kwoptargs)).concat([self.kwrestarg]).$compact() + }, $ArityCheckNode_kwargs$3.$$arity = 0); + + Opal.def(self, '$all_args', $ArityCheckNode_all_args$4 = function $$all_args() { + var $a, self = this; + + return (self.all_args = ($truthy($a = self.all_args) ? $a : [].concat(Opal.to_a(self.args)).concat(Opal.to_a(self.optargs)).concat([self.restarg]).concat(Opal.to_a(self.postargs)).concat(Opal.to_a(self.$kwargs())).$compact())) + }, $ArityCheckNode_all_args$4.$$arity = 0); + + Opal.def(self, '$arity_checks', $ArityCheckNode_arity_checks$5 = function $$arity_checks() { + var $a, $b, $c, self = this, arity = nil, min_arity = nil, max_arity = nil; + + + if ($truthy((($a = self['arity_checks'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.arity_checks}; + arity = self.$all_args().$size(); + arity = $rb_minus(arity, self.optargs.$size()); + if ($truthy(self.restarg)) { + arity = $rb_minus(arity, 1)}; + arity = $rb_minus(arity, self.$kwargs().$size()); + if ($truthy(($truthy($b = ($truthy($c = self.optargs['$empty?']()['$!']()) ? $c : self.$kwargs()['$empty?']()['$!']())) ? $b : self.restarg))) { + arity = $rb_minus(arity['$-@'](), 1)}; + self.arity_checks = []; + if ($truthy($rb_lt(arity, 0))) { + + min_arity = $rb_plus(arity, 1)['$-@'](); + max_arity = self.$all_args().$size(); + if ($truthy($rb_gt(min_arity, 0))) { + self.arity_checks['$<<']("" + "$arity < " + (min_arity))}; + if ($truthy(self.restarg)) { } else { + self.arity_checks['$<<']("" + "$arity > " + (max_arity)) + }; + } else { + self.arity_checks['$<<']("" + "$arity !== " + (arity)) + }; + return self.arity_checks; + }, $ArityCheckNode_arity_checks$5.$$arity = 0); + + Opal.def(self, '$arity', $ArityCheckNode_arity$6 = function $$arity() { + var $a, $b, self = this; + + if ($truthy(($truthy($a = ($truthy($b = self.restarg) ? $b : self.optargs['$any?']())) ? $a : self['$has_only_optional_kwargs?']()))) { + return self.$negative_arity() + } else { + return self.$positive_arity() + } + }, $ArityCheckNode_arity$6.$$arity = 0); + + Opal.def(self, '$negative_arity', $ArityCheckNode_negative_arity$7 = function $$negative_arity() { + var $$8, self = this, required_plain_args = nil, result = nil; + + + required_plain_args = $send(self.$all_args(), 'select', [], ($$8 = function(arg){var self = $$8.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return ["arg", "mlhs"]['$include?'](arg.$type());}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + result = required_plain_args.$size(); + if ($truthy(self['$has_required_kwargs?']())) { + result = $rb_plus(result, 1)}; + result = $rb_minus(result['$-@'](), 1); + return result; + }, $ArityCheckNode_negative_arity$7.$$arity = 0); + + Opal.def(self, '$positive_arity', $ArityCheckNode_positive_arity$9 = function $$positive_arity() { + var self = this, result = nil; + + + result = self.$all_args().$size(); + result = $rb_minus(result, self.$kwargs().$size()); + if ($truthy(self.$kwargs()['$any?']())) { + result = $rb_plus(result, 1)}; + return result; + }, $ArityCheckNode_positive_arity$9.$$arity = 0); + + Opal.def(self, '$has_only_optional_kwargs?', $ArityCheckNode_has_only_optional_kwargs$ques$10 = function() { + var $a, $$11, self = this; + + return ($truthy($a = self.$kwargs()['$any?']()) ? $send(self.$kwargs(), 'all?', [], ($$11 = function(arg){var self = $$11.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return ["kwoptarg", "kwrestarg"]['$include?'](arg.$type());}, $$11.$$s = self, $$11.$$arity = 1, $$11)) : $a) + }, $ArityCheckNode_has_only_optional_kwargs$ques$10.$$arity = 0); + return (Opal.def(self, '$has_required_kwargs?', $ArityCheckNode_has_required_kwargs$ques$12 = function() { + var $$13, self = this; + + return $send(self.$kwargs(), 'any?', [], ($$13 = function(arg){var self = $$13.$$s || this; + + + + if (arg == null) { + arg = nil; + }; + return arg.$type()['$==']("kwarg");}, $$13.$$s = self, $$13.$$arity = 1, $$13)) + }, $ArityCheckNode_has_required_kwargs$ques$12.$$arity = 0), nil) && 'has_required_kwargs?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IterArityCheckNode'); + + var $nesting = [self].concat($parent_nesting), $IterArityCheckNode_compile$14; + + + self.$handle("iter_arity_check"); + return (Opal.def(self, '$compile', $IterArityCheckNode_compile$14 = function $$compile() { + var $a, $b, $c, self = this, $writer = nil, parent_scope = nil, context = nil, identity = nil; + + + + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(self.$compiler()['$arity_check?']())) { + } else { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { return nil + } else { + + parent_scope = self.$scope(); + while (!($truthy(($truthy($b = ($truthy($c = parent_scope['$def?']()) ? $c : parent_scope['$class_scope?']())) ? $b : parent_scope['$top?']())))) { + parent_scope = parent_scope.$parent() + }; + context = (function() {if ($truthy(parent_scope['$top?']())) { + return "'
'" + } else if ($truthy(parent_scope['$def?']())) { + return "" + "'" + (parent_scope.$mid()) + "'" + } else if ($truthy(parent_scope['$class?']())) { + return "" + "''" + } else if ($truthy(parent_scope['$module?']())) { + return "" + "''" + } else { + return nil + }; return nil; })(); + identity = self.$scope().$identity(); + self.$line("" + "if (" + (identity) + ".$$is_lambda || " + (identity) + ".$$define_meth) {"); + self.$line(" var $arity = arguments.length;"); + self.$line("" + " if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.block_ac($arity, " + (self.$arity()) + ", " + (context) + "); }"); + return self.$line("}"); }; - }, TMP_InlineArgs_add_arg_4.$$arity = 1), nil) && 'add_arg'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $IterArityCheckNode_compile$14.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'ArityCheckNode'), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$helper', '$line']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'EnsureKwargsAreKwargs'); + + var $nesting = [self].concat($parent_nesting), $EnsureKwargsAreKwargs_compile$1; + + + self.$handle("ensure_kwargs_are_kwargs"); + return (Opal.def(self, '$compile', $EnsureKwargsAreKwargs_compile$1 = function $$compile() { + var self = this; + + + self.$helper("hash2"); + self.$line("if ($kwargs == null) {"); + self.$line(" $kwargs = $hash2([], {});"); + self.$line("} else if (!$kwargs.$$is_hash) {"); + self.$line(" throw Opal.ArgumentError.$new('expected kwargs');"); + return self.$line("}"); + }, $EnsureKwargsAreKwargs_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send; + + Opal.add_stubs(['$require', '$handle', '$children', '$uses_block!', '$scope', '$add_arg', '$name', '$block_name=', '$-', '$identity', '$block_name', '$add_temp', '$line']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractBlockarg'); + + var $nesting = [self].concat($parent_nesting), $ExtractBlockarg_compile$1; + + + self.$handle("extract_blockarg"); + self.$children("name"); + return (Opal.def(self, '$compile', $ExtractBlockarg_compile$1 = function $$compile() { + var self = this, $writer = nil, scope_name = nil, yielder = nil; + + + self.$scope()['$uses_block!'](); + self.$scope().$add_arg(self.$name()); + + $writer = [self.$name()]; + $send(self.$scope(), 'block_name=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + scope_name = self.$scope().$identity(); + yielder = self.$scope().$block_name(); + self.$add_temp("" + "$iter = " + (scope_name) + ".$$p"); + self.$add_temp("" + (yielder) + " = $iter || nil"); + return self.$line("" + "if ($iter) " + (scope_name) + ".$$p = null;"); + }, $ExtractBlockarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$children', '$[]', '$meta', '$<<', '$used_kwargs', '$scope', '$add_temp', '$lvar_name', '$line', '$inspect', '$to_s']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractKwarg'); + + var $nesting = [self].concat($parent_nesting), $ExtractKwarg_compile$1; + + self.$$prototype.sexp = nil; + + self.$handle("extract_kwarg"); + self.$children("lvar_name"); + return (Opal.def(self, '$compile', $ExtractKwarg_compile$1 = function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("" + "if (!Opal.hasOwnProperty.call($kwargs.$$smap, '" + (key_name) + "')) {"); + self.$line("" + " throw Opal.ArgumentError.$new('missing keyword: " + (key_name) + "');"); + self.$line("}"); + return self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + }, $ExtractKwarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$add_temp', '$line']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractKwargs'); + + var $nesting = [self].concat($parent_nesting), $ExtractKwargs_compile$1; + + + self.$handle("extract_kwargs"); + return (Opal.def(self, '$compile', $ExtractKwargs_compile$1 = function $$compile() { + var self = this; + + + self.$add_temp("$kwargs"); + return self.$line("$kwargs = Opal.extract_kwargs($post_args)"); + }, $ExtractKwargs_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$children', '$[]', '$meta', '$<<', '$used_kwargs', '$scope', '$add_temp', '$lvar_name', '$line', '$inspect', '$to_s', '$==', '$default_value', '$expr']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractKwoptarg'); + + var $nesting = [self].concat($parent_nesting), $ExtractKwoptarg_compile$1; + + self.$$prototype.sexp = nil; + + self.$handle("extract_kwoptarg"); + self.$children("lvar_name", "default_value"); + return (Opal.def(self, '$compile', $ExtractKwoptarg_compile$1 = function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + if (self.$default_value().$children()['$[]'](1)['$==']("undefined")) { + return nil}; + self.$line("" + "if (" + (self.$lvar_name()) + " == null) {"); + self.$line("" + " " + (self.$lvar_name()) + " = ", self.$expr(self.$default_value())); + return self.$line("}"); + }, $ExtractKwoptarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + + Opal.add_stubs(['$require', '$handle', '$children', '$name', '$add_temp', '$line', '$used_kwargs', '$map', '$scope', '$join']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractKwrestarg'); + + var $nesting = [self].concat($parent_nesting), $ExtractKwrestarg_compile$1, $ExtractKwrestarg_used_kwargs$2; + + + self.$handle("extract_kwrestarg"); + self.$children("name"); + + Opal.def(self, '$compile', $ExtractKwrestarg_compile$1 = function $$compile() { + var self = this; + + if ($truthy(self.$name())) { + + self.$add_temp(self.$name()); + return self.$line("" + (self.$name()) + " = Opal.kwrestargs($kwargs, " + (self.$used_kwargs()) + ");"); + } else { + return nil + } + }, $ExtractKwrestarg_compile$1.$$arity = 0); + return (Opal.def(self, '$used_kwargs', $ExtractKwrestarg_used_kwargs$2 = function $$used_kwargs() { + var $$3, self = this, args = nil; + + + args = $send(self.$scope().$used_kwargs(), 'map', [], ($$3 = function(arg_name){var self = $$3.$$s || this; + + + + if (arg_name == null) { + arg_name = nil; + }; + return "" + "'" + (arg_name) + "': true";}, $$3.$$s = self, $$3.$$arity = 1, $$3)); + return "" + "{" + (args.$join(",")) + "}"; + }, $ExtractKwrestarg_used_kwargs$2.$$arity = 0), nil) && 'used_kwargs'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$children', '$==', '$[]', '$default_value', '$line', '$name', '$expr']); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractOptargNode'); + + var $nesting = [self].concat($parent_nesting), $ExtractOptargNode_compile$1; + + + self.$handle("extract_optarg"); + self.$children("name", "default_value"); + return (Opal.def(self, '$compile', $ExtractOptargNode_compile$1 = function $$compile() { + var self = this; + + + if (self.$default_value().$children()['$[]'](1)['$==']("undefined")) { + return nil}; + self.$line("" + "if (" + (self.$name()) + " == null) {"); + self.$line("" + " " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + return self.$line("}"); + }, $ExtractOptargNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/normarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$handle', '$children', '$[]', '$meta', '$add_temp', '$name', '$line', '$working_arguments', '$scope', '$in_mlhs?']); + Opal.add_stubs(['$require', '$handle', '$children', '$add_temp', '$name', '$line']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $NormargNode(){}; - var self = $NormargNode = $klass($base, $super, 'NormargNode', $NormargNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NormargNode_compile_1; + var $nesting = [self].concat($parent_nesting); - def.sexp = nil; - - self.$handle("arg"); - self.$children("name"); - return (Opal.defn(self, '$compile', TMP_NormargNode_compile_1 = function $$compile() { - var self = this; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractPostArg'); + + var $nesting = [self].concat($parent_nesting), $ExtractPostArg_compile$1; - if ($truthy(self.sexp.$meta()['$[]']("post"))) { + self.$handle("extract_post_arg"); + self.$children("name"); + return (Opal.def(self, '$compile', $ExtractPostArg_compile$1 = function $$compile() { + var self = this; + self.$add_temp(self.$name()); - self.$line("" + (self.$name()) + " = " + (self.$scope().$working_arguments()) + ".splice(0,1)[0];");}; - if ($truthy(self.$scope()['$in_mlhs?']())) { - + self.$line("" + (self.$name()) + " = $post_args[0];"); + self.$line("$post_args.splice(0, 1);"); self.$line("" + "if (" + (self.$name()) + " == null) {"); - self.$line("" + " " + (self.$name()) + " = nil;"); + self.$line("" + " " + (self.$name()) + " = nil"); return self.$line("}"); - } else { - return nil - }; - }, TMP_NormargNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $ExtractPostArg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/optarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$handle', '$children', '$==', '$[]', '$default_value', '$line', '$name', '$expr', '$push']); + Opal.add_stubs(['$require', '$handle', '$children', '$add_temp', '$name', '$line', '$args_to_keep', '$==', '$[]', '$default_value', '$expr']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $OptargNode(){}; - var self = $OptargNode = $klass($base, $super, 'OptargNode', $OptargNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_OptargNode_compile_1; + var $nesting = [self].concat($parent_nesting); - - self.$handle("optarg"); - self.$children("name", "default_value"); - return (Opal.defn(self, '$compile', TMP_OptargNode_compile_1 = function $$compile() { - var self = this; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractPostOptarg'); + + var $nesting = [self].concat($parent_nesting), $ExtractPostOptarg_compile$1; - if (self.$default_value().$children()['$[]'](1)['$==']("undefined")) { - return nil}; - self.$line("" + "if (" + (self.$name()) + " == null) {"); - self.$line("" + " " + (self.$name()) + " = ", self.$expr(self.$default_value())); - self.$push(";"); - return self.$line("}"); - }, TMP_OptargNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + self.$handle("extract_post_optarg"); + self.$children("name", "default_value", "args_to_keep"); + return (Opal.def(self, '$compile', $ExtractPostOptarg_compile$1 = function $$compile() { + var self = this; + + + self.$add_temp(self.$name()); + self.$line("" + "if ($post_args.length > " + (self.$args_to_keep()) + ") {"); + self.$line("" + " " + (self.$name()) + " = $post_args[0];"); + self.$line(" $post_args.splice(0, 1);"); + self.$line("}"); + if (self.$default_value().$children()['$[]'](1)['$==']("undefined")) { + return nil}; + self.$line("" + "if (" + (self.$name()) + " == null) {"); + self.$line("" + " " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + return self.$line("}"); + }, $ExtractPostOptarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/mlhsarg"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$s', '$children', '$[]', '$meta', '$mlhs_name', '$[]=', '$-', '$with_inline_args', '$scope', '$push', '$process', '$mlhs_mapping', '$line', '$in_mlhs', '$each', '$type', '$===', '$<<', '$join', '$to_s', '$take_while', '$!=']); + Opal.add_stubs(['$require', '$handle', '$children', '$name', '$add_temp', '$==', '$args_to_keep', '$line', '$!=']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); - - var def = self.$$proto, $nesting = [self].concat($parent_nesting); - - (function($base, $super, $parent_nesting) { - function $MlhsArgNode(){}; - var self = $MlhsArgNode = $klass($base, $super, 'MlhsArgNode', $MlhsArgNode); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MlhsArgNode_compile_4, TMP_MlhsArgNode_mlhs_name_6, TMP_MlhsArgNode_inline_args_8; + var $nesting = [self].concat($parent_nesting); - def.sexp = def.mlhs_name = def.inline_args = nil; - - self.$handle("mlhs"); - - Opal.defn(self, '$compile', TMP_MlhsArgNode_compile_4 = function $$compile() { - var TMP_1, TMP_2, self = this, args_sexp = nil, mlhs_sexp = nil, $writer = nil, var_name = nil; + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - - args_sexp = $send(self, 's', ["post_args"].concat(Opal.to_a(self.$children()))); - if ($truthy(self.sexp.$meta()['$[]']("post"))) { - - mlhs_sexp = self.$s("arg", self.$mlhs_name()); - - $writer = ["post", true]; - $send(mlhs_sexp.$meta(), '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - $send(self.$scope(), 'with_inline_args', [[]], (TMP_1 = function(){var self = TMP_1.$$s || this; + var $nesting = [self].concat($parent_nesting); - return self.$push(self.$process(mlhs_sexp))}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); - var_name = (($writer = ["js_source", self.$mlhs_name()]), $send(args_sexp.$meta(), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); - } else { - var_name = (($writer = ["js_source", self.$scope().$mlhs_mapping()['$[]'](self.sexp)]), $send(args_sexp.$meta(), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) - }; - self.$line("" + "if (" + (var_name) + " == null) {"); - self.$line("" + " " + (var_name) + " = nil;"); - self.$line("}"); - self.$line("" + (var_name) + " = Opal.to_ary(" + (var_name) + ");"); - return $send(self.$scope(), 'with_inline_args', [[]], (TMP_2 = function(){var self = TMP_2.$$s || this, TMP_3; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExtractRestarg'); - return $send(self.$scope(), 'in_mlhs', [], (TMP_3 = function(){var self = TMP_3.$$s || this; + var $nesting = [self].concat($parent_nesting), $ExtractRestarg_compile$1; - return self.$push(self.$process(args_sexp))}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3))}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); - }, TMP_MlhsArgNode_compile_4.$$arity = 0); - - Opal.defn(self, '$mlhs_name', TMP_MlhsArgNode_mlhs_name_6 = function $$mlhs_name() { - var $a, TMP_5, self = this, result = nil; + + self.$handle("extract_restarg"); + self.$children("name", "args_to_keep"); + return (Opal.def(self, '$compile', $ExtractRestarg_compile$1 = function $$compile() { + var self = this; - return (self.mlhs_name = ($truthy($a = self.mlhs_name) ? $a : (function() {if ($truthy(self.sexp.$meta()['$[]']("post"))) { - - result = ["$mlhs_of"]; - $send(self.$children(), 'each', [], (TMP_5 = function(child){var self = TMP_5.$$s || this, $case = nil; -if (child == null) child = nil; - return (function() {$case = child.$type(); - if ("arg"['$===']($case)) {return result['$<<'](child.$children()['$[]'](0))} - else if ("mlhs"['$===']($case)) {return result['$<<']("mlhs")} - else { return nil }})()}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)); - return result.$join("_"); + if ($truthy(self.$name())) { + + self.$add_temp(self.$name()); + if (self.$args_to_keep()['$=='](0)) { + return self.$line("" + (self.$name()) + " = $post_args;") + } else { + return self.$line("" + (self.$name()) + " = $post_args.splice(0, $post_args.length - " + (self.$args_to_keep()) + ");") + }; + } else if ($truthy(self.$args_to_keep()['$!='](0))) { + return self.$line("" + "$post_args.splice(0, $post_args.length - " + (self.$args_to_keep()) + ");") } else { - return self.sexp.$children()['$[]'](0).$to_s() - }; return nil; })())) - }, TMP_MlhsArgNode_mlhs_name_6.$$arity = 0); - return (Opal.defn(self, '$inline_args', TMP_MlhsArgNode_inline_args_8 = function $$inline_args() { - var $a, TMP_7, self = this; - - return (self.inline_args = ($truthy($a = self.inline_args) ? $a : $send(self.$children(), 'take_while', [], (TMP_7 = function(arg){var self = TMP_7.$$s || this, $b; -if (arg == null) arg = nil; - return ($truthy($b = arg.$type()['$!=']("restarg")) ? arg.$type()['$!=']("optarg") : $b)}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)))) - }, TMP_MlhsArgNode_inline_args_8.$$arity = 0), nil) && 'inline_args'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + return nil + } + }, $ExtractRestarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/restarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$handle', '$children', '$name', '$add_temp', '$[]', '$meta', '$line', '$working_arguments', '$scope']); + Opal.add_stubs(['$require', '$handle', '$next_temp', '$scope', '$add_arg', '$push']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $RestargNode(){}; - var self = $RestargNode = $klass($base, $super, 'RestargNode', $RestargNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RestargNode_compile_1; + var $nesting = [self].concat($parent_nesting); - def.sexp = nil; - - self.$handle("restarg"); - self.$children("name"); - return (Opal.defn(self, '$compile', TMP_RestargNode_compile_1 = function $$compile() { - var self = this, offset = nil; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'FakeArgNode'); + + var $nesting = [self].concat($parent_nesting), $FakeArgNode_compile$1; - if ($truthy(self.$name())) { - } else { - return nil - }; - self.$add_temp(self.$name()); - if ($truthy(self.sexp.$meta()['$[]']("post"))) { - return self.$line("" + (self.$name()) + " = " + (self.$scope().$working_arguments()) + ";") - } else { + self.$handle("fake_arg"); + return (Opal.def(self, '$compile', $FakeArgNode_compile$1 = function $$compile() { + var self = this, name = nil; + - offset = self.sexp.$meta()['$[]']("offset"); - self.$line("" + "var $args_len = arguments.length, $rest_len = $args_len - " + (offset) + ";"); - self.$line("if ($rest_len < 0) { $rest_len = 0; }"); - self.$line("" + (self.$name()) + " = new Array($rest_len);"); - self.$line("" + "for (var $arg_idx = " + (offset) + "; $arg_idx < $args_len; $arg_idx++) {"); - self.$line("" + " " + (self.$name()) + "[$arg_idx - " + (offset) + "] = arguments[$arg_idx];"); - return self.$line("}"); - }; - }, TMP_RestargNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + name = self.$scope().$next_temp(); + self.$scope().$add_arg(name); + return self.$push(name); + }, $FakeArgNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/initialize_kwargs"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$kwargs_initialized', '$scope', '$helper', '$line', '$kwargs_initialized=', '$-']); + Opal.add_stubs(['$require', '$handle', '$children', '$line', '$name']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $InitializeKwargsNode(){}; - var self = $InitializeKwargsNode = $klass($base, $super, 'InitializeKwargsNode', $InitializeKwargsNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1; + var $nesting = [self].concat($parent_nesting); - return (Opal.defn(self, '$initialize_kw_args_if_needed', TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1 = function $$initialize_kw_args_if_needed() { - var self = this, $writer = nil; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'InitializeIterarg'); + + var $nesting = [self].concat($parent_nesting), $InitializeIterarg_compile$1; - if ($truthy(self.$scope().$kwargs_initialized())) { - return nil}; - self.$helper("hash2"); - self.$line("if ($kwargs == null || !$kwargs.$$is_hash) {"); - self.$line(" if ($kwargs == null) {"); - self.$line(" $kwargs = $hash2([], {});"); - self.$line(" } else {"); - self.$line(" throw Opal.ArgumentError.$new('expected kwargs');"); - self.$line(" }"); - self.$line("}"); - - $writer = [true]; - $send(self.$scope(), 'kwargs_initialized=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1.$$arity = 0), nil) && 'initialize_kw_args_if_needed' - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + self.$handle("initialize_iter_arg"); + self.$children("name"); + return (Opal.def(self, '$compile', $InitializeIterarg_compile$1 = function $$compile() { + var self = this; + + + self.$line("" + "if (" + (self.$name()) + " == null) {"); + self.$line("" + " " + (self.$name()) + " = nil;"); + return self.$line("}"); + }, $InitializeIterarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/kwarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$handle', '$children', '$[]', '$meta', '$initialize_kw_args_if_needed', '$add_temp', '$lvar_name', '$line', '$inspect', '$to_s', '$<<', '$used_kwargs', '$scope']); + Opal.add_stubs(['$require', '$handle', '$children', '$<<', '$locals', '$scope', '$name', '$add_arg', '$line']); - self.$require("opal/nodes/args/initialize_kwargs"); + self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $KwargNode(){}; - var self = $KwargNode = $klass($base, $super, 'KwargNode', $KwargNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KwargNode_compile_1; + var $nesting = [self].concat($parent_nesting); - def.sexp = nil; - - self.$handle("kwarg"); - self.$children("lvar_name"); - return (Opal.defn(self, '$compile', TMP_KwargNode_compile_1 = function $$compile() { - var self = this, key_name = nil; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'InitializeShadowarg'); + + var $nesting = [self].concat($parent_nesting), $InitializeShadowarg_compile$1; - key_name = self.sexp.$meta()['$[]']("arg_name"); - self.$initialize_kw_args_if_needed(); - self.$add_temp(self.$lvar_name()); - self.$line("" + "if (!Opal.hasOwnProperty.call($kwargs.$$smap, '" + (key_name) + "')) {"); - self.$line("" + " throw Opal.ArgumentError.$new('missing keyword: " + (key_name) + "');"); - self.$line("}"); - self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); - return self.$scope().$used_kwargs()['$<<'](key_name); - }, TMP_KwargNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'InitializeKwargsNode'), $nesting) + self.$handle("initialize_shadowarg"); + self.$children("name"); + return (Opal.def(self, '$compile', $InitializeShadowarg_compile$1 = function $$compile() { + var self = this; + + + self.$scope().$locals()['$<<'](self.$name()); + self.$scope().$add_arg(self.$name()); + return self.$line("" + (self.$name()) + " = nil;"); + }, $InitializeShadowarg_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/kwoptarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/parameters"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$[]', '$meta', '$initialize_kw_args_if_needed', '$add_temp', '$lvar_name', '$line', '$inspect', '$to_s', '$<<', '$used_kwargs', '$scope', '$==', '$default_value', '$expr']); - - self.$require("opal/nodes/args/initialize_kwargs"); + Opal.add_stubs(['$children', '$map', '$public_send', '$type', '$join', '$compact']); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $KwoptArgNode(){}; - var self = $KwoptArgNode = $klass($base, $super, 'KwoptArgNode', $KwoptArgNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KwoptArgNode_compile_1; + var $nesting = [self].concat($parent_nesting); - def.sexp = nil; - - self.$handle("kwoptarg"); - self.$children("lvar_name", "default_value"); - return (Opal.defn(self, '$compile', TMP_KwoptArgNode_compile_1 = function $$compile() { - var self = this, key_name = nil; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parameters'); + + var $nesting = [self].concat($parent_nesting), $Parameters_initialize$1, $Parameters_to_code$2, $Parameters_on_arg$4, $Parameters_on_mlhs$5, $Parameters_on_optarg$6, $Parameters_on_restarg$7, $Parameters_on_kwarg$8, $Parameters_on_kwoptarg$9, $Parameters_on_kwrestarg$10, $Parameters_on_blockarg$11, $Parameters_on_shadowarg$12; + self.$$prototype.args = nil; - key_name = self.sexp.$meta()['$[]']("arg_name"); - self.$initialize_kw_args_if_needed(); - self.$add_temp(self.$lvar_name()); - self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); - self.$scope().$used_kwargs()['$<<'](key_name); - if (self.$default_value().$children()['$[]'](1)['$==']("undefined")) { - return nil}; - self.$line("" + "if (" + (self.$lvar_name()) + " == null) {"); - self.$line("" + " " + (self.$lvar_name()) + " = ", self.$expr(self.$default_value())); - return self.$line("}"); - }, TMP_KwoptArgNode_compile_1.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'InitializeKwargsNode'), $nesting) - })($nesting[0], $nesting) - })($nesting[0], $nesting); -}; + + Opal.def(self, '$initialize', $Parameters_initialize$1 = function $$initialize(args) { + var self = this; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/kwrestarg"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + return (self.args = args.$children()) + }, $Parameters_initialize$1.$$arity = 1); + + Opal.def(self, '$to_code', $Parameters_to_code$2 = function $$to_code() { + var $$3, self = this, stringified_parameters = nil; - Opal.add_stubs(['$require', '$handle', '$children', '$initialize_kw_args_if_needed', '$used_kwargs', '$name', '$add_temp', '$line', '$map', '$scope', '$join']); - - self.$require("opal/nodes/args/initialize_kwargs"); - return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + + stringified_parameters = $send(self.args, 'map', [], ($$3 = function(arg){var self = $$3.$$s || this; - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + + + if (arg == null) { + arg = nil; + }; + return $send(self, 'public_send', ["" + "on_" + (arg.$type())].concat(Opal.to_a(arg)));}, $$3.$$s = self, $$3.$$arity = 1, $$3)); + return "" + "[" + (stringified_parameters.$compact().$join(", ")) + "]"; + }, $Parameters_to_code$2.$$arity = 0); + + Opal.def(self, '$on_arg', $Parameters_on_arg$4 = function $$on_arg(arg_name) { + var self = this; - (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + return "" + "['req', '" + (arg_name) + "']" + }, $Parameters_on_arg$4.$$arity = 1); + + Opal.def(self, '$on_mlhs', $Parameters_on_mlhs$5 = function $$on_mlhs($a) { + var $post_args, self = this; - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return "['req']"; + }, $Parameters_on_mlhs$5.$$arity = -1); + + Opal.def(self, '$on_optarg', $Parameters_on_optarg$6 = function $$on_optarg(arg_name, _default_value) { + var self = this; - (function($base, $super, $parent_nesting) { - function $KwrestArgNode(){}; - var self = $KwrestArgNode = $klass($base, $super, 'KwrestArgNode', $KwrestArgNode); + return "" + "['opt', '" + (arg_name) + "']" + }, $Parameters_on_optarg$6.$$arity = 2); + + Opal.def(self, '$on_restarg', $Parameters_on_restarg$7 = function $$on_restarg(arg_name) { + var self = this; - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KwrestArgNode_compile_1, TMP_KwrestArgNode_used_kwargs_3; + + + if (arg_name == null) { + arg_name = nil; + }; + if ($truthy(arg_name)) { + return "" + "['rest', '" + (arg_name) + "']" + } else { + return "['rest']" + }; + }, $Parameters_on_restarg$7.$$arity = -1); + + Opal.def(self, '$on_kwarg', $Parameters_on_kwarg$8 = function $$on_kwarg(arg_name) { + var self = this; - - self.$handle("kwrestarg"); - self.$children("name"); - - Opal.defn(self, '$compile', TMP_KwrestArgNode_compile_1 = function $$compile() { - var self = this, extract_code = nil; + return "" + "['keyreq', '" + (arg_name) + "']" + }, $Parameters_on_kwarg$8.$$arity = 1); + + Opal.def(self, '$on_kwoptarg', $Parameters_on_kwoptarg$9 = function $$on_kwoptarg(arg_name, _default_value) { + var self = this; + return "" + "['key', '" + (arg_name) + "']" + }, $Parameters_on_kwoptarg$9.$$arity = 2); - self.$initialize_kw_args_if_needed(); - extract_code = "" + "Opal.kwrestargs($kwargs, " + (self.$used_kwargs()) + ");"; - if ($truthy(self.$name())) { + Opal.def(self, '$on_kwrestarg', $Parameters_on_kwrestarg$10 = function $$on_kwrestarg(arg_name) { + var self = this; + - self.$add_temp(self.$name()); - return self.$line("" + (self.$name()) + " = " + (extract_code)); + + if (arg_name == null) { + arg_name = nil; + }; + if ($truthy(arg_name)) { + return "" + "['keyrest', '" + (arg_name) + "']" } else { - return nil - }; - }, TMP_KwrestArgNode_compile_1.$$arity = 0); - return (Opal.defn(self, '$used_kwargs', TMP_KwrestArgNode_used_kwargs_3 = function $$used_kwargs() { - var TMP_2, self = this, args = nil; - + return "['keyrest']" + }; + }, $Parameters_on_kwrestarg$10.$$arity = -1); - args = $send(self.$scope().$used_kwargs(), 'map', [], (TMP_2 = function(arg_name){var self = TMP_2.$$s || this; -if (arg_name == null) arg_name = nil; - return "" + "'" + (arg_name) + "': true"}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - return "" + "{" + (args.$join(",")) + "}"; - }, TMP_KwrestArgNode_used_kwargs_3.$$arity = 0), nil) && 'used_kwargs'; - })($nesting[0], Opal.const_get_relative($nesting, 'InitializeKwargsNode'), $nesting) + Opal.def(self, '$on_blockarg', $Parameters_on_blockarg$11 = function $$on_blockarg(arg_name) { + var self = this; + + return "" + "['block', '" + (arg_name) + "']" + }, $Parameters_on_blockarg$11.$$arity = 1); + return (Opal.def(self, '$on_shadowarg', $Parameters_on_shadowarg$12 = function $$on_shadowarg(_arg_name) { + var self = this; + + return nil + }, $Parameters_on_shadowarg$12.$$arity = 1), nil) && 'on_shadowarg'; + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) - })($nesting[0], $nesting); + })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/post_kwargs"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; - Opal.add_stubs(['$require', '$handle', '$empty?', '$children', '$initialize_kw_args', '$each', '$push', '$process', '$line', '$working_arguments', '$scope']); + Opal.add_stubs(['$require', '$handle', '$children', '$add_temp', '$line', '$offset']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - (function($base, $super, $parent_nesting) { - function $PostKwargsNode(){}; - var self = $PostKwargsNode = $klass($base, $super, 'PostKwargsNode', $PostKwargsNode); + (function($base, $parent_nesting) { + var self = $module($base, 'Args'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_PostKwargsNode_compile_2, TMP_PostKwargsNode_initialize_kw_args_3; + var $nesting = [self].concat($parent_nesting); - - self.$handle("post_kwargs"); - - Opal.defn(self, '$compile', TMP_PostKwargsNode_compile_2 = function $$compile() { - var TMP_1, self = this; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PreparePostArgs'); + + var $nesting = [self].concat($parent_nesting), $PreparePostArgs_compile$1; - if ($truthy(self.$children()['$empty?']())) { - return nil}; - self.$initialize_kw_args(); - return $send(self.$children(), 'each', [], (TMP_1 = function(arg){var self = TMP_1.$$s || this; -if (arg == null) arg = nil; - return self.$push(self.$process(arg))}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); - }, TMP_PostKwargsNode_compile_2.$$arity = 0); - return (Opal.defn(self, '$initialize_kw_args', TMP_PostKwargsNode_initialize_kw_args_3 = function $$initialize_kw_args() { - var self = this; + self.$handle("prepare_post_args"); + self.$children("offset"); + return (Opal.def(self, '$compile', $PreparePostArgs_compile$1 = function $$compile() { + var self = this; - return self.$line("" + "$kwargs = Opal.extract_kwargs(" + (self.$scope().$working_arguments()) + ");") - }, TMP_PostKwargsNode_initialize_kw_args_3.$$arity = 0), nil) && 'initialize_kw_args'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + + self.$add_temp("$post_args"); + return self.$line("" + "$post_args = Opal.slice.call(arguments, " + (self.$offset()) + ", arguments.length)"); + }, $PreparePostArgs_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/nodes/args/post_args"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/args"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$attr_reader', '$each', '$children', '$[]=', '$meta', '$-', '$type', '$===', '$<<', '$empty?', '$working_arguments', '$scope', '$[]', '$working_arguments=', '$add_temp', '$line', '$size', '$inline_args', '$extract_arguments', '$push', '$process', '$kwargs_sexp', '$required_left_args', '$compile_required_arg', '$optargs', '$compile_optarg', '$compile_restarg', '$required_right_args', '$indent', '$restarg', '$extract_restarg', '$extract_blank_restarg', '$s', '$kwargs']); + Opal.add_stubs(['$require', '$handle', '$each_with_index', '$children', '$!=', '$push', '$process']); self.$require("opal/nodes/base"); + self.$require("opal/nodes/args/arg"); + self.$require("opal/nodes/args/arity_check"); + self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"); + self.$require("opal/nodes/args/extract_block_arg"); + self.$require("opal/nodes/args/extract_kwarg"); + self.$require("opal/nodes/args/extract_kwargs"); + self.$require("opal/nodes/args/extract_kwoptarg"); + self.$require("opal/nodes/args/extract_kwrestarg"); + self.$require("opal/nodes/args/extract_optarg"); + self.$require("opal/nodes/args/extract_post_arg"); + self.$require("opal/nodes/args/extract_post_optarg"); + self.$require("opal/nodes/args/extract_restarg"); + self.$require("opal/nodes/args/fake_arg"); + self.$require("opal/nodes/args/initialize_iterarg"); + self.$require("opal/nodes/args/initialize_shadowarg"); + self.$require("opal/nodes/args/parameters"); + self.$require("opal/nodes/args/prepare_post_args"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $PostArgsNode(){}; - var self = $PostArgsNode = $klass($base, $super, 'PostArgsNode', $PostArgsNode); - - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_PostArgsNode_initialize_1, TMP_PostArgsNode_extract_arguments_3, TMP_PostArgsNode_compile_7, TMP_PostArgsNode_compile_optarg_9, TMP_PostArgsNode_compile_required_arg_10, TMP_PostArgsNode_compile_restarg_13, TMP_PostArgsNode_extract_restarg_14, TMP_PostArgsNode_extract_blank_restarg_15, TMP_PostArgsNode_kwargs_sexp_16; - - def.sexp = nil; - - self.$handle("post_args"); - self.$attr_reader("kwargs"); - self.$attr_reader("required_left_args"); - self.$attr_reader("optargs"); - self.$attr_reader("restarg"); - self.$attr_reader("required_right_args"); - - Opal.defn(self, '$initialize', TMP_PostArgsNode_initialize_1 = function $$initialize($a_rest) { - var self = this, $iter = TMP_PostArgsNode_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) TMP_PostArgsNode_initialize_1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_PostArgsNode_initialize_1, false), $zuper, $iter); - self.kwargs = []; - self.required_left_args = []; - self.optargs = []; - self.restarg = nil; - return (self.required_right_args = []); - }, TMP_PostArgsNode_initialize_1.$$arity = -1); - - Opal.defn(self, '$extract_arguments', TMP_PostArgsNode_extract_arguments_3 = function $$extract_arguments() { - var TMP_2, self = this, found_opt_or_rest = nil; - - - found_opt_or_rest = false; - return $send(self.$children(), 'each', [], (TMP_2 = function(arg){var self = TMP_2.$$s || this, $writer = nil, $case = nil; - if (self.kwargs == null) self.kwargs = nil; - if (self.optargs == null) self.optargs = nil; - if (self.required_right_args == null) self.required_right_args = nil; - if (self.required_left_args == null) self.required_left_args = nil; -if (arg == null) arg = nil; - - - $writer = ["post", true]; - $send(arg.$meta(), '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return (function() {$case = arg.$type(); - if ("kwarg"['$===']($case) || "kwoptarg"['$===']($case) || "kwrestarg"['$===']($case)) {return self.kwargs['$<<'](arg)} - else if ("restarg"['$===']($case)) { - self.restarg = arg; - return (found_opt_or_rest = true);} - else if ("optarg"['$===']($case)) { - self.optargs['$<<'](arg); - return (found_opt_or_rest = true);} - else if ("arg"['$===']($case) || "mlhs"['$===']($case)) {if ($truthy(found_opt_or_rest)) { - return self.required_right_args['$<<'](arg) - } else { - return self.required_left_args['$<<'](arg) - }} - else { return nil }})();}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - }, TMP_PostArgsNode_extract_arguments_3.$$arity = 0); - - Opal.defn(self, '$compile', TMP_PostArgsNode_compile_7 = function $$compile() { - var TMP_4, TMP_5, TMP_6, self = this, old_working_arguments = nil, js_source = nil, $writer = nil; - - - if ($truthy(self.$children()['$empty?']())) { - return nil}; - old_working_arguments = self.$scope().$working_arguments(); - if ($truthy(self.sexp.$meta()['$[]']("js_source"))) { - - js_source = self.sexp.$meta()['$[]']("js_source"); - - $writer = ["" + (js_source) + "_args"]; - $send(self.$scope(), 'working_arguments=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - } else { - - js_source = "arguments"; - - $writer = ["$post_args"]; - $send(self.$scope(), 'working_arguments=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - }; - self.$add_temp("" + (self.$scope().$working_arguments())); - self.$line("" + (self.$scope().$working_arguments()) + " = Opal.slice.call(" + (js_source) + ", " + (self.$scope().$inline_args().$size()) + ", " + (js_source) + ".length);"); - self.$extract_arguments(); - self.$push(self.$process(self.$kwargs_sexp())); - $send(self.$required_left_args(), 'each', [], (TMP_4 = function(arg){var self = TMP_4.$$s || this; -if (arg == null) arg = nil; - return self.$compile_required_arg(arg)}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); - $send(self.$optargs(), 'each', [], (TMP_5 = function(optarg){var self = TMP_5.$$s || this; -if (optarg == null) optarg = nil; - return self.$compile_optarg(optarg)}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)); - self.$compile_restarg(); - $send(self.$required_right_args(), 'each', [], (TMP_6 = function(arg){var self = TMP_6.$$s || this; -if (arg == null) arg = nil; - return self.$compile_required_arg(arg)}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)); - - $writer = [old_working_arguments]; - $send(self.$scope(), 'working_arguments=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_PostArgsNode_compile_7.$$arity = 0); - - Opal.defn(self, '$compile_optarg', TMP_PostArgsNode_compile_optarg_9 = function $$compile_optarg(optarg) { - var $a, TMP_8, self = this, var_name = nil, _ = nil; - - - $a = [].concat(Opal.to_a(optarg)), (var_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - self.$add_temp(var_name); - self.$line("" + "if (" + (self.$required_right_args().$size()) + " < " + (self.$scope().$working_arguments()) + ".length) {"); - $send(self, 'indent', [], (TMP_8 = function(){var self = TMP_8.$$s || this; + var self = $klass($base, $super, 'ArgsNode'); - return self.$line("" + (var_name) + " = " + (self.$scope().$working_arguments()) + ".splice(0,1)[0];")}, TMP_8.$$s = self, TMP_8.$$arity = 0, TMP_8)); - self.$line("}"); - return self.$push(self.$process(optarg)); - }, TMP_PostArgsNode_compile_optarg_9.$$arity = 1); - - Opal.defn(self, '$compile_required_arg', TMP_PostArgsNode_compile_required_arg_10 = function $$compile_required_arg(arg) { - var self = this; + var $nesting = [self].concat($parent_nesting), $ArgsNode_compile$1; - return self.$push(self.$process(arg)) - }, TMP_PostArgsNode_compile_required_arg_10.$$arity = 1); - Opal.defn(self, '$compile_restarg', TMP_PostArgsNode_compile_restarg_13 = function $$compile_restarg() { - var TMP_11, TMP_12, self = this; - - - if ($truthy(self.$restarg())) { - } else { - return nil - }; - self.$line("" + "if (" + (self.$required_right_args().$size()) + " < " + (self.$scope().$working_arguments()) + ".length) {"); - $send(self, 'indent', [], (TMP_11 = function(){var self = TMP_11.$$s || this; + self.$handle("args"); + return (Opal.def(self, '$compile', $ArgsNode_compile$1 = function $$compile() { + var $$2, self = this; - return self.$extract_restarg()}, TMP_11.$$s = self, TMP_11.$$arity = 0, TMP_11)); - self.$line("} else {"); - $send(self, 'indent', [], (TMP_12 = function(){var self = TMP_12.$$s || this; - - return self.$extract_blank_restarg()}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12)); - return self.$line("}"); - }, TMP_PostArgsNode_compile_restarg_13.$$arity = 0); - - Opal.defn(self, '$extract_restarg', TMP_PostArgsNode_extract_restarg_14 = function $$extract_restarg() { - var $a, self = this, extract_code = nil, var_name = nil, _ = nil; + return $send(self.$children(), 'each_with_index', [], ($$2 = function(arg, idx){var self = $$2.$$s || this; - extract_code = "" + (self.$scope().$working_arguments()) + ".splice(0, " + (self.$scope().$working_arguments()) + ".length - " + (self.$required_right_args().$size()) + ");"; - $a = [].concat(Opal.to_a(self.$restarg())), (var_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(var_name)) { - self.$add_temp(var_name); - return self.$line("" + (var_name) + " = " + (extract_code)); - } else { - return self.$line(extract_code) - }; - }, TMP_PostArgsNode_extract_restarg_14.$$arity = 0); - - Opal.defn(self, '$extract_blank_restarg', TMP_PostArgsNode_extract_blank_restarg_15 = function $$extract_blank_restarg() { - var $a, self = this, var_name = nil, _ = nil; - - - $a = [].concat(Opal.to_a(self.$restarg())), (var_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - if ($truthy(var_name)) { + if (arg == null) { + arg = nil; + }; - self.$add_temp(var_name); - return self.$line("" + (var_name) + " = [];"); - } else { - return nil - }; - }, TMP_PostArgsNode_extract_blank_restarg_15.$$arity = 0); - return (Opal.defn(self, '$kwargs_sexp', TMP_PostArgsNode_kwargs_sexp_16 = function $$kwargs_sexp() { - var self = this; - - return $send(self, 's', ["post_kwargs"].concat(Opal.to_a(self.$kwargs()))) - }, TMP_PostArgsNode_kwargs_sexp_16.$$arity = 0), nil) && 'kwargs_sexp'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + if (idx == null) { + idx = nil; + }; + if ($truthy(idx['$!='](0))) { + self.$push(", ")}; + return self.$push(self.$process(arg));}, $$2.$$s = self, $$2.$$arity = 2, $$2)) + }, $ArgsNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/node_with_args"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$attr_accessor', '$attr_writer', '$attr_reader', '$children', '$args', '$each_with_index', '$type', '$===', '$<<', '$any?', '$[]', '$length', '$!=', '$map!', '$inline_args', '$updated', '$optimize_args!', '$select', '$==', '$find', '$include?', '$s', '$post_args', '$each', '$push', '$process', '$post_args_sexp', '$uses_block?', '$scope', '$identity', '$block_name', '$add_temp', '$line', '$inline_args=', '$-', '$first', '$pop', '$[]=', '$meta', '$keyword_args', '$all?', '$rest_arg', '$opt_args', '$has_only_optional_kwargs?', '$negative_arity', '$positive_arity', '$size', '$has_required_kwargs?', '$+', '$-@', '$map', '$build_parameter', '$block_arg', '$join', '$!', '$empty?', '$<', '$>']); + Opal.add_stubs(['$require', '$attr_reader', '$attr_accessor', '$[]', '$meta', '$s', '$original_args', '$push', '$process', '$arity_check_node', '$uses_block?', '$scope', '$identity', '$block_name', '$add_temp', '$line', '$to_code', '$new']); self.$require("opal/nodes/scope"); + self.$require("opal/nodes/args/parameters"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $NodeWithArgs(){}; - var self = $NodeWithArgs = $klass($base, $super, 'NodeWithArgs', $NodeWithArgs); + var self = $klass($base, $super, 'NodeWithArgs'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NodeWithArgs_initialize_1, TMP_NodeWithArgs_split_args_5, TMP_NodeWithArgs_opt_args_7, TMP_NodeWithArgs_rest_arg_9, TMP_NodeWithArgs_keyword_args_11, TMP_NodeWithArgs_inline_args_sexp_12, TMP_NodeWithArgs_post_args_sexp_13, TMP_NodeWithArgs_compile_inline_args_15, TMP_NodeWithArgs_compile_post_args_16, TMP_NodeWithArgs_compile_block_arg_17, TMP_NodeWithArgs_with_inline_args_18, TMP_NodeWithArgs_in_mlhs_19, TMP_NodeWithArgs_in_mlhs$q_20, TMP_NodeWithArgs_optimize_args$B_21, TMP_NodeWithArgs_has_only_optional_kwargs$q_23, TMP_NodeWithArgs_has_required_kwargs$q_25, TMP_NodeWithArgs_arity_26, TMP_NodeWithArgs_negative_arity_28, TMP_NodeWithArgs_positive_arity_29, TMP_NodeWithArgs_build_parameter_30, TMP_NodeWithArgs_parameters_code_32, TMP_NodeWithArgs_arity_checks_33; + var $nesting = [self].concat($parent_nesting), $NodeWithArgs_initialize$1, $NodeWithArgs_arity_check_node$2, $NodeWithArgs_compile_arity_check$3, $NodeWithArgs_compile_block_arg$4, $NodeWithArgs_parameters_code$5; - def.opt_args = def.rest_arg = def.keyword_args = def.in_mlhs = def.arity_checks = nil; + self.$$prototype.sexp = nil; - self.$attr_accessor("mlhs_args"); - self.$attr_accessor("used_kwargs"); - self.$attr_accessor("mlhs_mapping"); - self.$attr_accessor("working_arguments"); - self.$attr_writer("inline_args"); - self.$attr_accessor("kwargs_initialized"); - self.$attr_reader("inline_args", "post_args"); + self.$attr_reader("used_kwargs"); + self.$attr_accessor("arity"); + self.$attr_reader("original_args"); - Opal.defn(self, '$initialize', TMP_NodeWithArgs_initialize_1 = function $$initialize($a_rest) { - var self = this, $iter = TMP_NodeWithArgs_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $NodeWithArgs_initialize$1 = function $$initialize($a) { + var $post_args, $iter = $NodeWithArgs_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_NodeWithArgs_initialize_1.$$p = null; + if ($iter) $NodeWithArgs_initialize$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_NodeWithArgs_initialize_1, false), $zuper, $iter); - self.mlhs_args = $hash2([], {}); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $NodeWithArgs_initialize$1, false), $zuper, $iter); + self.original_args = self.sexp.$meta()['$[]']("original_args"); self.used_kwargs = []; - self.mlhs_mapping = $hash2([], {}); - self.working_arguments = nil; - self.in_mlhs = false; - self.kwargs_initialized = false; - self.inline_args = []; - self.post_args = []; - return (self.post_args_started = false); - }, TMP_NodeWithArgs_initialize_1.$$arity = -1); - - Opal.defn(self, '$split_args', TMP_NodeWithArgs_split_args_5 = function $$split_args() { - var TMP_2, TMP_4, self = this, args = nil; - - - args = self.$args().$children(); - $send(args, 'each_with_index', [], (TMP_2 = function(arg, idx){var self = TMP_2.$$s || this, TMP_3, $case = nil; - if (self.post_args_started == null) self.post_args_started = nil; - if (self.post_args == null) self.post_args = nil; - if (self.inline_args == null) self.inline_args = nil; -if (arg == null) arg = nil;if (idx == null) idx = nil; - return (function() {$case = arg.$type(); - if ("arg"['$===']($case) || "mlhs"['$===']($case) || "kwarg"['$===']($case) || "kwoptarg"['$===']($case) || "kwrestarg"['$===']($case)) {if ($truthy(self.post_args_started)) { - return self.post_args['$<<'](arg) - } else { - return self.inline_args['$<<'](arg) - }} - else if ("restarg"['$===']($case)) { - self.post_args_started = true; - return self.post_args['$<<'](arg);} - else if ("optarg"['$===']($case)) { - if ($truthy($send(args['$[]'](idx, args.$length()), 'any?', [], (TMP_3 = function(next_arg){var self = TMP_3.$$s || this, $a; -if (next_arg == null) next_arg = nil; - return ($truthy($a = next_arg.$type()['$!=']("optarg")) ? next_arg.$type()['$!=']("restarg") : $a)}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)))) { - self.post_args_started = true}; - if ($truthy(self.post_args_started)) { - return self.post_args['$<<'](arg) - } else { - return self.inline_args['$<<'](arg) - };} - else { return nil }})()}, TMP_2.$$s = self, TMP_2.$$arity = 2, TMP_2)); - $send(self.$inline_args(), 'map!', [], (TMP_4 = function(inline_arg){var self = TMP_4.$$s || this; -if (inline_arg == null) inline_arg = nil; - return inline_arg.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["inline"], {"inline": true})}))}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)); - return self['$optimize_args!'](); - }, TMP_NodeWithArgs_split_args_5.$$arity = 0); - - Opal.defn(self, '$opt_args', TMP_NodeWithArgs_opt_args_7 = function $$opt_args() { - var $a, TMP_6, self = this; - - return (self.opt_args = ($truthy($a = self.opt_args) ? $a : $send(self.$args().$children(), 'select', [], (TMP_6 = function(arg){var self = TMP_6.$$s || this; -if (arg == null) arg = nil; - return arg.$type()['$==']("optarg")}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)))) - }, TMP_NodeWithArgs_opt_args_7.$$arity = 0); - - Opal.defn(self, '$rest_arg', TMP_NodeWithArgs_rest_arg_9 = function $$rest_arg() { - var $a, TMP_8, self = this; - - return (self.rest_arg = ($truthy($a = self.rest_arg) ? $a : $send(self.$args().$children(), 'find', [], (TMP_8 = function(arg){var self = TMP_8.$$s || this; -if (arg == null) arg = nil; - return arg.$type()['$==']("restarg")}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)))) - }, TMP_NodeWithArgs_rest_arg_9.$$arity = 0); - - Opal.defn(self, '$keyword_args', TMP_NodeWithArgs_keyword_args_11 = function $$keyword_args() { - var $a, TMP_10, self = this; - - return (self.keyword_args = ($truthy($a = self.keyword_args) ? $a : $send(self.$args().$children(), 'select', [], (TMP_10 = function(arg){var self = TMP_10.$$s || this; -if (arg == null) arg = nil; - return ["kwarg", "kwoptarg", "kwrestarg"]['$include?'](arg.$type())}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10)))) - }, TMP_NodeWithArgs_keyword_args_11.$$arity = 0); - - Opal.defn(self, '$inline_args_sexp', TMP_NodeWithArgs_inline_args_sexp_12 = function $$inline_args_sexp() { - var self = this; - - return $send(self, 's', ["inline_args"].concat(Opal.to_a(self.$args().$children()))) - }, TMP_NodeWithArgs_inline_args_sexp_12.$$arity = 0); + return (self.arity = 0); + }, $NodeWithArgs_initialize$1.$$arity = -1); - Opal.defn(self, '$post_args_sexp', TMP_NodeWithArgs_post_args_sexp_13 = function $$post_args_sexp() { + Opal.def(self, '$arity_check_node', $NodeWithArgs_arity_check_node$2 = function $$arity_check_node() { var self = this; - return $send(self, 's', ["post_args"].concat(Opal.to_a(self.$post_args()))) - }, TMP_NodeWithArgs_post_args_sexp_13.$$arity = 0); - - Opal.defn(self, '$compile_inline_args', TMP_NodeWithArgs_compile_inline_args_15 = function $$compile_inline_args() { - var TMP_14, self = this; - - return $send(self.$inline_args(), 'each', [], (TMP_14 = function(inline_arg){var self = TMP_14.$$s || this; -if (inline_arg == null) inline_arg = nil; - return self.$push(self.$process(inline_arg))}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14)) - }, TMP_NodeWithArgs_compile_inline_args_15.$$arity = 0); + return self.$s("arity_check", self.$original_args()) + }, $NodeWithArgs_arity_check_node$2.$$arity = 0); - Opal.defn(self, '$compile_post_args', TMP_NodeWithArgs_compile_post_args_16 = function $$compile_post_args() { + Opal.def(self, '$compile_arity_check', $NodeWithArgs_compile_arity_check$3 = function $$compile_arity_check() { var self = this; - return self.$push(self.$process(self.$post_args_sexp())) - }, TMP_NodeWithArgs_compile_post_args_16.$$arity = 0); + return self.$push(self.$process(self.$arity_check_node())) + }, $NodeWithArgs_compile_arity_check$3.$$arity = 0); - Opal.defn(self, '$compile_block_arg', TMP_NodeWithArgs_compile_block_arg_17 = function $$compile_block_arg() { - var self = this, scope_name = nil, yielder = nil; + Opal.def(self, '$compile_block_arg', $NodeWithArgs_compile_block_arg$4 = function $$compile_block_arg() { + var $a, self = this, scope_name = nil, yielder = nil; if ($truthy(self.$scope()['$uses_block?']())) { scope_name = self.$scope().$identity(); - yielder = self.$scope().$block_name(); + yielder = ($truthy($a = self.$scope().$block_name()) ? $a : "$yield"); self.$add_temp("" + "$iter = " + (scope_name) + ".$$p"); self.$add_temp("" + (yielder) + " = $iter || nil"); return self.$line("" + "if ($iter) " + (scope_name) + ".$$p = null;"); - } else { - return nil - } - }, TMP_NodeWithArgs_compile_block_arg_17.$$arity = 0); - - Opal.defn(self, '$with_inline_args', TMP_NodeWithArgs_with_inline_args_18 = function $$with_inline_args(args) { - var self = this, $iter = TMP_NodeWithArgs_with_inline_args_18.$$p, $yield = $iter || nil, old_inline_args = nil, $writer = nil; - - if ($iter) TMP_NodeWithArgs_with_inline_args_18.$$p = null; - - old_inline_args = self.$inline_args(); - - $writer = [args]; - $send(self, 'inline_args=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - Opal.yieldX($yield, []); - - $writer = [old_inline_args]; - $send(self, 'inline_args=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_NodeWithArgs_with_inline_args_18.$$arity = 1); - - Opal.defn(self, '$in_mlhs', TMP_NodeWithArgs_in_mlhs_19 = function $$in_mlhs() { - var self = this, $iter = TMP_NodeWithArgs_in_mlhs_19.$$p, $yield = $iter || nil, old_mlhs = nil; - - if ($iter) TMP_NodeWithArgs_in_mlhs_19.$$p = null; - - old_mlhs = self.in_mlhs; - self.in_mlhs = true; - Opal.yieldX($yield, []); - return (self.in_mlhs = old_mlhs); - }, TMP_NodeWithArgs_in_mlhs_19.$$arity = 0); - - Opal.defn(self, '$in_mlhs?', TMP_NodeWithArgs_in_mlhs$q_20 = function() { - var self = this; - - return self.in_mlhs - }, TMP_NodeWithArgs_in_mlhs$q_20.$$arity = 0); - - Opal.defn(self, '$optimize_args!', TMP_NodeWithArgs_optimize_args$B_21 = function() { - var $a, self = this, rest_arg = nil, $writer = nil; - - if ($truthy((($a = self.$post_args().$length()['$=='](1)) ? self.$post_args().$first().$type()['$==']("restarg") : self.$post_args().$length()['$=='](1)))) { - - rest_arg = self.$post_args().$pop(); - - $writer = ["offset", self.$inline_args().$length()]; - $send(rest_arg.$meta(), '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return self.$inline_args()['$<<'](rest_arg); - } else { + } else { return nil } - }, TMP_NodeWithArgs_optimize_args$B_21.$$arity = 0); - - Opal.defn(self, '$has_only_optional_kwargs?', TMP_NodeWithArgs_has_only_optional_kwargs$q_23 = function() { - var $a, TMP_22, self = this; - - return ($truthy($a = self.$keyword_args()['$any?']()) ? $send(self.$keyword_args(), 'all?', [], (TMP_22 = function(arg){var self = TMP_22.$$s || this; -if (arg == null) arg = nil; - return ["kwoptarg", "kwrestarg"]['$include?'](arg.$type())}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)) : $a) - }, TMP_NodeWithArgs_has_only_optional_kwargs$q_23.$$arity = 0); - - Opal.defn(self, '$has_required_kwargs?', TMP_NodeWithArgs_has_required_kwargs$q_25 = function() { - var TMP_24, self = this; - - return $send(self.$keyword_args(), 'any?', [], (TMP_24 = function(arg){var self = TMP_24.$$s || this; -if (arg == null) arg = nil; - return arg.$type()['$==']("kwarg")}, TMP_24.$$s = self, TMP_24.$$arity = 1, TMP_24)) - }, TMP_NodeWithArgs_has_required_kwargs$q_25.$$arity = 0); - - Opal.defn(self, '$arity', TMP_NodeWithArgs_arity_26 = function $$arity() { - var $a, $b, self = this; - - if ($truthy(($truthy($a = ($truthy($b = self.$rest_arg()) ? $b : self.$opt_args()['$any?']())) ? $a : self['$has_only_optional_kwargs?']()))) { - return self.$negative_arity() - } else { - return self.$positive_arity() - } - }, TMP_NodeWithArgs_arity_26.$$arity = 0); - - Opal.defn(self, '$negative_arity', TMP_NodeWithArgs_negative_arity_28 = function $$negative_arity() { - var TMP_27, self = this, required_plain_args = nil, result = nil; - - - required_plain_args = $send(self.$args().$children(), 'select', [], (TMP_27 = function(arg){var self = TMP_27.$$s || this; -if (arg == null) arg = nil; - return ["arg", "mlhs"]['$include?'](arg.$type())}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)); - result = required_plain_args.$size(); - if ($truthy(self['$has_required_kwargs?']())) { - result = $rb_plus(result, 1)}; - result = $rb_minus(result['$-@'](), 1); - return result; - }, TMP_NodeWithArgs_negative_arity_28.$$arity = 0); - - Opal.defn(self, '$positive_arity', TMP_NodeWithArgs_positive_arity_29 = function $$positive_arity() { - var self = this, result = nil; - - - result = self.$args().$children().$size(); - result = $rb_minus(result, self.$keyword_args().$size()); - if ($truthy(self.$keyword_args()['$any?']())) { - result = $rb_plus(result, 1)}; - return result; - }, TMP_NodeWithArgs_positive_arity_29.$$arity = 0); - - Opal.defn(self, '$build_parameter', TMP_NodeWithArgs_build_parameter_30 = function $$build_parameter(parameter_type, parameter_name) { + }, $NodeWithArgs_compile_block_arg$4.$$arity = 0); + return (Opal.def(self, '$parameters_code', $NodeWithArgs_parameters_code$5 = function $$parameters_code() { var self = this; - if ($truthy(parameter_name)) { - return "" + "['" + (parameter_type) + "', '" + (parameter_name) + "']" - } else { - return "" + "['" + (parameter_type) + "']" - } - }, TMP_NodeWithArgs_build_parameter_30.$$arity = 2); - Opal.const_set($nesting[0], 'SEXP_TO_PARAMETERS', $hash2(["arg", "mlhs", "optarg", "restarg", "kwarg", "kwoptarg", "kwrestarg"], {"arg": "req", "mlhs": "req", "optarg": "opt", "restarg": "rest", "kwarg": "keyreq", "kwoptarg": "key", "kwrestarg": "keyrest"})); - - Opal.defn(self, '$parameters_code', TMP_NodeWithArgs_parameters_code_32 = function $$parameters_code() { - var TMP_31, self = this, stringified_parameters = nil; - - - stringified_parameters = $send(self.$args().$children(), 'map', [], (TMP_31 = function(arg){var self = TMP_31.$$s || this, value = nil; -if (arg == null) arg = nil; - - value = (function() {if (arg.$type()['$==']("mlhs")) { - return nil - } else { - return arg.$children()['$[]'](0) - }; return nil; })(); - return self.$build_parameter(Opal.const_get_relative($nesting, 'SEXP_TO_PARAMETERS')['$[]'](arg.$type()), value);}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31)); - if ($truthy(self.$block_arg())) { - stringified_parameters['$<<']("" + "['block', '" + (self.$block_arg()) + "']")}; - return "" + "[" + (stringified_parameters.$join(", ")) + "]"; - }, TMP_NodeWithArgs_parameters_code_32.$$arity = 0); - return (Opal.defn(self, '$arity_checks', TMP_NodeWithArgs_arity_checks_33 = function $$arity_checks() { - var $a, $b, $c, self = this, arity = nil, min_arity = nil, max_arity = nil; - - - if ($truthy((($a = self['arity_checks'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { - return self.arity_checks}; - arity = self.$args().$children().$size(); - arity = $rb_minus(arity, self.$opt_args().$size()); - if ($truthy(self.$rest_arg())) { - arity = $rb_minus(arity, 1)}; - arity = $rb_minus(arity, self.$keyword_args().$size()); - if ($truthy(($truthy($b = ($truthy($c = self.$opt_args()['$empty?']()['$!']()) ? $c : self.$keyword_args()['$empty?']()['$!']())) ? $b : self.$rest_arg()))) { - arity = $rb_minus(arity['$-@'](), 1)}; - self.arity_checks = []; - if ($truthy($rb_lt(arity, 0))) { - - min_arity = $rb_plus(arity, 1)['$-@'](); - max_arity = self.$args().$children().$size(); - if ($truthy($rb_gt(min_arity, 0))) { - self.arity_checks['$<<']("" + "$arity < " + (min_arity))}; - if ($truthy(($truthy($b = max_arity) ? self.$rest_arg()['$!']() : $b))) { - self.arity_checks['$<<']("" + "$arity > " + (max_arity))}; - } else { - self.arity_checks['$<<']("" + "$arity !== " + (arity)) - }; - return self.arity_checks; - }, TMP_NodeWithArgs_arity_checks_33.$$arity = 0), nil) && 'arity_checks'; - })($nesting[0], Opal.const_get_relative($nesting, 'ScopeNode'), $nesting) + return $$$($$($nesting, 'Args'), 'Parameters').$new(self.$original_args()).$to_code() + }, $NodeWithArgs_parameters_code$5.$$arity = 0), nil) && 'parameters_code'; + })($nesting[0], $$($nesting, 'ScopeNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/iter"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$attr_accessor', '$extract_block_arg', '$extract_shadow_args', '$extract_underscore_args', '$split_args', '$in_scope', '$process', '$inline_args_sexp', '$identify!', '$scope', '$add_temp', '$compile_block_arg', '$compile_shadow_args', '$compile_inline_args', '$compile_post_args', '$compile_norm_args', '$arity_check?', '$compiler', '$compile_arity_check', '$stmt', '$returned_body', '$to_vars', '$line', '$unshift', '$push', '$contains_break?', '$arity', '$parameters_code', '$has_top_level_mlhs_arg?', '$has_trailing_comma_in_args?', '$select', '$args', '$==', '$type', '$each', '$norm_args', '$block_arg', '$block_name=', '$-', '$[]', '$updated', '$s', '$body', '$shadow_args', '$<<', '$locals', '$add_arg', '$each_with_index', '$first', '$returns', '$keys', '$mlhs_mapping', '$any?', '$loc', '$expression', '$source', '$match', '$>', '$size', '$arity_checks', '$!', '$top?', '$def?', '$class_scope?', '$parent', '$mid', '$class?', '$name', '$module?', '$identity', '$join', '$new', '$found_break?']); + Opal.add_stubs(['$require', '$handle', '$children', '$in_scope', '$identify!', '$scope', '$add_temp', '$process', '$inline_args', '$compile_arity_check', '$stmt', '$returned_body', '$to_vars', '$line', '$unshift', '$push', '$contains_break?', '$arity', '$arity_check?', '$compiler', '$parameters_code', '$has_top_level_mlhs_arg?', '$has_trailing_comma_in_args?', '$block_arg', '$block_name=', '$-', '$each', '$args', '$first', '$==', '$<<', '$updated', '$body', '$returns', '$s', '$any?', '$original_args', '$type', '$loc', '$expression', '$source', '$match', '$new', '$found_break?']); self.$require("opal/nodes/node_with_args"); self.$require("opal/rewriters/break_finder"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $IterNode(){}; - var self = $IterNode = $klass($base, $super, 'IterNode', $IterNode); + var self = $klass($base, $super, 'IterNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IterNode_compile_2, TMP_IterNode_norm_args_4, TMP_IterNode_compile_norm_args_6, TMP_IterNode_compile_block_arg_7, TMP_IterNode_extract_block_arg_8, TMP_IterNode_compile_shadow_args_10, TMP_IterNode_extract_shadow_args_12, TMP_IterNode_extract_underscore_args_14, TMP_IterNode_returned_body_15, TMP_IterNode_mlhs_args_16, TMP_IterNode_has_top_level_mlhs_arg$q_18, TMP_IterNode_has_trailing_comma_in_args$q_19, TMP_IterNode_compile_arity_check_20, TMP_IterNode_contains_break$q_21; + var $nesting = [self].concat($parent_nesting), $IterNode_compile$1, $IterNode_compile_block_arg$3, $IterNode_extract_underscore_args$4, $IterNode_returned_body$6, $IterNode_has_top_level_mlhs_arg$ques$7, $IterNode_has_trailing_comma_in_args$ques$9, $IterNode_arity_check_node$10, $IterNode_contains_break$ques$11; - def.norm_args = def.sexp = nil; + self.$$prototype.sexp = nil; self.$handle("iter"); - self.$children("args", "body"); - self.$attr_accessor("block_arg", "shadow_args"); + self.$children("inline_args", "body"); - Opal.defn(self, '$compile', TMP_IterNode_compile_2 = function $$compile() { - var TMP_1, self = this, inline_params = nil, to_vars = nil, identity = nil, body_code = nil; + Opal.def(self, '$compile', $IterNode_compile$1 = function $$compile() { + var $$2, self = this, inline_params = nil, to_vars = nil, identity = nil, body_code = nil; inline_params = nil; - self.$extract_block_arg(); - self.$extract_shadow_args(); - self.$extract_underscore_args(); - self.$split_args(); to_vars = (identity = (body_code = nil)); - $send(self, 'in_scope', [], (TMP_1 = function(){var self = TMP_1.$$s || this; + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this; - inline_params = self.$process(self.$inline_args_sexp()); identity = self.$scope()['$identify!'](); self.$add_temp("" + "self = " + (identity) + ".$$s || this"); - self.$compile_block_arg(); - self.$compile_shadow_args(); - self.$compile_inline_args(); - self.$compile_post_args(); - self.$compile_norm_args(); - if ($truthy(self.$compiler()['$arity_check?']())) { - self.$compile_arity_check()}; + inline_params = self.$process(self.$inline_args()); + self.$compile_arity_check(); body_code = self.$stmt(self.$returned_body()); - return (to_vars = self.$scope().$to_vars());}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return (to_vars = self.$scope().$to_vars());}, $$2.$$s = self, $$2.$$arity = 0, $$2)); self.$line(body_code); self.$unshift(to_vars); self.$unshift("" + "(" + (identity) + " = function(", inline_params, "){"); @@ -49163,27 +56202,9 @@ Opal.modules["opal/nodes/iter"] = function(Opal) { if ($truthy(self['$has_trailing_comma_in_args?']())) { self.$push("" + " " + (identity) + ".$$has_trailing_comma_in_args = true,")}; return self.$push("" + " " + (identity) + ")"); - }, TMP_IterNode_compile_2.$$arity = 0); - - Opal.defn(self, '$norm_args', TMP_IterNode_norm_args_4 = function $$norm_args() { - var $a, TMP_3, self = this; - - return (self.norm_args = ($truthy($a = self.norm_args) ? $a : $send(self.$args().$children(), 'select', [], (TMP_3 = function(arg){var self = TMP_3.$$s || this; -if (arg == null) arg = nil; - return arg.$type()['$==']("arg")}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)))) - }, TMP_IterNode_norm_args_4.$$arity = 0); - - Opal.defn(self, '$compile_norm_args', TMP_IterNode_compile_norm_args_6 = function $$compile_norm_args() { - var TMP_5, self = this; - - return $send(self.$norm_args(), 'each', [], (TMP_5 = function(arg){var self = TMP_5.$$s || this, $a, arg_name = nil, _ = nil; -if (arg == null) arg = nil; - - $a = [].concat(Opal.to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; - return self.$push("" + "if (" + (arg_name) + " == null) " + (arg_name) + " = nil;");}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)) - }, TMP_IterNode_compile_norm_args_6.$$arity = 0); + }, $IterNode_compile$1.$$arity = 0); - Opal.defn(self, '$compile_block_arg', TMP_IterNode_compile_block_arg_7 = function $$compile_block_arg() { + Opal.def(self, '$compile_block_arg', $IterNode_compile_block_arg$3 = function $$compile_block_arg() { var self = this, $writer = nil, scope_name = nil; if ($truthy(self.$block_arg())) { @@ -49196,218 +56217,128 @@ if (arg == null) arg = nil; scope_name = self.$scope()['$identify!'](); self.$line("" + (self.$block_arg()) + " = " + (scope_name) + ".$$p || nil;"); return self.$line("" + "if (" + (self.$block_arg()) + ") " + (scope_name) + ".$$p = null;"); - } else { + } else { return nil } - }, TMP_IterNode_compile_block_arg_7.$$arity = 0); - - Opal.defn(self, '$extract_block_arg', TMP_IterNode_extract_block_arg_8 = function $$extract_block_arg() { - var $a, $b, $c, self = this, regular_args = nil, last_arg = nil; - - - $b = self.$args().$children(), $a = Opal.to_ary($b), $c = $a.length - 1, $c = ($c < 0) ? 0 : $c, (regular_args = $slice.call($a, 0, $c)), (last_arg = ($a[$c] == null ? nil : $a[$c])), $b; - if ($truthy(($truthy($a = last_arg) ? last_arg.$type()['$==']("blockarg") : $a))) { - - self.block_arg = last_arg.$children()['$[]'](0); - return (self.sexp = self.sexp.$updated(nil, [$send(self, 's', ["args"].concat(Opal.to_a(regular_args))), self.$body()])); - } else { - return nil - }; - }, TMP_IterNode_extract_block_arg_8.$$arity = 0); - - Opal.defn(self, '$compile_shadow_args', TMP_IterNode_compile_shadow_args_10 = function $$compile_shadow_args() { - var TMP_9, self = this; - - return $send(self.$shadow_args(), 'each', [], (TMP_9 = function(shadow_arg){var self = TMP_9.$$s || this, arg_name = nil; -if (shadow_arg == null) shadow_arg = nil; - - arg_name = shadow_arg.$children()['$[]'](0); - self.$scope().$locals()['$<<'](arg_name); - return self.$scope().$add_arg(arg_name);}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)) - }, TMP_IterNode_compile_shadow_args_10.$$arity = 0); - - Opal.defn(self, '$extract_shadow_args', TMP_IterNode_extract_shadow_args_12 = function $$extract_shadow_args() { - var TMP_11, self = this, valid_args = nil; - - - self.shadow_args = []; - valid_args = []; - if ($truthy(self.$args())) { - } else { - return nil - }; - $send(self.$args().$children(), 'each_with_index', [], (TMP_11 = function(arg, idx){var self = TMP_11.$$s || this; - if (self.shadow_args == null) self.shadow_args = nil; -if (arg == null) arg = nil;if (idx == null) idx = nil; - if (arg.$type()['$==']("shadowarg")) { - return self.shadow_args['$<<'](arg) - } else { - return valid_args['$<<'](arg) - }}, TMP_11.$$s = self, TMP_11.$$arity = 2, TMP_11)); - return (self.sexp = self.sexp.$updated(nil, [self.$args().$updated(nil, valid_args), self.$body()])); - }, TMP_IterNode_extract_shadow_args_12.$$arity = 0); + }, $IterNode_compile_block_arg$3.$$arity = 0); - Opal.defn(self, '$extract_underscore_args', TMP_IterNode_extract_underscore_args_14 = function $$extract_underscore_args() { - var TMP_13, self = this, valid_args = nil, caught_blank_argument = nil; + Opal.def(self, '$extract_underscore_args', $IterNode_extract_underscore_args$4 = function $$extract_underscore_args() { + var $$5, self = this, valid_args = nil, caught_blank_argument = nil; valid_args = []; caught_blank_argument = false; - $send(self.$args().$children(), 'each', [], (TMP_13 = function(arg){var self = TMP_13.$$s || this, arg_name = nil; -if (arg == null) arg = nil; + $send(self.$args().$children(), 'each', [], ($$5 = function(arg){var self = $$5.$$s || this, arg_name = nil; + + + if (arg == null) { + arg = nil; + }; arg_name = arg.$children().$first(); if (arg_name['$==']("_")) { if ($truthy(caught_blank_argument)) { return nil - } else { + } else { caught_blank_argument = true; return valid_args['$<<'](arg); } - } else { + } else { return valid_args['$<<'](arg) - };}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13)); + };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); return (self.sexp = self.sexp.$updated(nil, [self.$args().$updated(nil, valid_args), self.$body()])); - }, TMP_IterNode_extract_underscore_args_14.$$arity = 0); + }, $IterNode_extract_underscore_args$4.$$arity = 0); - Opal.defn(self, '$returned_body', TMP_IterNode_returned_body_15 = function $$returned_body() { + Opal.def(self, '$returned_body', $IterNode_returned_body$6 = function $$returned_body() { var $a, self = this; return self.$compiler().$returns(($truthy($a = self.$body()) ? $a : self.$s("nil"))) - }, TMP_IterNode_returned_body_15.$$arity = 0); + }, $IterNode_returned_body$6.$$arity = 0); - Opal.defn(self, '$mlhs_args', TMP_IterNode_mlhs_args_16 = function $$mlhs_args() { - var self = this; + Opal.def(self, '$has_top_level_mlhs_arg?', $IterNode_has_top_level_mlhs_arg$ques$7 = function() { + var $$8, self = this; - return self.$scope().$mlhs_mapping().$keys() - }, TMP_IterNode_mlhs_args_16.$$arity = 0); - - Opal.defn(self, '$has_top_level_mlhs_arg?', TMP_IterNode_has_top_level_mlhs_arg$q_18 = function() { - var TMP_17, self = this; + return $send(self.$original_args().$children(), 'any?', [], ($$8 = function(arg){var self = $$8.$$s || this; - return $send(self.$args().$children(), 'any?', [], (TMP_17 = function(arg){var self = TMP_17.$$s || this; -if (arg == null) arg = nil; - return arg.$type()['$==']("mlhs")}, TMP_17.$$s = self, TMP_17.$$arity = 1, TMP_17)) - }, TMP_IterNode_has_top_level_mlhs_arg$q_18.$$arity = 0); + + + if (arg == null) { + arg = nil; + }; + return arg.$type()['$==']("mlhs");}, $$8.$$s = self, $$8.$$arity = 1, $$8)) + }, $IterNode_has_top_level_mlhs_arg$ques$7.$$arity = 0); - Opal.defn(self, '$has_trailing_comma_in_args?', TMP_IterNode_has_trailing_comma_in_args$q_19 = function() { + Opal.def(self, '$has_trailing_comma_in_args?', $IterNode_has_trailing_comma_in_args$ques$9 = function() { var $a, self = this, args_source = nil; - if ($truthy(($truthy($a = self.$args().$loc()) ? self.$args().$loc().$expression() : $a))) { + if ($truthy(($truthy($a = self.$original_args().$loc()) ? self.$original_args().$loc().$expression() : $a))) { - args_source = self.$args().$loc().$expression().$source(); + args_source = self.$original_args().$loc().$expression().$source(); return args_source.$match(/,\s*\|/); - } else { + } else { return nil } - }, TMP_IterNode_has_trailing_comma_in_args$q_19.$$arity = 0); + }, $IterNode_has_trailing_comma_in_args$ques$9.$$arity = 0); - Opal.defn(self, '$compile_arity_check', TMP_IterNode_compile_arity_check_20 = function $$compile_arity_check() { - var $a, $b, $c, self = this, parent_scope = nil, context = nil, identity = nil; + Opal.def(self, '$arity_check_node', $IterNode_arity_check_node$10 = function $$arity_check_node() { + var self = this; - if ($truthy($rb_gt(self.$arity_checks().$size(), 0))) { - - parent_scope = self.$scope(); - while ($truthy(($truthy($b = ($truthy($c = parent_scope['$top?']()) ? $c : parent_scope['$def?']())) ? $b : parent_scope['$class_scope?']())['$!']())) { - parent_scope = parent_scope.$parent() - }; - context = (function() {if ($truthy(parent_scope['$top?']())) { - return "'
'" - } else if ($truthy(parent_scope['$def?']())) { - return "" + "'" + (parent_scope.$mid()) + "'" - } else if ($truthy(parent_scope['$class?']())) { - return "" + "''" - } else if ($truthy(parent_scope['$module?']())) { - return "" + "''" - } else { - return nil - }; return nil; })(); - identity = self.$scope().$identity(); - self.$line("" + "if (" + (identity) + ".$$is_lambda || " + (identity) + ".$$define_meth) {"); - self.$line(" var $arity = arguments.length;"); - self.$line("" + " if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.block_ac($arity, " + (self.$arity()) + ", " + (context) + "); }"); - return self.$line("}"); - } else { - return nil - } - }, TMP_IterNode_compile_arity_check_20.$$arity = 0); - return (Opal.defn(self, '$contains_break?', TMP_IterNode_contains_break$q_21 = function() { + return self.$s("iter_arity_check", self.$original_args()) + }, $IterNode_arity_check_node$10.$$arity = 0); + return (Opal.def(self, '$contains_break?', $IterNode_contains_break$ques$11 = function() { var self = this, finder = nil; - finder = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder = $$$($$$($$($nesting, 'Opal'), 'Rewriters'), 'BreakFinder').$new(); finder.$process(self.sexp); return finder['$found_break?'](); - }, TMP_IterNode_contains_break$q_21.$$arity = 0), nil) && 'contains_break?'; - })($nesting[0], Opal.const_get_relative($nesting, 'NodeWithArgs'), $nesting) + }, $IterNode_contains_break$ques$11.$$arity = 0), nil) && 'contains_break?'; + })($nesting[0], $$($nesting, 'NodeWithArgs'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/def"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$attr_accessor', '$args', '$==', '$type', '$[]', '$updated', '$mid', '$s', '$stmts', '$extract_block_arg', '$split_args', '$block_arg', '$in_scope', '$mid=', '$scope', '$-', '$defs=', '$uses_block!', '$add_arg', '$block_name=', '$process', '$inline_args_sexp', '$stmt', '$returns', '$compiler', '$add_temp', '$compile_inline_args', '$compile_post_args', '$identify!', '$identity', '$compile_block_arg', '$arity_check?', '$compile_arity_check', '$uses_zuper', '$add_local', '$line', '$unshift', '$current_indent', '$to_vars', '$catch_return', '$push', '$valid_name?', '$arity', '$parameters_code', '$parse_comments?', '$comments_code', '$enable_source_location?', '$source_location', '$wrap_with_definition', '$iter?', '$module?', '$class?', '$sclass?', '$eval?', '$top?', '$def?', '$raise', '$expr?', '$wrap', '$>', '$size', '$arity_checks', '$inspect', '$to_s', '$join', '$name', '$source_buffer', '$expression', '$loc', '$+', '$map', '$comments', '$text']); + Opal.add_stubs(['$require', '$handle', '$children', '$in_scope', '$mid', '$mid=', '$scope', '$-', '$==', '$type', '$defs=', '$identify!', '$identity', '$block_name=', '$process', '$inline_args', '$stmt', '$returns', '$compiler', '$stmts', '$compile_block_arg', '$add_temp', '$compile_arity_check', '$uses_zuper', '$prepare_super', '$unshift', '$current_indent', '$to_vars', '$line', '$catch_return', '$push', '$valid_name?', '$arity', '$arity_check?', '$parameters_code', '$parse_comments?', '$comments_code', '$enable_source_location?', '$source_location', '$wrap_with_definition', '$wrap', '$expr?', '$name', '$source_buffer', '$expression', '$loc', '$+', '$join', '$map', '$comments', '$inspect', '$text', '$add_local']); self.$require("opal/nodes/node_with_args"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $DefNode(){}; - var self = $DefNode = $klass($base, $super, 'DefNode', $DefNode); + var self = $klass($base, $super, 'DefNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DefNode_extract_block_arg_1, TMP_DefNode_compile_3, TMP_DefNode_wrap_with_definition_4, TMP_DefNode_compile_arity_check_5, TMP_DefNode_source_location_6, TMP_DefNode_comments_code_8; + var $nesting = [self].concat($parent_nesting), $DefNode_compile$1, $DefNode_wrap_with_definition$3, $DefNode_source_location$4, $DefNode_comments_code$5, $DefNode_prepare_super$7; - def.sexp = nil; + self.$$prototype.sexp = nil; self.$handle("def"); - self.$children("mid", "args", "stmts"); - self.$attr_accessor("block_arg"); - - Opal.defn(self, '$extract_block_arg', TMP_DefNode_extract_block_arg_1 = function $$extract_block_arg() { - var $a, $b, $c, self = this, regular_args = nil, last_arg = nil; - - - $b = self.$args().$children(), $a = Opal.to_ary($b), $c = $a.length - 1, $c = ($c < 0) ? 0 : $c, (regular_args = $slice.call($a, 0, $c)), (last_arg = ($a[$c] == null ? nil : $a[$c])), $b; - if ($truthy(($truthy($a = last_arg) ? last_arg.$type()['$==']("blockarg") : $a))) { - - self.block_arg = last_arg.$children()['$[]'](0); - return (self.sexp = self.sexp.$updated(nil, [self.$mid(), $send(self, 's', ["args"].concat(Opal.to_a(regular_args))), self.$stmts()])); - } else { - return nil - }; - }, TMP_DefNode_extract_block_arg_1.$$arity = 0); + self.$children("mid", "inline_args", "stmts"); - Opal.defn(self, '$compile', TMP_DefNode_compile_3 = function $$compile() { - var TMP_2, self = this, inline_params = nil, scope_name = nil, block_name = nil, function_name = nil; + Opal.def(self, '$compile', $DefNode_compile$1 = function $$compile() { + var $$2, self = this, inline_params = nil, scope_name = nil, function_name = nil; - self.$extract_block_arg(); - self.$split_args(); inline_params = nil; scope_name = nil; - if ($truthy(self.$block_arg())) { - block_name = self.$block_arg()}; - $send(self, 'in_scope', [], (TMP_2 = function(){var self = TMP_2.$$s || this, $a, $writer = nil, stmt_code = nil; + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this, $writer = nil, stmt_code = nil; if (self.sexp == null) self.sexp = nil; @@ -49420,33 +56351,19 @@ Opal.modules["opal/nodes/def"] = function(Opal) { $writer = [true]; $send(self.$scope(), 'defs=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];}; - if ($truthy(block_name)) { - - self.$scope()['$uses_block!'](); - self.$scope().$add_arg(block_name);}; + self.$scope()['$identify!'](); + scope_name = self.$scope().$identity(); - $writer = [($truthy($a = block_name) ? $a : "$yield")]; + $writer = ["$yield"]; $send(self.$scope(), 'block_name=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - inline_params = self.$process(self.$inline_args_sexp()); + inline_params = self.$process(self.$inline_args()); stmt_code = self.$stmt(self.$compiler().$returns(self.$stmts())); - self.$add_temp("self = this"); - self.$compile_inline_args(); - self.$compile_post_args(); - self.$scope()['$identify!'](); - scope_name = self.$scope().$identity(); self.$compile_block_arg(); - if ($truthy(self.$compiler()['$arity_check?']())) { - self.$compile_arity_check()}; + self.$add_temp("self = this"); + self.$compile_arity_check(); if ($truthy(self.$scope().$uses_zuper())) { - - self.$add_local("$zuper"); - self.$add_local("$zuper_i"); - self.$add_local("$zuper_ii"); - self.$line("// Prepare super implicit arguments"); - self.$line("for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {"); - self.$line(" $zuper[$zuper_i] = arguments[$zuper_i];"); - self.$line("}");}; + self.$prepare_super()}; self.$unshift("" + "\n" + (self.$current_indent()), self.$scope().$to_vars()); self.$line(stmt_code); if ($truthy(self.$scope().$catch_return())) { @@ -49454,12 +56371,12 @@ Opal.modules["opal/nodes/def"] = function(Opal) { self.$unshift("try {\n"); self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"); return self.$push(" throw $returner; }"); - } else { + } else { return nil - };}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); + };}, $$2.$$s = self, $$2.$$arity = 0, $$2)); function_name = (function() {if ($truthy(self['$valid_name?'](self.$mid()))) { return "" + " $$" + (self.$mid()) - } else { + } else { return "" }; return nil; })(); self.$unshift(") {"); @@ -49476,239 +56393,215 @@ Opal.modules["opal/nodes/def"] = function(Opal) { if ($truthy(self.$compiler()['$enable_source_location?']())) { self.$push("" + ", " + (scope_name) + ".$$source_location = " + (self.$source_location()))}; return self.$wrap_with_definition(); - }, TMP_DefNode_compile_3.$$arity = 0); + }, $DefNode_compile$1.$$arity = 0); - Opal.defn(self, '$wrap_with_definition', TMP_DefNode_wrap_with_definition_4 = function $$wrap_with_definition() { - var $a, self = this; + Opal.def(self, '$wrap_with_definition', $DefNode_wrap_with_definition$3 = function $$wrap_with_definition() { + var self = this; - if ($truthy(self.$scope()['$iter?']())) { - self.$unshift("" + "Opal.def(self, '$" + (self.$mid()) + "', ") - } else if ($truthy(($truthy($a = self.$scope()['$module?']()) ? $a : self.$scope()['$class?']()))) { - self.$unshift("" + "Opal.defn(self, '$" + (self.$mid()) + "', ") - } else if ($truthy(self.$scope()['$sclass?']())) { - self.$unshift("" + "Opal.defn(self, '$" + (self.$mid()) + "', ") - } else if ($truthy(self.$compiler()['$eval?']())) { - self.$unshift("" + "Opal.def(self, '$" + (self.$mid()) + "', ") - } else if ($truthy(self.$scope()['$top?']())) { - self.$unshift("" + "Opal.defn(Opal.Object, '$" + (self.$mid()) + "', ") - } else if ($truthy(self.$scope()['$def?']())) { - self.$unshift("" + "Opal.def(self, '$" + (self.$mid()) + "', ") - } else { - self.$raise("Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message.") - }; - self.$push(")"); + self.$wrap("" + "Opal.def(self, '$" + (self.$mid()) + "', ", ")"); if ($truthy(self['$expr?']())) { return self.$wrap("(", "" + ", nil) && '" + (self.$mid()) + "'") - } else { + } else { return self.$unshift("" + "\n" + (self.$current_indent())) }; - }, TMP_DefNode_wrap_with_definition_4.$$arity = 0); - - Opal.defn(self, '$compile_arity_check', TMP_DefNode_compile_arity_check_5 = function $$compile_arity_check() { - var self = this, meth = nil; - - if ($truthy($rb_gt(self.$arity_checks().$size(), 0))) { - - meth = self.$scope().$mid().$to_s().$inspect(); - self.$line("var $arity = arguments.length;"); - return self.$push("" + " if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.ac($arity, " + (self.$arity()) + ", this, " + (meth) + "); }"); - } else { - return nil - } - }, TMP_DefNode_compile_arity_check_5.$$arity = 0); + }, $DefNode_wrap_with_definition$3.$$arity = 0); - Opal.defn(self, '$source_location', TMP_DefNode_source_location_6 = function $$source_location() { + Opal.def(self, '$source_location', $DefNode_source_location$4 = function $$source_location() { var self = this, file = nil, line = nil; file = self.sexp.$loc().$expression().$source_buffer().$name(); line = self.sexp.$loc().$line(); - return "" + "['" + (file) + ".rb', " + (line) + "]"; - }, TMP_DefNode_source_location_6.$$arity = 0); - return (Opal.defn(self, '$comments_code', TMP_DefNode_comments_code_8 = function $$comments_code() { - var TMP_7, self = this; - - return $rb_plus($rb_plus("[", $send(self.$comments(), 'map', [], (TMP_7 = function(comment){var self = TMP_7.$$s || this; -if (comment == null) comment = nil; - return comment.$text().$inspect()}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)).$join(", ")), "]") - }, TMP_DefNode_comments_code_8.$$arity = 0), nil) && 'comments_code'; - })($nesting[0], Opal.const_get_relative($nesting, 'NodeWithArgs'), $nesting) + return "" + "['" + (file) + "', " + (line) + "]"; + }, $DefNode_source_location$4.$$arity = 0); + + Opal.def(self, '$comments_code', $DefNode_comments_code$5 = function $$comments_code() { + var $$6, self = this; + + return $rb_plus($rb_plus("[", $send(self.$comments(), 'map', [], ($$6 = function(comment){var self = $$6.$$s || this; + + + + if (comment == null) { + comment = nil; + }; + return comment.$text().$inspect();}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(", ")), "]") + }, $DefNode_comments_code$5.$$arity = 0); + return (Opal.def(self, '$prepare_super', $DefNode_prepare_super$7 = function $$prepare_super() { + var self = this; + + + self.$add_local("$zuper"); + self.$add_local("$zuper_i"); + self.$add_local("$zuper_ii"); + self.$line("// Prepare super implicit arguments"); + self.$line("for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {"); + self.$line(" $zuper[$zuper_i] = arguments[$zuper_i];"); + return self.$line("}"); + }, $DefNode_prepare_super$7.$$arity = 0), nil) && 'prepare_super'; + })($nesting[0], $$($nesting, 'NodeWithArgs'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/defs"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$args', '$==', '$type', '$[]', '$updated', '$recvr', '$mid', '$s', '$stmts', '$unshift', '$expr', '$push']); + Opal.add_stubs(['$require', '$handle', '$children', '$unshift', '$expr', '$recvr', '$mid', '$push', '$expr?', '$wrap']); self.$require("opal/nodes/def"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $DefsNode(){}; - var self = $DefsNode = $klass($base, $super, 'DefsNode', $DefsNode); + var self = $klass($base, $super, 'DefsNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DefsNode_extract_block_arg_1, TMP_DefsNode_wrap_with_definition_2; + var $nesting = [self].concat($parent_nesting), $DefsNode_wrap_with_definition$1; - def.sexp = nil; self.$handle("defs"); - self.$children("recvr", "mid", "args", "stmts"); - - Opal.defn(self, '$extract_block_arg', TMP_DefsNode_extract_block_arg_1 = function $$extract_block_arg() { - var $a, $b, $c, self = this, regular_args = nil, last_arg = nil; - - - $b = self.$args().$children(), $a = Opal.to_ary($b), $c = $a.length - 1, $c = ($c < 0) ? 0 : $c, (regular_args = $slice.call($a, 0, $c)), (last_arg = ($a[$c] == null ? nil : $a[$c])), $b; - if ($truthy(($truthy($a = last_arg) ? last_arg.$type()['$==']("blockarg") : $a))) { - - self.block_arg = last_arg.$children()['$[]'](0); - return (self.sexp = self.sexp.$updated(nil, [self.$recvr(), self.$mid(), $send(self, 's', ["args"].concat(Opal.to_a(regular_args))), self.$stmts()])); - } else { - return nil - }; - }, TMP_DefsNode_extract_block_arg_1.$$arity = 0); - return (Opal.defn(self, '$wrap_with_definition', TMP_DefsNode_wrap_with_definition_2 = function $$wrap_with_definition() { + self.$children("recvr", "mid", "inline_args", "stmts"); + return (Opal.def(self, '$wrap_with_definition', $DefsNode_wrap_with_definition$1 = function $$wrap_with_definition() { var self = this; self.$unshift("Opal.defs(", self.$expr(self.$recvr()), "" + ", '$" + (self.$mid()) + "', "); - return self.$push(")"); - }, TMP_DefsNode_wrap_with_definition_2.$$arity = 0), nil) && 'wrap_with_definition'; - })($nesting[0], Opal.const_get_relative($nesting, 'DefNode'), $nesting) + self.$push(")"); + if ($truthy(self['$expr?']())) { + return self.$wrap("(", "" + ", nil) && '" + (self.$mid()) + "'") + } else { + return nil + }; + }, $DefsNode_wrap_with_definition$1.$$arity = 0), nil) && 'wrap_with_definition'; + })($nesting[0], $$($nesting, 'DefNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/if"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$handle', '$children', '$truthy', '$falsy', '$push', '$js_truthy', '$test', '$indent', '$line', '$stmt', '$==', '$type', '$needs_wrapper?', '$wrap', '$returns', '$compiler', '$true_body', '$s', '$false_body', '$expr?', '$recv?']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $IfNode(){}; - var self = $IfNode = $klass($base, $super, 'IfNode', $IfNode); + var self = $klass($base, $super, 'IfNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IfNode_compile_3, TMP_IfNode_truthy_4, TMP_IfNode_falsy_5, TMP_IfNode_needs_wrapper$q_6; + var $nesting = [self].concat($parent_nesting), $IfNode_compile$1, $IfNode_truthy$4, $IfNode_falsy$5, $IfNode_needs_wrapper$ques$6; self.$handle("if"); self.$children("test", "true_body", "false_body"); - Opal.defn(self, '$compile', TMP_IfNode_compile_3 = function $$compile() { - var $a, TMP_1, TMP_2, self = this, truthy = nil, falsy = nil; + Opal.def(self, '$compile', $IfNode_compile$1 = function $$compile() { + var $$2, $$3, self = this, truthy = nil, falsy = nil; - $a = [self.$truthy(), self.$falsy()], (truthy = $a[0]), (falsy = $a[1]), $a; + truthy = self.$truthy(); + falsy = self.$falsy(); self.$push("if (", self.$js_truthy(self.$test()), ") {"); if ($truthy(truthy)) { - $send(self, 'indent', [], (TMP_1 = function(){var self = TMP_1.$$s || this; + $send(self, 'indent', [], ($$2 = function(){var self = $$2.$$s || this; - return self.$line(self.$stmt(truthy))}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1))}; + return self.$line(self.$stmt(truthy))}, $$2.$$s = self, $$2.$$arity = 0, $$2))}; if ($truthy(falsy)) { if (falsy.$type()['$==']("if")) { self.$line("} else ", self.$stmt(falsy)) - } else { + } else { - $send(self, 'indent', [], (TMP_2 = function(){var self = TMP_2.$$s || this; + self.$line("} else {"); + $send(self, 'indent', [], ($$3 = function(){var self = $$3.$$s || this; - - self.$line("} else {"); - return self.$line(self.$stmt(falsy));}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); + return self.$line(self.$stmt(falsy))}, $$3.$$s = self, $$3.$$arity = 0, $$3)); self.$line("}"); } - } else { + } else { self.$push("}") }; if ($truthy(self['$needs_wrapper?']())) { return self.$wrap("(function() {", "; return nil; })()") - } else { + } else { return nil }; - }, TMP_IfNode_compile_3.$$arity = 0); + }, $IfNode_compile$1.$$arity = 0); - Opal.defn(self, '$truthy', TMP_IfNode_truthy_4 = function $$truthy() { + Opal.def(self, '$truthy', $IfNode_truthy$4 = function $$truthy() { var $a, self = this; if ($truthy(self['$needs_wrapper?']())) { return self.$compiler().$returns(($truthy($a = self.$true_body()) ? $a : self.$s("nil"))) - } else { + } else { return self.$true_body() } - }, TMP_IfNode_truthy_4.$$arity = 0); + }, $IfNode_truthy$4.$$arity = 0); - Opal.defn(self, '$falsy', TMP_IfNode_falsy_5 = function $$falsy() { + Opal.def(self, '$falsy', $IfNode_falsy$5 = function $$falsy() { var $a, self = this; if ($truthy(self['$needs_wrapper?']())) { return self.$compiler().$returns(($truthy($a = self.$false_body()) ? $a : self.$s("nil"))) - } else { + } else { return self.$false_body() } - }, TMP_IfNode_falsy_5.$$arity = 0); - return (Opal.defn(self, '$needs_wrapper?', TMP_IfNode_needs_wrapper$q_6 = function() { + }, $IfNode_falsy$5.$$arity = 0); + return (Opal.def(self, '$needs_wrapper?', $IfNode_needs_wrapper$ques$6 = function() { var $a, self = this; return ($truthy($a = self['$expr?']()) ? $a : self['$recv?']()) - }, TMP_IfNode_needs_wrapper$q_6.$$arity = 0), nil) && 'needs_wrapper?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $IfNode_needs_wrapper$ques$6.$$arity = 0), nil) && 'needs_wrapper?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $IFlipFlop(){}; - var self = $IFlipFlop = $klass($base, $super, 'IFlipFlop', $IFlipFlop); + var self = $klass($base, $super, 'IFlipFlop'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IFlipFlop_compile_7; + var $nesting = [self].concat($parent_nesting), $IFlipFlop_compile$7; self.$handle("iflipflop"); - return (Opal.defn(self, '$compile', TMP_IFlipFlop_compile_7 = function $$compile() { + return (Opal.def(self, '$compile', $IFlipFlop_compile$7 = function $$compile() { var self = this; return self.$push("true") - }, TMP_IFlipFlop_compile_7.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $IFlipFlop_compile$7.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $EFlipFlop(){}; - var self = $EFlipFlop = $klass($base, $super, 'EFlipFlop', $EFlipFlop); + var self = $klass($base, $super, 'EFlipFlop'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_EFlipFlop_compile_8; + var $nesting = [self].concat($parent_nesting), $EFlipFlop_compile$8; self.$handle("eflipflop"); - return (Opal.defn(self, '$compile', TMP_EFlipFlop_compile_8 = function $$compile() { + return (Opal.def(self, '$compile', $EFlipFlop_compile$8 = function $$compile() { var self = this; return self.$push("true") - }, TMP_EFlipFlop_compile_8.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $EFlipFlop_compile$8.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/logic"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -49716,125 +56609,122 @@ Opal.modules["opal/nodes/logic"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$handle', '$in_while?', '$push', '$expr_or_nil', '$value', '$wrap', '$size', '$children', '$===', '$s', '$first', '$compile_while', '$iter?', '$scope', '$compile_iter', '$error', '$[]', '$while_loop', '$stmt?', '$line', '$break_val', '$nil?', '$expr', '$[]=', '$-', '$identity', '$==', '$empty_splat?', '$recv', '$type', '$rhs', '$compile_if', '$compile_ternary', '$raise', '$helper', '$with_temp', '$lhs', '$indent', '$js_truthy_optimize', '$>', '$find_parent_def', '$expr?', '$def?', '$return_in_iter?', '$return_expr_in_def?', '$scope_to_catch_return', '$catch_return=', '$return_val', '$to_s']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $NextNode(){}; - var self = $NextNode = $klass($base, $super, 'NextNode', $NextNode); + var self = $klass($base, $super, 'NextNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NextNode_compile_1, TMP_NextNode_value_2; + var $nesting = [self].concat($parent_nesting), $NextNode_compile$1, $NextNode_value$2; self.$handle("next"); - Opal.defn(self, '$compile', TMP_NextNode_compile_1 = function $$compile() { + Opal.def(self, '$compile', $NextNode_compile$1 = function $$compile() { var self = this; if ($truthy(self['$in_while?']())) { return self.$push("continue;") - } else { + } else { self.$push(self.$expr_or_nil(self.$value())); return self.$wrap("return ", ";"); } - }, TMP_NextNode_compile_1.$$arity = 0); - return (Opal.defn(self, '$value', TMP_NextNode_value_2 = function $$value() { + }, $NextNode_compile$1.$$arity = 0); + return (Opal.def(self, '$value', $NextNode_value$2 = function $$value() { var self = this, $case = nil; return (function() {$case = self.$children().$size(); if ((0)['$===']($case)) {return self.$s("nil")} else if ((1)['$===']($case)) {return self.$children().$first()} else {return $send(self, 's', ["array"].concat(Opal.to_a(self.$children())))}})() - }, TMP_NextNode_value_2.$$arity = 0), nil) && 'value'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $NextNode_value$2.$$arity = 0), nil) && 'value'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $BreakNode(){}; - var self = $BreakNode = $klass($base, $super, 'BreakNode', $BreakNode); + var self = $klass($base, $super, 'BreakNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BreakNode_compile_3, TMP_BreakNode_compile_while_4, TMP_BreakNode_compile_iter_5, TMP_BreakNode_break_val_6; + var $nesting = [self].concat($parent_nesting), $BreakNode_compile$3, $BreakNode_compile_while$4, $BreakNode_compile_iter$5, $BreakNode_break_val$6; self.$handle("break"); self.$children("value"); - Opal.defn(self, '$compile', TMP_BreakNode_compile_3 = function $$compile() { + Opal.def(self, '$compile', $BreakNode_compile$3 = function $$compile() { var self = this; if ($truthy(self['$in_while?']())) { return self.$compile_while() } else if ($truthy(self.$scope()['$iter?']())) { return self.$compile_iter() - } else { + } else { return self.$error("void value expression: cannot use break outside of iter/while") } - }, TMP_BreakNode_compile_3.$$arity = 0); + }, $BreakNode_compile$3.$$arity = 0); - Opal.defn(self, '$compile_while', TMP_BreakNode_compile_while_4 = function $$compile_while() { + Opal.def(self, '$compile_while', $BreakNode_compile_while$4 = function $$compile_while() { var self = this; if ($truthy(self.$while_loop()['$[]']("closure"))) { return self.$push("return ", self.$expr_or_nil(self.$value())) - } else { + } else { return self.$push("break;") } - }, TMP_BreakNode_compile_while_4.$$arity = 0); + }, $BreakNode_compile_while$4.$$arity = 0); - Opal.defn(self, '$compile_iter', TMP_BreakNode_compile_iter_5 = function $$compile_iter() { + Opal.def(self, '$compile_iter', $BreakNode_compile_iter$5 = function $$compile_iter() { var self = this; if ($truthy(self['$stmt?']())) { - } else { + } else { self.$error("break must be used as a statement") }; return self.$line("Opal.brk(", self.$break_val(), ", $brk)"); - }, TMP_BreakNode_compile_iter_5.$$arity = 0); - return (Opal.defn(self, '$break_val', TMP_BreakNode_break_val_6 = function $$break_val() { + }, $BreakNode_compile_iter$5.$$arity = 0); + return (Opal.def(self, '$break_val', $BreakNode_break_val$6 = function $$break_val() { var self = this; if ($truthy(self.$value()['$nil?']())) { return self.$expr(self.$s("nil")) - } else { + } else { return self.$expr(self.$value()) } - }, TMP_BreakNode_break_val_6.$$arity = 0), nil) && 'break_val'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $BreakNode_break_val$6.$$arity = 0), nil) && 'break_val'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $RedoNode(){}; - var self = $RedoNode = $klass($base, $super, 'RedoNode', $RedoNode); + var self = $klass($base, $super, 'RedoNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RedoNode_compile_7, TMP_RedoNode_compile_while_8, TMP_RedoNode_compile_iter_9; + var $nesting = [self].concat($parent_nesting), $RedoNode_compile$7, $RedoNode_compile_while$8, $RedoNode_compile_iter$9; self.$handle("redo"); - Opal.defn(self, '$compile', TMP_RedoNode_compile_7 = function $$compile() { + Opal.def(self, '$compile', $RedoNode_compile$7 = function $$compile() { var self = this; if ($truthy(self['$in_while?']())) { return self.$compile_while() } else if ($truthy(self.$scope()['$iter?']())) { return self.$compile_iter() - } else { + } else { return self.$push("REDO()") } - }, TMP_RedoNode_compile_7.$$arity = 0); + }, $RedoNode_compile$7.$$arity = 0); - Opal.defn(self, '$compile_while', TMP_RedoNode_compile_while_8 = function $$compile_while() { + Opal.def(self, '$compile_while', $RedoNode_compile_while$8 = function $$compile_while() { var self = this, $writer = nil; @@ -49842,200 +56732,209 @@ Opal.modules["opal/nodes/logic"] = function(Opal) { $writer = ["use_redo", true]; $send(self.$while_loop(), '[]=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - return self.$push("" + (self.$while_loop()['$[]']("redo_var")) + " = true"); - }, TMP_RedoNode_compile_while_8.$$arity = 0); - return (Opal.defn(self, '$compile_iter', TMP_RedoNode_compile_iter_9 = function $$compile_iter() { + return self.$push("" + (self.$while_loop()['$[]']("redo_var")) + " = true; continue;"); + }, $RedoNode_compile_while$8.$$arity = 0); + return (Opal.def(self, '$compile_iter', $RedoNode_compile_iter$9 = function $$compile_iter() { var self = this; return self.$push("" + "return " + (self.$scope().$identity()) + ".apply(null, $slice.call(arguments))") - }, TMP_RedoNode_compile_iter_9.$$arity = 0), nil) && 'compile_iter'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $RedoNode_compile_iter$9.$$arity = 0), nil) && 'compile_iter'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $SplatNode(){}; - var self = $SplatNode = $klass($base, $super, 'SplatNode', $SplatNode); + var self = $klass($base, $super, 'SplatNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SplatNode_empty_splat$q_10, TMP_SplatNode_compile_11; + var $nesting = [self].concat($parent_nesting), $SplatNode_empty_splat$ques$10, $SplatNode_compile$11; self.$handle("splat"); self.$children("value"); - Opal.defn(self, '$empty_splat?', TMP_SplatNode_empty_splat$q_10 = function() { + Opal.def(self, '$empty_splat?', $SplatNode_empty_splat$ques$10 = function() { var self = this; return self.$value()['$=='](self.$s("array")) - }, TMP_SplatNode_empty_splat$q_10.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_SplatNode_compile_11 = function $$compile() { + }, $SplatNode_empty_splat$ques$10.$$arity = 0); + return (Opal.def(self, '$compile', $SplatNode_compile$11 = function $$compile() { var self = this; if ($truthy(self['$empty_splat?']())) { return self.$push("[]") - } else { + } else { return self.$push("Opal.to_a(", self.$recv(self.$value()), ")") } - }, TMP_SplatNode_compile_11.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $SplatNode_compile$11.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $BinaryOp(){}; - var self = $BinaryOp = $klass($base, $super, 'BinaryOp', $BinaryOp); + var self = $klass($base, $super, 'BinaryOp'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BinaryOp_compile_12, TMP_BinaryOp_compile_ternary_13, TMP_BinaryOp_compile_if_14; + var $nesting = [self].concat($parent_nesting), $BinaryOp_compile$12, $BinaryOp_compile_ternary$13, $BinaryOp_compile_if$14; - Opal.defn(self, '$compile', TMP_BinaryOp_compile_12 = function $$compile() { + Opal.def(self, '$compile', $BinaryOp_compile$12 = function $$compile() { var self = this; if (self.$rhs().$type()['$==']("break")) { return self.$compile_if() - } else { + } else { return self.$compile_ternary() } - }, TMP_BinaryOp_compile_12.$$arity = 0); + }, $BinaryOp_compile$12.$$arity = 0); - Opal.defn(self, '$compile_ternary', TMP_BinaryOp_compile_ternary_13 = function $$compile_ternary() { + Opal.def(self, '$compile_ternary', $BinaryOp_compile_ternary$13 = function $$compile_ternary() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_BinaryOp_compile_ternary_13.$$arity = 0); - return (Opal.defn(self, '$compile_if', TMP_BinaryOp_compile_if_14 = function $$compile_if() { + return self.$raise($$($nesting, 'NotImplementedError')) + }, $BinaryOp_compile_ternary$13.$$arity = 0); + return (Opal.def(self, '$compile_if', $BinaryOp_compile_if$14 = function $$compile_if() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'NotImplementedError')) - }, TMP_BinaryOp_compile_if_14.$$arity = 0), nil) && 'compile_if'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return self.$raise($$($nesting, 'NotImplementedError')) + }, $BinaryOp_compile_if$14.$$arity = 0), nil) && 'compile_if'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $OrNode(){}; - var self = $OrNode = $klass($base, $super, 'OrNode', $OrNode); + var self = $klass($base, $super, 'OrNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_OrNode_compile_ternary_16, TMP_OrNode_compile_if_20; + var $nesting = [self].concat($parent_nesting), $OrNode_compile_ternary$15, $OrNode_compile_if$17; self.$handle("or"); self.$children("lhs", "rhs"); - Opal.defn(self, '$compile_ternary', TMP_OrNode_compile_ternary_16 = function $$compile_ternary() { - var TMP_15, self = this; + Opal.def(self, '$compile_ternary', $OrNode_compile_ternary$15 = function $$compile_ternary() { + var $$16, self = this; self.$helper("truthy"); - return $send(self, 'with_temp', [], (TMP_15 = function(tmp){var self = TMP_15.$$s || this; -if (tmp == null) tmp = nil; - return self.$push("" + "($truthy(" + (tmp) + " = ", self.$expr(self.$lhs()), "" + ") ? " + (tmp) + " : ", self.$expr(self.$rhs()), ")")}, TMP_15.$$s = self, TMP_15.$$arity = 1, TMP_15)); - }, TMP_OrNode_compile_ternary_16.$$arity = 0); - return (Opal.defn(self, '$compile_if', TMP_OrNode_compile_if_20 = function $$compile_if() { - var TMP_17, self = this; + return $send(self, 'with_temp', [], ($$16 = function(tmp){var self = $$16.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + return self.$push("" + "($truthy(" + (tmp) + " = ", self.$expr(self.$lhs()), "" + ") ? " + (tmp) + " : ", self.$expr(self.$rhs()), ")");}, $$16.$$s = self, $$16.$$arity = 1, $$16)); + }, $OrNode_compile_ternary$15.$$arity = 0); + return (Opal.def(self, '$compile_if', $OrNode_compile_if$17 = function $$compile_if() { + var $$18, self = this; self.$helper("truthy"); - return $send(self, 'with_temp', [], (TMP_17 = function(tmp){var self = TMP_17.$$s || this, TMP_18, TMP_19; -if (tmp == null) tmp = nil; + return $send(self, 'with_temp', [], ($$18 = function(tmp){var self = $$18.$$s || this, $$19, $$20; + + + if (tmp == null) { + tmp = nil; + }; self.$push("" + "if ($truthy(" + (tmp) + " = ", self.$expr(self.$lhs()), ")) {"); - $send(self, 'indent', [], (TMP_18 = function(){var self = TMP_18.$$s || this; + $send(self, 'indent', [], ($$19 = function(){var self = $$19.$$s || this; - return self.$line(tmp)}, TMP_18.$$s = self, TMP_18.$$arity = 0, TMP_18)); + return self.$line(tmp)}, $$19.$$s = self, $$19.$$arity = 0, $$19)); self.$line("} else {"); - $send(self, 'indent', [], (TMP_19 = function(){var self = TMP_19.$$s || this; + $send(self, 'indent', [], ($$20 = function(){var self = $$20.$$s || this; - return self.$line(self.$expr(self.$rhs()))}, TMP_19.$$s = self, TMP_19.$$arity = 0, TMP_19)); - return self.$line("}");}, TMP_17.$$s = self, TMP_17.$$arity = 1, TMP_17)); - }, TMP_OrNode_compile_if_20.$$arity = 0), nil) && 'compile_if'; - })($nesting[0], Opal.const_get_relative($nesting, 'BinaryOp'), $nesting); + return self.$line(self.$expr(self.$rhs()))}, $$20.$$s = self, $$20.$$arity = 0, $$20)); + return self.$line("}");}, $$18.$$s = self, $$18.$$arity = 1, $$18)); + }, $OrNode_compile_if$17.$$arity = 0), nil) && 'compile_if'; + })($nesting[0], $$($nesting, 'BinaryOp'), $nesting); (function($base, $super, $parent_nesting) { - function $AndNode(){}; - var self = $AndNode = $klass($base, $super, 'AndNode', $AndNode); + var self = $klass($base, $super, 'AndNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AndNode_compile_ternary_22, TMP_AndNode_compile_if_25; + var $nesting = [self].concat($parent_nesting), $AndNode_compile_ternary$21, $AndNode_compile_if$23; self.$handle("and"); self.$children("lhs", "rhs"); - Opal.defn(self, '$compile_ternary', TMP_AndNode_compile_ternary_22 = function $$compile_ternary() { - var TMP_21, self = this, truthy_opt = nil; + Opal.def(self, '$compile_ternary', $AndNode_compile_ternary$21 = function $$compile_ternary() { + var $$22, self = this, truthy_opt = nil; truthy_opt = nil; - return $send(self, 'with_temp', [], (TMP_21 = function(tmp){var self = TMP_21.$$s || this; -if (tmp == null) tmp = nil; - if ($truthy((truthy_opt = self.$js_truthy_optimize(self.$lhs())))) { + return $send(self, 'with_temp', [], ($$22 = function(tmp){var self = $$22.$$s || this; + + + + if (tmp == null) { + tmp = nil; + }; + if ($truthy((truthy_opt = self.$js_truthy_optimize(self.$lhs())))) { self.$push("" + "((" + (tmp) + " = ", truthy_opt); self.$push(") ? "); self.$push(self.$expr(self.$rhs())); return self.$push(" : ", self.$expr(self.$lhs()), ")"); - } else { + } else { self.$helper("truthy"); return self.$push("" + "($truthy(" + (tmp) + " = ", self.$expr(self.$lhs()), ") ? ", self.$expr(self.$rhs()), "" + " : " + (tmp) + ")"); - }}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21)); - }, TMP_AndNode_compile_ternary_22.$$arity = 0); - return (Opal.defn(self, '$compile_if', TMP_AndNode_compile_if_25 = function $$compile_if() { - var $a, TMP_23, TMP_24, self = this, condition = nil; + };}, $$22.$$s = self, $$22.$$arity = 1, $$22)); + }, $AndNode_compile_ternary$21.$$arity = 0); + return (Opal.def(self, '$compile_if', $AndNode_compile_if$23 = function $$compile_if() { + var $a, $$24, $$25, self = this, condition = nil; self.$helper("truthy"); condition = ($truthy($a = self.$js_truthy_optimize(self.$lhs())) ? $a : self.$expr(self.$lhs())); self.$line("if ($truthy(", condition, ")) {"); - $send(self, 'indent', [], (TMP_23 = function(){var self = TMP_23.$$s || this; + $send(self, 'indent', [], ($$24 = function(){var self = $$24.$$s || this; - return self.$line(self.$expr(self.$rhs()))}, TMP_23.$$s = self, TMP_23.$$arity = 0, TMP_23)); + return self.$line(self.$expr(self.$rhs()))}, $$24.$$s = self, $$24.$$arity = 0, $$24)); self.$line("} else {"); - $send(self, 'indent', [], (TMP_24 = function(){var self = TMP_24.$$s || this; + $send(self, 'indent', [], ($$25 = function(){var self = $$25.$$s || this; - return self.$line(self.$expr(self.$lhs()))}, TMP_24.$$s = self, TMP_24.$$arity = 0, TMP_24)); + return self.$line(self.$expr(self.$lhs()))}, $$25.$$s = self, $$25.$$arity = 0, $$25)); return self.$line("}"); - }, TMP_AndNode_compile_if_25.$$arity = 0), nil) && 'compile_if'; - })($nesting[0], Opal.const_get_relative($nesting, 'BinaryOp'), $nesting); + }, $AndNode_compile_if$23.$$arity = 0), nil) && 'compile_if'; + })($nesting[0], $$($nesting, 'BinaryOp'), $nesting); (function($base, $super, $parent_nesting) { - function $ReturnNode(){}; - var self = $ReturnNode = $klass($base, $super, 'ReturnNode', $ReturnNode); + var self = $klass($base, $super, 'ReturnNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ReturnNode_return_val_26, TMP_ReturnNode_return_in_iter$q_27, TMP_ReturnNode_return_expr_in_def$q_28, TMP_ReturnNode_scope_to_catch_return_29, TMP_ReturnNode_compile_30; + var $nesting = [self].concat($parent_nesting), $ReturnNode_return_val$26, $ReturnNode_return_in_iter$ques$27, $ReturnNode_return_expr_in_def$ques$28, $ReturnNode_scope_to_catch_return$29, $ReturnNode_compile$30; self.$handle("return"); self.$children("value"); - Opal.defn(self, '$return_val', TMP_ReturnNode_return_val_26 = function $$return_val() { + Opal.def(self, '$return_val', $ReturnNode_return_val$26 = function $$return_val() { var self = this; if ($truthy(self.$value()['$nil?']())) { return self.$expr(self.$s("nil")) } else if ($truthy($rb_gt(self.$children().$size(), 1))) { return self.$expr($send(self, 's', ["array"].concat(Opal.to_a(self.$children())))) - } else { + } else { return self.$expr(self.$value()) } - }, TMP_ReturnNode_return_val_26.$$arity = 0); + }, $ReturnNode_return_val$26.$$arity = 0); - Opal.defn(self, '$return_in_iter?', TMP_ReturnNode_return_in_iter$q_27 = function() { + Opal.def(self, '$return_in_iter?', $ReturnNode_return_in_iter$ques$27 = function() { var $a, self = this, parent_def = nil; if ($truthy(($truthy($a = self.$scope()['$iter?']()) ? (parent_def = self.$scope().$find_parent_def()) : $a))) { return parent_def - } else { + } else { return nil } - }, TMP_ReturnNode_return_in_iter$q_27.$$arity = 0); + }, $ReturnNode_return_in_iter$ques$27.$$arity = 0); - Opal.defn(self, '$return_expr_in_def?', TMP_ReturnNode_return_expr_in_def$q_28 = function() { + Opal.def(self, '$return_expr_in_def?', $ReturnNode_return_expr_in_def$ques$28 = function() { var $a, self = this; if ($truthy(($truthy($a = self['$expr?']()) ? self.$scope()['$def?']() : $a))) { return self.$scope() - } else { + } else { return nil } - }, TMP_ReturnNode_return_expr_in_def$q_28.$$arity = 0); + }, $ReturnNode_return_expr_in_def$ques$28.$$arity = 0); - Opal.defn(self, '$scope_to_catch_return', TMP_ReturnNode_scope_to_catch_return_29 = function $$scope_to_catch_return() { + Opal.def(self, '$scope_to_catch_return', $ReturnNode_scope_to_catch_return$29 = function $$scope_to_catch_return() { var $a, self = this; return ($truthy($a = self['$return_in_iter?']()) ? $a : self['$return_expr_in_def?']()) - }, TMP_ReturnNode_scope_to_catch_return_29.$$arity = 0); - return (Opal.defn(self, '$compile', TMP_ReturnNode_compile_30 = function $$compile() { + }, $ReturnNode_scope_to_catch_return$29.$$arity = 0); + return (Opal.def(self, '$compile', $ReturnNode_compile$30 = function $$compile() { var self = this, def_scope = nil, $writer = nil; if ($truthy((def_scope = self.$scope_to_catch_return()))) { @@ -50047,63 +56946,60 @@ if (tmp == null) tmp = nil; return self.$push("Opal.ret(", self.$return_val(), ")"); } else if ($truthy(self['$stmt?']())) { return self.$push("return ", self.$return_val()) - } else { - return self.$raise(Opal.const_get_relative($nesting, 'SyntaxError'), "void value expression: cannot return as an expression") + } else { + return self.$raise($$($nesting, 'SyntaxError'), "void value expression: cannot return as an expression") } - }, TMP_ReturnNode_compile_30.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ReturnNode_compile$30.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $JSReturnNode(){}; - var self = $JSReturnNode = $klass($base, $super, 'JSReturnNode', $JSReturnNode); + var self = $klass($base, $super, 'JSReturnNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JSReturnNode_compile_31; + var $nesting = [self].concat($parent_nesting), $JSReturnNode_compile$31; self.$handle("js_return"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_JSReturnNode_compile_31 = function $$compile() { + return (Opal.def(self, '$compile', $JSReturnNode_compile$31 = function $$compile() { var self = this; self.$push("return "); return self.$push(self.$expr(self.$value())); - }, TMP_JSReturnNode_compile_31.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $JSReturnNode_compile$31.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $JSTempNode(){}; - var self = $JSTempNode = $klass($base, $super, 'JSTempNode', $JSTempNode); + var self = $klass($base, $super, 'JSTempNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_JSTempNode_compile_32; + var $nesting = [self].concat($parent_nesting), $JSTempNode_compile$32; self.$handle("js_tmp"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_JSTempNode_compile_32 = function $$compile() { + return (Opal.def(self, '$compile', $JSTempNode_compile$32 = function $$compile() { var self = this; return self.$push(self.$value().$to_s()) - }, TMP_JSTempNode_compile_32.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $JSTempNode_compile$32.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $BlockPassNode(){}; - var self = $BlockPassNode = $klass($base, $super, 'BlockPassNode', $BlockPassNode); + var self = $klass($base, $super, 'BlockPassNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BlockPassNode_compile_33; + var $nesting = [self].concat($parent_nesting), $BlockPassNode_compile$33; self.$handle("block_pass"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_BlockPassNode_compile_33 = function $$compile() { + return (Opal.def(self, '$compile', $BlockPassNode_compile$33 = function $$compile() { var self = this; return self.$push(self.$expr(self.$s("send", self.$value(), "to_proc", self.$s("arglist")))) - }, TMP_BlockPassNode_compile_33.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $BlockPassNode_compile$33.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/definitions"] = function(Opal) { function $rb_gt(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); @@ -50111,65 +57007,67 @@ Opal.modules["opal/nodes/definitions"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$each', '$line', '$expr', '$push', '$new_name', '$old_name', '$empty?', '$stmt?', '$compile_children', '$simple_children?', '$compile_inline_children', '$>', '$size', '$wrap', '$==', '$returned_children', '$+', '$returns', '$compiler', '$s', '$process', '$none?', '$include?', '$type', '$each_with_index', '$reject', '$map', '$to_proc']); + Opal.add_stubs(['$require', '$handle', '$children', '$each', '$line', '$expr', '$push', '$new_name', '$old_name', '$empty?', '$stmt?', '$compile_children', '$simple_children?', '$compile_inline_children', '$>', '$size', '$wrap', '$==', '$returned_children', '$+', '$returns', '$compiler', '$s', '$process', '$freeze', '$none?', '$include?', '$type', '$map', '$each_with_index', '$reject', '$to_proc']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $UndefNode(){}; - var self = $UndefNode = $klass($base, $super, 'UndefNode', $UndefNode); + var self = $klass($base, $super, 'UndefNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UndefNode_compile_2; + var $nesting = [self].concat($parent_nesting), $UndefNode_compile$1; self.$handle("undef"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_UndefNode_compile_2 = function $$compile() { - var TMP_1, self = this; - - return $send(self.$children(), 'each', [], (TMP_1 = function(child){var self = TMP_1.$$s || this; -if (child == null) child = nil; - return self.$line("Opal.udef(self, '$' + ", self.$expr(child), ");")}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)) - }, TMP_UndefNode_compile_2.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + return (Opal.def(self, '$compile', $UndefNode_compile$1 = function $$compile() { + var $$2, self = this; + + return $send(self.$children(), 'each', [], ($$2 = function(child){var self = $$2.$$s || this; + + + + if (child == null) { + child = nil; + }; + return self.$line("Opal.udef(self, '$' + ", self.$expr(child), ");");}, $$2.$$s = self, $$2.$$arity = 1, $$2)) + }, $UndefNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $AliasNode(){}; - var self = $AliasNode = $klass($base, $super, 'AliasNode', $AliasNode); + var self = $klass($base, $super, 'AliasNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AliasNode_compile_3; + var $nesting = [self].concat($parent_nesting), $AliasNode_compile$3; self.$handle("alias"); self.$children("new_name", "old_name"); - return (Opal.defn(self, '$compile', TMP_AliasNode_compile_3 = function $$compile() { + return (Opal.def(self, '$compile', $AliasNode_compile$3 = function $$compile() { var self = this; return self.$push("Opal.alias(self, ", self.$expr(self.$new_name()), ", ", self.$expr(self.$old_name()), ")") - }, TMP_AliasNode_compile_3.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $AliasNode_compile$3.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $BeginNode(){}; - var self = $BeginNode = $klass($base, $super, 'BeginNode', $BeginNode); + var self = $klass($base, $super, 'BeginNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BeginNode_compile_4, TMP_BeginNode_returned_children_5, TMP_BeginNode_compile_children_7, TMP_BeginNode_simple_children$q_9, TMP_BeginNode_compile_inline_children_12; + var $nesting = [self].concat($parent_nesting), $BeginNode_compile$4, $BeginNode_returned_children$5, $BeginNode_compile_children$6, $BeginNode_simple_children$ques$8, $BeginNode_compile_inline_children$10; - def.level = def.returned_children = nil; + self.$$prototype.level = self.$$prototype.returned_children = nil; self.$handle("begin"); - Opal.defn(self, '$compile', TMP_BeginNode_compile_4 = function $$compile() { + Opal.def(self, '$compile', $BeginNode_compile$4 = function $$compile() { var self = this; @@ -50182,120 +57080,147 @@ if (child == null) child = nil; self.$compile_inline_children(self.$children(), self.level); if ($truthy($rb_gt(self.$children().$size(), 1))) { return self.$wrap("(", ")") - } else { + } else { return nil }; } else if (self.$children().$size()['$=='](1)) { return self.$compile_inline_children(self.$returned_children(), self.level) - } else { + } else { self.$compile_children(self.$returned_children(), self.level); return self.$wrap("(function() {", "})()"); }; - }, TMP_BeginNode_compile_4.$$arity = 0); + }, $BeginNode_compile$4.$$arity = 0); - Opal.defn(self, '$returned_children', TMP_BeginNode_returned_children_5 = function $$returned_children() { + Opal.def(self, '$returned_children', $BeginNode_returned_children$5 = function $$returned_children() { var $a, $b, $c, self = this, rest = nil, last_child = nil; return (self.returned_children = ($truthy($a = self.returned_children) ? $a : ($b = [].concat(Opal.to_a(self.$children())), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_child = ($b[$c] == null ? nil : $b[$c])), $b, (function() {if ($truthy(last_child)) { return $rb_plus(rest, [self.$compiler().$returns(last_child)]) - } else { + } else { return [self.$s("nil")] }; return nil; })()))) - }, TMP_BeginNode_returned_children_5.$$arity = 0); + }, $BeginNode_returned_children$5.$$arity = 0); - Opal.defn(self, '$compile_children', TMP_BeginNode_compile_children_7 = function $$compile_children(children, level) { - var TMP_6, self = this; + Opal.def(self, '$compile_children', $BeginNode_compile_children$6 = function $$compile_children(children, level) { + var $$7, self = this; + + return $send(children, 'each', [], ($$7 = function(child){var self = $$7.$$s || this; - return $send(children, 'each', [], (TMP_6 = function(child){var self = TMP_6.$$s || this; -if (child == null) child = nil; - return self.$line(self.$process(child, level), ";")}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)) - }, TMP_BeginNode_compile_children_7.$$arity = 2); - Opal.const_set($nesting[0], 'COMPLEX_CHILDREN', ["while", "while_post", "until", "until_post", "js_return"]); + + + if (child == null) { + child = nil; + }; + return self.$line(self.$process(child, level), ";");}, $$7.$$s = self, $$7.$$arity = 1, $$7)) + }, $BeginNode_compile_children$6.$$arity = 2); + Opal.const_set($nesting[0], 'COMPLEX_CHILDREN', ["while", "while_post", "until", "until_post", "js_return"].$freeze()); - Opal.defn(self, '$simple_children?', TMP_BeginNode_simple_children$q_9 = function() { - var TMP_8, self = this; + Opal.def(self, '$simple_children?', $BeginNode_simple_children$ques$8 = function() { + var $$9, self = this; - return $send(self.$children(), 'none?', [], (TMP_8 = function(child){var self = TMP_8.$$s || this; -if (child == null) child = nil; - return Opal.const_get_relative($nesting, 'COMPLEX_CHILDREN')['$include?'](child.$type())}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)) - }, TMP_BeginNode_simple_children$q_9.$$arity = 0); - return (Opal.defn(self, '$compile_inline_children', TMP_BeginNode_compile_inline_children_12 = function $$compile_inline_children(children, level) { - var TMP_10, TMP_11, self = this; + return $send(self.$children(), 'none?', [], ($$9 = function(child){var self = $$9.$$s || this; - return $send($send($send(children, 'map', [], (TMP_10 = function(child){var self = TMP_10.$$s || this; -if (child == null) child = nil; - return self.$process(child, level)}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10)), 'reject', [], "empty?".$to_proc()), 'each_with_index', [], (TMP_11 = function(child, idx){var self = TMP_11.$$s || this; -if (child == null) child = nil;if (idx == null) idx = nil; + + if (child == null) { + child = nil; + }; + return $$($nesting, 'COMPLEX_CHILDREN')['$include?'](child.$type());}, $$9.$$s = self, $$9.$$arity = 1, $$9)) + }, $BeginNode_simple_children$ques$8.$$arity = 0); + return (Opal.def(self, '$compile_inline_children', $BeginNode_compile_inline_children$10 = function $$compile_inline_children(children, level) { + var $$11, $$12, self = this, processed_children = nil; + + + processed_children = $send(children, 'map', [], ($$11 = function(child){var self = $$11.$$s || this; + + + + if (child == null) { + child = nil; + }; + return self.$process(child, level);}, $$11.$$s = self, $$11.$$arity = 1, $$11)); + return $send($send(processed_children, 'reject', [], "empty?".$to_proc()), 'each_with_index', [], ($$12 = function(child, idx){var self = $$12.$$s || this; + + + + if (child == null) { + child = nil; + }; + + if (idx == null) { + idx = nil; + }; if (idx['$=='](0)) { - } else { + } else { self.$push(", ") }; - return self.$push(child);}, TMP_11.$$s = self, TMP_11.$$arity = 2, TMP_11)) - }, TMP_BeginNode_compile_inline_children_12.$$arity = 2), nil) && 'compile_inline_children'; - })($nesting[0], Opal.const_get_relative($nesting, 'ScopeNode'), $nesting); + return self.$push(child);}, $$12.$$s = self, $$12.$$arity = 2, $$12)); + }, $BeginNode_compile_inline_children$10.$$arity = 2), nil) && 'compile_inline_children'; + })($nesting[0], $$($nesting, 'ScopeNode'), $nesting); (function($base, $super, $parent_nesting) { - function $KwBeginNode(){}; - var self = $KwBeginNode = $klass($base, $super, 'KwBeginNode', $KwBeginNode); + var self = $klass($base, $super, 'KwBeginNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$handle("kwbegin") - })($nesting[0], Opal.const_get_relative($nesting, 'BeginNode'), $nesting); + })($nesting[0], $$($nesting, 'BeginNode'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/yield"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$find_yielding_scope', '$uses_block!', '$block_name', '$yields_single_arg?', '$push', '$expr', '$first', '$wrap', '$s', '$uses_splat?', '$scope', '$def?', '$parent', '$!', '$==', '$size', '$any?', '$type', '$handle', '$compile_call', '$children']); + Opal.add_stubs(['$require', '$find_yielding_scope', '$uses_block!', '$block_name', '$block_name=', '$-', '$yields_single_arg?', '$children', '$push', '$expr', '$first', '$wrap', '$s', '$uses_splat?', '$scope', '$def?', '$parent', '$!', '$==', '$size', '$any?', '$type', '$handle', '$compile_call']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $BaseYieldNode(){}; - var self = $BaseYieldNode = $klass($base, $super, 'BaseYieldNode', $BaseYieldNode); + var self = $klass($base, $super, 'BaseYieldNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BaseYieldNode_compile_call_1, TMP_BaseYieldNode_find_yielding_scope_2, TMP_BaseYieldNode_yields_single_arg$q_3, TMP_BaseYieldNode_uses_splat$q_5; + var $nesting = [self].concat($parent_nesting), $BaseYieldNode_compile_call$1, $BaseYieldNode_find_yielding_scope$2, $BaseYieldNode_yields_single_arg$ques$3, $BaseYieldNode_uses_splat$ques$4; - Opal.defn(self, '$compile_call', TMP_BaseYieldNode_compile_call_1 = function $$compile_call(children, level) { - var $a, self = this, yielding_scope = nil, block_name = nil; + Opal.def(self, '$compile_call', $BaseYieldNode_compile_call$1 = function $$compile_call() { + var $a, self = this, yielding_scope = nil, $writer = nil, block_name = nil; yielding_scope = self.$find_yielding_scope(); yielding_scope['$uses_block!'](); - block_name = ($truthy($a = yielding_scope.$block_name()) ? $a : "$yield"); - if ($truthy(self['$yields_single_arg?'](children))) { + ($truthy($a = yielding_scope.$block_name()) ? $a : (($writer = ["$yield"]), $send(yielding_scope, 'block_name=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); + block_name = yielding_scope.$block_name(); + if ($truthy(self['$yields_single_arg?'](self.$children()))) { - self.$push(self.$expr(children.$first())); + self.$push(self.$expr(self.$children().$first())); return self.$wrap("" + "Opal.yield1(" + (block_name) + ", ", ")"); - } else { + } else { - self.$push(self.$expr($send(self, 's', ["arglist"].concat(Opal.to_a(children))))); - if ($truthy(self['$uses_splat?'](children))) { + self.$push(self.$expr($send(self, 's', ["arglist"].concat(Opal.to_a(self.$children()))))); + if ($truthy(self['$uses_splat?'](self.$children()))) { return self.$wrap("" + "Opal.yieldX(" + (block_name) + ", ", ")") - } else { + } else { return self.$wrap("" + "Opal.yieldX(" + (block_name) + ", [", "])") }; }; - }, TMP_BaseYieldNode_compile_call_1.$$arity = 2); + }, $BaseYieldNode_compile_call$1.$$arity = 0); - Opal.defn(self, '$find_yielding_scope', TMP_BaseYieldNode_find_yielding_scope_2 = function $$find_yielding_scope() { + Opal.def(self, '$find_yielding_scope', $BaseYieldNode_find_yielding_scope$2 = function $$find_yielding_scope() { var $a, $b, self = this, working = nil; @@ -50307,98 +57232,98 @@ Opal.modules["opal/nodes/yield"] = function(Opal) { working = working.$parent(); }; return working; - }, TMP_BaseYieldNode_find_yielding_scope_2.$$arity = 0); + }, $BaseYieldNode_find_yielding_scope$2.$$arity = 0); - Opal.defn(self, '$yields_single_arg?', TMP_BaseYieldNode_yields_single_arg$q_3 = function(children) { + Opal.def(self, '$yields_single_arg?', $BaseYieldNode_yields_single_arg$ques$3 = function(children) { var $a, self = this; return ($truthy($a = self['$uses_splat?'](children)['$!']()) ? children.$size()['$=='](1) : $a) - }, TMP_BaseYieldNode_yields_single_arg$q_3.$$arity = 1); - return (Opal.defn(self, '$uses_splat?', TMP_BaseYieldNode_uses_splat$q_5 = function(children) { - var TMP_4, self = this; - - return $send(children, 'any?', [], (TMP_4 = function(child){var self = TMP_4.$$s || this; -if (child == null) child = nil; - return child.$type()['$==']("splat")}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)) - }, TMP_BaseYieldNode_uses_splat$q_5.$$arity = 1), nil) && 'uses_splat?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $BaseYieldNode_yields_single_arg$ques$3.$$arity = 1); + return (Opal.def(self, '$uses_splat?', $BaseYieldNode_uses_splat$ques$4 = function(children) { + var $$5, self = this; + + return $send(children, 'any?', [], ($$5 = function(child){var self = $$5.$$s || this; + + + + if (child == null) { + child = nil; + }; + return child.$type()['$==']("splat");}, $$5.$$s = self, $$5.$$arity = 1, $$5)) + }, $BaseYieldNode_uses_splat$ques$4.$$arity = 1), nil) && 'uses_splat?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $YieldNode(){}; - var self = $YieldNode = $klass($base, $super, 'YieldNode', $YieldNode); + var self = $klass($base, $super, 'YieldNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_YieldNode_compile_6; + var $nesting = [self].concat($parent_nesting), $YieldNode_compile$6; - def.level = nil; self.$handle("yield"); - return (Opal.defn(self, '$compile', TMP_YieldNode_compile_6 = function $$compile() { + return (Opal.def(self, '$compile', $YieldNode_compile$6 = function $$compile() { var self = this; - return self.$compile_call(self.$children(), self.level) - }, TMP_YieldNode_compile_6.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'BaseYieldNode'), $nesting); + return self.$compile_call() + }, $YieldNode_compile$6.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'BaseYieldNode'), $nesting); (function($base, $super, $parent_nesting) { - function $ReturnableYieldNode(){}; - var self = $ReturnableYieldNode = $klass($base, $super, 'ReturnableYieldNode', $ReturnableYieldNode); + var self = $klass($base, $super, 'ReturnableYieldNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ReturnableYieldNode_compile_7; + var $nesting = [self].concat($parent_nesting), $ReturnableYieldNode_compile$7; - def.level = nil; self.$handle("returnable_yield"); - return (Opal.defn(self, '$compile', TMP_ReturnableYieldNode_compile_7 = function $$compile() { + return (Opal.def(self, '$compile', $ReturnableYieldNode_compile$7 = function $$compile() { var self = this; - self.$compile_call(self.$children(), self.level); + self.$compile_call(); return self.$wrap("return ", ";"); - }, TMP_ReturnableYieldNode_compile_7.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'BaseYieldNode'), $nesting); + }, $ReturnableYieldNode_compile$7.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'BaseYieldNode'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/rescue"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; Opal.add_stubs(['$require', '$handle', '$children', '$push', '$in_ensure', '$line', '$stmt', '$body_sexp', '$indent', '$has_rescue_else?', '$unshift', '$rescue_else_code', '$process', '$compiler', '$ensr_sexp', '$wrap_in_closure?', '$wrap', '$returns', '$begn', '$ensr', '$s', '$recv?', '$expr?', '$rescue_else_sexp', '$scope', '$stmt?', '$detect', '$[]', '$!=', '$type', '$rescue_else_sexp=', '$-', '$handle_rescue_else_manually?', '$body_code', '$each_with_index', '$==', '$nil?', '$body', '$!', '$in_ensure?', '$expr', '$klasses', '$lvar', '$rescue_body', '$klasses_sexp']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $EnsureNode(){}; - var self = $EnsureNode = $klass($base, $super, 'EnsureNode', $EnsureNode); + var self = $klass($base, $super, 'EnsureNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_EnsureNode_compile_5, TMP_EnsureNode_body_sexp_6, TMP_EnsureNode_ensr_sexp_7, TMP_EnsureNode_wrap_in_closure$q_8, TMP_EnsureNode_rescue_else_code_9; + var $nesting = [self].concat($parent_nesting), $EnsureNode_compile$1, $EnsureNode_body_sexp$6, $EnsureNode_ensr_sexp$7, $EnsureNode_wrap_in_closure$ques$8, $EnsureNode_rescue_else_code$9; self.$handle("ensure"); self.$children("begn", "ensr"); - Opal.defn(self, '$compile', TMP_EnsureNode_compile_5 = function $$compile() { - var TMP_1, TMP_2, self = this; + Opal.def(self, '$compile', $EnsureNode_compile$1 = function $$compile() { + var $$2, $$3, self = this; self.$push("try {"); - $send(self, 'in_ensure', [], (TMP_1 = function(){var self = TMP_1.$$s || this; + $send(self, 'in_ensure', [], ($$2 = function(){var self = $$2.$$s || this; - return self.$line(self.$stmt(self.$body_sexp()))}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return self.$line(self.$stmt(self.$body_sexp()))}, $$2.$$s = self, $$2.$$arity = 0, $$2)); self.$line("} finally {"); - $send(self, 'indent', [], (TMP_2 = function(){var self = TMP_2.$$s || this, TMP_3; + $send(self, 'indent', [], ($$3 = function(){var self = $$3.$$s || this, $$4; if (self.level == null) self.level = nil; if ($truthy(self['$has_rescue_else?']())) { @@ -50406,272 +57331,281 @@ Opal.modules["opal/nodes/rescue"] = function(Opal) { self.$unshift("var $no_errors = true; "); self.$line("var $rescue_else_result;"); self.$line("if ($no_errors) { "); - $send(self, 'indent', [], (TMP_3 = function(){var self = TMP_3.$$s || this, TMP_4; + $send(self, 'indent', [], ($$4 = function(){var self = $$4.$$s || this, $$5; self.$line("$rescue_else_result = (function() {"); - $send(self, 'indent', [], (TMP_4 = function(){var self = TMP_4.$$s || this; + $send(self, 'indent', [], ($$5 = function(){var self = $$5.$$s || this; - return self.$line(self.$stmt(self.$rescue_else_code()))}, TMP_4.$$s = self, TMP_4.$$arity = 0, TMP_4)); - return self.$line("})();");}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3)); + return self.$line(self.$stmt(self.$rescue_else_code()))}, $$5.$$s = self, $$5.$$arity = 0, $$5)); + return self.$line("})();");}, $$4.$$s = self, $$4.$$arity = 0, $$4)); self.$line("}"); self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)); return self.$line("if ($no_errors) { return $rescue_else_result; }"); - } else { + } else { return self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)) - }}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); + }}, $$3.$$s = self, $$3.$$arity = 0, $$3)); self.$line("}"); if ($truthy(self['$wrap_in_closure?']())) { return self.$wrap("(function() { ", "; })()") - } else { + } else { return nil }; - }, TMP_EnsureNode_compile_5.$$arity = 0); + }, $EnsureNode_compile$1.$$arity = 0); - Opal.defn(self, '$body_sexp', TMP_EnsureNode_body_sexp_6 = function $$body_sexp() { + Opal.def(self, '$body_sexp', $EnsureNode_body_sexp$6 = function $$body_sexp() { var self = this; if ($truthy(self['$wrap_in_closure?']())) { return self.$compiler().$returns(self.$begn()) - } else { + } else { return self.$begn() } - }, TMP_EnsureNode_body_sexp_6.$$arity = 0); + }, $EnsureNode_body_sexp$6.$$arity = 0); - Opal.defn(self, '$ensr_sexp', TMP_EnsureNode_ensr_sexp_7 = function $$ensr_sexp() { + Opal.def(self, '$ensr_sexp', $EnsureNode_ensr_sexp$7 = function $$ensr_sexp() { var $a, self = this; return ($truthy($a = self.$ensr()) ? $a : self.$s("nil")) - }, TMP_EnsureNode_ensr_sexp_7.$$arity = 0); + }, $EnsureNode_ensr_sexp$7.$$arity = 0); - Opal.defn(self, '$wrap_in_closure?', TMP_EnsureNode_wrap_in_closure$q_8 = function() { + Opal.def(self, '$wrap_in_closure?', $EnsureNode_wrap_in_closure$ques$8 = function() { var $a, $b, self = this; return ($truthy($a = ($truthy($b = self['$recv?']()) ? $b : self['$expr?']())) ? $a : self['$has_rescue_else?']()) - }, TMP_EnsureNode_wrap_in_closure$q_8.$$arity = 0); - return (Opal.defn(self, '$rescue_else_code', TMP_EnsureNode_rescue_else_code_9 = function $$rescue_else_code() { + }, $EnsureNode_wrap_in_closure$ques$8.$$arity = 0); + return (Opal.def(self, '$rescue_else_code', $EnsureNode_rescue_else_code$9 = function $$rescue_else_code() { var self = this, rescue_else_code = nil; rescue_else_code = self.$scope().$rescue_else_sexp(); if ($truthy(self['$stmt?']())) { - } else { + } else { rescue_else_code = self.$compiler().$returns(rescue_else_code) }; return rescue_else_code; - }, TMP_EnsureNode_rescue_else_code_9.$$arity = 0), nil) && 'rescue_else_code'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $EnsureNode_rescue_else_code$9.$$arity = 0), nil) && 'rescue_else_code'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $RescueNode(){}; - var self = $RescueNode = $klass($base, $super, 'RescueNode', $RescueNode); + var self = $klass($base, $super, 'RescueNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RescueNode_compile_16, TMP_RescueNode_body_code_17, TMP_RescueNode_rescue_else_code_18, TMP_RescueNode_handle_rescue_else_manually$q_19; + var $nesting = [self].concat($parent_nesting), $RescueNode_compile$10, $RescueNode_body_code$17, $RescueNode_rescue_else_code$18, $RescueNode_handle_rescue_else_manually$ques$19; self.$handle("rescue"); self.$children("body"); - Opal.defn(self, '$compile', TMP_RescueNode_compile_16 = function $$compile() { - var TMP_10, TMP_11, TMP_12, TMP_14, $a, self = this, $writer = nil, has_rescue_handlers = nil; + Opal.def(self, '$compile', $RescueNode_compile$10 = function $$compile() { + var $$11, $$12, $$13, $$15, $a, self = this, $writer = nil, _has_rescue_handlers = nil; - $writer = [$send(self.$children()['$[]']($range(1, -1, false)), 'detect', [], (TMP_10 = function(sexp){var self = TMP_10.$$s || this, $a; -if (sexp == null) sexp = nil; - return ($truthy($a = sexp) ? sexp.$type()['$!=']("resbody") : $a)}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10))]; + $writer = [$send(self.$children()['$[]']($range(1, -1, false)), 'detect', [], ($$11 = function(sexp){var self = $$11.$$s || this, $a; + + + + if (sexp == null) { + sexp = nil; + }; + return ($truthy($a = sexp) ? sexp.$type()['$!=']("resbody") : $a);}, $$11.$$s = self, $$11.$$arity = 1, $$11))]; $send(self.$scope(), 'rescue_else_sexp=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - has_rescue_handlers = false; + _has_rescue_handlers = false; if ($truthy(self['$handle_rescue_else_manually?']())) { self.$line("var $no_errors = true;")}; self.$push("try {"); - $send(self, 'indent', [], (TMP_11 = function(){var self = TMP_11.$$s || this; + $send(self, 'indent', [], ($$12 = function(){var self = $$12.$$s || this; - return self.$line(self.$stmt(self.$body_code()))}, TMP_11.$$s = self, TMP_11.$$arity = 0, TMP_11)); + return self.$line(self.$stmt(self.$body_code()))}, $$12.$$s = self, $$12.$$arity = 0, $$12)); self.$line("} catch ($err) {"); - $send(self, 'indent', [], (TMP_12 = function(){var self = TMP_12.$$s || this, TMP_13; + $send(self, 'indent', [], ($$13 = function(){var self = $$13.$$s || this, $$14; if ($truthy(self['$has_rescue_else?']())) { self.$line("$no_errors = false;")}; - $send(self.$children()['$[]']($range(1, -1, false)), 'each_with_index', [], (TMP_13 = function(child, idx){var self = TMP_13.$$s || this, $a; + $send(self.$children()['$[]']($range(1, -1, false)), 'each_with_index', [], ($$14 = function(child, idx){var self = $$14.$$s || this, $a; if (self.level == null) self.level = nil; -if (child == null) child = nil;if (idx == null) idx = nil; - if ($truthy(($truthy($a = child) ? child.$type()['$==']("resbody") : $a))) { - - has_rescue_handlers = true; - if (idx['$=='](0)) { - } else { - self.$push(" else ") - }; - return self.$line(self.$process(child, self.level)); - } else { - return nil - }}, TMP_13.$$s = self, TMP_13.$$arity = 2, TMP_13)); - return self.$push(" else { throw $err; }");}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12)); + + + + if (child == null) { + child = nil; + }; + + if (idx == null) { + idx = nil; + }; + if ($truthy(($truthy($a = child) ? child.$type()['$==']("resbody") : $a))) { + } else { + return nil; + }; + _has_rescue_handlers = true; + if (idx['$=='](0)) { + } else { + self.$push(" else ") + }; + return self.$line(self.$process(child, self.level));}, $$14.$$s = self, $$14.$$arity = 2, $$14)); + return self.$push(" else { throw $err; }");}, $$13.$$s = self, $$13.$$arity = 0, $$13)); self.$line("}"); if ($truthy(self['$handle_rescue_else_manually?']())) { self.$push("finally {"); - $send(self, 'indent', [], (TMP_14 = function(){var self = TMP_14.$$s || this, TMP_15; + $send(self, 'indent', [], ($$15 = function(){var self = $$15.$$s || this, $$16; self.$line("if ($no_errors) { "); - $send(self, 'indent', [], (TMP_15 = function(){var self = TMP_15.$$s || this; + $send(self, 'indent', [], ($$16 = function(){var self = $$16.$$s || this; - return self.$line(self.$stmt(self.$rescue_else_code()))}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15)); - return self.$line("}");}, TMP_14.$$s = self, TMP_14.$$arity = 0, TMP_14)); + return self.$line(self.$stmt(self.$rescue_else_code()))}, $$16.$$s = self, $$16.$$arity = 0, $$16)); + return self.$line("}");}, $$15.$$s = self, $$15.$$arity = 0, $$15)); self.$push("}");}; if ($truthy(($truthy($a = self['$expr?']()) ? $a : self['$recv?']()))) { return self.$wrap("(function() { ", "})()") - } else { + } else { return nil }; - }, TMP_RescueNode_compile_16.$$arity = 0); + }, $RescueNode_compile$10.$$arity = 0); - Opal.defn(self, '$body_code', TMP_RescueNode_body_code_17 = function $$body_code() { + Opal.def(self, '$body_code', $RescueNode_body_code$17 = function $$body_code() { var $a, self = this, body_code = nil; body_code = (function() {if ($truthy(($truthy($a = self.$body()['$nil?']()) ? $a : self.$body().$type()['$==']("resbody")))) { return self.$s("nil") - } else { + } else { return self.$body() }; return nil; })(); if ($truthy(self['$stmt?']())) { - } else { + } else { body_code = self.$compiler().$returns(body_code) }; return body_code; - }, TMP_RescueNode_body_code_17.$$arity = 0); + }, $RescueNode_body_code$17.$$arity = 0); - Opal.defn(self, '$rescue_else_code', TMP_RescueNode_rescue_else_code_18 = function $$rescue_else_code() { + Opal.def(self, '$rescue_else_code', $RescueNode_rescue_else_code$18 = function $$rescue_else_code() { var self = this, rescue_else_code = nil; rescue_else_code = self.$scope().$rescue_else_sexp(); if ($truthy(self['$stmt?']())) { - } else { + } else { rescue_else_code = self.$compiler().$returns(rescue_else_code) }; return rescue_else_code; - }, TMP_RescueNode_rescue_else_code_18.$$arity = 0); - return (Opal.defn(self, '$handle_rescue_else_manually?', TMP_RescueNode_handle_rescue_else_manually$q_19 = function() { + }, $RescueNode_rescue_else_code$18.$$arity = 0); + return (Opal.def(self, '$handle_rescue_else_manually?', $RescueNode_handle_rescue_else_manually$ques$19 = function() { var $a, self = this; return ($truthy($a = self.$scope()['$in_ensure?']()['$!']()) ? self.$scope()['$has_rescue_else?']() : $a) - }, TMP_RescueNode_handle_rescue_else_manually$q_19.$$arity = 0), nil) && 'handle_rescue_else_manually?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $RescueNode_handle_rescue_else_manually$ques$19.$$arity = 0), nil) && 'handle_rescue_else_manually?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $ResBodyNode(){}; - var self = $ResBodyNode = $klass($base, $super, 'ResBodyNode', $ResBodyNode); + var self = $klass($base, $super, 'ResBodyNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ResBodyNode_compile_22, TMP_ResBodyNode_klasses_23, TMP_ResBodyNode_rescue_body_24; + var $nesting = [self].concat($parent_nesting), $ResBodyNode_compile$20, $ResBodyNode_klasses$23, $ResBodyNode_rescue_body$24; self.$handle("resbody"); self.$children("klasses_sexp", "lvar", "body"); - Opal.defn(self, '$compile', TMP_ResBodyNode_compile_22 = function $$compile() { - var TMP_20, self = this; + Opal.def(self, '$compile', $ResBodyNode_compile$20 = function $$compile() { + var $$21, self = this; self.$push("if (Opal.rescue($err, ", self.$expr(self.$klasses()), ")) {"); - $send(self, 'indent', [], (TMP_20 = function(){var self = TMP_20.$$s || this, TMP_21; + $send(self, 'indent', [], ($$21 = function(){var self = $$21.$$s || this, $$22; if ($truthy(self.$lvar())) { self.$push(self.$expr(self.$lvar()), "$err;")}; self.$line("try {"); - $send(self, 'indent', [], (TMP_21 = function(){var self = TMP_21.$$s || this; + $send(self, 'indent', [], ($$22 = function(){var self = $$22.$$s || this; - return self.$line(self.$stmt(self.$rescue_body()))}, TMP_21.$$s = self, TMP_21.$$arity = 0, TMP_21)); - return self.$line("} finally { Opal.pop_exception() }");}, TMP_20.$$s = self, TMP_20.$$arity = 0, TMP_20)); + return self.$line(self.$stmt(self.$rescue_body()))}, $$22.$$s = self, $$22.$$arity = 0, $$22)); + return self.$line("} finally { Opal.pop_exception() }");}, $$21.$$s = self, $$21.$$arity = 0, $$21)); return self.$line("}"); - }, TMP_ResBodyNode_compile_22.$$arity = 0); + }, $ResBodyNode_compile$20.$$arity = 0); - Opal.defn(self, '$klasses', TMP_ResBodyNode_klasses_23 = function $$klasses() { + Opal.def(self, '$klasses', $ResBodyNode_klasses$23 = function $$klasses() { var $a, self = this; return ($truthy($a = self.$klasses_sexp()) ? $a : self.$s("array", self.$s("const", nil, "StandardError"))) - }, TMP_ResBodyNode_klasses_23.$$arity = 0); - return (Opal.defn(self, '$rescue_body', TMP_ResBodyNode_rescue_body_24 = function $$rescue_body() { + }, $ResBodyNode_klasses$23.$$arity = 0); + return (Opal.def(self, '$rescue_body', $ResBodyNode_rescue_body$24 = function $$rescue_body() { var $a, self = this, body_code = nil; body_code = ($truthy($a = self.$body()) ? $a : self.$s("nil")); if ($truthy(self['$stmt?']())) { - } else { + } else { body_code = self.$compiler().$returns(body_code) }; return body_code; - }, TMP_ResBodyNode_rescue_body_24.$$arity = 0), nil) && 'rescue_body'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $ResBodyNode_rescue_body$24.$$arity = 0), nil) && 'rescue_body'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $RetryNode(){}; - var self = $RetryNode = $klass($base, $super, 'RetryNode', $RetryNode); + var self = $klass($base, $super, 'RetryNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_RetryNode_compile_25; + var $nesting = [self].concat($parent_nesting), $RetryNode_compile$25; self.$handle("retry"); - return (Opal.defn(self, '$compile', TMP_RetryNode_compile_25 = function $$compile() { + return (Opal.def(self, '$compile', $RetryNode_compile$25 = function $$compile() { var self = this; return self.$push(self.$stmt(self.$s("send", nil, "retry"))) - }, TMP_RetryNode_compile_25.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $RetryNode_compile$25.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/case"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; Opal.add_stubs(['$require', '$handle', '$children', '$in_case', '$compiler', '$compile_code', '$needs_closure?', '$wrap', '$condition', '$[]=', '$case_stmt', '$-', '$add_local', '$push', '$expr', '$each_with_index', '$case_parts', '$line', '$type', '$===', '$returns', '$==', '$stmt', '$!', '$stmt?', '$[]', '$when_checks', '$js_truthy', '$s', '$process', '$body_code', '$last']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $CaseNode(){}; - var self = $CaseNode = $klass($base, $super, 'CaseNode', $CaseNode); + var self = $klass($base, $super, 'CaseNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CaseNode_compile_2, TMP_CaseNode_compile_code_4, TMP_CaseNode_needs_closure$q_5, TMP_CaseNode_case_parts_6, TMP_CaseNode_case_stmt_7; + var $nesting = [self].concat($parent_nesting), $CaseNode_compile$1, $CaseNode_compile_code$3, $CaseNode_needs_closure$ques$5, $CaseNode_case_parts$6, $CaseNode_case_stmt$7; self.$handle("case"); self.$children("condition"); - Opal.defn(self, '$compile', TMP_CaseNode_compile_2 = function $$compile() { - var TMP_1, self = this; + Opal.def(self, '$compile', $CaseNode_compile$1 = function $$compile() { + var $$2, self = this; - return $send(self.$compiler(), 'in_case', [], (TMP_1 = function(){var self = TMP_1.$$s || this; + return $send(self.$compiler(), 'in_case', [], ($$2 = function(){var self = $$2.$$s || this; self.$compile_code(); if ($truthy(self['$needs_closure?']())) { return self.$wrap("(function() {", "})()") - } else { + } else { return nil - };}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)) - }, TMP_CaseNode_compile_2.$$arity = 0); + };}, $$2.$$s = self, $$2.$$arity = 0, $$2)) + }, $CaseNode_compile$1.$$arity = 0); - Opal.defn(self, '$compile_code', TMP_CaseNode_compile_code_4 = function $$compile_code() { - var TMP_3, $a, self = this, handled_else = nil, $writer = nil; + Opal.def(self, '$compile_code', $CaseNode_compile_code$3 = function $$compile_code() { + var $$4, $a, self = this, handled_else = nil, $writer = nil; handled_else = false; @@ -50683,75 +57617,90 @@ Opal.modules["opal/nodes/case"] = function(Opal) { $writer[$rb_minus($writer["length"], 1)];; self.$add_local("$case"); self.$push("$case = ", self.$expr(self.$condition()), ";");}; - $send(self.$case_parts(), 'each_with_index', [], (TMP_3 = function(wen, idx){var self = TMP_3.$$s || this, $case = nil; -if (wen == null) wen = nil;if (idx == null) idx = nil; - if ($truthy(wen)) { - - self.$line(); - return (function() {$case = wen.$type(); - if ("when"['$===']($case)) { - if ($truthy(self['$needs_closure?']())) { - wen = self.$compiler().$returns(wen)}; - if (idx['$=='](0)) { - } else { - self.$push("else ") - }; - return self.$push(self.$stmt(wen));} - else { - handled_else = true; - if ($truthy(self['$needs_closure?']())) { - wen = self.$compiler().$returns(wen)}; - return self.$push("else {", self.$stmt(wen), "}");}})(); - } else { - return nil - }}, TMP_3.$$s = self, TMP_3.$$arity = 2, TMP_3)); + $send(self.$case_parts(), 'each_with_index', [], ($$4 = function(wen, idx){var self = $$4.$$s || this, $case = nil; + + + + if (wen == null) { + wen = nil; + }; + + if (idx == null) { + idx = nil; + }; + if ($truthy(wen)) { + } else { + return nil; + }; + self.$line(); + return (function() {$case = wen.$type(); + if ("when"['$===']($case)) { + if ($truthy(self['$needs_closure?']())) { + wen = self.$compiler().$returns(wen)}; + if (idx['$=='](0)) { + } else { + self.$push("else ") + }; + return self.$push(self.$stmt(wen));} + else { + handled_else = true; + if ($truthy(self['$needs_closure?']())) { + wen = self.$compiler().$returns(wen)}; + return self.$push("else {", self.$stmt(wen), "}");}})();}, $$4.$$s = self, $$4.$$arity = 2, $$4)); if ($truthy(($truthy($a = self['$needs_closure?']()) ? handled_else['$!']() : $a))) { self.$line(); return self.$push("else { return nil }"); - } else { + } else { return nil }; - }, TMP_CaseNode_compile_code_4.$$arity = 0); + }, $CaseNode_compile_code$3.$$arity = 0); - Opal.defn(self, '$needs_closure?', TMP_CaseNode_needs_closure$q_5 = function() { + Opal.def(self, '$needs_closure?', $CaseNode_needs_closure$ques$5 = function() { var self = this; return self['$stmt?']()['$!']() - }, TMP_CaseNode_needs_closure$q_5.$$arity = 0); + }, $CaseNode_needs_closure$ques$5.$$arity = 0); - Opal.defn(self, '$case_parts', TMP_CaseNode_case_parts_6 = function $$case_parts() { + Opal.def(self, '$case_parts', $CaseNode_case_parts$6 = function $$case_parts() { var self = this; return self.$children()['$[]']($range(1, -1, false)) - }, TMP_CaseNode_case_parts_6.$$arity = 0); - return (Opal.defn(self, '$case_stmt', TMP_CaseNode_case_stmt_7 = function $$case_stmt() { + }, $CaseNode_case_parts$6.$$arity = 0); + return (Opal.def(self, '$case_stmt', $CaseNode_case_stmt$7 = function $$case_stmt() { var self = this; return self.$compiler().$case_stmt() - }, TMP_CaseNode_case_stmt_7.$$arity = 0), nil) && 'case_stmt'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $CaseNode_case_stmt$7.$$arity = 0), nil) && 'case_stmt'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $WhenNode(){}; - var self = $WhenNode = $klass($base, $super, 'WhenNode', $WhenNode); + var self = $klass($base, $super, 'WhenNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_WhenNode_compile_9, TMP_WhenNode_when_checks_10, TMP_WhenNode_case_stmt_11, TMP_WhenNode_body_code_12; + var $nesting = [self].concat($parent_nesting), $WhenNode_compile$8, $WhenNode_when_checks$10, $WhenNode_case_stmt$11, $WhenNode_body_code$12; - def.level = nil; + self.$$prototype.level = nil; self.$handle("when"); self.$children("whens", "body"); - Opal.defn(self, '$compile', TMP_WhenNode_compile_9 = function $$compile() { - var TMP_8, self = this; + Opal.def(self, '$compile', $WhenNode_compile$8 = function $$compile() { + var $$9, self = this; self.$push("if ("); - $send(self.$when_checks(), 'each_with_index', [], (TMP_8 = function(check, idx){var self = TMP_8.$$s || this, call = nil; -if (check == null) check = nil;if (idx == null) idx = nil; + $send(self.$when_checks(), 'each_with_index', [], ($$9 = function(check, idx){var self = $$9.$$s || this, call = nil; + + + if (check == null) { + check = nil; + }; + + if (idx == null) { + idx = nil; + }; if (idx['$=='](0)) { - } else { + } else { self.$push(" || ") }; if (check.$type()['$==']("splat")) { @@ -50759,7 +57708,7 @@ if (check == null) check = nil;if (idx == null) idx = nil; self.$push("(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {"); if ($truthy(self.$case_stmt()['$[]']("cond"))) { self.$push("if ($splt[i]['$===']($case)) { return true; }") - } else { + } else { self.$push("if (", self.$js_truthy(check), ")) { return true; }") }; return self.$push("} return false; })(", self.$expr(check.$children()['$[]'](0)), ")"); @@ -50767,87 +57716,89 @@ if (check == null) check = nil;if (idx == null) idx = nil; call = self.$s("send", check, "===", self.$s("arglist", self.$s("js_tmp", "$case"))); return self.$push(self.$expr(call)); - } else { + } else { return self.$push(self.$js_truthy(check)) - };}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8)); + };}, $$9.$$s = self, $$9.$$arity = 2, $$9)); return self.$push(") {", self.$process(self.$body_code(), self.level), "}"); - }, TMP_WhenNode_compile_9.$$arity = 0); + }, $WhenNode_compile$8.$$arity = 0); - Opal.defn(self, '$when_checks', TMP_WhenNode_when_checks_10 = function $$when_checks() { + Opal.def(self, '$when_checks', $WhenNode_when_checks$10 = function $$when_checks() { var self = this; return self.$children()['$[]']($range(0, -2, false)) - }, TMP_WhenNode_when_checks_10.$$arity = 0); + }, $WhenNode_when_checks$10.$$arity = 0); - Opal.defn(self, '$case_stmt', TMP_WhenNode_case_stmt_11 = function $$case_stmt() { + Opal.def(self, '$case_stmt', $WhenNode_case_stmt$11 = function $$case_stmt() { var self = this; return self.$compiler().$case_stmt() - }, TMP_WhenNode_case_stmt_11.$$arity = 0); - return (Opal.defn(self, '$body_code', TMP_WhenNode_body_code_12 = function $$body_code() { + }, $WhenNode_case_stmt$11.$$arity = 0); + return (Opal.def(self, '$body_code', $WhenNode_body_code$12 = function $$body_code() { var $a, self = this; return ($truthy($a = self.$children().$last()) ? $a : self.$s("nil")) - }, TMP_WhenNode_body_code_12.$$arity = 0), nil) && 'body_code'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $WhenNode_body_code$12.$$arity = 0), nil) && 'body_code'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/super"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$include?', '$type', '$s', '$helper', '$push', '$compile_receiver', '$compile_method', '$compile_arguments', '$compile_block_pass', '$private', '$def?', '$scope', '$find_parent_def', '$==', '$raise_exception?', '$implicit_args?', '$to_s', '$mid', '$def_scope', '$identify!', '$defs', '$name', '$parent', '$method_id', '$def_scope_identity', '$defined_check_param', '$get_super_chain', '$join', '$map', '$implicit_arguments_param', '$super_method_invocation', '$iter?', '$super_block_invocation', '$raise', '$handle', '$method_missing?', '$compiler', '$wrap', '$uses_block!', '$compile_using_send', '$iter', '$uses_zuper=', '$-', '$formal_block_parameter', '$!', '$[]', '$<<', '$empty?', '$children', '$arglist', '$expr', '$===', '$extract_block_arg', '$block_arg']); + Opal.add_stubs(['$require', '$include?', '$type', '$s', '$helper', '$push', '$compile_receiver', '$compile_method', '$compile_arguments', '$compile_block_pass', '$private', '$def?', '$scope', '$find_parent_def', '$==', '$raise_exception?', '$implicit_args?', '$to_s', '$mid', '$def_scope', '$identify!', '$defs', '$method_id', '$def_scope_identity', '$defined_check_param', '$super_chain', '$join', '$map', '$implicit_arguments_param', '$super_method_invocation', '$iter?', '$super_block_invocation', '$raise', '$handle', '$wrap', '$uses_block!', '$compile_using_send', '$iter', '$uses_zuper=', '$-', '$block_name', '$!', '$<<', '$empty?', '$children', '$arglist', '$expr', '$===']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $BaseSuperNode(){}; - var self = $BaseSuperNode = $klass($base, $super, 'BaseSuperNode', $BaseSuperNode); + var self = $klass($base, $super, 'BaseSuperNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BaseSuperNode_initialize_1, TMP_BaseSuperNode_compile_using_send_2, TMP_BaseSuperNode_def_scope_3, TMP_BaseSuperNode_raise_exception$q_4, TMP_BaseSuperNode_defined_check_param_5, TMP_BaseSuperNode_implicit_args$q_6, TMP_BaseSuperNode_implicit_arguments_param_7, TMP_BaseSuperNode_method_id_8, TMP_BaseSuperNode_def_scope_identity_9, TMP_BaseSuperNode_super_method_invocation_10, TMP_BaseSuperNode_super_block_invocation_12, TMP_BaseSuperNode_compile_method_13; + var $nesting = [self].concat($parent_nesting), $BaseSuperNode_initialize$1, $BaseSuperNode_compile_using_send$2, $BaseSuperNode_def_scope$3, $BaseSuperNode_raise_exception$ques$4, $BaseSuperNode_defined_check_param$5, $BaseSuperNode_implicit_args$ques$6, $BaseSuperNode_implicit_arguments_param$7, $BaseSuperNode_method_id$8, $BaseSuperNode_def_scope_identity$9, $BaseSuperNode_super_method_invocation$10, $BaseSuperNode_super_block_invocation$11, $BaseSuperNode_compile_method$13; - def.sexp = def.def_scope = nil; + self.$$prototype.sexp = self.$$prototype.def_scope = nil; - Opal.defn(self, '$initialize', TMP_BaseSuperNode_initialize_1 = function $$initialize($a_rest) { - var $b, $c, self = this, $iter = TMP_BaseSuperNode_initialize_1.$$p, $yield = $iter || nil, args = nil, rest = nil, last_child = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $BaseSuperNode_initialize$1 = function $$initialize($a) { + var $post_args, $b, $c, $iter = $BaseSuperNode_initialize$1.$$p, $yield = $iter || nil, self = this, args = nil, rest = nil, last_child = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_BaseSuperNode_initialize_1.$$p = null; + if ($iter) $BaseSuperNode_initialize$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_BaseSuperNode_initialize_1, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $BaseSuperNode_initialize$1, false), $zuper, $iter); args = [].concat(Opal.to_a(self.sexp)); $b = [].concat(Opal.to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_child = ($b[$c] == null ? nil : $b[$c])), $b; if ($truthy(($truthy($b = last_child) ? ["iter", "block_pass"]['$include?'](last_child.$type()) : $b))) { self.iter = last_child; args = rest; - } else { + } else { self.iter = self.$s("js_tmp", "null") }; self.arglist = $send(self, 's', ["arglist"].concat(Opal.to_a(args))); return (self.recvr = self.$s("self")); - }, TMP_BaseSuperNode_initialize_1.$$arity = -1); + }, $BaseSuperNode_initialize$1.$$arity = -1); - Opal.defn(self, '$compile_using_send', TMP_BaseSuperNode_compile_using_send_2 = function $$compile_using_send() { + Opal.def(self, '$compile_using_send', $BaseSuperNode_compile_using_send$2 = function $$compile_using_send() { var self = this; @@ -50858,90 +57809,89 @@ Opal.modules["opal/nodes/super"] = function(Opal) { self.$compile_arguments(); self.$compile_block_pass(); return self.$push(")"); - }, TMP_BaseSuperNode_compile_using_send_2.$$arity = 0); + }, $BaseSuperNode_compile_using_send$2.$$arity = 0); self.$private(); - Opal.defn(self, '$def_scope', TMP_BaseSuperNode_def_scope_3 = function $$def_scope() { + Opal.def(self, '$def_scope', $BaseSuperNode_def_scope$3 = function $$def_scope() { var $a, self = this; return (self.def_scope = ($truthy($a = self.def_scope) ? $a : (function() {if ($truthy(self.$scope()['$def?']())) { return self.$scope() - } else { + } else { return self.$scope().$find_parent_def() }; return nil; })())) - }, TMP_BaseSuperNode_def_scope_3.$$arity = 0); + }, $BaseSuperNode_def_scope$3.$$arity = 0); - Opal.defn(self, '$raise_exception?', TMP_BaseSuperNode_raise_exception$q_4 = function() { + Opal.def(self, '$raise_exception?', $BaseSuperNode_raise_exception$ques$4 = function() { var self = this; return self.sexp.$type()['$==']("defined_super") - }, TMP_BaseSuperNode_raise_exception$q_4.$$arity = 0); + }, $BaseSuperNode_raise_exception$ques$4.$$arity = 0); - Opal.defn(self, '$defined_check_param', TMP_BaseSuperNode_defined_check_param_5 = function $$defined_check_param() { + Opal.def(self, '$defined_check_param', $BaseSuperNode_defined_check_param$5 = function $$defined_check_param() { var self = this; if ($truthy(self['$raise_exception?']())) { return "true" - } else { + } else { return "false" } - }, TMP_BaseSuperNode_defined_check_param_5.$$arity = 0); + }, $BaseSuperNode_defined_check_param$5.$$arity = 0); - Opal.defn(self, '$implicit_args?', TMP_BaseSuperNode_implicit_args$q_6 = function() { + Opal.def(self, '$implicit_args?', $BaseSuperNode_implicit_args$ques$6 = function() { var self = this; return self.sexp.$type()['$==']("zsuper") - }, TMP_BaseSuperNode_implicit_args$q_6.$$arity = 0); + }, $BaseSuperNode_implicit_args$ques$6.$$arity = 0); - Opal.defn(self, '$implicit_arguments_param', TMP_BaseSuperNode_implicit_arguments_param_7 = function $$implicit_arguments_param() { + Opal.def(self, '$implicit_arguments_param', $BaseSuperNode_implicit_arguments_param$7 = function $$implicit_arguments_param() { var self = this; if ($truthy(self['$implicit_args?']())) { return "true" - } else { + } else { return "false" } - }, TMP_BaseSuperNode_implicit_arguments_param_7.$$arity = 0); + }, $BaseSuperNode_implicit_arguments_param$7.$$arity = 0); - Opal.defn(self, '$method_id', TMP_BaseSuperNode_method_id_8 = function $$method_id() { + Opal.def(self, '$method_id', $BaseSuperNode_method_id$8 = function $$method_id() { var self = this; return self.$def_scope().$mid().$to_s() - }, TMP_BaseSuperNode_method_id_8.$$arity = 0); + }, $BaseSuperNode_method_id$8.$$arity = 0); - Opal.defn(self, '$def_scope_identity', TMP_BaseSuperNode_def_scope_identity_9 = function $$def_scope_identity() { + Opal.def(self, '$def_scope_identity', $BaseSuperNode_def_scope_identity$9 = function $$def_scope_identity() { var self = this; return self.$def_scope()['$identify!'](self.$def_scope().$mid()) - }, TMP_BaseSuperNode_def_scope_identity_9.$$arity = 0); + }, $BaseSuperNode_def_scope_identity$9.$$arity = 0); - Opal.defn(self, '$super_method_invocation', TMP_BaseSuperNode_super_method_invocation_10 = function $$super_method_invocation() { - var self = this, class_name = nil; + Opal.def(self, '$super_method_invocation', $BaseSuperNode_super_method_invocation$10 = function $$super_method_invocation() { + var self = this; if ($truthy(self.$def_scope().$defs())) { - - class_name = (function() {if ($truthy(self.$def_scope().$parent().$name())) { - return "" + "$" + (self.$def_scope().$parent().$name()) - } else { - return "self.$$class.$$proto" - }; return nil; })(); - return "" + "Opal.find_super_dispatcher(self, '" + (self.$method_id()) + "', " + (self.$def_scope_identity()) + ", " + (self.$defined_check_param()) + ", " + (class_name) + ")"; - } else { + return "" + "Opal.find_super_dispatcher(self, '" + (self.$method_id()) + "', " + (self.$def_scope_identity()) + ", " + (self.$defined_check_param()) + ", self.$$class.$$prototype)" + } else { return "" + "Opal.find_super_dispatcher(self, '" + (self.$method_id()) + "', " + (self.$def_scope_identity()) + ", " + (self.$defined_check_param()) + ")" } - }, TMP_BaseSuperNode_super_method_invocation_10.$$arity = 0); + }, $BaseSuperNode_super_method_invocation$10.$$arity = 0); - Opal.defn(self, '$super_block_invocation', TMP_BaseSuperNode_super_block_invocation_12 = function $$super_block_invocation() { - var $a, $b, TMP_11, self = this, chain = nil, cur_defn = nil, mid = nil, trys = nil; + Opal.def(self, '$super_block_invocation', $BaseSuperNode_super_block_invocation$11 = function $$super_block_invocation() { + var $a, $b, $$12, self = this, chain = nil, cur_defn = nil, mid = nil, trys = nil; - $b = self.$scope().$get_super_chain(), $a = Opal.to_ary($b), (chain = ($a[0] == null ? nil : $a[0])), (cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; - trys = $send(chain, 'map', [], (TMP_11 = function(c){var self = TMP_11.$$s || this; -if (c == null) c = nil; - return "" + (c) + ".$$def"}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11)).$join(" || "); + $b = self.$scope().$super_chain(), $a = Opal.to_ary($b), (chain = ($a[0] == null ? nil : $a[0])), (cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; + trys = $send(chain, 'map', [], ($$12 = function(c){var self = $$12.$$s || this; + + + + if (c == null) { + c = nil; + }; + return "" + (c) + ".$$def";}, $$12.$$s = self, $$12.$$arity = 1, $$12)).$join(" || "); return "" + "Opal.find_iter_super_dispatcher(self, " + (mid) + ", (" + (trys) + " || " + (cur_defn) + "), " + (self.$defined_check_param()) + ", " + (self.$implicit_arguments_param()) + ")"; - }, TMP_BaseSuperNode_super_block_invocation_12.$$arity = 0); - return (Opal.defn(self, '$compile_method', TMP_BaseSuperNode_compile_method_13 = function $$compile_method() { + }, $BaseSuperNode_super_block_invocation$11.$$arity = 0); + return (Opal.def(self, '$compile_method', $BaseSuperNode_compile_method$13 = function $$compile_method() { var self = this; @@ -50950,93 +57900,92 @@ if (c == null) c = nil; return self.$push(self.$super_method_invocation()) } else if ($truthy(self.$scope()['$iter?']())) { return self.$push(self.$super_block_invocation()) - } else { + } else { return self.$raise("super must be called from method body or block") }; - }, TMP_BaseSuperNode_compile_method_13.$$arity = 0), nil) && 'compile_method'; - })($nesting[0], Opal.const_get_relative($nesting, 'CallNode'), $nesting); + }, $BaseSuperNode_compile_method$13.$$arity = 0), nil) && 'compile_method'; + })($nesting[0], $$($nesting, 'CallNode'), $nesting); (function($base, $super, $parent_nesting) { - function $DefinedSuperNode(){}; - var self = $DefinedSuperNode = $klass($base, $super, 'DefinedSuperNode', $DefinedSuperNode); + var self = $klass($base, $super, 'DefinedSuperNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DefinedSuperNode_compile_14; + var $nesting = [self].concat($parent_nesting), $DefinedSuperNode_compile$14; self.$handle("defined_super"); - return (Opal.defn(self, '$compile', TMP_DefinedSuperNode_compile_14 = function $$compile() { + return (Opal.def(self, '$compile', $DefinedSuperNode_compile$14 = function $$compile() { var self = this; self.$compile_receiver(); self.$compile_method(); - if ($truthy(self.$compiler()['$method_missing?']())) { - return self.$wrap("(!(", ".$$stub) ? \"super\" : nil)") - } else { - return self.$wrap("((", ") != null ? \"super\" : nil)") - }; - }, TMP_DefinedSuperNode_compile_14.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'BaseSuperNode'), $nesting); + return self.$wrap("((", ") != null ? \"super\" : nil)"); + }, $DefinedSuperNode_compile$14.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'BaseSuperNode'), $nesting); (function($base, $super, $parent_nesting) { - function $SuperNode(){}; - var self = $SuperNode = $klass($base, $super, 'SuperNode', $SuperNode); + var self = $klass($base, $super, 'SuperNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SuperNode_initialize_15, TMP_SuperNode_compile_16; + var $nesting = [self].concat($parent_nesting), $SuperNode_initialize$15, $SuperNode_compile$16; self.$handle("super"); - Opal.defn(self, '$initialize', TMP_SuperNode_initialize_15 = function $$initialize($a_rest) { - var self = this, $iter = TMP_SuperNode_initialize_15.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $SuperNode_initialize$15 = function $$initialize($a) { + var $post_args, $iter = $SuperNode_initialize$15.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_SuperNode_initialize_15.$$p = null; + if ($iter) $SuperNode_initialize$15.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_SuperNode_initialize_15, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $SuperNode_initialize$15, false), $zuper, $iter); if ($truthy(self.$scope()['$def?']())) { return self.$scope()['$uses_block!']() - } else { + } else { return nil }; - }, TMP_SuperNode_initialize_15.$$arity = -1); - return (Opal.defn(self, '$compile', TMP_SuperNode_compile_16 = function $$compile() { + }, $SuperNode_initialize$15.$$arity = -1); + return (Opal.def(self, '$compile', $SuperNode_compile$16 = function $$compile() { var self = this; return self.$compile_using_send() - }, TMP_SuperNode_compile_16.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'BaseSuperNode'), $nesting); + }, $SuperNode_compile$16.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'BaseSuperNode'), $nesting); (function($base, $super, $parent_nesting) { - function $ZsuperNode(){}; - var self = $ZsuperNode = $klass($base, $super, 'ZsuperNode', $ZsuperNode); + var self = $klass($base, $super, 'ZsuperNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ZsuperNode_initialize_17, TMP_ZsuperNode_compile_18, TMP_ZsuperNode_compile_arguments_19, TMP_ZsuperNode_formal_block_parameter_20; + var $nesting = [self].concat($parent_nesting), $ZsuperNode_initialize$17, $ZsuperNode_compile$18, $ZsuperNode_compile_arguments$19, $ZsuperNode_block_name$20; self.$handle("zsuper"); - Opal.defn(self, '$initialize', TMP_ZsuperNode_initialize_17 = function $$initialize($a_rest) { - var self = this, $iter = TMP_ZsuperNode_initialize_17.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $ZsuperNode_initialize$17 = function $$initialize($a) { + var $post_args, $iter = $ZsuperNode_initialize$17.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_ZsuperNode_initialize_17.$$p = null; + if ($iter) $ZsuperNode_initialize$17.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_ZsuperNode_initialize_17, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $ZsuperNode_initialize$17, false), $zuper, $iter); if (self.$iter().$type()['$==']("iter")) { return nil - } else { + } else { self.$scope()['$uses_block!'](); return (self.iter = self.$s("js_tmp", "$iter")); }; - }, TMP_ZsuperNode_initialize_17.$$arity = -1); + }, $ZsuperNode_initialize$17.$$arity = -1); - Opal.defn(self, '$compile', TMP_ZsuperNode_compile_18 = function $$compile() { - var $a, self = this, $writer = nil, implicit_args = nil, block_arg = nil, block_pass = nil; + Opal.def(self, '$compile', $ZsuperNode_compile$18 = function $$compile() { + var $a, self = this, $writer = nil, implicit_args = nil, block_pass = nil; if ($truthy(self.$def_scope())) { @@ -51046,258 +57995,274 @@ if (c == null) c = nil; $send(self.$def_scope(), 'uses_zuper=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; implicit_args = [self.$s("js_tmp", "$zuper")]; - if ($truthy(($truthy($a = (block_arg = self.$formal_block_parameter())) ? self.$iter()['$!']() : $a))) { + if ($truthy(($truthy($a = self.$block_name()) ? self.$iter()['$!']() : $a))) { - block_pass = self.$s("block_pass", self.$s("lvar", block_arg['$[]'](1))); + block_pass = self.$s("block_pass", self.$s("lvar", self.$block_name())); implicit_args['$<<'](block_pass);}; self.arglist = $send(self, 's', ["arglist"].concat(Opal.to_a(implicit_args)));}; return self.$compile_using_send(); - }, TMP_ZsuperNode_compile_18.$$arity = 0); + }, $ZsuperNode_compile$18.$$arity = 0); - Opal.defn(self, '$compile_arguments', TMP_ZsuperNode_compile_arguments_19 = function $$compile_arguments() { + Opal.def(self, '$compile_arguments', $ZsuperNode_compile_arguments$19 = function $$compile_arguments() { var self = this; self.$push(", "); if ($truthy(self.$arglist().$children()['$empty?']())) { return self.$push("[]") - } else { + } else { return self.$push(self.$expr(self.$arglist())) }; - }, TMP_ZsuperNode_compile_arguments_19.$$arity = 0); - return (Opal.defn(self, '$formal_block_parameter', TMP_ZsuperNode_formal_block_parameter_20 = function $$formal_block_parameter() { + }, $ZsuperNode_compile_arguments$19.$$arity = 0); + return (Opal.def(self, '$block_name', $ZsuperNode_block_name$20 = function $$block_name() { var self = this, $case = nil; return (function() {$case = self.$def_scope(); - if (Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Nodes'), 'IterNode')['$===']($case)) {return self.$def_scope().$extract_block_arg()} - else if (Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Nodes'), 'DefNode')['$===']($case)) {return self.$def_scope().$block_arg()} + if ($$$($$$($$($nesting, 'Opal'), 'Nodes'), 'IterNode')['$===']($case)) {return self.$def_scope().$block_name()} + else if ($$$($$$($$($nesting, 'Opal'), 'Nodes'), 'DefNode')['$===']($case)) {return self.$def_scope().$block_name()} else {return self.$raise("" + "Don't know what to do with super in the scope " + (self.$def_scope()))}})() - }, TMP_ZsuperNode_formal_block_parameter_20.$$arity = 0), nil) && 'formal_block_parameter'; - })($nesting[0], Opal.const_get_relative($nesting, 'SuperNode'), $nesting); + }, $ZsuperNode_block_name$20.$$arity = 0), nil) && 'block_name'; + })($nesting[0], $$($nesting, 'SuperNode'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/version"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); - Opal.const_set($nesting[0], 'VERSION', "0.11.4") + Opal.const_set($nesting[0], 'VERSION', "1.0.5") })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/top"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$handle', '$children', '$push', '$version_comment', '$opening', '$in_scope', '$stmt', '$stmts', '$is_a?', '$eval?', '$compiler', '$add_temp', '$add_used_helpers', '$add_used_operators', '$line', '$to_vars', '$scope', '$compile_method_stubs', '$compile_irb_vars', '$compile_end_construct', '$closing', '$requirable?', '$to_s', '$cleanpath', '$Pathname', '$file', '$inspect', '$returns', '$body', '$irb?', '$to_a', '$helpers', '$each', '$operator_helpers', '$[]', '$method_missing?', '$method_calls', '$join', '$map', '$empty?', '$eof_content']); + Opal.add_stubs(['$require', '$handle', '$children', '$push', '$version_comment', '$opening', '$in_scope', '$stmt', '$stmts', '$is_a?', '$eval?', '$compiler', '$add_temp', '$add_used_helpers', '$add_used_operators', '$line', '$to_vars', '$scope', '$compile_method_stubs', '$compile_irb_vars', '$compile_end_construct', '$closing', '$requirable?', '$inspect', '$module_name', '$file', '$returns', '$body', '$irb?', '$to_a', '$helpers', '$each', '$operator_helpers', '$[]', '$method_missing?', '$method_calls', '$join', '$map', '$empty?', '$eof_content']); self.$require("pathname"); self.$require("opal/version"); self.$require("opal/nodes/scope"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $TopNode(){}; - var self = $TopNode = $klass($base, $super, 'TopNode', $TopNode); + var self = $klass($base, $super, 'TopNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_TopNode_compile_2, TMP_TopNode_opening_3, TMP_TopNode_closing_4, TMP_TopNode_stmts_5, TMP_TopNode_compile_irb_vars_6, TMP_TopNode_add_used_helpers_8, TMP_TopNode_add_used_operators_10, TMP_TopNode_compile_method_stubs_12, TMP_TopNode_compile_end_construct_13, TMP_TopNode_version_comment_14; + var $nesting = [self].concat($parent_nesting), $TopNode_compile$1, $TopNode_opening$3, $TopNode_closing$4, $TopNode_stmts$5, $TopNode_compile_irb_vars$6, $TopNode_add_used_helpers$7, $TopNode_add_used_operators$9, $TopNode_compile_method_stubs$11, $TopNode_compile_end_construct$13, $TopNode_version_comment$14; self.$handle("top"); self.$children("body"); - Opal.defn(self, '$compile', TMP_TopNode_compile_2 = function $$compile() { - var TMP_1, self = this; + Opal.def(self, '$compile', $TopNode_compile$1 = function $$compile() { + var $$2, self = this; self.$push(self.$version_comment()); self.$opening(); - $send(self, 'in_scope', [], (TMP_1 = function(){var self = TMP_1.$$s || this, body_code = nil; + $send(self, 'in_scope', [], ($$2 = function(){var self = $$2.$$s || this, body_code = nil; body_code = self.$stmt(self.$stmts()); - if ($truthy(body_code['$is_a?'](Opal.const_get_relative($nesting, 'Array')))) { - } else { + if ($truthy(body_code['$is_a?']($$($nesting, 'Array')))) { + } else { body_code = [body_code] }; if ($truthy(self.$compiler()['$eval?']())) { self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]") - } else { + } else { self.$add_temp("self = Opal.top"); self.$add_temp("$nesting = []"); }; self.$add_temp("nil = Opal.nil"); + self.$add_temp("$$$ = Opal.const_get_qualified"); + self.$add_temp("$$ = Opal.const_get_relative"); self.$add_used_helpers(); self.$add_used_operators(); self.$line(self.$scope().$to_vars()); self.$compile_method_stubs(); self.$compile_irb_vars(); self.$compile_end_construct(); - return self.$line(body_code);}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1)); + return self.$line(body_code);}, $$2.$$s = self, $$2.$$arity = 0, $$2)); return self.$closing(); - }, TMP_TopNode_compile_2.$$arity = 0); + }, $TopNode_compile$1.$$arity = 0); - Opal.defn(self, '$opening', TMP_TopNode_opening_3 = function $$opening() { - var self = this, path = nil; + Opal.def(self, '$opening', $TopNode_opening$3 = function $$opening() { + var self = this; if ($truthy(self.$compiler()['$requirable?']())) { - - path = self.$Pathname(self.$compiler().$file()).$cleanpath().$to_s(); - return self.$line("" + "Opal.modules[" + (path.$inspect()) + "] = function(Opal) {"); + return self.$line("" + "Opal.modules[" + ($$$($$($nesting, 'Opal'), 'Compiler').$module_name(self.$compiler().$file()).$inspect()) + "] = function(Opal) {") } else if ($truthy(self.$compiler()['$eval?']())) { return self.$line("(function(Opal, self) {") - } else { + } else { return self.$line("(function(Opal) {") } - }, TMP_TopNode_opening_3.$$arity = 0); + }, $TopNode_opening$3.$$arity = 0); - Opal.defn(self, '$closing', TMP_TopNode_closing_4 = function $$closing() { + Opal.def(self, '$closing', $TopNode_closing$4 = function $$closing() { var self = this; if ($truthy(self.$compiler()['$requirable?']())) { return self.$line("};\n") } else if ($truthy(self.$compiler()['$eval?']())) { return self.$line("})(Opal, self)") - } else { + } else { return self.$line("})(Opal);\n") } - }, TMP_TopNode_closing_4.$$arity = 0); + }, $TopNode_closing$4.$$arity = 0); - Opal.defn(self, '$stmts', TMP_TopNode_stmts_5 = function $$stmts() { + Opal.def(self, '$stmts', $TopNode_stmts$5 = function $$stmts() { var self = this; return self.$compiler().$returns(self.$body()) - }, TMP_TopNode_stmts_5.$$arity = 0); + }, $TopNode_stmts$5.$$arity = 0); - Opal.defn(self, '$compile_irb_vars', TMP_TopNode_compile_irb_vars_6 = function $$compile_irb_vars() { + Opal.def(self, '$compile_irb_vars', $TopNode_compile_irb_vars$6 = function $$compile_irb_vars() { var self = this; if ($truthy(self.$compiler()['$irb?']())) { return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }") - } else { + } else { return nil } - }, TMP_TopNode_compile_irb_vars_6.$$arity = 0); + }, $TopNode_compile_irb_vars$6.$$arity = 0); - Opal.defn(self, '$add_used_helpers', TMP_TopNode_add_used_helpers_8 = function $$add_used_helpers() { - var TMP_7, self = this, helpers = nil; + Opal.def(self, '$add_used_helpers', $TopNode_add_used_helpers$7 = function $$add_used_helpers() { + var $$8, self = this, helpers = nil; helpers = self.$compiler().$helpers().$to_a(); - return $send(helpers.$to_a(), 'each', [], (TMP_7 = function(h){var self = TMP_7.$$s || this; -if (h == null) h = nil; - return self.$add_temp("" + "$" + (h) + " = Opal." + (h))}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); - }, TMP_TopNode_add_used_helpers_8.$$arity = 0); + return $send(helpers.$to_a(), 'each', [], ($$8 = function(h){var self = $$8.$$s || this; + + + + if (h == null) { + h = nil; + }; + return self.$add_temp("" + "$" + (h) + " = Opal." + (h));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); + }, $TopNode_add_used_helpers$7.$$arity = 0); - Opal.defn(self, '$add_used_operators', TMP_TopNode_add_used_operators_10 = function $$add_used_operators() { - var TMP_9, self = this, operators = nil; + Opal.def(self, '$add_used_operators', $TopNode_add_used_operators$9 = function $$add_used_operators() { + var $$10, self = this, operators = nil; operators = self.$compiler().$operator_helpers().$to_a(); - return $send(operators, 'each', [], (TMP_9 = function(op){var self = TMP_9.$$s || this, name = nil; -if (op == null) op = nil; + return $send(operators, 'each', [], ($$10 = function(op){var self = $$10.$$s || this, name = nil; + - name = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Nodes'), 'CallNode'), 'OPERATORS')['$[]'](op); + + if (op == null) { + op = nil; + }; + name = $$$($$$($$($nesting, 'Nodes'), 'CallNode'), 'OPERATORS')['$[]'](op); self.$line("" + "function $rb_" + (name) + "(lhs, rhs) {"); self.$line("" + " return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs " + (op) + " rhs : lhs['$" + (op) + "'](rhs);"); - return self.$line("}");}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); - }, TMP_TopNode_add_used_operators_10.$$arity = 0); + return self.$line("}");}, $$10.$$s = self, $$10.$$arity = 1, $$10)); + }, $TopNode_add_used_operators$9.$$arity = 0); - Opal.defn(self, '$compile_method_stubs', TMP_TopNode_compile_method_stubs_12 = function $$compile_method_stubs() { - var TMP_11, self = this, calls = nil, stubs = nil; + Opal.def(self, '$compile_method_stubs', $TopNode_compile_method_stubs$11 = function $$compile_method_stubs() { + var $$12, self = this, calls = nil, stubs = nil; if ($truthy(self.$compiler()['$method_missing?']())) { calls = self.$compiler().$method_calls(); - stubs = $send(calls.$to_a(), 'map', [], (TMP_11 = function(k){var self = TMP_11.$$s || this; -if (k == null) k = nil; - return "" + "'$" + (k) + "'"}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11)).$join(", "); + stubs = $send(calls.$to_a(), 'map', [], ($$12 = function(k){var self = $$12.$$s || this; + + + + if (k == null) { + k = nil; + }; + return "" + "'$" + (k) + "'";}, $$12.$$s = self, $$12.$$arity = 1, $$12)).$join(", "); if ($truthy(stubs['$empty?']())) { return nil - } else { + } else { return self.$line("" + "Opal.add_stubs([" + (stubs) + "]);") }; - } else { + } else { return nil } - }, TMP_TopNode_compile_method_stubs_12.$$arity = 0); + }, $TopNode_compile_method_stubs$11.$$arity = 0); - Opal.defn(self, '$compile_end_construct', TMP_TopNode_compile_end_construct_13 = function $$compile_end_construct() { + Opal.def(self, '$compile_end_construct', $TopNode_compile_end_construct$13 = function $$compile_end_construct() { var self = this, content = nil; if ($truthy((content = self.$compiler().$eof_content()))) { self.$line("var $__END__ = Opal.Object.$new();"); return self.$line("" + "$__END__.$read = function() { return " + (content.$inspect()) + "; };"); - } else { + } else { return nil } - }, TMP_TopNode_compile_end_construct_13.$$arity = 0); - return (Opal.defn(self, '$version_comment', TMP_TopNode_version_comment_14 = function $$version_comment() { + }, $TopNode_compile_end_construct$13.$$arity = 0); + return (Opal.def(self, '$version_comment', $TopNode_version_comment$14 = function $$version_comment() { var self = this; - return "" + "/* Generated by Opal " + (Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'VERSION')) + " */" - }, TMP_TopNode_version_comment_14.$$arity = 0), nil) && 'version_comment'; - })($nesting[0], Opal.const_get_relative($nesting, 'ScopeNode'), $nesting) + return "" + "/* Generated by Opal " + ($$$($$($nesting, 'Opal'), 'VERSION')) + " */" + }, $TopNode_version_comment$14.$$arity = 0), nil) && 'version_comment'; + })($nesting[0], $$($nesting, 'ScopeNode'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/while"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$handle', '$children', '$with_temp', '$js_truthy', '$test', '$in_while', '$compiler', '$wrap_in_closure?', '$[]=', '$while_loop', '$-', '$stmt', '$body', '$uses_redo?', '$push', '$while_open', '$while_close', '$line', '$wrap', '$[]', '$expr?', '$recv?']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $WhileNode(){}; - var self = $WhileNode = $klass($base, $super, 'WhileNode', $WhileNode); + var self = $klass($base, $super, 'WhileNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_WhileNode_compile_3, TMP_WhileNode_while_open_4, TMP_WhileNode_while_close_5, TMP_WhileNode_uses_redo$q_6, TMP_WhileNode_wrap_in_closure$q_7; + var $nesting = [self].concat($parent_nesting), $WhileNode_compile$1, $WhileNode_while_open$4, $WhileNode_while_close$5, $WhileNode_uses_redo$ques$6, $WhileNode_wrap_in_closure$ques$7; self.$handle("while"); self.$children("test", "body"); - Opal.defn(self, '$compile', TMP_WhileNode_compile_3 = function $$compile() { - var TMP_1, self = this; + Opal.def(self, '$compile', $WhileNode_compile$1 = function $$compile() { + var $$2, self = this; - $send(self, 'with_temp', [], (TMP_1 = function(redo_var){var self = TMP_1.$$s || this, TMP_2, test_code = nil; -if (redo_var == null) redo_var = nil; + $send(self, 'with_temp', [], ($$2 = function(redo_var){var self = $$2.$$s || this, $$3, test_code = nil; + + + if (redo_var == null) { + redo_var = nil; + }; test_code = self.$js_truthy(self.$test()); - $send(self.$compiler(), 'in_while', [], (TMP_2 = function(){var self = TMP_2.$$s || this, $writer = nil, body_code = nil; + $send(self.$compiler(), 'in_while', [], ($$3 = function(){var self = $$3.$$s || this, $writer = nil, body_code = nil; if ($truthy(self['$wrap_in_closure?']())) { @@ -51315,291 +58280,336 @@ if (redo_var == null) redo_var = nil; self.$push("" + (redo_var) + " = false; " + (self.$while_open()) + (redo_var) + " || "); self.$push(test_code); self.$push(self.$while_close()); - } else { + } else { self.$push(self.$while_open(), test_code, self.$while_close()) }; if ($truthy(self['$uses_redo?']())) { self.$push("" + (redo_var) + " = false;")}; - return self.$line(body_code);}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); - return self.$line("}");}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); + return self.$line(body_code);}, $$3.$$s = self, $$3.$$arity = 0, $$3)); + return self.$line("}");}, $$2.$$s = self, $$2.$$arity = 1, $$2)); if ($truthy(self['$wrap_in_closure?']())) { return self.$wrap("(function() {", "; return nil; })()") - } else { + } else { return nil }; - }, TMP_WhileNode_compile_3.$$arity = 0); + }, $WhileNode_compile$1.$$arity = 0); - Opal.defn(self, '$while_open', TMP_WhileNode_while_open_4 = function $$while_open() { + Opal.def(self, '$while_open', $WhileNode_while_open$4 = function $$while_open() { var self = this; return "while (" - }, TMP_WhileNode_while_open_4.$$arity = 0); + }, $WhileNode_while_open$4.$$arity = 0); - Opal.defn(self, '$while_close', TMP_WhileNode_while_close_5 = function $$while_close() { + Opal.def(self, '$while_close', $WhileNode_while_close$5 = function $$while_close() { var self = this; return ") {" - }, TMP_WhileNode_while_close_5.$$arity = 0); + }, $WhileNode_while_close$5.$$arity = 0); - Opal.defn(self, '$uses_redo?', TMP_WhileNode_uses_redo$q_6 = function() { + Opal.def(self, '$uses_redo?', $WhileNode_uses_redo$ques$6 = function() { var self = this; return self.$while_loop()['$[]']("use_redo") - }, TMP_WhileNode_uses_redo$q_6.$$arity = 0); - return (Opal.defn(self, '$wrap_in_closure?', TMP_WhileNode_wrap_in_closure$q_7 = function() { + }, $WhileNode_uses_redo$ques$6.$$arity = 0); + return (Opal.def(self, '$wrap_in_closure?', $WhileNode_wrap_in_closure$ques$7 = function() { var $a, self = this; return ($truthy($a = self['$expr?']()) ? $a : self['$recv?']()) - }, TMP_WhileNode_wrap_in_closure$q_7.$$arity = 0), nil) && 'wrap_in_closure?'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $WhileNode_wrap_in_closure$ques$7.$$arity = 0), nil) && 'wrap_in_closure?'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $WhilePostNode(){}; - var self = $WhilePostNode = $klass($base, $super, 'WhilePostNode', $WhilePostNode); + var self = $klass($base, $super, 'WhilePostNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$handle("while_post") - })($nesting[0], Opal.const_get_relative($nesting, 'WhileNode'), $nesting); + })($nesting[0], $$($nesting, 'WhileNode'), $nesting); (function($base, $super, $parent_nesting) { - function $UntilNode(){}; - var self = $UntilNode = $klass($base, $super, 'UntilNode', $UntilNode); + var self = $klass($base, $super, 'UntilNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UntilNode_while_open_8, TMP_UntilNode_while_close_9; + var $nesting = [self].concat($parent_nesting), $UntilNode_while_open$8, $UntilNode_while_close$9; self.$handle("until"); - Opal.defn(self, '$while_open', TMP_UntilNode_while_open_8 = function $$while_open() { + Opal.def(self, '$while_open', $UntilNode_while_open$8 = function $$while_open() { var self = this; return "while (!(" - }, TMP_UntilNode_while_open_8.$$arity = 0); - return (Opal.defn(self, '$while_close', TMP_UntilNode_while_close_9 = function $$while_close() { + }, $UntilNode_while_open$8.$$arity = 0); + return (Opal.def(self, '$while_close', $UntilNode_while_close$9 = function $$while_close() { var self = this; return ")) {" - }, TMP_UntilNode_while_close_9.$$arity = 0), nil) && 'while_close'; - })($nesting[0], Opal.const_get_relative($nesting, 'WhileNode'), $nesting); + }, $UntilNode_while_close$9.$$arity = 0), nil) && 'while_close'; + })($nesting[0], $$($nesting, 'WhileNode'), $nesting); (function($base, $super, $parent_nesting) { - function $UntilPostNode(){}; - var self = $UntilPostNode = $klass($base, $super, 'UntilPostNode', $UntilPostNode); + var self = $klass($base, $super, 'UntilPostNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return self.$handle("until_post") - })($nesting[0], Opal.const_get_relative($nesting, 'UntilNode'), $nesting); + })($nesting[0], $$($nesting, 'UntilNode'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/hash"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; Opal.add_stubs(['$require', '$handle', '$attr_accessor', '$each', '$children', '$type', '$===', '$<<', '$[]', '$all?', '$keys', '$include?', '$has_kwsplat', '$compile_merge', '$simple_keys?', '$compile_hash2', '$compile_hash', '$helper', '$==', '$empty?', '$expr', '$s', '$each_with_index', '$push', '$wrap', '$times', '$size', '$inspect', '$to_s', '$values', '$[]=', '$-', '$join', '$value']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $HashNode(){}; - var self = $HashNode = $klass($base, $super, 'HashNode', $HashNode); + var self = $klass($base, $super, 'HashNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_HashNode_initialize_1, TMP_HashNode_simple_keys$q_4, TMP_HashNode_compile_5, TMP_HashNode_compile_merge_8, TMP_HashNode_compile_hash_10, TMP_HashNode_compile_hash2_13; + var $nesting = [self].concat($parent_nesting), $HashNode_initialize$1, $HashNode_simple_keys$ques$3, $HashNode_compile$5, $HashNode_compile_merge$6, $HashNode_compile_hash$9, $HashNode_compile_hash2$11; self.$handle("hash"); self.$attr_accessor("has_kwsplat", "keys", "values"); - Opal.defn(self, '$initialize', TMP_HashNode_initialize_1 = function $$initialize($a_rest) { - var TMP_2, self = this, $iter = TMP_HashNode_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$initialize', $HashNode_initialize$1 = function $$initialize($a) { + var $post_args, $$2, $iter = $HashNode_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_HashNode_initialize_1.$$p = null; + if ($iter) $HashNode_initialize$1.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_HashNode_initialize_1, false), $zuper, $iter); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $HashNode_initialize$1, false), $zuper, $iter); self.has_kwsplat = false; self.keys = []; self.values = []; - return $send(self.$children(), 'each', [], (TMP_2 = function(child){var self = TMP_2.$$s || this, $case = nil; + return $send(self.$children(), 'each', [], ($$2 = function(child){var self = $$2.$$s || this, $case = nil; if (self.keys == null) self.keys = nil; if (self.values == null) self.values = nil; -if (child == null) child = nil; - return (function() {$case = child.$type(); + + + + if (child == null) { + child = nil; + }; + return (function() {$case = child.$type(); if ("kwsplat"['$===']($case)) {return (self.has_kwsplat = true)} else if ("pair"['$===']($case)) { self.keys['$<<'](child.$children()['$[]'](0)); return self.values['$<<'](child.$children()['$[]'](1));} - else { return nil }})()}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); - }, TMP_HashNode_initialize_1.$$arity = -1); + else { return nil }})();}, $$2.$$s = self, $$2.$$arity = 1, $$2)); + }, $HashNode_initialize$1.$$arity = -1); - Opal.defn(self, '$simple_keys?', TMP_HashNode_simple_keys$q_4 = function() { - var TMP_3, self = this; + Opal.def(self, '$simple_keys?', $HashNode_simple_keys$ques$3 = function() { + var $$4, self = this; + + return $send(self.$keys(), 'all?', [], ($$4 = function(key){var self = $$4.$$s || this; - return $send(self.$keys(), 'all?', [], (TMP_3 = function(key){var self = TMP_3.$$s || this; -if (key == null) key = nil; - return ["sym", "str"]['$include?'](key.$type())}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)) - }, TMP_HashNode_simple_keys$q_4.$$arity = 0); + + + if (key == null) { + key = nil; + }; + return ["sym", "str"]['$include?'](key.$type());}, $$4.$$s = self, $$4.$$arity = 1, $$4)) + }, $HashNode_simple_keys$ques$3.$$arity = 0); - Opal.defn(self, '$compile', TMP_HashNode_compile_5 = function $$compile() { + Opal.def(self, '$compile', $HashNode_compile$5 = function $$compile() { var self = this; if ($truthy(self.$has_kwsplat())) { return self.$compile_merge() } else if ($truthy(self['$simple_keys?']())) { return self.$compile_hash2() - } else { + } else { return self.$compile_hash() } - }, TMP_HashNode_compile_5.$$arity = 0); + }, $HashNode_compile$5.$$arity = 0); - Opal.defn(self, '$compile_merge', TMP_HashNode_compile_merge_8 = function $$compile_merge() { - var $a, TMP_6, TMP_7, self = this, result = nil, seq = nil; + Opal.def(self, '$compile_merge', $HashNode_compile_merge$6 = function $$compile_merge() { + var $a, $$7, $$8, self = this, result = nil, seq = nil; self.$helper("hash"); $a = [[], []], (result = $a[0]), (seq = $a[1]), $a; - $send(self.$children(), 'each', [], (TMP_6 = function(child){var self = TMP_6.$$s || this; -if (child == null) child = nil; - if (child.$type()['$==']("kwsplat")) { + $send(self.$children(), 'each', [], ($$7 = function(child){var self = $$7.$$s || this; + + + + if (child == null) { + child = nil; + }; + if (child.$type()['$==']("kwsplat")) { if ($truthy(seq['$empty?']())) { - } else { + } else { result['$<<'](self.$expr($send(self, 's', ["hash"].concat(Opal.to_a(seq))))) }; result['$<<'](self.$expr(child)); return (seq = []); - } else { + } else { return seq['$<<'](child) - }}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)); + };}, $$7.$$s = self, $$7.$$arity = 1, $$7)); if ($truthy(seq['$empty?']())) { - } else { + } else { result['$<<'](self.$expr($send(self, 's', ["hash"].concat(Opal.to_a(seq))))) }; - return $send(result, 'each_with_index', [], (TMP_7 = function(fragment, idx){var self = TMP_7.$$s || this; -if (fragment == null) fragment = nil;if (idx == null) idx = nil; - if (idx['$=='](0)) { + return $send(result, 'each_with_index', [], ($$8 = function(fragment, idx){var self = $$8.$$s || this; + + + + if (fragment == null) { + fragment = nil; + }; + + if (idx == null) { + idx = nil; + }; + if (idx['$=='](0)) { return self.$push(fragment) - } else { + } else { return self.$push(".$merge(", fragment, ")") - }}, TMP_7.$$s = self, TMP_7.$$arity = 2, TMP_7)); - }, TMP_HashNode_compile_merge_8.$$arity = 0); + };}, $$8.$$s = self, $$8.$$arity = 2, $$8)); + }, $HashNode_compile_merge$6.$$arity = 0); - Opal.defn(self, '$compile_hash', TMP_HashNode_compile_hash_10 = function $$compile_hash() { - var TMP_9, self = this; + Opal.def(self, '$compile_hash', $HashNode_compile_hash$9 = function $$compile_hash() { + var $$10, self = this; self.$helper("hash"); - $send(self.$children(), 'each_with_index', [], (TMP_9 = function(pair, idx){var self = TMP_9.$$s || this, $a, $b, key = nil, value = nil; -if (pair == null) pair = nil;if (idx == null) idx = nil; + $send(self.$children(), 'each_with_index', [], ($$10 = function(pair, idx){var self = $$10.$$s || this, $a, $b, key = nil, value = nil; + + + if (pair == null) { + pair = nil; + }; + + if (idx == null) { + idx = nil; + }; $b = pair.$children(), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; if (idx['$=='](0)) { - } else { + } else { self.$push(", ") }; - return self.$push(self.$expr(key), ", ", self.$expr(value));}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9)); + return self.$push(self.$expr(key), ", ", self.$expr(value));}, $$10.$$s = self, $$10.$$arity = 2, $$10)); return self.$wrap("$hash(", ")"); - }, TMP_HashNode_compile_hash_10.$$arity = 0); - return (Opal.defn(self, '$compile_hash2', TMP_HashNode_compile_hash2_13 = function $$compile_hash2() { - var $a, TMP_11, TMP_12, self = this, hash_obj = nil, hash_keys = nil; + }, $HashNode_compile_hash$9.$$arity = 0); + return (Opal.def(self, '$compile_hash2', $HashNode_compile_hash2$11 = function $$compile_hash2() { + var $a, $$12, $$13, self = this, hash_obj = nil, hash_keys = nil; $a = [$hash2([], {}), []], (hash_obj = $a[0]), (hash_keys = $a[1]), $a; self.$helper("hash2"); - $send(self.$keys().$size(), 'times', [], (TMP_11 = function(idx){var self = TMP_11.$$s || this, key = nil, $writer = nil; -if (idx == null) idx = nil; + $send(self.$keys().$size(), 'times', [], ($$12 = function(idx){var self = $$12.$$s || this, key = nil, $writer = nil; + + + if (idx == null) { + idx = nil; + }; key = self.$keys()['$[]'](idx).$children()['$[]'](0).$to_s().$inspect(); if ($truthy(hash_obj['$include?'](key))) { - } else { + } else { hash_keys['$<<'](key) }; $writer = [key, self.$expr(self.$values()['$[]'](idx))]; $send(hash_obj, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11)); - $send(hash_keys, 'each_with_index', [], (TMP_12 = function(key, idx){var self = TMP_12.$$s || this; -if (key == null) key = nil;if (idx == null) idx = nil; + return $writer[$rb_minus($writer["length"], 1)];;}, $$12.$$s = self, $$12.$$arity = 1, $$12)); + $send(hash_keys, 'each_with_index', [], ($$13 = function(key, idx){var self = $$13.$$s || this; + + + if (key == null) { + key = nil; + }; + + if (idx == null) { + idx = nil; + }; if (idx['$=='](0)) { - } else { + } else { self.$push(", ") }; self.$push("" + (key) + ": "); - return self.$push(hash_obj['$[]'](key));}, TMP_12.$$s = self, TMP_12.$$arity = 2, TMP_12)); + return self.$push(hash_obj['$[]'](key));}, $$13.$$s = self, $$13.$$arity = 2, $$13)); return self.$wrap("" + "$hash2([" + (hash_keys.$join(", ")) + "], {", "})"); - }, TMP_HashNode_compile_hash2_13.$$arity = 0), nil) && 'compile_hash2'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $HashNode_compile_hash2$11.$$arity = 0), nil) && 'compile_hash2'; + })($nesting[0], $$($nesting, 'Base'), $nesting); (function($base, $super, $parent_nesting) { - function $KwSplatNode(){}; - var self = $KwSplatNode = $klass($base, $super, 'KwSplatNode', $KwSplatNode); + var self = $klass($base, $super, 'KwSplatNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KwSplatNode_compile_14; + var $nesting = [self].concat($parent_nesting), $KwSplatNode_compile$14; self.$handle("kwsplat"); self.$children("value"); - return (Opal.defn(self, '$compile', TMP_KwSplatNode_compile_14 = function $$compile() { + return (Opal.def(self, '$compile', $KwSplatNode_compile$14 = function $$compile() { var self = this; return self.$push("Opal.to_hash(", self.$expr(self.$value()), ")") - }, TMP_KwSplatNode_compile_14.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting); + }, $KwSplatNode_compile$14.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/array"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$handle', '$empty?', '$children', '$push', '$each', '$==', '$type', '$expr', '$<<', '$fragment']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ArrayNode(){}; - var self = $ArrayNode = $klass($base, $super, 'ArrayNode', $ArrayNode); + var self = $klass($base, $super, 'ArrayNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ArrayNode_compile_2; + var $nesting = [self].concat($parent_nesting), $ArrayNode_compile$1; self.$handle("array"); - return (Opal.defn(self, '$compile', TMP_ArrayNode_compile_2 = function $$compile() { - var $a, TMP_1, self = this, code = nil, work = nil, join = nil; + return (Opal.def(self, '$compile', $ArrayNode_compile$1 = function $$compile() { + var $a, $$2, self = this, code = nil, work = nil, join = nil; if ($truthy(self.$children()['$empty?']())) { return self.$push("[]")}; $a = [[], []], (code = $a[0]), (work = $a[1]), $a; - $send(self.$children(), 'each', [], (TMP_1 = function(child){var self = TMP_1.$$s || this, splat = nil, part = nil; -if (child == null) child = nil; + $send(self.$children(), 'each', [], ($$2 = function(child){var self = $$2.$$s || this, splat = nil, part = nil; + + + if (child == null) { + child = nil; + }; splat = child.$type()['$==']("splat"); part = self.$expr(child); if ($truthy(splat)) { @@ -51607,72 +58617,71 @@ if (child == null) child = nil; if ($truthy(work['$empty?']())) { if ($truthy(code['$empty?']())) { code['$<<'](self.$fragment("[].concat("))['$<<'](part)['$<<'](self.$fragment(")")) - } else { + } else { code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")) } - } else { + } else { if ($truthy(code['$empty?']())) { code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) - } else { + } else { code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) }; code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")); }; return (work = []); - } else { + } else { if ($truthy(work['$empty?']())) { - } else { + } else { work['$<<'](self.$fragment(", ")) }; return work['$<<'](part); - };}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); + };}, $$2.$$s = self, $$2.$$arity = 1, $$2)); if ($truthy(work['$empty?']())) { - } else { + } else { join = [self.$fragment("["), work, self.$fragment("]")]; if ($truthy(code['$empty?']())) { code = join - } else { + } else { code.$push([self.$fragment(".concat("), join, self.$fragment(")")]) }; }; return self.$push(code); - }, TMP_ArrayNode_compile_2.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $ArrayNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/defined"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; Opal.add_stubs(['$require', '$handle', '$children', '$type', '$value', '$===', '$push', '$inspect', '$to_s', '$==', '$size', '$[]', '$compile_defined_send', '$wrap', '$compile_defined_ivar', '$compile_defined_super', '$compile_defined_yield', '$compile_defined_xstr', '$compile_defined_const', '$compile_defined_cvar', '$compile_defined_gvar', '$compile_defined_back_ref', '$compile_defined_nth_ref', '$compile_defined_array', '$respond_to?', '$__send__', '$new_temp', '$scope', '$expr', '$wrap_with_try_catch', '$mid_to_jsid', '$compile_defined', '$compile_send_recv_doesnt_raise', '$each', '$s', '$uses_block!', '$block_name', '$find_parent_def', '$nil?', '$class_variable_owner', '$helper', '$include?', '$each_with_index']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $DefinedNode(){}; - var self = $DefinedNode = $klass($base, $super, 'DefinedNode', $DefinedNode); + var self = $klass($base, $super, 'DefinedNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DefinedNode_compile_1, TMP_DefinedNode_compile_defined_2, TMP_DefinedNode_wrap_with_try_catch_3, TMP_DefinedNode_compile_send_recv_doesnt_raise_4, TMP_DefinedNode_compile_defined_send_6, TMP_DefinedNode_compile_defined_ivar_7, TMP_DefinedNode_compile_defined_super_8, TMP_DefinedNode_compile_defined_yield_9, TMP_DefinedNode_compile_defined_xstr_10, TMP_DefinedNode_compile_defined_const_11, TMP_DefinedNode_compile_defined_cvar_12, TMP_DefinedNode_compile_defined_gvar_13, TMP_DefinedNode_compile_defined_back_ref_14, TMP_DefinedNode_compile_defined_nth_ref_15, TMP_DefinedNode_compile_defined_array_17; + var $nesting = [self].concat($parent_nesting), $DefinedNode_compile$1, $DefinedNode_compile_defined$2, $DefinedNode_wrap_with_try_catch$3, $DefinedNode_compile_send_recv_doesnt_raise$4, $DefinedNode_compile_defined_send$5, $DefinedNode_compile_defined_ivar$7, $DefinedNode_compile_defined_super$8, $DefinedNode_compile_defined_yield$9, $DefinedNode_compile_defined_xstr$10, $DefinedNode_compile_defined_const$11, $DefinedNode_compile_defined_cvar$12, $DefinedNode_compile_defined_gvar$13, $DefinedNode_compile_defined_back_ref$14, $DefinedNode_compile_defined_nth_ref$15, $DefinedNode_compile_defined_array$16; self.$handle("defined?"); self.$children("value"); - Opal.defn(self, '$compile', TMP_DefinedNode_compile_1 = function $$compile() { + Opal.def(self, '$compile', $DefinedNode_compile$1 = function $$compile() { var $a, self = this, $case = nil; return (function() {$case = self.$value().$type(); @@ -51681,7 +58690,7 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { else if ("lvar"['$===']($case)) {return self.$push("'local-variable'")} else if ("begin"['$===']($case)) {if ($truthy((($a = self.$value().$children().$size()['$=='](1)) ? self.$value().$children()['$[]'](0).$type()['$==']("masgn") : self.$value().$children().$size()['$=='](1)))) { return self.$push("'assignment'") - } else { + } else { return self.$push("'expression'") }} else if ("send"['$===']($case)) { @@ -51690,9 +58699,9 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { else if ("ivar"['$===']($case)) { self.$compile_defined_ivar(self.$value()); return self.$wrap("(", " ? 'instance-variable' : nil)");} - else if ("zsuper"['$===']($case) || "super"['$===']($case)) {return self.$compile_defined_super(self.$value())} + else if ("zsuper"['$===']($case) || "super"['$===']($case)) {return self.$compile_defined_super()} else if ("yield"['$===']($case)) { - self.$compile_defined_yield(self.$value()); + self.$compile_defined_yield(); return self.$wrap("(", " ? 'yield' : nil)");} else if ("xstr"['$===']($case)) {return self.$compile_defined_xstr(self.$value())} else if ("const"['$===']($case)) { @@ -51705,33 +58714,33 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { self.$compile_defined_gvar(self.$value()); return self.$wrap("(", " ? 'global-variable' : nil)");} else if ("back_ref"['$===']($case)) { - self.$compile_defined_back_ref(self.$value()); + self.$compile_defined_back_ref(); return self.$wrap("(", " ? 'global-variable' : nil)");} else if ("nth_ref"['$===']($case)) { - self.$compile_defined_nth_ref(self.$value()); + self.$compile_defined_nth_ref(); return self.$wrap("(", " ? 'global-variable' : nil)");} else if ("array"['$===']($case)) { self.$compile_defined_array(self.$value()); return self.$wrap("(", " ? 'expression' : nil)");} else {return self.$push("'expression'")}})() - }, TMP_DefinedNode_compile_1.$$arity = 0); + }, $DefinedNode_compile$1.$$arity = 0); - Opal.defn(self, '$compile_defined', TMP_DefinedNode_compile_defined_2 = function $$compile_defined(node) { + Opal.def(self, '$compile_defined', $DefinedNode_compile_defined$2 = function $$compile_defined(node) { var self = this, type = nil, node_tmp = nil; type = node.$type(); if ($truthy(self['$respond_to?']("" + "compile_defined_" + (type)))) { return self.$__send__("" + "compile_defined_" + (type), node) - } else { + } else { node_tmp = self.$scope().$new_temp(); self.$push("" + "(" + (node_tmp) + " = ", self.$expr(node), ")"); return node_tmp; }; - }, TMP_DefinedNode_compile_defined_2.$$arity = 1); + }, $DefinedNode_compile_defined$2.$$arity = 1); - Opal.defn(self, '$wrap_with_try_catch', TMP_DefinedNode_wrap_with_try_catch_3 = function $$wrap_with_try_catch(code) { + Opal.def(self, '$wrap_with_try_catch', $DefinedNode_wrap_with_try_catch$3 = function $$wrap_with_try_catch(code) { var self = this, returning_tmp = nil; @@ -51746,16 +58755,16 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { self.$push(" } else { throw $err; }"); self.$push("}})())"); return returning_tmp; - }, TMP_DefinedNode_wrap_with_try_catch_3.$$arity = 1); + }, $DefinedNode_wrap_with_try_catch$3.$$arity = 1); - Opal.defn(self, '$compile_send_recv_doesnt_raise', TMP_DefinedNode_compile_send_recv_doesnt_raise_4 = function $$compile_send_recv_doesnt_raise(recv_code) { + Opal.def(self, '$compile_send_recv_doesnt_raise', $DefinedNode_compile_send_recv_doesnt_raise$4 = function $$compile_send_recv_doesnt_raise(recv_code) { var self = this; return self.$wrap_with_try_catch(recv_code) - }, TMP_DefinedNode_compile_send_recv_doesnt_raise_4.$$arity = 1); + }, $DefinedNode_compile_send_recv_doesnt_raise$4.$$arity = 1); - Opal.defn(self, '$compile_defined_send', TMP_DefinedNode_compile_defined_send_6 = function $$compile_defined_send(node) { - var $a, TMP_5, self = this, recv = nil, method_name = nil, args = nil, mid = nil, recv_code = nil, recv_tmp = nil, recv_value_tmp = nil, meth_tmp = nil; + Opal.def(self, '$compile_defined_send', $DefinedNode_compile_defined_send$5 = function $$compile_defined_send(node) { + var $a, $$6, self = this, recv = nil, method_name = nil, args = nil, mid = nil, recv_code = nil, recv_tmp = nil, recv_value_tmp = nil, meth_tmp = nil; $a = [].concat(Opal.to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; @@ -51770,7 +58779,7 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { self.$push(" && ");}; recv_tmp = self.$scope().$new_temp(); self.$push("" + "(" + (recv_tmp) + " = ", recv_code, "" + ", " + (recv_tmp) + ") && "); - } else { + } else { recv_tmp = "self" }; recv_value_tmp = self.$scope().$new_temp(); @@ -51778,18 +58787,23 @@ Opal.modules["opal/nodes/defined"] = function(Opal) { meth_tmp = self.$scope().$new_temp(); self.$push("" + "(((" + (meth_tmp) + " = " + (recv_value_tmp) + (mid) + ") && !" + (meth_tmp) + ".$$stub)"); self.$push("" + " || " + (recv_value_tmp) + "['$respond_to_missing?']('" + (method_name) + "'))"); - $send(args, 'each', [], (TMP_5 = function(arg){var self = TMP_5.$$s || this, $case = nil; -if (arg == null) arg = nil; - return (function() {$case = arg.$type(); + $send(args, 'each', [], ($$6 = function(arg){var self = $$6.$$s || this, $case = nil; + + + + if (arg == null) { + arg = nil; + }; + return (function() {$case = arg.$type(); if ("block_pass"['$===']($case)) {return nil} else { self.$push(" && "); - return self.$compile_defined(arg);}})()}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5)); + return self.$compile_defined(arg);}})();}, $$6.$$s = self, $$6.$$arity = 1, $$6)); self.$wrap("(", ")"); return "" + (meth_tmp) + "()"; - }, TMP_DefinedNode_compile_defined_send_6.$$arity = 1); + }, $DefinedNode_compile_defined_send$5.$$arity = 1); - Opal.defn(self, '$compile_defined_ivar', TMP_DefinedNode_compile_defined_ivar_7 = function $$compile_defined_ivar(node) { + Opal.def(self, '$compile_defined_ivar', $DefinedNode_compile_defined_ivar$7 = function $$compile_defined_ivar(node) { var self = this, name = nil, tmp = nil; @@ -51797,49 +58811,49 @@ if (arg == null) arg = nil; tmp = self.$scope().$new_temp(); self.$push("" + "(" + (tmp) + " = self['" + (name) + "'], " + (tmp) + " != null && " + (tmp) + " !== nil)"); return tmp; - }, TMP_DefinedNode_compile_defined_ivar_7.$$arity = 1); + }, $DefinedNode_compile_defined_ivar$7.$$arity = 1); - Opal.defn(self, '$compile_defined_super', TMP_DefinedNode_compile_defined_super_8 = function $$compile_defined_super(node) { + Opal.def(self, '$compile_defined_super', $DefinedNode_compile_defined_super$8 = function $$compile_defined_super() { var self = this; return self.$push(self.$expr(self.$s("defined_super"))) - }, TMP_DefinedNode_compile_defined_super_8.$$arity = 1); + }, $DefinedNode_compile_defined_super$8.$$arity = 0); - Opal.defn(self, '$compile_defined_yield', TMP_DefinedNode_compile_defined_yield_9 = function $$compile_defined_yield(node) { - var $a, $b, self = this, block_name = nil, parent = nil; + Opal.def(self, '$compile_defined_yield', $DefinedNode_compile_defined_yield$9 = function $$compile_defined_yield() { + var $a, self = this, block_name = nil; self.$scope()['$uses_block!'](); - block_name = ($truthy($a = self.$scope().$block_name()) ? $a : (parent = ($truthy($b = self.$scope().$find_parent_def()) ? parent.$block_name() : $b))); + block_name = ($truthy($a = self.$scope().$block_name()) ? $a : self.$scope().$find_parent_def().$block_name()); self.$push("" + "(" + (block_name) + " != null && " + (block_name) + " !== nil)"); return block_name; - }, TMP_DefinedNode_compile_defined_yield_9.$$arity = 1); + }, $DefinedNode_compile_defined_yield$9.$$arity = 0); - Opal.defn(self, '$compile_defined_xstr', TMP_DefinedNode_compile_defined_xstr_10 = function $$compile_defined_xstr(node) { + Opal.def(self, '$compile_defined_xstr', $DefinedNode_compile_defined_xstr$10 = function $$compile_defined_xstr(node) { var self = this; return self.$push("(typeof(", self.$expr(node), ") !== \"undefined\")") - }, TMP_DefinedNode_compile_defined_xstr_10.$$arity = 1); + }, $DefinedNode_compile_defined_xstr$10.$$arity = 1); - Opal.defn(self, '$compile_defined_const', TMP_DefinedNode_compile_defined_const_11 = function $$compile_defined_const(node) { + Opal.def(self, '$compile_defined_const', $DefinedNode_compile_defined_const$11 = function $$compile_defined_const(node) { var $a, self = this, const_scope = nil, const_name = nil, const_tmp = nil, const_scope_tmp = nil; $a = [].concat(Opal.to_a(node)), (const_scope = ($a[0] == null ? nil : $a[0])), (const_name = ($a[1] == null ? nil : $a[1])), $a; const_tmp = self.$scope().$new_temp(); if ($truthy(const_scope['$nil?']())) { - self.$push("" + "(" + (const_tmp) + " = Opal.const_get_relative($nesting, '" + (const_name) + "', 'skip_raise'))") + self.$push("" + "(" + (const_tmp) + " = $$($nesting, '" + (const_name) + "', 'skip_raise'))") } else if (const_scope['$=='](self.$s("cbase"))) { - self.$push("" + "(" + (const_tmp) + " = Opal.const_get_qualified('::', '" + (const_name) + "', 'skip_raise'))") - } else { + self.$push("" + "(" + (const_tmp) + " = $$$('::', '" + (const_name) + "', 'skip_raise'))") + } else { const_scope_tmp = self.$compile_defined(const_scope); - self.$push("" + " && (" + (const_tmp) + " = Opal.const_get_qualified(" + (const_scope_tmp) + ", '" + (const_name) + "', 'skip_raise'))"); + self.$push("" + " && (" + (const_tmp) + " = $$$(" + (const_scope_tmp) + ", '" + (const_name) + "', 'skip_raise'))"); }; return const_tmp; - }, TMP_DefinedNode_compile_defined_const_11.$$arity = 1); + }, $DefinedNode_compile_defined_const$11.$$arity = 1); - Opal.defn(self, '$compile_defined_cvar', TMP_DefinedNode_compile_defined_cvar_12 = function $$compile_defined_cvar(node) { + Opal.def(self, '$compile_defined_cvar', $DefinedNode_compile_defined_cvar$12 = function $$compile_defined_cvar(node) { var $a, self = this, cvar_name = nil, _ = nil, cvar_tmp = nil; @@ -51847,9 +58861,9 @@ if (arg == null) arg = nil; cvar_tmp = self.$scope().$new_temp(); self.$push("" + "(" + (cvar_tmp) + " = " + (self.$class_variable_owner()) + ".$$cvars['" + (cvar_name) + "'], " + (cvar_tmp) + " != null)"); return cvar_tmp; - }, TMP_DefinedNode_compile_defined_cvar_12.$$arity = 1); + }, $DefinedNode_compile_defined_cvar$12.$$arity = 1); - Opal.defn(self, '$compile_defined_gvar', TMP_DefinedNode_compile_defined_gvar_13 = function $$compile_defined_gvar(node) { + Opal.def(self, '$compile_defined_gvar', $DefinedNode_compile_defined_gvar$13 = function $$compile_defined_gvar(node) { var self = this, name = nil, gvar_temp = nil; @@ -51858,13 +58872,13 @@ if (arg == null) arg = nil; gvar_temp = self.$scope().$new_temp(); if ($truthy(["~", "!"]['$include?'](name))) { self.$push("" + "(" + (gvar_temp) + " = ", self.$expr(node), " || true)") - } else { + } else { self.$push("" + "(" + (gvar_temp) + " = $gvars[" + (name.$inspect()) + "], " + (gvar_temp) + " != null)") }; return gvar_temp; - }, TMP_DefinedNode_compile_defined_gvar_13.$$arity = 1); + }, $DefinedNode_compile_defined_gvar$13.$$arity = 1); - Opal.defn(self, '$compile_defined_back_ref', TMP_DefinedNode_compile_defined_back_ref_14 = function $$compile_defined_back_ref(node) { + Opal.def(self, '$compile_defined_back_ref', $DefinedNode_compile_defined_back_ref$14 = function $$compile_defined_back_ref() { var self = this, back_ref_temp = nil; @@ -51872,9 +58886,9 @@ if (arg == null) arg = nil; back_ref_temp = self.$scope().$new_temp(); self.$push("" + "(" + (back_ref_temp) + " = $gvars['~'], " + (back_ref_temp) + " != null && " + (back_ref_temp) + " !== nil)"); return back_ref_temp; - }, TMP_DefinedNode_compile_defined_back_ref_14.$$arity = 1); + }, $DefinedNode_compile_defined_back_ref$14.$$arity = 0); - Opal.defn(self, '$compile_defined_nth_ref', TMP_DefinedNode_compile_defined_nth_ref_15 = function $$compile_defined_nth_ref(node) { + Opal.def(self, '$compile_defined_nth_ref', $DefinedNode_compile_defined_nth_ref$15 = function $$compile_defined_nth_ref() { var self = this, nth_ref_tmp = nil; @@ -51882,25 +58896,33 @@ if (arg == null) arg = nil; nth_ref_tmp = self.$scope().$new_temp(); self.$push("" + "(" + (nth_ref_tmp) + " = $gvars['~'], " + (nth_ref_tmp) + " != null && " + (nth_ref_tmp) + " != nil)"); return nth_ref_tmp; - }, TMP_DefinedNode_compile_defined_nth_ref_15.$$arity = 1); - return (Opal.defn(self, '$compile_defined_array', TMP_DefinedNode_compile_defined_array_17 = function $$compile_defined_array(node) { - var TMP_16, self = this; + }, $DefinedNode_compile_defined_nth_ref$15.$$arity = 0); + return (Opal.def(self, '$compile_defined_array', $DefinedNode_compile_defined_array$16 = function $$compile_defined_array(node) { + var $$17, self = this; + + return $send(node.$children(), 'each_with_index', [], ($$17 = function(child, idx){var self = $$17.$$s || this; - return $send(node.$children(), 'each_with_index', [], (TMP_16 = function(child, idx){var self = TMP_16.$$s || this; -if (child == null) child = nil;if (idx == null) idx = nil; + + if (child == null) { + child = nil; + }; + + if (idx == null) { + idx = nil; + }; if (idx['$=='](0)) { - } else { + } else { self.$push(" && ") }; - return self.$compile_defined(child);}, TMP_16.$$s = self, TMP_16.$$arity = 2, TMP_16)) - }, TMP_DefinedNode_compile_defined_array_17.$$arity = 1), nil) && 'compile_defined_array'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + return self.$compile_defined(child);}, $$17.$$s = self, $$17.$$arity = 2, $$17)) + }, $DefinedNode_compile_defined_array$16.$$arity = 1), nil) && 'compile_defined_array'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/masgn"] = function(Opal) { function $rb_ge(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); @@ -51908,45 +58930,49 @@ Opal.modules["opal/nodes/masgn"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$handle', '$children', '$new_temp', '$scope', '$==', '$type', '$rhs', '$push', '$expr', '$any?', '$size', '$compile_masgn', '$lhs', '$queue_temp', '$take_while', '$!=', '$drop', '$each_with_index', '$compile_assignment', '$empty?', '$shift', '$[]', '$<<', '$dup', '$s', '$!', '$>=', '$updated', '$include?', '$+', '$last', '$raise']); + Opal.add_stubs(['$require', '$freeze', '$handle', '$children', '$new_temp', '$scope', '$==', '$type', '$rhs', '$push', '$expr', '$any?', '$size', '$compile_masgn', '$lhs', '$queue_temp', '$take_while', '$!=', '$drop', '$each_with_index', '$compile_assignment', '$empty?', '$shift', '$[]', '$<<', '$dup', '$s', '$!', '$>=', '$updated', '$include?', '$+', '$last', '$raise']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $MassAssignNode(){}; - var self = $MassAssignNode = $klass($base, $super, 'MassAssignNode', $MassAssignNode); + var self = $klass($base, $super, 'MassAssignNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MassAssignNode_compile_2, TMP_MassAssignNode_compile_masgn_6, TMP_MassAssignNode_compile_assignment_7; + var $nesting = [self].concat($parent_nesting), $MassAssignNode_compile$1, $MassAssignNode_compile_masgn$3, $MassAssignNode_compile_assignment$7; - Opal.const_set($nesting[0], 'SIMPLE_ASSIGNMENT', ["lvasgn", "ivasgn", "lvar", "gvasgn", "cdecl", "casgn"]); + Opal.const_set($nesting[0], 'SIMPLE_ASSIGNMENT', ["lvasgn", "ivasgn", "lvar", "gvasgn", "cdecl", "casgn"].$freeze()); self.$handle("masgn"); self.$children("lhs", "rhs"); - Opal.defn(self, '$compile', TMP_MassAssignNode_compile_2 = function $$compile() { - var TMP_1, self = this, array = nil, rhs_len = nil, retval = nil; + Opal.def(self, '$compile', $MassAssignNode_compile$1 = function $$compile() { + var $$2, self = this, array = nil, rhs_len = nil, retval = nil; array = self.$scope().$new_temp(); if (self.$rhs().$type()['$==']("array")) { self.$push("" + (array) + " = ", self.$expr(self.$rhs())); - rhs_len = (function() {if ($truthy($send(self.$rhs().$children(), 'any?', [], (TMP_1 = function(c){var self = TMP_1.$$s || this; -if (c == null) c = nil; - return c.$type()['$==']("splat")}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)))) { + rhs_len = (function() {if ($truthy($send(self.$rhs().$children(), 'any?', [], ($$2 = function(c){var self = $$2.$$s || this; + + + + if (c == null) { + c = nil; + }; + return c.$type()['$==']("splat");}, $$2.$$s = self, $$2.$$arity = 1, $$2)))) { return nil - } else { + } else { return self.$rhs().$children().$size() }; return nil; })(); self.$compile_masgn(self.$lhs().$children(), array, rhs_len); @@ -51959,7 +58985,7 @@ if (c == null) c = nil; self.$compile_masgn(self.$lhs().$children(), array); self.$push("" + ", " + (retval)); self.$scope().$queue_temp(retval); - } else { + } else { retval = self.$scope().$new_temp(); self.$push("" + (retval) + " = ", self.$expr(self.$rhs())); @@ -51969,25 +58995,40 @@ if (c == null) c = nil; self.$scope().$queue_temp(retval); }; return self.$scope().$queue_temp(array); - }, TMP_MassAssignNode_compile_2.$$arity = 0); + }, $MassAssignNode_compile$1.$$arity = 0); - Opal.defn(self, '$compile_masgn', TMP_MassAssignNode_compile_masgn_6 = function $$compile_masgn(lhs_items, array, len) { - var TMP_3, TMP_4, TMP_5, self = this, pre_splat = nil, post_splat = nil, splat = nil, part = nil, tmp = nil; + Opal.def(self, '$compile_masgn', $MassAssignNode_compile_masgn$3 = function $$compile_masgn(lhs_items, array, len) { + var $$4, $$5, $$6, self = this, pre_splat = nil, post_splat = nil, splat = nil, part = nil, tmp = nil; + + if (len == null) { len = nil; - } + }; + pre_splat = $send(lhs_items, 'take_while', [], ($$4 = function(child){var self = $$4.$$s || this; + - pre_splat = $send(lhs_items, 'take_while', [], (TMP_3 = function(child){var self = TMP_3.$$s || this; -if (child == null) child = nil; - return child.$type()['$!=']("splat")}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3)); + + if (child == null) { + child = nil; + }; + return child.$type()['$!=']("splat");}, $$4.$$s = self, $$4.$$arity = 1, $$4)); post_splat = lhs_items.$drop(pre_splat.$size()); - $send(pre_splat, 'each_with_index', [], (TMP_4 = function(child, idx){var self = TMP_4.$$s || this; -if (child == null) child = nil;if (idx == null) idx = nil; - return self.$compile_assignment(child, array, idx, len)}, TMP_4.$$s = self, TMP_4.$$arity = 2, TMP_4)); + $send(pre_splat, 'each_with_index', [], ($$5 = function(child, idx){var self = $$5.$$s || this; + + + + if (child == null) { + child = nil; + }; + + if (idx == null) { + idx = nil; + }; + return self.$compile_assignment(child, array, idx, len);}, $$5.$$s = self, $$5.$$arity = 2, $$5)); if ($truthy(post_splat['$empty?']())) { return nil - } else { + } else { splat = post_splat.$shift(); if ($truthy(post_splat['$empty?']())) { @@ -51996,10 +59037,10 @@ if (child == null) child = nil;if (idx == null) idx = nil; part = part.$dup()['$<<'](self.$s("js_tmp", "" + "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ")")); self.$push(", "); return self.$push(self.$expr(part)); - } else { + } else { return nil } - } else { + } else { tmp = self.$scope().$new_temp(); self.$push("" + ", " + (tmp) + " = " + (array) + ".length - " + (post_splat.$size())); @@ -52009,31 +59050,41 @@ if (child == null) child = nil;if (idx == null) idx = nil; part = part.$dup()['$<<'](self.$s("js_tmp", "" + "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ", " + (tmp) + ")")); self.$push(", "); self.$push(self.$expr(part));}; - $send(post_splat, 'each_with_index', [], (TMP_5 = function(child, idx){var self = TMP_5.$$s || this; -if (child == null) child = nil;if (idx == null) idx = nil; - if (idx['$=='](0)) { + $send(post_splat, 'each_with_index', [], ($$6 = function(child, idx){var self = $$6.$$s || this; + + + + if (child == null) { + child = nil; + }; + + if (idx == null) { + idx = nil; + }; + if (idx['$=='](0)) { return self.$compile_assignment(child, array, tmp) - } else { + } else { return self.$compile_assignment(child, array, "" + (tmp) + " + " + (idx)) - }}, TMP_5.$$s = self, TMP_5.$$arity = 2, TMP_5)); + };}, $$6.$$s = self, $$6.$$arity = 2, $$6)); return self.$scope().$queue_temp(tmp); }; }; - }, TMP_MassAssignNode_compile_masgn_6.$$arity = -3); - return (Opal.defn(self, '$compile_assignment', TMP_MassAssignNode_compile_assignment_7 = function $$compile_assignment(child, array, idx, len) { + }, $MassAssignNode_compile_masgn$3.$$arity = -3); + return (Opal.def(self, '$compile_assignment', $MassAssignNode_compile_assignment$7 = function $$compile_assignment(child, array, idx, len) { var $a, self = this, assign = nil, part = nil, tmp = nil; + + if (len == null) { len = nil; - } - - if ($truthy(($truthy($a = len['$!']()) ? $a : $rb_ge(idx, len)))) { - assign = self.$s("js_tmp", "" + "(" + (array) + "[" + (idx) + "] == null ? nil : " + (array) + "[" + (idx) + "])") - } else { - assign = self.$s("js_tmp", "" + (array) + "[" + (idx) + "]") }; + assign = (function() {if ($truthy(($truthy($a = len['$!']()) ? $a : $rb_ge(idx, len)))) { + return self.$s("js_tmp", "" + "(" + (array) + "[" + (idx) + "] == null ? nil : " + (array) + "[" + (idx) + "])") + } else { + return self.$s("js_tmp", "" + (array) + "[" + (idx) + "]") + }; return nil; })(); part = child.$updated(); - if ($truthy(Opal.const_get_relative($nesting, 'SIMPLE_ASSIGNMENT')['$include?'](child.$type()))) { + if ($truthy($$($nesting, 'SIMPLE_ASSIGNMENT')['$include?'](child.$type()))) { part = part.$updated(nil, $rb_plus(part.$children(), [assign])) } else if (child.$type()['$==']("send")) { part = part.$updated(nil, $rb_plus(part.$children(), [assign])) @@ -52047,50 +59098,53 @@ if (child == null) child = nil;if (idx == null) idx = nil; self.$push(")"); self.$scope().$queue_temp(tmp); return nil; - } else { + } else { self.$raise("" + "Bad child node in masgn LHS: " + (child) + ". LHS: " + (self.$lhs())) }; self.$push(", "); return self.$push(self.$expr(part)); - }, TMP_MassAssignNode_compile_assignment_7.$$arity = -4), nil) && 'compile_assignment'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $MassAssignNode_compile_assignment$7.$$arity = -4), nil) && 'compile_assignment'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes/arglist"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$require', '$handle', '$each', '$children', '$==', '$type', '$expr', '$empty?', '$<<', '$fragment', '$push']); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $Nodes, self = $Nodes = $module($base, 'Nodes'); + var self = $module($base, 'Nodes'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $ArglistNode(){}; - var self = $ArglistNode = $klass($base, $super, 'ArglistNode', $ArglistNode); + var self = $klass($base, $super, 'ArglistNode'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ArglistNode_compile_2; + var $nesting = [self].concat($parent_nesting), $ArglistNode_compile$1; self.$handle("arglist"); - return (Opal.defn(self, '$compile', TMP_ArglistNode_compile_2 = function $$compile() { - var $a, TMP_1, self = this, code = nil, work = nil, join = nil; + return (Opal.def(self, '$compile', $ArglistNode_compile$1 = function $$compile() { + var $a, $$2, self = this, code = nil, work = nil, join = nil; $a = [[], []], (code = $a[0]), (work = $a[1]), $a; - $send(self.$children(), 'each', [], (TMP_1 = function(current){var self = TMP_1.$$s || this, splat = nil, arg = nil; -if (current == null) current = nil; + $send(self.$children(), 'each', [], ($$2 = function(current){var self = $$2.$$s || this, splat = nil, arg = nil; + + + if (current == null) { + current = nil; + }; splat = current.$type()['$==']("splat"); arg = self.$expr(current); if ($truthy(splat)) { @@ -52098,47 +59152,251 @@ if (current == null) current = nil; if ($truthy(work['$empty?']())) { if ($truthy(code['$empty?']())) { code['$<<'](arg) - } else { + } else { code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")) } - } else { + } else { if ($truthy(code['$empty?']())) { code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) - } else { + } else { code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) }; code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")); }; return (work = []); - } else { + } else { if ($truthy(work['$empty?']())) { - } else { + } else { work['$<<'](self.$fragment(", ")) }; return work['$<<'](arg); - };}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1)); + };}, $$2.$$s = self, $$2.$$arity = 1, $$2)); if ($truthy(work['$empty?']())) { - } else { + } else { join = work; if ($truthy(code['$empty?']())) { code = join - } else { - code['$<<'](self.$fragment(".concat("))['$<<'](join)['$<<'](self.$fragment(")")) + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](join)['$<<'](self.$fragment("])")) }; }; return $send(self, 'push', Opal.to_a(code)); - }, TMP_ArglistNode_compile_2.$$arity = 0), nil) && 'compile'; - })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) + }, $ArglistNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/x_string"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range, $lambda = Opal.lambda; + + Opal.add_stubs(['$handle', '$unpack_return', '$children', '$strip_empty_children', '$single_line?', '$compile_single_line', '$each', '$compile_child', '$recv?', '$wrap', '$push', '$private', '$type', '$===', '$source', '$expression', '$loc', '$new', '$scope', '$expr', '$raise', '$shift', '$empty?', '$s', '$==', '$strip', '$=~', '$!', '$pop', '$extract_last_value', '$rstrip', '$expr?', '$end_with?', '$warning', '$compiler', '$line', '$[]', '$size', '$none?', '$first', '$dup', '$nil?', '$any?', '$last']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'XStringNode'); + + var $nesting = [self].concat($parent_nesting), $XStringNode_compile$1, $XStringNode_compile_child$3, $XStringNode_compile_single_line$4, $XStringNode_extract_last_value$6, $XStringNode_single_line$ques$7, $XStringNode_unpack_return$9, $XStringNode_strip_empty_children$10; + + self.$$prototype.should_add_semicolon = self.$$prototype.returning = nil; + + self.$handle("xstr"); + + Opal.def(self, '$compile', $XStringNode_compile$1 = function $$compile() { + var $$2, self = this, unpacked_children = nil, stripped_children = nil; + + + self.should_add_semicolon = false; + unpacked_children = self.$unpack_return(self.$children()); + stripped_children = self.$strip_empty_children(unpacked_children); + if ($truthy(self['$single_line?'](stripped_children))) { + self.$compile_single_line(stripped_children) + } else { + $send(unpacked_children, 'each', [], ($$2 = function(c){var self = $$2.$$s || this; + + + + if (c == null) { + c = nil; + }; + return self.$compile_child(c);}, $$2.$$s = self, $$2.$$arity = 1, $$2)) + }; + if ($truthy(self['$recv?']())) { + self.$wrap("(", ")")}; + if ($truthy(self.should_add_semicolon)) { + return self.$push(";") + } else { + return nil + }; + }, $XStringNode_compile$1.$$arity = 0); + self.$private(); + + Opal.def(self, '$compile_child', $XStringNode_compile_child$3 = function $$compile_child(child) { + var self = this, $case = nil, value = nil; + + return (function() {$case = child.$type(); + if ("str"['$===']($case)) { + value = child.$loc().$expression().$source(); + return self.$push($$($nesting, 'Fragment').$new(value, self.$scope(), child));} + else if ("begin"['$===']($case) || "gvar"['$===']($case) || "ivar"['$===']($case) || "nil"['$===']($case)) {return self.$push(self.$expr(child))} + else {return self.$raise("" + "Unsupported xstr part: " + (child.$type()))}})() + }, $XStringNode_compile_child$3.$$arity = 1); + + Opal.def(self, '$compile_single_line', $XStringNode_compile_single_line$4 = function $$compile_single_line(children) { + var $a, $$5, self = this, has_embeded_return = nil, first_child = nil, single_child = nil, first_value = nil, last_child = nil, last_value = nil; + + + has_embeded_return = false; + first_child = children.$shift(); + single_child = children['$empty?'](); + first_child = ($truthy($a = first_child) ? $a : self.$s("nil")); + if (first_child.$type()['$==']("str")) { + + first_value = first_child.$loc().$expression().$source().$strip(); + has_embeded_return = first_value['$=~'](/^return\b/);}; + if ($truthy(($truthy($a = self.returning) ? has_embeded_return['$!']() : $a))) { + self.$push("return ")}; + last_child = ($truthy($a = children.$pop()) ? $a : first_child); + if (last_child.$type()['$==']("str")) { + last_value = self.$extract_last_value(last_child)}; + if ($truthy(single_child)) { + } else { + + self.should_add_semicolon = false; + self.$compile_child(first_child); + $send(children, 'each', [], ($$5 = function(c){var self = $$5.$$s || this; + + + + if (c == null) { + c = nil; + }; + return self.$compile_child(c);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); + }; + if (last_child.$type()['$==']("str")) { + return self.$push($$($nesting, 'Fragment').$new(last_value, self.$scope(), last_child)) + } else { + return self.$compile_child(last_child) + }; + }, $XStringNode_compile_single_line$4.$$arity = 1); + + Opal.def(self, '$extract_last_value', $XStringNode_extract_last_value$6 = function $$extract_last_value(last_child) { + var $a, $b, self = this, last_value = nil; + + + last_value = last_child.$loc().$expression().$source().$rstrip(); + if ($truthy(($truthy($a = ($truthy($b = self.returning) ? $b : self['$expr?']())) ? last_value['$end_with?'](";") : $a))) { + + self.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional", last_child.$line()); + last_value = last_value['$[]']($range(0, -2, false));}; + if ($truthy(self.returning)) { + self.should_add_semicolon = true}; + return last_value; + }, $XStringNode_extract_last_value$6.$$arity = 1); + + Opal.def(self, '$single_line?', $XStringNode_single_line$ques$7 = function(children) { + var $a, $$8, self = this; + + return ($truthy($a = children.$size()['$=='](1)) ? $a : $send(children, 'none?', [], ($$8 = function(c){var self = $$8.$$s || this, $b; + + + + if (c == null) { + c = nil; + }; + return (($b = c.$type()['$==']("str")) ? c.$loc().$expression().$source()['$end_with?']("\n") : c.$type()['$==']("str"));}, $$8.$$s = self, $$8.$$arity = 1, $$8))) + }, $XStringNode_single_line$ques$7.$$arity = 1); + + Opal.def(self, '$unpack_return', $XStringNode_unpack_return$9 = function $$unpack_return(children) { + var self = this, first_child = nil; + + + first_child = children.$first(); + self.returning = false; + if (first_child.$type()['$==']("js_return")) { + + self.returning = true; + children = first_child.$children();}; + return children; + }, $XStringNode_unpack_return$9.$$arity = 1); + return (Opal.def(self, '$strip_empty_children', $XStringNode_strip_empty_children$10 = function $$strip_empty_children(children) { + var $$11, $a, $b, self = this, empty_line = nil; + + + children = children.$dup(); + empty_line = $lambda(($$11 = function(child){var self = $$11.$$s || this, $a, $b; + + + + if (child == null) { + child = nil; + }; + return ($truthy($a = child['$nil?']()) ? $a : (($b = child.$type()['$==']("str")) ? child.$loc().$expression().$source().$rstrip()['$empty?']() : child.$type()['$==']("str")));}, $$11.$$s = self, $$11.$$arity = 1, $$11)); + while ($truthy(($truthy($b = children['$any?']()) ? empty_line['$[]'](children.$first()) : $b))) { + children.$shift() + }; + while ($truthy(($truthy($b = children['$any?']()) ? empty_line['$[]'](children.$last()) : $b))) { + children.$pop() + }; + return children; + }, $XStringNode_strip_empty_children$10.$$arity = 1), nil) && 'strip_empty_children'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/nodes/lambda"] = function(Opal) { + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs(['$require', '$handle', '$children', '$helper', '$push', '$expr', '$iter']); + + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LambdaNode'); + + var $nesting = [self].concat($parent_nesting), $LambdaNode_compile$1; + + + self.$handle("lambda"); + self.$children("iter"); + return (Opal.def(self, '$compile', $LambdaNode_compile$1 = function $$compile() { + var self = this; + + + self.$helper("lambda"); + return self.$push("$lambda(", self.$expr(self.$iter()), ")"); + }, $LambdaNode_compile$1.$$arity = 0), nil) && 'compile'; + })($nesting[0], $$($nesting, 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +/* Generated by Opal 1.0.5 */ Opal.modules["opal/nodes"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$require']); @@ -52152,16 +59410,8 @@ Opal.modules["opal/nodes"] = function(Opal) { self.$require("opal/nodes/module"); self.$require("opal/nodes/class"); self.$require("opal/nodes/singleton_class"); - self.$require("opal/nodes/inline_args"); - self.$require("opal/nodes/args/normarg"); - self.$require("opal/nodes/args/optarg"); - self.$require("opal/nodes/args/mlhsarg"); - self.$require("opal/nodes/args/restarg"); - self.$require("opal/nodes/args/kwarg"); - self.$require("opal/nodes/args/kwoptarg"); - self.$require("opal/nodes/args/kwrestarg"); - self.$require("opal/nodes/args/post_kwargs"); - self.$require("opal/nodes/args/post_args"); + self.$require("opal/nodes/args"); + self.$require("opal/nodes/args/arity_check"); self.$require("opal/nodes/iter"); self.$require("opal/nodes/def"); self.$require("opal/nodes/defs"); @@ -52178,135 +59428,332 @@ Opal.modules["opal/nodes"] = function(Opal) { self.$require("opal/nodes/array"); self.$require("opal/nodes/defined"); self.$require("opal/nodes/masgn"); - return self.$require("opal/nodes/arglist"); + self.$require("opal/nodes/arglist"); + self.$require("opal/nodes/x_string"); + return self.$require("opal/nodes/lambda"); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/eof_content"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; Opal.add_stubs(['$empty?', '$[]', '$last_token_position', '$drop_while', '$lines', '$==', '$join', '$private', '$last', '$end_pos']); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { - function $EofContent(){}; - var self = $EofContent = $klass($base, $super, 'EofContent', $EofContent); + var self = $klass($base, $super, 'EofContent'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_EofContent_initialize_1, TMP_EofContent_eof_3, TMP_EofContent_last_token_position_4; + var $nesting = [self].concat($parent_nesting), $EofContent_initialize$1, $EofContent_eof$2, $EofContent_last_token_position$4; - def.tokens = def.source = nil; + self.$$prototype.tokens = self.$$prototype.source = nil; Opal.const_set($nesting[0], 'DATA_SEPARATOR', "__END__\n"); - Opal.defn(self, '$initialize', TMP_EofContent_initialize_1 = function $$initialize(tokens, source) { + Opal.def(self, '$initialize', $EofContent_initialize$1 = function $$initialize(tokens, source) { var self = this; self.tokens = tokens; return (self.source = source); - }, TMP_EofContent_initialize_1.$$arity = 2); + }, $EofContent_initialize$1.$$arity = 2); - Opal.defn(self, '$eof', TMP_EofContent_eof_3 = function $$eof() { - var TMP_2, $a, self = this, eof_content = nil; + Opal.def(self, '$eof', $EofContent_eof$2 = function $$eof() { + var $$3, $a, self = this, eof_content = nil; if ($truthy(self.tokens['$empty?']())) { return nil}; eof_content = self.source['$[]'](Opal.Range.$new(self.$last_token_position(), -1, false)); if ($truthy(eof_content)) { - } else { + } else { return nil }; - eof_content = $send(eof_content.$lines(), 'drop_while', [], (TMP_2 = function(line){var self = TMP_2.$$s || this; -if (line == null) line = nil; - return line['$==']("\n")}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); + eof_content = $send(eof_content.$lines(), 'drop_while', [], ($$3 = function(line){var self = $$3.$$s || this; + + + + if (line == null) { + line = nil; + }; + return line['$==']("\n");}, $$3.$$s = self, $$3.$$arity = 1, $$3)); if (eof_content['$[]'](0)['$==']("__END__\n")) { eof_content = ($truthy($a = eof_content['$[]']($range(1, -1, false))) ? $a : []); return eof_content.$join(); } else if (eof_content['$=='](["__END__"])) { return "" - } else { + } else { return nil }; - }, TMP_EofContent_eof_3.$$arity = 0); + }, $EofContent_eof$2.$$arity = 0); self.$private(); - return (Opal.defn(self, '$last_token_position', TMP_EofContent_last_token_position_4 = function $$last_token_position() { + return (Opal.def(self, '$last_token_position', $EofContent_last_token_position$4 = function $$last_token_position() { var $a, $b, self = this, _ = nil, last_token_info = nil, last_token_range = nil; $b = self.tokens.$last(), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_info = ($a[1] == null ? nil : $a[1])), $b; $b = last_token_info, $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_range = ($a[1] == null ? nil : $a[1])), $b; return last_token_range.$end_pos(); - }, TMP_EofContent_last_token_position_4.$$arity = 0), nil) && 'last_token_position'; + }, $EofContent_last_token_position$4.$$arity = 0), nil) && 'last_token_position'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ -Opal.modules["opal/compiler"] = function(Opal) { +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/errors"] = function(Opal) { + function $rb_minus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); + } function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + + Opal.add_stubs(['$attr_reader', '$attr_accessor', '$new', '$respond_to?', '$location', '$location=', '$-', '$diagnostic', '$diagnostic=', '$to_a', '$backtrace', '$unshift', '$to_s', '$set_backtrace', '$path', '$lineno', '$+', '$label', '$line', '$lineno=', '$source_line', '$label=', '$expression']); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $Opal_opal_location_from_error$2, $Opal_add_opal_location_to_error$3; + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Error'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'StandardError'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'GemNotFound'); + + var $nesting = [self].concat($parent_nesting), $GemNotFound_initialize$1; + + + self.$attr_reader("gem_name"); + return (Opal.def(self, '$initialize', $GemNotFound_initialize$1 = function $$initialize(gem_name) { + var $iter = $GemNotFound_initialize$1.$$p, $yield = $iter || nil, self = this; + + if ($iter) $GemNotFound_initialize$1.$$p = null; + + self.gem_name = gem_name; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $GemNotFound_initialize$1, false), ["" + "can't find gem " + (gem_name)], null); + }, $GemNotFound_initialize$1.$$arity = 1), nil) && 'initialize'; + })($nesting[0], $$($nesting, 'Error'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'CompilationError'); + + var $nesting = [self].concat($parent_nesting); + + return self.$attr_accessor("location") + })($nesting[0], $$($nesting, 'Error'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ParsingError'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'CompilationError'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RewritingError'); + + var $nesting = [self].concat($parent_nesting); + + return nil + })($nesting[0], $$($nesting, 'ParsingError'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SyntaxError'); + + var $nesting = [self].concat($parent_nesting); + + return self.$attr_accessor("location") + })($nesting[0], $$$('::', 'SyntaxError'), $nesting); + Opal.defs(self, '$opal_location_from_error', $Opal_opal_location_from_error$2 = function $$opal_location_from_error(error) { + var self = this, opal_location = nil, $writer = nil; + + + opal_location = $$($nesting, 'OpalBacktraceLocation').$new(); + if ($truthy(error['$respond_to?']("location"))) { + + $writer = [error.$location()]; + $send(opal_location, 'location=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];}; + if ($truthy(error['$respond_to?']("diagnostic"))) { + + $writer = [error.$diagnostic()]; + $send(opal_location, 'diagnostic=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];}; + return opal_location; + }, $Opal_opal_location_from_error$2.$$arity = 1); + Opal.defs(self, '$add_opal_location_to_error', $Opal_add_opal_location_to_error$3 = function $$add_opal_location_to_error(opal_location, error) { + var self = this, backtrace = nil; + + + backtrace = error.$backtrace().$to_a(); + backtrace.$unshift(opal_location.$to_s()); + error.$set_backtrace(backtrace); + return error; + }, $Opal_add_opal_location_to_error$3.$$arity = 2); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OpalBacktraceLocation'); + + var $nesting = [self].concat($parent_nesting), $OpalBacktraceLocation_initialize$4, $OpalBacktraceLocation_to_s$5, $OpalBacktraceLocation_diagnostic$eq$6, $OpalBacktraceLocation_location$eq$7; + + + self.$attr_accessor("path", "lineno", "label"); + + Opal.def(self, '$initialize', $OpalBacktraceLocation_initialize$4 = function $$initialize(path, lineno, label) { + var $a, self = this; + + + + if (path == null) { + path = nil; + }; + + if (lineno == null) { + lineno = nil; + }; + + if (label == null) { + label = nil; + }; + return $a = [path, lineno, label], (self.path = $a[0]), (self.lineno = $a[1]), (self.label = $a[2]), $a; + }, $OpalBacktraceLocation_initialize$4.$$arity = -1); + + Opal.def(self, '$to_s', $OpalBacktraceLocation_to_s$5 = function $$to_s() { + var self = this, string = nil; + + + string = self.$path(); + if ($truthy(self.$lineno())) { + string = $rb_plus(string, "" + ":" + (self.$lineno()))}; + string = $rb_plus(string, ":in "); + if ($truthy(self.$label())) { + string = $rb_plus(string, "" + "`" + (self.$label()) + "'") + } else { + string = $rb_plus(string, "unknown") + }; + return string; + }, $OpalBacktraceLocation_to_s$5.$$arity = 0); + Opal.alias(self, "line", "lineno"); + + Opal.def(self, '$diagnostic=', $OpalBacktraceLocation_diagnostic$eq$6 = function(diagnostic) { + var self = this, $writer = nil; + + + if ($truthy(diagnostic)) { + } else { + return nil + }; + + $writer = [diagnostic.$location()]; + $send(self, 'location=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, $OpalBacktraceLocation_diagnostic$eq$6.$$arity = 1); + return (Opal.def(self, '$location=', $OpalBacktraceLocation_location$eq$7 = function(location) { + var self = this, $writer = nil; + + + if ($truthy(location)) { + } else { + return nil + }; + + $writer = [location.$line()]; + $send(self, 'lineno=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(location['$respond_to?']("source_line"))) { + + $writer = [location.$source_line()]; + $send(self, 'label=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(location['$respond_to?']("expression"))) { + + $writer = [location.$expression().$source_line()]; + $send(self, 'label=', Opal.to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, $OpalBacktraceLocation_location$eq$7.$$arity = 1), nil) && 'location='; + })($nesting[0], null, $nesting); + })($nesting[0], $nesting) +}; + +/* Generated by Opal 1.0.5 */ +Opal.modules["opal/compiler"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; + function $rb_plus(lhs, rhs) { + return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); + } + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - Opal.add_stubs(['$require', '$compile', '$new', '$[]', '$define_method', '$fetch', '$!', '$include?', '$raise', '$+', '$inspect', '$compiler_option', '$attr_reader', '$attr_accessor', '$parse', '$flatten', '$process', '$join', '$map', '$to_proc', '$file', '$source=', '$-', '$default_parser', '$tokenize', '$message', '$backtrace', '$s', '$associate_locations', '$eof', '$warn', '$to_s', '$empty?', '$gsub', '$<<', '$helpers', '$new_temp', '$queue_temp', '$push_while', '$indent', '$pop_while', '$in_while?', '$==', '$fragment', '$scope', '$handlers', '$type', '$compile_to_fragments', '$error', '$returns', '$===', '$updated', '$any?', '$children', '$select', '$end_with?', '$loc', '$uses_block!', '$block_name', '$find_parent_def']); + Opal.add_stubs(['$require', '$compile', '$new', '$freeze', '$join', '$dirname', '$first', '$split', '$basename', '$to_s', '$cleanpath', '$Pathname', '$[]', '$define_method', '$fetch', '$!', '$include?', '$raise', '$inspect', '$compiler_option', '$attr_reader', '$attr_accessor', '$parse', '$re_raise_with_location', '$flatten', '$process', '$end_with?', '$code', '$last', '$<<', '$fragment', '$s', '$map', '$to_proc', '$file', '$source=', '$-', '$default_parser', '$tokenize', '$associate_locations', '$eof', '$location=', '$opal_location_from_error', '$path=', '$label', '$strip', '$lines', '$to_i', '$line', '$label=', '$message', '$set_backtrace', '$backtrace', '$add_opal_location_to_error', '$warn', '$empty?', '$gsub', '$+', '$start_with?', '$helpers', '$new_temp', '$queue_temp', '$push_while', '$indent', '$pop_while', '$in_while?', '$nil?', '$scope', '$handlers', '$type', '$compile_to_fragments', '$error', '$returns', '$===', '$updated', '$children', '$loc', '$uses_block!', '$block_name', '$find_parent_def']); self.$require("set"); self.$require("opal/parser"); self.$require("opal/fragment"); self.$require("opal/nodes"); self.$require("opal/eof_content"); + self.$require("opal/errors"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Opal_compile_1; + var $nesting = [self].concat($parent_nesting), $Opal_compile$1; - Opal.defs(self, '$compile', TMP_Opal_compile_1 = function $$compile(source, options) { + Opal.defs(self, '$compile', $Opal_compile$1 = function $$compile(source, options) { var self = this; + + if (options == null) { options = $hash2([], {}); - } - return Opal.const_get_relative($nesting, 'Compiler').$new(source, options).$compile() - }, TMP_Opal_compile_1.$$arity = -2); + }; + return $$($nesting, 'Compiler').$new(source, options).$compile(); + }, $Opal_compile$1.$$arity = -2); (function($base, $super, $parent_nesting) { - function $Compiler(){}; - var self = $Compiler = $klass($base, $super, 'Compiler', $Compiler); + var self = $klass($base, $super, 'Compiler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Compiler_compiler_option_4, TMP_Compiler_initialize_5, TMP_Compiler_compile_6, TMP_Compiler_parse_7, TMP_Compiler_source_map_8, TMP_Compiler_helpers_9, TMP_Compiler_operator_helpers_10, TMP_Compiler_method_calls_11, TMP_Compiler_error_12, TMP_Compiler_warning_13, TMP_Compiler_parser_indent_14, TMP_Compiler_s_15, TMP_Compiler_fragment_16, TMP_Compiler_unique_temp_17, TMP_Compiler_helper_18, TMP_Compiler_indent_19, TMP_Compiler_with_temp_20, TMP_Compiler_in_while_21, TMP_Compiler_in_ensure_23, TMP_Compiler_in_ensure$q_24, TMP_Compiler_in_case_25, TMP_Compiler_in_while$q_26, TMP_Compiler_process_27, TMP_Compiler_handlers_28, TMP_Compiler_requires_29, TMP_Compiler_required_trees_30, TMP_Compiler_returns_35, TMP_Compiler_handle_block_given_call_36; + var $nesting = [self].concat($parent_nesting), $Compiler_module_name$2, $Compiler_compiler_option$3, $Compiler_initialize$6, $Compiler_compile$7, $Compiler_parse$9, $Compiler_source_map$11, $Compiler_helpers$12, $Compiler_operator_helpers$13, $Compiler_method_calls$14, $Compiler_error$15, $Compiler_re_raise_with_location$16, $Compiler_warning$17, $Compiler_parser_indent$18, $Compiler_s$19, $Compiler_fragment$20, $Compiler_unique_temp$21, $Compiler_helper$22, $Compiler_indent$23, $Compiler_with_temp$24, $Compiler_in_while$25, $Compiler_in_case$27, $Compiler_in_while$ques$28, $Compiler_process$29, $Compiler_handlers$30, $Compiler_requires$31, $Compiler_required_trees$32, $Compiler_returns$33, $Compiler_handle_block_given_call$35; - def.sexp = def.fragments = def.source = def.buffer = def.parser = def.helpers = def.operator_helpers = def.method_calls = def.indent = def.unique = def.scope = def.in_ensure = def.case_stmt = def.handlers = def.requires = def.required_trees = nil; + self.$$prototype.fragments = self.$$prototype.source = self.$$prototype.buffer = self.$$prototype.helpers = self.$$prototype.operator_helpers = self.$$prototype.method_calls = self.$$prototype.indent = self.$$prototype.unique = self.$$prototype.scope = self.$$prototype.case_stmt = self.$$prototype.handlers = self.$$prototype.requires = self.$$prototype.required_trees = nil; Opal.const_set($nesting[0], 'INDENT', " "); - Opal.const_set($nesting[0], 'COMPARE', ["<", ">", "<=", ">="]); - Opal.defs(self, '$compiler_option', TMP_Compiler_compiler_option_4 = function $$compiler_option(name, default_value, options) { - var $a, TMP_2, self = this, mid = nil, valid_values = nil; + Opal.const_set($nesting[0], 'COMPARE', ["<", ">", "<=", ">="].$freeze()); + Opal.defs(self, '$module_name', $Compiler_module_name$2 = function $$module_name(path) { + var self = this; + + path = $$($nesting, 'File').$join($$($nesting, 'File').$dirname(path), $$($nesting, 'File').$basename(path).$split(".").$first()); + return self.$Pathname(path).$cleanpath().$to_s(); + }, $Compiler_module_name$2.$$arity = 1); + Opal.defs(self, '$compiler_option', $Compiler_compiler_option$3 = function $$compiler_option(name, default_value, options) { + var $a, $$4, self = this, mid = nil, valid_values = nil; + + + if (options == null) { options = $hash2([], {}); - } - + }; mid = options['$[]']("as"); valid_values = options['$[]']("valid_values"); - return $send(self, 'define_method', [($truthy($a = mid) ? $a : name)], (TMP_2 = function(){var self = TMP_2.$$s || this, TMP_3, $b, value = nil; + return $send(self, 'define_method', [($truthy($a = mid) ? $a : name)], ($$4 = function(){var self = $$4.$$s || this, $$5, $b, value = nil; if (self.options == null) self.options = nil; - value = $send(self.options, 'fetch', [name], (TMP_3 = function(){var self = TMP_3.$$s || this; + value = $send(self.options, 'fetch', [name], ($$5 = function(){var self = $$5.$$s || this; - return default_value}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3)); + return default_value}, $$5.$$s = self, $$5.$$arity = 0, $$5)); if ($truthy(($truthy($b = valid_values) ? valid_values['$include?'](value)['$!']() : $b))) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), $rb_plus("" + "invalid value " + (value.$inspect()) + " for option " + (name.$inspect()) + " ", "" + "(valid values: " + (valid_values.$inspect()) + ")"))}; - return value;}, TMP_2.$$s = self, TMP_2.$$arity = 0, TMP_2)); - }, TMP_Compiler_compiler_option_4.$$arity = -3); + self.$raise($$($nesting, 'ArgumentError'), "" + ("" + "invalid value " + (value.$inspect()) + " for option " + (name.$inspect()) + " ") + ("" + "(valid values: " + (valid_values.$inspect()) + ")"))}; + return value;}, $$4.$$s = self, $$4.$$arity = 0, $$4)); + }, $Compiler_compiler_option$3.$$arity = -3); self.$compiler_option("file", "(file)"); self.$compiler_option("method_missing", true, $hash2(["as"], {"as": "method_missing?"})); self.$compiler_option("arity_check", false, $hash2(["as"], {"as": "arity_check?"})); @@ -52326,268 +59773,287 @@ Opal.modules["opal/compiler"] = function(Opal) { self.$attr_reader("eof_content"); self.$attr_reader("comments"); - Opal.defn(self, '$initialize', TMP_Compiler_initialize_5 = function $$initialize(source, options) { + Opal.def(self, '$initialize', $Compiler_initialize$6 = function $$initialize(source, options) { var self = this; + + if (options == null) { options = $hash2([], {}); - } - + }; self.source = source; self.indent = ""; self.unique = 0; self.options = options; - self.comments = Opal.const_get_relative($nesting, 'Hash').$new([]); + self.comments = $$($nesting, 'Hash').$new([]); return (self.case_stmt = nil); - }, TMP_Compiler_initialize_5.$$arity = -2); + }, $Compiler_initialize$6.$$arity = -2); - Opal.defn(self, '$compile', TMP_Compiler_compile_6 = function $$compile() { - var self = this; + Opal.def(self, '$compile', $Compiler_compile$7 = function $$compile() { + var $$8, self = this; self.$parse(); - self.fragments = self.$process(self.sexp).$flatten(); + self.fragments = $send(self, 're_raise_with_location', [], ($$8 = function(){var self = $$8.$$s || this; + if (self.sexp == null) self.sexp = nil; + + return self.$process(self.sexp).$flatten()}, $$8.$$s = self, $$8.$$arity = 0, $$8)); + if ($truthy(self.fragments.$last().$code()['$end_with?']("\n"))) { + } else { + self.fragments['$<<'](self.$fragment("\n", nil, self.$s("newline"))) + }; return (self.result = $send(self.fragments, 'map', [], "code".$to_proc()).$join("")); - }, TMP_Compiler_compile_6.$$arity = 0); + }, $Compiler_compile$7.$$arity = 0); - Opal.defn(self, '$parse', TMP_Compiler_parse_7 = function $$parse() { - var $a, $b, self = this, $writer = nil, sexp = nil, comments = nil, tokens = nil, error = nil; + Opal.def(self, '$parse', $Compiler_parse$9 = function $$parse() { + var $a, $b, $$10, self = this, $writer = nil, sexp = nil, comments = nil, tokens = nil; - self.buffer = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'Source'), 'Buffer').$new(self.$file(), 1); + self.buffer = $$$($$$($$$('::', 'Opal'), 'Parser'), 'SourceBuffer').$new(self.$file(), 1); $writer = [self.source]; $send(self.buffer, 'source=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - self.parser = Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Parser').$default_parser(); - - try { - $b = self.parser.$tokenize(self.buffer), $a = Opal.to_ary($b), (sexp = ($a[0] == null ? nil : $a[0])), (comments = ($a[1] == null ? nil : $a[1])), (tokens = ($a[2] == null ? nil : $a[2])), $b - } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'SyntaxError')])) {error = $err; - try { - self.$raise(Opal.const_get_qualified('::', 'SyntaxError'), error.$message(), error.$backtrace()) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; + self.parser = $$$($$($nesting, 'Opal'), 'Parser').$default_parser(); + $b = $send(self, 're_raise_with_location', [], ($$10 = function(){var self = $$10.$$s || this; + if (self.parser == null) self.parser = nil; + if (self.buffer == null) self.buffer = nil; + + return self.parser.$tokenize(self.buffer)}, $$10.$$s = self, $$10.$$arity = 0, $$10)), $a = Opal.to_ary($b), (sexp = ($a[0] == null ? nil : $a[0])), (comments = ($a[1] == null ? nil : $a[1])), (tokens = ($a[2] == null ? nil : $a[2])), $b; self.sexp = self.$s("top", ($truthy($a = sexp) ? $a : self.$s("nil"))); - self.comments = Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'Source'), 'Comment').$associate_locations(sexp, comments); - return (self.eof_content = Opal.const_get_relative($nesting, 'EofContent').$new(tokens, self.source).$eof()); - }, TMP_Compiler_parse_7.$$arity = 0); + self.comments = $$$($$$($$$('::', 'Parser'), 'Source'), 'Comment').$associate_locations(sexp, comments); + return (self.eof_content = $$($nesting, 'EofContent').$new(tokens, self.source).$eof()); + }, $Compiler_parse$9.$$arity = 0); - Opal.defn(self, '$source_map', TMP_Compiler_source_map_8 = function $$source_map(source_file) { - var $a, self = this; + Opal.def(self, '$source_map', $Compiler_source_map$11 = function $$source_map() { + var self = this; - if (source_file == null) { - source_file = nil; - } - return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'SourceMap').$new(self.fragments, ($truthy($a = source_file) ? $a : self.$file())) - }, TMP_Compiler_source_map_8.$$arity = -1); + return $$$($$$($$$('::', 'Opal'), 'SourceMap'), 'File').$new(self.fragments, self.$file(), self.source) + }, $Compiler_source_map$11.$$arity = 0); - Opal.defn(self, '$helpers', TMP_Compiler_helpers_9 = function $$helpers() { + Opal.def(self, '$helpers', $Compiler_helpers$12 = function $$helpers() { var $a, self = this; - return (self.helpers = ($truthy($a = self.helpers) ? $a : Opal.const_get_relative($nesting, 'Set').$new(["breaker", "slice"]))) - }, TMP_Compiler_helpers_9.$$arity = 0); + return (self.helpers = ($truthy($a = self.helpers) ? $a : $$($nesting, 'Set').$new(["breaker", "slice"]))) + }, $Compiler_helpers$12.$$arity = 0); - Opal.defn(self, '$operator_helpers', TMP_Compiler_operator_helpers_10 = function $$operator_helpers() { + Opal.def(self, '$operator_helpers', $Compiler_operator_helpers$13 = function $$operator_helpers() { var $a, self = this; - return (self.operator_helpers = ($truthy($a = self.operator_helpers) ? $a : Opal.const_get_relative($nesting, 'Set').$new())) - }, TMP_Compiler_operator_helpers_10.$$arity = 0); + return (self.operator_helpers = ($truthy($a = self.operator_helpers) ? $a : $$($nesting, 'Set').$new())) + }, $Compiler_operator_helpers$13.$$arity = 0); - Opal.defn(self, '$method_calls', TMP_Compiler_method_calls_11 = function $$method_calls() { + Opal.def(self, '$method_calls', $Compiler_method_calls$14 = function $$method_calls() { var $a, self = this; - return (self.method_calls = ($truthy($a = self.method_calls) ? $a : Opal.const_get_relative($nesting, 'Set').$new())) - }, TMP_Compiler_method_calls_11.$$arity = 0); + return (self.method_calls = ($truthy($a = self.method_calls) ? $a : $$($nesting, 'Set').$new())) + }, $Compiler_method_calls$14.$$arity = 0); - Opal.defn(self, '$error', TMP_Compiler_error_12 = function $$error(msg, line) { - var self = this; + Opal.def(self, '$error', $Compiler_error$15 = function $$error(msg, line) { + var self = this, error = nil, $writer = nil; + + if (line == null) { line = nil; + }; + error = $$$($$$('::', 'Opal'), 'SyntaxError').$new(msg); + + $writer = [$$$($$($nesting, 'Opal'), 'OpalBacktraceLocation').$new(self.$file(), line)]; + $send(error, 'location=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$raise(error); + }, $Compiler_error$15.$$arity = -2); + + Opal.def(self, '$re_raise_with_location', $Compiler_re_raise_with_location$16 = function $$re_raise_with_location() { + var $a, $iter = $Compiler_re_raise_with_location$16.$$p, $yield = $iter || nil, self = this, error = nil, opal_location = nil, $writer = nil, new_error = nil; + + if ($iter) $Compiler_re_raise_with_location$16.$$p = null; + try { + return Opal.yieldX($yield, []); + } catch ($err) { + if (Opal.rescue($err, [$$($nesting, 'StandardError'), $$$($$$('::', 'Opal'), 'SyntaxError')])) {error = $err; + try { + + opal_location = $$$('::', 'Opal').$opal_location_from_error(error); + + $writer = [self.$file()]; + $send(opal_location, 'path=', Opal.to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + ($truthy($a = opal_location.$label()) ? $a : (($writer = [self.source.$lines()['$[]']($rb_minus(opal_location.$line().$to_i(), 1)).$strip()]), $send(opal_location, 'label=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); + new_error = $$$($$$('::', 'Opal'), 'SyntaxError').$new(error.$message()); + new_error.$set_backtrace(error.$backtrace()); + $$$('::', 'Opal').$add_opal_location_to_error(opal_location, new_error); + return self.$raise(new_error); + } finally { Opal.pop_exception() } + } else { throw $err; } } - return self.$raise(Opal.const_get_relative($nesting, 'SyntaxError'), "" + (msg) + " :" + (self.$file()) + ":" + (line)) - }, TMP_Compiler_error_12.$$arity = -2); + }, $Compiler_re_raise_with_location$16.$$arity = 0); - Opal.defn(self, '$warning', TMP_Compiler_warning_13 = function $$warning(msg, line) { + Opal.def(self, '$warning', $Compiler_warning$17 = function $$warning(msg, line) { var self = this; + + if (line == null) { line = nil; - } - return self.$warn("" + "WARNING: " + (msg) + " -- " + (self.$file()) + ":" + (line)) - }, TMP_Compiler_warning_13.$$arity = -2); + }; + return self.$warn("" + "warning: " + (msg) + " -- " + (self.$file()) + ":" + (line)); + }, $Compiler_warning$17.$$arity = -2); - Opal.defn(self, '$parser_indent', TMP_Compiler_parser_indent_14 = function $$parser_indent() { + Opal.def(self, '$parser_indent', $Compiler_parser_indent$18 = function $$parser_indent() { var self = this; return self.indent - }, TMP_Compiler_parser_indent_14.$$arity = 0); + }, $Compiler_parser_indent$18.$$arity = 0); - Opal.defn(self, '$s', TMP_Compiler_s_15 = function $$s(type, $a_rest) { - var self = this, children; + Opal.def(self, '$s', $Compiler_s$19 = function $$s(type, $a) { + var $post_args, children, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - children = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - children[$arg_idx - 1] = arguments[$arg_idx]; - } - return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Opal'), 'AST'), 'Node').$new(type, children) - }, TMP_Compiler_s_15.$$arity = -2); + + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + children = $post_args;; + return $$$($$$($$$('::', 'Opal'), 'AST'), 'Node').$new(type, children); + }, $Compiler_s$19.$$arity = -2); - Opal.defn(self, '$fragment', TMP_Compiler_fragment_16 = function $$fragment(str, scope, sexp) { + Opal.def(self, '$fragment', $Compiler_fragment$20 = function $$fragment(str, scope, sexp) { var self = this; + + if (sexp == null) { sexp = nil; - } - return Opal.const_get_relative($nesting, 'Fragment').$new(str, scope, sexp) - }, TMP_Compiler_fragment_16.$$arity = -3); + }; + return $$($nesting, 'Fragment').$new(str, scope, sexp); + }, $Compiler_fragment$20.$$arity = -3); - Opal.defn(self, '$unique_temp', TMP_Compiler_unique_temp_17 = function $$unique_temp(name) { + Opal.def(self, '$unique_temp', $Compiler_unique_temp$21 = function $$unique_temp(name) { var $a, self = this, unique = nil; name = name.$to_s(); if ($truthy(($truthy($a = name) ? name['$empty?']()['$!']() : $a))) { - name = (("" + "_") + (name)).$gsub("?", "$q").$gsub("!", "$B").$gsub("=", "$eq").$gsub("<", "$lt").$gsub(">", "$gt").$gsub(/[^\w\$]/, "$")}; + name = name.$to_s().$gsub("<=>", "$lt_eq_gt").$gsub("===", "$eq_eq_eq").$gsub("==", "$eq_eq").$gsub("=~", "$eq_tilde").$gsub("!~", "$excl_tilde").$gsub("!=", "$not_eq").$gsub("<=", "$lt_eq").$gsub(">=", "$gt_eq").$gsub("=", "$eq").$gsub("?", "$ques").$gsub("!", "$excl").$gsub("/", "$slash").$gsub("%", "$percent").$gsub("+", "$plus").$gsub("-", "$minus").$gsub("<", "$lt").$gsub(">", "$gt").$gsub(/[^\w\$]/, "$")}; unique = (self.unique = $rb_plus(self.unique, 1)); - return "" + "TMP" + (name) + "_" + (unique); - }, TMP_Compiler_unique_temp_17.$$arity = 1); + return "" + ((function() {if ($truthy(name['$start_with?']("$"))) { + return nil + } else { + return "$" + }; return nil; })()) + (name) + "$" + (unique); + }, $Compiler_unique_temp$21.$$arity = 1); - Opal.defn(self, '$helper', TMP_Compiler_helper_18 = function $$helper(name) { + Opal.def(self, '$helper', $Compiler_helper$22 = function $$helper(name) { var self = this; return self.$helpers()['$<<'](name) - }, TMP_Compiler_helper_18.$$arity = 1); + }, $Compiler_helper$22.$$arity = 1); - Opal.defn(self, '$indent', TMP_Compiler_indent_19 = function $$indent() { - var self = this, $iter = TMP_Compiler_indent_19.$$p, block = $iter || nil, indent = nil, res = nil; + Opal.def(self, '$indent', $Compiler_indent$23 = function $$indent() { + var $iter = $Compiler_indent$23.$$p, $yield = $iter || nil, self = this, indent = nil, res = nil; - if ($iter) TMP_Compiler_indent_19.$$p = null; + if ($iter) $Compiler_indent$23.$$p = null; indent = self.indent; - self.indent = $rb_plus(self.indent, Opal.const_get_relative($nesting, 'INDENT')); + self.indent = $rb_plus(self.indent, $$($nesting, 'INDENT')); self.space = "" + "\n" + (self.indent); - res = Opal.yieldX(block, []); + res = Opal.yieldX($yield, []); self.indent = indent; self.space = "" + "\n" + (self.indent); return res; - }, TMP_Compiler_indent_19.$$arity = 0); + }, $Compiler_indent$23.$$arity = 0); - Opal.defn(self, '$with_temp', TMP_Compiler_with_temp_20 = function $$with_temp() { - var self = this, $iter = TMP_Compiler_with_temp_20.$$p, block = $iter || nil, tmp = nil, res = nil; + Opal.def(self, '$with_temp', $Compiler_with_temp$24 = function $$with_temp() { + var $iter = $Compiler_with_temp$24.$$p, $yield = $iter || nil, self = this, tmp = nil, res = nil; - if ($iter) TMP_Compiler_with_temp_20.$$p = null; + if ($iter) $Compiler_with_temp$24.$$p = null; tmp = self.scope.$new_temp(); - res = Opal.yield1(block, tmp); + res = Opal.yield1($yield, tmp); self.scope.$queue_temp(tmp); return res; - }, TMP_Compiler_with_temp_20.$$arity = 0); + }, $Compiler_with_temp$24.$$arity = 0); - Opal.defn(self, '$in_while', TMP_Compiler_in_while_21 = function $$in_while() { - var TMP_22, self = this, $iter = TMP_Compiler_in_while_21.$$p, $yield = $iter || nil, result = nil; + Opal.def(self, '$in_while', $Compiler_in_while$25 = function $$in_while() { + var $$26, $iter = $Compiler_in_while$25.$$p, $yield = $iter || nil, self = this, result = nil; - if ($iter) TMP_Compiler_in_while_21.$$p = null; + if ($iter) $Compiler_in_while$25.$$p = null; if (($yield !== nil)) { - } else { + } else { return nil }; self.while_loop = self.scope.$push_while(); - result = $send(self, 'indent', [], (TMP_22 = function(){var self = TMP_22.$$s || this; + result = $send(self, 'indent', [], ($$26 = function(){var self = $$26.$$s || this; - return Opal.yieldX($yield, []);}, TMP_22.$$s = self, TMP_22.$$arity = 0, TMP_22)); + return Opal.yieldX($yield, []);}, $$26.$$s = self, $$26.$$arity = 0, $$26)); self.scope.$pop_while(); return result; - }, TMP_Compiler_in_while_21.$$arity = 0); - - Opal.defn(self, '$in_ensure', TMP_Compiler_in_ensure_23 = function $$in_ensure() { - var self = this, $iter = TMP_Compiler_in_ensure_23.$$p, $yield = $iter || nil, result = nil; - - if ($iter) TMP_Compiler_in_ensure_23.$$p = null; - - if (($yield !== nil)) { - } else { - return nil - }; - self.in_ensure = true; - result = Opal.yieldX($yield, []); - self.in_ensure = false; - return result; - }, TMP_Compiler_in_ensure_23.$$arity = 0); - - Opal.defn(self, '$in_ensure?', TMP_Compiler_in_ensure$q_24 = function() { - var self = this; - - return self.in_ensure['$!']()['$!']() - }, TMP_Compiler_in_ensure$q_24.$$arity = 0); + }, $Compiler_in_while$25.$$arity = 0); - Opal.defn(self, '$in_case', TMP_Compiler_in_case_25 = function $$in_case() { - var self = this, $iter = TMP_Compiler_in_case_25.$$p, $yield = $iter || nil, old = nil; + Opal.def(self, '$in_case', $Compiler_in_case$27 = function $$in_case() { + var $iter = $Compiler_in_case$27.$$p, $yield = $iter || nil, self = this, old = nil; - if ($iter) TMP_Compiler_in_case_25.$$p = null; + if ($iter) $Compiler_in_case$27.$$p = null; if (($yield !== nil)) { - } else { + } else { return nil }; old = self.case_stmt; self.case_stmt = $hash2([], {}); Opal.yieldX($yield, []); return (self.case_stmt = old); - }, TMP_Compiler_in_case_25.$$arity = 0); + }, $Compiler_in_case$27.$$arity = 0); - Opal.defn(self, '$in_while?', TMP_Compiler_in_while$q_26 = function() { + Opal.def(self, '$in_while?', $Compiler_in_while$ques$28 = function() { var self = this; return self.scope['$in_while?']() - }, TMP_Compiler_in_while$q_26.$$arity = 0); + }, $Compiler_in_while$ques$28.$$arity = 0); - Opal.defn(self, '$process', TMP_Compiler_process_27 = function $$process(sexp, level) { + Opal.def(self, '$process', $Compiler_process$29 = function $$process(sexp, level) { var self = this, handler = nil; + + if (level == null) { level = "expr"; - } - - if (sexp['$=='](nil)) { + }; + if ($truthy(sexp['$nil?']())) { return self.$fragment("", self.$scope())}; if ($truthy((handler = self.$handlers()['$[]'](sexp.$type())))) { return handler.$new(sexp, level, self).$compile_to_fragments() - } else { + } else { return self.$error("" + "Unsupported sexp: " + (sexp.$type())) }; - }, TMP_Compiler_process_27.$$arity = -2); + }, $Compiler_process$29.$$arity = -2); - Opal.defn(self, '$handlers', TMP_Compiler_handlers_28 = function $$handlers() { + Opal.def(self, '$handlers', $Compiler_handlers$30 = function $$handlers() { var $a, self = this; - return (self.handlers = ($truthy($a = self.handlers) ? $a : Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Opal'), 'Nodes'), 'Base').$handlers())) - }, TMP_Compiler_handlers_28.$$arity = 0); + return (self.handlers = ($truthy($a = self.handlers) ? $a : $$$($$$($$($nesting, 'Opal'), 'Nodes'), 'Base').$handlers())) + }, $Compiler_handlers$30.$$arity = 0); - Opal.defn(self, '$requires', TMP_Compiler_requires_29 = function $$requires() { + Opal.def(self, '$requires', $Compiler_requires$31 = function $$requires() { var $a, self = this; return (self.requires = ($truthy($a = self.requires) ? $a : [])) - }, TMP_Compiler_requires_29.$$arity = 0); + }, $Compiler_requires$31.$$arity = 0); - Opal.defn(self, '$required_trees', TMP_Compiler_required_trees_30 = function $$required_trees() { + Opal.def(self, '$required_trees', $Compiler_required_trees$32 = function $$required_trees() { var $a, self = this; return (self.required_trees = ($truthy($a = self.required_trees) ? $a : [])) - }, TMP_Compiler_required_trees_30.$$arity = 0); + }, $Compiler_required_trees$32.$$arity = 0); - Opal.defn(self, '$returns', TMP_Compiler_returns_35 = function $$returns(sexp) { - var $a, $b, TMP_31, TMP_32, TMP_33, TMP_34, self = this, $case = nil, when_sexp = nil, then_sexp = nil, body_sexp = nil, resbodies = nil, else_sexp = nil, klass = nil, lvar = nil, body = nil, rescue_sexp = nil, ensure_body = nil, rest = nil, last = nil, strs = nil, multiline = nil, first_child = nil, rest_children = nil, old_value = nil, cond = nil, true_body = nil, false_body = nil; + Opal.def(self, '$returns', $Compiler_returns$33 = function $$returns(sexp) { + var $a, $b, $$34, self = this, $case = nil, when_sexp = nil, then_sexp = nil, body_sexp = nil, resbodies = nil, else_sexp = nil, klass = nil, lvar = nil, body = nil, rescue_sexp = nil, ensure_body = nil, rest = nil, last = nil, cond = nil, true_body = nil, false_body = nil; if ($truthy(sexp)) { - } else { + } else { return self.$returns(self.$s("nil")) }; return (function() {$case = sexp.$type(); @@ -52599,9 +60065,14 @@ Opal.modules["opal/compiler"] = function(Opal) { return sexp.$updated(nil, [].concat(Opal.to_a(when_sexp)).concat([self.$returns(then_sexp)]));} else if ("rescue"['$===']($case)) { $a = [].concat(Opal.to_a(sexp)), (body_sexp = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (resbodies = $slice.call($a, 1, $b)), (else_sexp = ($a[$b] == null ? nil : $a[$b])), $a; - resbodies = $send(resbodies, 'map', [], (TMP_31 = function(resbody){var self = TMP_31.$$s || this; -if (resbody == null) resbody = nil; - return self.$returns(resbody)}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31)); + resbodies = $send(resbodies, 'map', [], ($$34 = function(resbody){var self = $$34.$$s || this; + + + + if (resbody == null) { + resbody = nil; + }; + return self.$returns(resbody);}, $$34.$$s = self, $$34.$$arity = 1, $$34)); if ($truthy(else_sexp)) { else_sexp = self.$returns(else_sexp)}; return sexp.$updated(nil, [self.$returns(body_sexp)].concat(Opal.to_a(resbodies)).concat([else_sexp]));} @@ -52617,41 +60088,13 @@ if (resbody == null) resbody = nil; return sexp.$updated(nil, [].concat(Opal.to_a(rest)).concat([self.$returns(last)]));} else if ("while"['$===']($case) || "until"['$===']($case) || "while_post"['$===']($case) || "until_post"['$===']($case)) {return sexp} else if ("return"['$===']($case) || "js_return"['$===']($case) || "returnable_yield"['$===']($case)) {return sexp} - else if ("xstr"['$===']($case)) {if ($truthy(sexp.$children()['$any?']())) { - - strs = $send($send(sexp.$children(), 'select', [], (TMP_32 = function(child){var self = TMP_32.$$s || this; -if (child == null) child = nil; - return child.$type()['$==']("str")}, TMP_32.$$s = self, TMP_32.$$arity = 1, TMP_32)), 'map', [], (TMP_33 = function(child){var self = TMP_33.$$s || this; -if (child == null) child = nil; - return child.$children()['$[]'](0)}, TMP_33.$$s = self, TMP_33.$$arity = 1, TMP_33)); - multiline = $send(strs, 'any?', [], (TMP_34 = function(str){var self = TMP_34.$$s || this; -if (str == null) str = nil; - return str['$end_with?'](";\n")}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34)); - $a = [].concat(Opal.to_a(sexp)), (first_child = ($a[0] == null ? nil : $a[0])), (rest_children = $slice.call($a, 1)), $a; - if ($truthy(multiline)) { - return sexp - } else if (first_child.$type()['$==']("str")) { - - old_value = first_child.$children()['$[]'](0); - if ($truthy(old_value['$include?']("return"))) { - return sexp - } else { - - first_child = self.$s("js_return", first_child); - return sexp.$updated(nil, [first_child].concat(Opal.to_a(rest_children))); - }; - } else { - return self.$s("js_return", sexp) - }; - } else { - return self.$returns(self.$s("str", "")) - }} + else if ("xstr"['$===']($case)) {return sexp.$updated(nil, [$send(self, 's', ["js_return"].concat(Opal.to_a(sexp.$children())))])} else if ("if"['$===']($case)) { $a = [].concat(Opal.to_a(sexp)), (cond = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; return sexp.$updated(nil, [cond, self.$returns(true_body), self.$returns(false_body)]);} else {return self.$s("js_return", sexp).$updated(nil, nil, $hash2(["location"], {"location": sexp.$loc()}))}})(); - }, TMP_Compiler_returns_35.$$arity = 1); - return (Opal.defn(self, '$handle_block_given_call', TMP_Compiler_handle_block_given_call_36 = function $$handle_block_given_call(sexp) { + }, $Compiler_returns$33.$$arity = 1); + return (Opal.def(self, '$handle_block_given_call', $Compiler_handle_block_given_call$35 = function $$handle_block_given_call(sexp) { var $a, self = this, scope = nil; @@ -52660,153 +60103,157 @@ if (str == null) str = nil; return self.$fragment("" + "(" + (self.scope.$block_name()) + " !== nil)", self.$scope(), sexp) } else if ($truthy(($truthy($a = (scope = self.scope.$find_parent_def())) ? scope.$block_name() : $a))) { return self.$fragment("" + "(" + (scope.$block_name()) + " !== nil)", scope, sexp) - } else { + } else { return self.$fragment("false", scope, sexp) }; - }, TMP_Compiler_handle_block_given_call_36.$$arity = 1), nil) && 'handle_block_given_call'; + }, $Compiler_handle_block_given_call$35.$$arity = 1), nil) && 'handle_block_given_call'; })($nesting[0], null, $nesting); })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal/erb"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$require', '$compile', '$new', '$fix_quotes', '$find_contents', '$find_code', '$wrap_compiled', '$require_erb', '$prepared_source', '$gsub', '$+', '$=~', '$sub']); + Opal.add_stubs(['$require', '$compile', '$new', '$fix_quotes', '$find_contents', '$find_code', '$wrap_compiled', '$require_erb', '$prepared_source', '$gsub', '$+', '$last_match', '$=~', '$sub']); self.$require("opal/compiler"); return (function($base, $parent_nesting) { - var $Opal, self = $Opal = $module($base, 'Opal'); + var self = $module($base, 'Opal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { - var $ERB, self = $ERB = $module($base, 'ERB'); + var self = $module($base, 'ERB'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ERB_compile_1; + var $nesting = [self].concat($parent_nesting), $ERB_compile$1; - Opal.defs(self, '$compile', TMP_ERB_compile_1 = function $$compile(source, file_name) { + Opal.defs(self, '$compile', $ERB_compile$1 = function $$compile(source, file_name) { var self = this; + + if (file_name == null) { file_name = "(erb)"; - } - return Opal.const_get_relative($nesting, 'Compiler').$new(source, file_name).$compile() - }, TMP_ERB_compile_1.$$arity = -2); + }; + return $$($nesting, 'Compiler').$new(source, file_name).$compile(); + }, $ERB_compile$1.$$arity = -2); (function($base, $super, $parent_nesting) { - function $Compiler(){}; - var self = $Compiler = $klass($base, $super, 'Compiler', $Compiler); + var self = $klass($base, $super, 'Compiler'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Compiler_initialize_2, TMP_Compiler_prepared_source_3, TMP_Compiler_compile_4, TMP_Compiler_fix_quotes_5, TMP_Compiler_require_erb_6, TMP_Compiler_find_contents_8, TMP_Compiler_find_code_10, TMP_Compiler_wrap_compiled_11; + var $nesting = [self].concat($parent_nesting), $Compiler_initialize$2, $Compiler_prepared_source$3, $Compiler_compile$4, $Compiler_fix_quotes$5, $Compiler_require_erb$6, $Compiler_find_contents$7, $Compiler_find_code$9, $Compiler_wrap_compiled$11; - def.prepared_source = def.source = def.file_name = nil; + self.$$prototype.prepared_source = self.$$prototype.source = self.$$prototype.file_name = nil; Opal.const_set($nesting[0], 'BLOCK_EXPR', /\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/); - Opal.defn(self, '$initialize', TMP_Compiler_initialize_2 = function $$initialize(source, file_name) { + Opal.def(self, '$initialize', $Compiler_initialize$2 = function $$initialize(source, file_name) { var $a, self = this; + + if (file_name == null) { file_name = "(erb)"; - } - return $a = [source, file_name, source], (self.source = $a[0]), (self.file_name = $a[1]), (self.result = $a[2]), $a - }, TMP_Compiler_initialize_2.$$arity = -2); + }; + return $a = [source, file_name, source], (self.source = $a[0]), (self.file_name = $a[1]), (self.result = $a[2]), $a; + }, $Compiler_initialize$2.$$arity = -2); - Opal.defn(self, '$prepared_source', TMP_Compiler_prepared_source_3 = function $$prepared_source() { + Opal.def(self, '$prepared_source', $Compiler_prepared_source$3 = function $$prepared_source() { var $a, self = this, source = nil; return (self.prepared_source = ($truthy($a = self.prepared_source) ? $a : ((source = self.source), (source = self.$fix_quotes(source)), (source = self.$find_contents(source)), (source = self.$find_code(source)), (source = self.$wrap_compiled(source)), (source = self.$require_erb(source)), source))) - }, TMP_Compiler_prepared_source_3.$$arity = 0); + }, $Compiler_prepared_source$3.$$arity = 0); - Opal.defn(self, '$compile', TMP_Compiler_compile_4 = function $$compile() { + Opal.def(self, '$compile', $Compiler_compile$4 = function $$compile() { var self = this; - return Opal.const_get_relative($nesting, 'Opal').$compile(self.$prepared_source()) - }, TMP_Compiler_compile_4.$$arity = 0); + return $$($nesting, 'Opal').$compile(self.$prepared_source()) + }, $Compiler_compile$4.$$arity = 0); - Opal.defn(self, '$fix_quotes', TMP_Compiler_fix_quotes_5 = function $$fix_quotes(result) { + Opal.def(self, '$fix_quotes', $Compiler_fix_quotes$5 = function $$fix_quotes(result) { var self = this; return result.$gsub("\"", "\\\"") - }, TMP_Compiler_fix_quotes_5.$$arity = 1); + }, $Compiler_fix_quotes$5.$$arity = 1); - Opal.defn(self, '$require_erb', TMP_Compiler_require_erb_6 = function $$require_erb(result) { + Opal.def(self, '$require_erb', $Compiler_require_erb$6 = function $$require_erb(result) { var self = this; return $rb_plus("require \"erb\";", result) - }, TMP_Compiler_require_erb_6.$$arity = 1); + }, $Compiler_require_erb$6.$$arity = 1); - Opal.defn(self, '$find_contents', TMP_Compiler_find_contents_8 = function $$find_contents(result) { - var TMP_7, self = this; + Opal.def(self, '$find_contents', $Compiler_find_contents$7 = function $$find_contents(result) { + var $$8, self = this; - return $send(result, 'gsub', [/<%=([\s\S]+?)%>/], (TMP_7 = function(){var self = TMP_7.$$s || this, $a, inner = nil; + return $send(result, 'gsub', [/<%=([\s\S]+?)%>/], ($$8 = function(){var self = $$8.$$s || this, inner = nil; - inner = (($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$gsub(/\\'/, "'").$gsub(/\\"/, "\""); - if ($truthy(inner['$=~'](Opal.const_get_relative($nesting, 'BLOCK_EXPR')))) { + inner = $$($nesting, 'Regexp').$last_match(1).$gsub(/\\'/, "'").$gsub(/\\"/, "\""); + if ($truthy(inner['$=~']($$($nesting, 'BLOCK_EXPR')))) { return "" + "\")\noutput_buffer.append= " + (inner) + "\noutput_buffer.append(\"" - } else { + } else { return "" + "\")\noutput_buffer.append=(" + (inner) + ")\noutput_buffer.append(\"" - };}, TMP_7.$$s = self, TMP_7.$$arity = 0, TMP_7)) - }, TMP_Compiler_find_contents_8.$$arity = 1); + };}, $$8.$$s = self, $$8.$$arity = 0, $$8)) + }, $Compiler_find_contents$7.$$arity = 1); - Opal.defn(self, '$find_code', TMP_Compiler_find_code_10 = function $$find_code(result) { - var TMP_9, self = this; + Opal.def(self, '$find_code', $Compiler_find_code$9 = function $$find_code(result) { + var $$10, self = this; - return $send(result, 'gsub', [/<%([\s\S]+?)%>/], (TMP_9 = function(){var self = TMP_9.$$s || this, $a, inner = nil; + return $send(result, 'gsub', [/<%([\s\S]+?)%>/], ($$10 = function(){var self = $$10.$$s || this, inner = nil; - inner = (($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$gsub(/\\"/, "\""); - return "" + "\")\n" + (inner) + "\noutput_buffer.append(\"";}, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9)) - }, TMP_Compiler_find_code_10.$$arity = 1); - return (Opal.defn(self, '$wrap_compiled', TMP_Compiler_wrap_compiled_11 = function $$wrap_compiled(result) { + inner = $$($nesting, 'Regexp').$last_match(1).$gsub(/\\"/, "\""); + return "" + "\")\n" + (inner) + "\noutput_buffer.append(\"";}, $$10.$$s = self, $$10.$$arity = 0, $$10)) + }, $Compiler_find_code$9.$$arity = 1); + return (Opal.def(self, '$wrap_compiled', $Compiler_wrap_compiled$11 = function $$wrap_compiled(result) { var self = this, path = nil; - path = self.file_name.$sub(new RegExp("" + "\\.opalerb" + (Opal.const_get_relative($nesting, 'REGEXP_END'))), ""); - return (result = "" + "Template.new('" + (path) + "') do |output_buffer|\noutput_buffer.append(\"" + (result) + "\")\noutput_buffer.join\nend\n"); - }, TMP_Compiler_wrap_compiled_11.$$arity = 1), nil) && 'wrap_compiled'; + path = self.file_name.$sub(new RegExp("" + "\\.opalerb" + ($$($nesting, 'REGEXP_END'))), ""); + return "" + "Template.new('" + (path) + "') do |output_buffer|\noutput_buffer.append(\"" + (result) + "\")\noutput_buffer.join\nend\n"; + }, $Compiler_wrap_compiled$11.$$arity = 1), nil) && 'wrap_compiled'; })($nesting[0], null, $nesting); })($nesting[0], $nesting) })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["opal-parser"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2; Opal.add_stubs(['$require', '$coerce_to!', '$merge', '$compile', '$eval']); + self.$require("corelib/string/unpack"); self.$require("opal/compiler"); self.$require("opal/erb"); self.$require("opal/version"); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_eval_1, TMP_Kernel_require_remote_2; + var $nesting = [self].concat($parent_nesting), $Kernel_eval$1, $Kernel_require_remote$2; - Opal.defn(self, '$eval', TMP_Kernel_eval_1 = function(str) { + Opal.def(self, '$eval', $Kernel_eval$1 = function(str) { var self = this, default_eval_options = nil, compiling_options = nil, code = nil; - str = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](str, Opal.const_get_relative($nesting, 'String'), "to_str"); + str = $$($nesting, 'Opal')['$coerce_to!'](str, $$($nesting, 'String'), "to_str"); default_eval_options = $hash2(["file", "eval"], {"file": "(eval)", "eval": true}); compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); - code = Opal.const_get_relative($nesting, 'Opal').$compile(str, compiling_options); + code = $$($nesting, 'Opal').$compile(str, compiling_options); return (function(self) { return eval(code); })(self) ; - }, TMP_Kernel_eval_1.$$arity = 1); + }, $Kernel_eval$1.$$arity = 1); - Opal.defn(self, '$require_remote', TMP_Kernel_require_remote_2 = function $$require_remote(url) { + Opal.def(self, '$require_remote', $Kernel_require_remote$2 = function $$require_remote(url) { var self = this; @@ -52816,7 +60263,7 @@ Opal.modules["opal-parser"] = function(Opal) { r.send(''); ; return self.$eval(r.responseText); - }, TMP_Kernel_require_remote_2.$$arity = 1); + }, $Kernel_require_remote$2.$$arity = 1); })($nesting[0], $nesting); Opal.compile = function(str, options) { @@ -52853,73 +60300,73 @@ Opal.modules["opal-parser"] = function(Opal) { ; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["singleton"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$raise', '$class', '$__init__', '$instance_eval', '$new', '$extend']); return (function($base, $parent_nesting) { - var $Singleton, self = $Singleton = $module($base, 'Singleton'); + var self = $module($base, 'Singleton'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Singleton_clone_1, TMP_Singleton_dup_2; + var $nesting = [self].concat($parent_nesting), $Singleton_clone$1, $Singleton_dup$2; - Opal.defn(self, '$clone', TMP_Singleton_clone_1 = function $$clone() { + Opal.def(self, '$clone', $Singleton_clone$1 = function $$clone() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't clone instance of singleton " + (self.$class())) - }, TMP_Singleton_clone_1.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "can't clone instance of singleton " + (self.$class())) + }, $Singleton_clone$1.$$arity = 0); - Opal.defn(self, '$dup', TMP_Singleton_dup_2 = function $$dup() { + Opal.def(self, '$dup', $Singleton_dup$2 = function $$dup() { var self = this; - return self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "can't dup instance of singleton " + (self.$class())) - }, TMP_Singleton_dup_2.$$arity = 0); + return self.$raise($$($nesting, 'TypeError'), "" + "can't dup instance of singleton " + (self.$class())) + }, $Singleton_dup$2.$$arity = 0); (function($base, $parent_nesting) { - var $SingletonClassMethods, self = $SingletonClassMethods = $module($base, 'SingletonClassMethods'); + var self = $module($base, 'SingletonClassMethods'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SingletonClassMethods_clone_3, TMP_SingletonClassMethods_inherited_4; + var $nesting = [self].concat($parent_nesting), $SingletonClassMethods_clone$3, $SingletonClassMethods_inherited$4; - Opal.defn(self, '$clone', TMP_SingletonClassMethods_clone_3 = function $$clone() { - var self = this, $iter = TMP_SingletonClassMethods_clone_3.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$clone', $SingletonClassMethods_clone$3 = function $$clone() { + var $iter = $SingletonClassMethods_clone$3.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_SingletonClassMethods_clone_3.$$p = null; + if ($iter) $SingletonClassMethods_clone$3.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - return Opal.const_get_relative($nesting, 'Singleton').$__init__($send(self, Opal.find_super_dispatcher(self, 'clone', TMP_SingletonClassMethods_clone_3, false), $zuper, $iter)) - }, TMP_SingletonClassMethods_clone_3.$$arity = 0); + return $$($nesting, 'Singleton').$__init__($send(self, Opal.find_super_dispatcher(self, 'clone', $SingletonClassMethods_clone$3, false), $zuper, $iter)) + }, $SingletonClassMethods_clone$3.$$arity = 0); - Opal.defn(self, '$inherited', TMP_SingletonClassMethods_inherited_4 = function $$inherited(sub_klass) { - var self = this, $iter = TMP_SingletonClassMethods_inherited_4.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$inherited', $SingletonClassMethods_inherited$4 = function $$inherited(sub_klass) { + var $iter = $SingletonClassMethods_inherited$4.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_SingletonClassMethods_inherited_4.$$p = null; + if ($iter) $SingletonClassMethods_inherited$4.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'inherited', TMP_SingletonClassMethods_inherited_4, false), $zuper, $iter); - return Opal.const_get_relative($nesting, 'Singleton').$__init__(sub_klass); - }, TMP_SingletonClassMethods_inherited_4.$$arity = 1); + $send(self, Opal.find_super_dispatcher(self, 'inherited', $SingletonClassMethods_inherited$4, false), $zuper, $iter); + return $$($nesting, 'Singleton').$__init__(sub_klass); + }, $SingletonClassMethods_inherited$4.$$arity = 1); })($nesting[0], $nesting); (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP___init___7, TMP_included_8; + var $nesting = [self].concat($parent_nesting), $__init__$5, $included$8; - Opal.defn(self, '$__init__', TMP___init___7 = function $$__init__(klass) { - var TMP_5, TMP_instance_6, self = this; + Opal.def(self, '$__init__', $__init__$5 = function $$__init__(klass) { + var $$6, $instance$7, self = this; - $send(klass, 'instance_eval', [], (TMP_5 = function(){var self = TMP_5.$$s || this; + $send(klass, 'instance_eval', [], ($$6 = function(){var self = $$6.$$s || this; - return (self.singleton__instance__ = nil)}, TMP_5.$$s = self, TMP_5.$$arity = 0, TMP_5)); - Opal.defs(klass, '$instance', TMP_instance_6 = function $$instance() { + return (self.singleton__instance__ = nil)}, $$6.$$s = self, $$6.$$arity = 0, $$6)); + Opal.defs(klass, '$instance', $instance$7 = function $$instance() { var self = this; if (self.singleton__instance__ == null) self.singleton__instance__ = nil; @@ -52927,250 +60374,282 @@ Opal.modules["singleton"] = function(Opal) { if ($truthy(self.singleton__instance__)) { return self.singleton__instance__}; return (self.singleton__instance__ = self.$new()); - }, TMP_instance_6.$$arity = 0); + }, $instance$7.$$arity = 0); return klass; - }, TMP___init___7.$$arity = 1); - return (Opal.defn(self, '$included', TMP_included_8 = function $$included(klass) { - var self = this, $iter = TMP_included_8.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + }, $__init__$5.$$arity = 1); + return (Opal.def(self, '$included', $included$8 = function $$included(klass) { + var $iter = $included$8.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_included_8.$$p = null; + if ($iter) $included$8.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - $send(self, Opal.find_super_dispatcher(self, 'included', TMP_included_8, false), $zuper, $iter); - klass.$extend(Opal.const_get_relative($nesting, 'SingletonClassMethods')); - return Opal.const_get_relative($nesting, 'Singleton').$__init__(klass); - }, TMP_included_8.$$arity = 1), nil) && 'included'; - })(Opal.get_singleton_class(Opal.const_get_relative($nesting, 'Singleton')), $nesting); + $send(self, Opal.find_super_dispatcher(self, 'included', $included$8, false), $zuper, $iter); + klass.$extend($$($nesting, 'SingletonClassMethods')); + return $$($nesting, 'Singleton').$__init__(klass); + }, $included$8.$$arity = 1), nil) && 'included'; + })(Opal.get_singleton_class($$($nesting, 'Singleton')), $nesting); })($nesting[0], $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["delegate"] = function(Opal) { - var TMP_DelegateClass_5, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; + var $DelegateClass$5, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$__setobj__', '$__getobj__', '$respond_to?', '$__send__', '$to_proc']); (function($base, $super, $parent_nesting) { - function $Delegator(){}; - var self = $Delegator = $klass($base, $super, 'Delegator', $Delegator); + var self = $klass($base, $super, 'Delegator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Delegator_initialize_1, TMP_Delegator_method_missing_2; + var $nesting = [self].concat($parent_nesting), $Delegator_initialize$1, $Delegator_method_missing$2; - Opal.defn(self, '$initialize', TMP_Delegator_initialize_1 = function $$initialize(obj) { + Opal.def(self, '$initialize', $Delegator_initialize$1 = function $$initialize(obj) { var self = this; return self.$__setobj__(obj) - }, TMP_Delegator_initialize_1.$$arity = 1); - return (Opal.defn(self, '$method_missing', TMP_Delegator_method_missing_2 = function $$method_missing(m, $a_rest) { - var self = this, args, $iter = TMP_Delegator_method_missing_2.$$p, block = $iter || nil, target = nil; + }, $Delegator_initialize$1.$$arity = 1); + return (Opal.def(self, '$method_missing', $Delegator_method_missing$2 = function $$method_missing(m, $a) { + var $iter = $Delegator_method_missing$2.$$p, block = $iter || nil, $post_args, args, self = this, target = nil; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 1] = arguments[$arg_idx]; - } - if ($iter) TMP_Delegator_method_missing_2.$$p = null; + if ($iter) $Delegator_method_missing$2.$$p = null; + + + if ($iter) $Delegator_method_missing$2.$$p = null;; + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + args = $post_args;; target = self.$__getobj__(); if ($truthy(target['$respond_to?'](m))) { return $send(target, '__send__', [m].concat(Opal.to_a(args)), block.$to_proc()) - } else { - return $send(self, Opal.find_super_dispatcher(self, 'method_missing', TMP_Delegator_method_missing_2, false), [m].concat(Opal.to_a(args)), block.$to_proc()) + } else { + return $send(self, Opal.find_super_dispatcher(self, 'method_missing', $Delegator_method_missing$2, false), [m].concat(Opal.to_a(args)), block.$to_proc()) }; - }, TMP_Delegator_method_missing_2.$$arity = -2), nil) && 'method_missing'; - })($nesting[0], Opal.const_get_relative($nesting, 'BasicObject'), $nesting); + }, $Delegator_method_missing$2.$$arity = -2), nil) && 'method_missing'; + })($nesting[0], $$($nesting, 'BasicObject'), $nesting); (function($base, $super, $parent_nesting) { - function $SimpleDelegator(){}; - var self = $SimpleDelegator = $klass($base, $super, 'SimpleDelegator', $SimpleDelegator); + var self = $klass($base, $super, 'SimpleDelegator'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SimpleDelegator___getobj___3, TMP_SimpleDelegator___setobj___4; + var $nesting = [self].concat($parent_nesting), $SimpleDelegator___getobj__$3, $SimpleDelegator___setobj__$4; - def.delegate_sd_obj = nil; + self.$$prototype.delegate_sd_obj = nil; - Opal.defn(self, '$__getobj__', TMP_SimpleDelegator___getobj___3 = function $$__getobj__() { + Opal.def(self, '$__getobj__', $SimpleDelegator___getobj__$3 = function $$__getobj__() { var self = this; return self.delegate_sd_obj - }, TMP_SimpleDelegator___getobj___3.$$arity = 0); - return (Opal.defn(self, '$__setobj__', TMP_SimpleDelegator___setobj___4 = function $$__setobj__(obj) { + }, $SimpleDelegator___getobj__$3.$$arity = 0); + return (Opal.def(self, '$__setobj__', $SimpleDelegator___setobj__$4 = function $$__setobj__(obj) { var self = this; return (self.delegate_sd_obj = obj) - }, TMP_SimpleDelegator___setobj___4.$$arity = 1), nil) && '__setobj__'; - })($nesting[0], Opal.const_get_relative($nesting, 'Delegator'), $nesting); - return (Opal.defn(Opal.Object, '$DelegateClass', TMP_DelegateClass_5 = function $$DelegateClass(superklass) { + }, $SimpleDelegator___setobj__$4.$$arity = 1), nil) && '__setobj__'; + })($nesting[0], $$($nesting, 'Delegator'), $nesting); + return (Opal.def(self, '$DelegateClass', $DelegateClass$5 = function $$DelegateClass(superklass) { var self = this; - return Opal.const_get_relative($nesting, 'SimpleDelegator') - }, TMP_DelegateClass_5.$$arity = 1), nil) && 'DelegateClass'; + return $$($nesting, 'SimpleDelegator') + }, $DelegateClass$5.$$arity = 1), nil) && 'DelegateClass'; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["forwardable"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; Opal.add_stubs(['$each', '$respond_to?', '$def_instance_delegator', '$include?', '$start_with?', '$to_s', '$define_method', '$__send__', '$instance_variable_get', '$to_proc', '$def_single_delegator', '$define_singleton_method']); (function($base, $parent_nesting) { - var $Forwardable, self = $Forwardable = $module($base, 'Forwardable'); + var self = $module($base, 'Forwardable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Forwardable_instance_delegate_3, TMP_Forwardable_def_instance_delegators_5, TMP_Forwardable_def_instance_delegator_8; + var $nesting = [self].concat($parent_nesting), $Forwardable_instance_delegate$1, $Forwardable_def_instance_delegators$4, $Forwardable_def_instance_delegator$6; - Opal.defn(self, '$instance_delegate', TMP_Forwardable_instance_delegate_3 = function $$instance_delegate(hash) { - var TMP_1, self = this; + Opal.def(self, '$instance_delegate', $Forwardable_instance_delegate$1 = function $$instance_delegate(hash) { + var $$2, self = this; + + return $send(hash, 'each', [], ($$2 = function(methods, accessor){var self = $$2.$$s || this, $$3; - return $send(hash, 'each', [], (TMP_1 = function(methods, accessor){var self = TMP_1.$$s || this, TMP_2; -if (methods == null) methods = nil;if (accessor == null) accessor = nil; + + if (methods == null) { + methods = nil; + }; + + if (accessor == null) { + accessor = nil; + }; if ($truthy(methods['$respond_to?']("each"))) { - } else { + } else { methods = [methods] }; - return $send(methods, 'each', [], (TMP_2 = function(method){var self = TMP_2.$$s || this; -if (method == null) method = nil; - return self.$def_instance_delegator(accessor, method)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2));}, TMP_1.$$s = self, TMP_1.$$arity = 2, TMP_1)) - }, TMP_Forwardable_instance_delegate_3.$$arity = 1); + return $send(methods, 'each', [], ($$3 = function(method){var self = $$3.$$s || this; + + + + if (method == null) { + method = nil; + }; + return self.$def_instance_delegator(accessor, method);}, $$3.$$s = self, $$3.$$arity = 1, $$3));}, $$2.$$s = self, $$2.$$arity = 2, $$2)) + }, $Forwardable_instance_delegate$1.$$arity = 1); - Opal.defn(self, '$def_instance_delegators', TMP_Forwardable_def_instance_delegators_5 = function $$def_instance_delegators(accessor, $a_rest) { - var TMP_4, self = this, methods; + Opal.def(self, '$def_instance_delegators', $Forwardable_def_instance_delegators$4 = function $$def_instance_delegators(accessor, $a) { + var $post_args, methods, $$5, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - methods = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - methods[$arg_idx - 1] = arguments[$arg_idx]; - } - return $send(methods, 'each', [], (TMP_4 = function(method){var self = TMP_4.$$s || this; -if (method == null) method = nil; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + methods = $post_args;; + return $send(methods, 'each', [], ($$5 = function(method){var self = $$5.$$s || this; + + + + if (method == null) { + method = nil; + }; if ($truthy(["__send__", "__id__"]['$include?'](method))) { return nil;}; - return self.$def_instance_delegator(accessor, method);}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)) - }, TMP_Forwardable_def_instance_delegators_5.$$arity = -2); + return self.$def_instance_delegator(accessor, method);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); + }, $Forwardable_def_instance_delegators$4.$$arity = -2); - Opal.defn(self, '$def_instance_delegator', TMP_Forwardable_def_instance_delegator_8 = function $$def_instance_delegator(accessor, method, ali) { - var TMP_6, TMP_7, self = this; + Opal.def(self, '$def_instance_delegator', $Forwardable_def_instance_delegator$6 = function $$def_instance_delegator(accessor, method, ali) { + var $$7, $$8, $iter = $Forwardable_def_instance_delegator$6.$$p, $yield = $iter || nil, self = this; + if ($iter) $Forwardable_def_instance_delegator$6.$$p = null; + + if (ali == null) { ali = method; - } + }; if ($truthy(accessor.$to_s()['$start_with?']("@"))) { - return $send(self, 'define_method', [ali], (TMP_6 = function($a_rest){var self = TMP_6.$$s || this, block, args; + return $send(self, 'define_method', [ali], ($$7 = function($a){var self = $$7.$$s || this, $iter = $$7.$$p, block = $iter || nil, $post_args, args; - block = TMP_6.$$p || nil; - if (block) TMP_6.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.$instance_variable_get(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc())}, TMP_6.$$s = self, TMP_6.$$arity = -1, TMP_6)) - } else { - return $send(self, 'define_method', [ali], (TMP_7 = function($a_rest){var self = TMP_7.$$s || this, block, args; + + + if ($iter) $$7.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.$instance_variable_get(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc());}, $$7.$$s = self, $$7.$$arity = -1, $$7)) + } else { + return $send(self, 'define_method', [ali], ($$8 = function($a){var self = $$8.$$s || this, $iter = $$8.$$p, block = $iter || nil, $post_args, args; - block = TMP_7.$$p || nil; - if (block) TMP_7.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.$__send__(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc())}, TMP_7.$$s = self, TMP_7.$$arity = -1, TMP_7)) - } - }, TMP_Forwardable_def_instance_delegator_8.$$arity = -3); + + + if ($iter) $$8.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.$__send__(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc());}, $$8.$$s = self, $$8.$$arity = -1, $$8)) + }; + }, $Forwardable_def_instance_delegator$6.$$arity = -3); Opal.alias(self, "delegate", "instance_delegate"); Opal.alias(self, "def_delegators", "def_instance_delegators"); Opal.alias(self, "def_delegator", "def_instance_delegator"); })($nesting[0], $nesting); return (function($base, $parent_nesting) { - var $SingleForwardable, self = $SingleForwardable = $module($base, 'SingleForwardable'); + var self = $module($base, 'SingleForwardable'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SingleForwardable_single_delegate_11, TMP_SingleForwardable_def_single_delegators_13, TMP_SingleForwardable_def_single_delegator_16; + var $nesting = [self].concat($parent_nesting), $SingleForwardable_single_delegate$9, $SingleForwardable_def_single_delegators$12, $SingleForwardable_def_single_delegator$14; - Opal.defn(self, '$single_delegate', TMP_SingleForwardable_single_delegate_11 = function $$single_delegate(hash) { - var TMP_9, self = this; + Opal.def(self, '$single_delegate', $SingleForwardable_single_delegate$9 = function $$single_delegate(hash) { + var $$10, self = this; + + return $send(hash, 'each', [], ($$10 = function(methods, accessor){var self = $$10.$$s || this, $$11; - return $send(hash, 'each', [], (TMP_9 = function(methods, accessor){var self = TMP_9.$$s || this, TMP_10; -if (methods == null) methods = nil;if (accessor == null) accessor = nil; + + if (methods == null) { + methods = nil; + }; + + if (accessor == null) { + accessor = nil; + }; if ($truthy(methods['$respond_to?']("each"))) { - } else { + } else { methods = [methods] }; - return $send(methods, 'each', [], (TMP_10 = function(method){var self = TMP_10.$$s || this; -if (method == null) method = nil; - return self.$def_single_delegator(accessor, method)}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10));}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9)) - }, TMP_SingleForwardable_single_delegate_11.$$arity = 1); + return $send(methods, 'each', [], ($$11 = function(method){var self = $$11.$$s || this; + + + + if (method == null) { + method = nil; + }; + return self.$def_single_delegator(accessor, method);}, $$11.$$s = self, $$11.$$arity = 1, $$11));}, $$10.$$s = self, $$10.$$arity = 2, $$10)) + }, $SingleForwardable_single_delegate$9.$$arity = 1); - Opal.defn(self, '$def_single_delegators', TMP_SingleForwardable_def_single_delegators_13 = function $$def_single_delegators(accessor, $a_rest) { - var TMP_12, self = this, methods; + Opal.def(self, '$def_single_delegators', $SingleForwardable_def_single_delegators$12 = function $$def_single_delegators(accessor, $a) { + var $post_args, methods, $$13, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 1; - if ($rest_len < 0) { $rest_len = 0; } - methods = new Array($rest_len); - for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) { - methods[$arg_idx - 1] = arguments[$arg_idx]; - } - return $send(methods, 'each', [], (TMP_12 = function(method){var self = TMP_12.$$s || this; -if (method == null) method = nil; + + $post_args = Opal.slice.call(arguments, 1, arguments.length); + + methods = $post_args;; + return $send(methods, 'each', [], ($$13 = function(method){var self = $$13.$$s || this; + + + + if (method == null) { + method = nil; + }; if ($truthy(["__send__", "__id__"]['$include?'](method))) { return nil;}; - return self.$def_single_delegator(accessor, method);}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12)) - }, TMP_SingleForwardable_def_single_delegators_13.$$arity = -2); + return self.$def_single_delegator(accessor, method);}, $$13.$$s = self, $$13.$$arity = 1, $$13)); + }, $SingleForwardable_def_single_delegators$12.$$arity = -2); - Opal.defn(self, '$def_single_delegator', TMP_SingleForwardable_def_single_delegator_16 = function $$def_single_delegator(accessor, method, ali) { - var TMP_14, TMP_15, self = this; + Opal.def(self, '$def_single_delegator', $SingleForwardable_def_single_delegator$14 = function $$def_single_delegator(accessor, method, ali) { + var $$15, $$16, $iter = $SingleForwardable_def_single_delegator$14.$$p, $yield = $iter || nil, self = this; + if ($iter) $SingleForwardable_def_single_delegator$14.$$p = null; + + if (ali == null) { ali = method; - } + }; if ($truthy(accessor.$to_s()['$start_with?']("@"))) { - return $send(self, 'define_singleton_method', [ali], (TMP_14 = function($a_rest){var self = TMP_14.$$s || this, block, args; + return $send(self, 'define_singleton_method', [ali], ($$15 = function($a){var self = $$15.$$s || this, $iter = $$15.$$p, block = $iter || nil, $post_args, args; - block = TMP_14.$$p || nil; - if (block) TMP_14.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.$instance_variable_get(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc())}, TMP_14.$$s = self, TMP_14.$$arity = -1, TMP_14)) - } else { - return $send(self, 'define_singleton_method', [ali], (TMP_15 = function($a_rest){var self = TMP_15.$$s || this, block, args; + + + if ($iter) $$15.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.$instance_variable_get(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc());}, $$15.$$s = self, $$15.$$arity = -1, $$15)) + } else { + return $send(self, 'define_singleton_method', [ali], ($$16 = function($a){var self = $$16.$$s || this, $iter = $$16.$$p, block = $iter || nil, $post_args, args; - block = TMP_15.$$p || nil; - if (block) TMP_15.$$p = null; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - return $send(self.$__send__(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc())}, TMP_15.$$s = self, TMP_15.$$arity = -1, TMP_15)) - } - }, TMP_SingleForwardable_def_single_delegator_16.$$arity = -3); + + + if ($iter) $$16.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self.$__send__(accessor), '__send__', [method].concat(Opal.to_a(args)), block.$to_proc());}, $$16.$$s = self, $$16.$$arity = -1, $$16)) + }; + }, $SingleForwardable_def_single_delegator$14.$$arity = -3); Opal.alias(self, "delegate", "single_delegate"); Opal.alias(self, "def_delegators", "def_single_delegators"); Opal.alias(self, "def_delegator", "def_single_delegator"); })($nesting[0], $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["pp"] = function(Opal) { function $rb_le(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); @@ -53178,93 +60657,101 @@ Opal.modules["pp"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $klass = Opal.klass, $gvars = Opal.gvars; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $klass = Opal.klass, $gvars = Opal.gvars; Opal.add_stubs(['$inspect', '$each', '$pp', '$<=', '$size', '$first', '$module_function', '$p', '$args', '$===', '$+', '$<<']); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_pretty_inspect_1, TMP_Kernel_pp_3; + var $nesting = [self].concat($parent_nesting), $Kernel_pretty_inspect$1, $Kernel_pp$2; - Opal.defn(self, '$pretty_inspect', TMP_Kernel_pretty_inspect_1 = function $$pretty_inspect() { + Opal.def(self, '$pretty_inspect', $Kernel_pretty_inspect$1 = function $$pretty_inspect() { var self = this; return self.$inspect() - }, TMP_Kernel_pretty_inspect_1.$$arity = 0); + }, $Kernel_pretty_inspect$1.$$arity = 0); - Opal.defn(self, '$pp', TMP_Kernel_pp_3 = function $$pp($a_rest) { - var TMP_2, self = this, objs; + Opal.def(self, '$pp', $Kernel_pp$2 = function $$pp($a) { + var $post_args, objs, $$3, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - objs = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - objs[$arg_idx - 0] = arguments[$arg_idx]; - } - $send(objs, 'each', [], (TMP_2 = function(obj){var self = TMP_2.$$s || this; -if (obj == null) obj = nil; - return Opal.const_get_relative($nesting, 'PP').$pp(obj)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2)); + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + objs = $post_args;; + $send(objs, 'each', [], ($$3 = function(obj){var self = $$3.$$s || this; + + + + if (obj == null) { + obj = nil; + }; + return $$($nesting, 'PP').$pp(obj);}, $$3.$$s = self, $$3.$$arity = 1, $$3)); if ($truthy($rb_le(objs.$size(), 1))) { return objs.$first() - } else { + } else { return objs }; - }, TMP_Kernel_pp_3.$$arity = -1); + }, $Kernel_pp$2.$$arity = -1); self.$module_function("pp"); })($nesting[0], $nesting); return (function($base, $super, $parent_nesting) { - function $PP(){}; - var self = $PP = $klass($base, $super, 'PP', $PP); + var self = $klass($base, $super, 'PP'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); return (function(self, $parent_nesting) { - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_pp_4, TMP_pp_5; + var $nesting = [self].concat($parent_nesting), $pp$4, $pp$5; if ($truthy((typeof(console) === "undefined" || typeof(console.log) === "undefined"))) { - Opal.defn(self, '$pp', TMP_pp_4 = function $$pp(obj, out, width) { + Opal.def(self, '$pp', $pp$4 = function $$pp(obj, out, width) { var self = this; if ($gvars.stdout == null) $gvars.stdout = nil; + + if (out == null) { out = $gvars.stdout; - } + }; + if (width == null) { width = 79; - } - return $send(self, 'p', Opal.to_a(self.$args())) - }, TMP_pp_4.$$arity = -2) - } else { + }; + return $send(self, 'p', Opal.to_a(self.$args())); + }, $pp$4.$$arity = -2) + } else { - Opal.defn(self, '$pp', TMP_pp_5 = function $$pp(obj, out, width) { + Opal.def(self, '$pp', $pp$5 = function $$pp(obj, out, width) { var self = this; if ($gvars.stdout == null) $gvars.stdout = nil; + + if (out == null) { out = $gvars.stdout; - } + }; + if (width == null) { width = 79; - } - if ($truthy(Opal.const_get_relative($nesting, 'String')['$==='](out))) { + }; + if ($truthy($$($nesting, 'String')['$==='](out))) { return $rb_plus($rb_plus(out, obj.$inspect()), "\n") - } else { + } else { return out['$<<']($rb_plus(obj.$inspect(), "\n")) - } - }, TMP_pp_5.$$arity = -2) + }; + }, $pp$5.$$arity = -2) }; return Opal.alias(self, "singleline_pp", "pp"); })(Opal.get_singleton_class(self), $nesting) })($nesting[0], null, $nesting); }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["promise"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); @@ -53275,47 +60762,46 @@ Opal.modules["promise"] = function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); } - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - Opal.add_stubs(['$resolve', '$new', '$reject', '$attr_reader', '$===', '$value', '$has_key?', '$keys', '$!', '$==', '$<<', '$>>', '$exception?', '$[]', '$resolved?', '$rejected?', '$error', '$include?', '$action', '$realized?', '$raise', '$^', '$call', '$resolve!', '$exception!', '$any?', '$each', '$reject!', '$there_can_be_only_one!', '$then', '$to_proc', '$fail', '$always', '$trace', '$class', '$object_id', '$+', '$inspect', '$act?', '$nil?', '$prev', '$push', '$concat', '$it', '$proc', '$reverse', '$pop', '$<=', '$length', '$shift', '$-', '$wait', '$map', '$reduce', '$try', '$tap', '$all?', '$find']); + Opal.add_stubs(['$resolve', '$new', '$reject', '$attr_reader', '$===', '$value', '$key?', '$keys', '$!=', '$==', '$<<', '$>>', '$exception?', '$[]', '$resolved?', '$rejected?', '$!', '$error', '$include?', '$action', '$realized?', '$raise', '$^', '$call', '$resolve!', '$exception!', '$any?', '$each', '$reject!', '$there_can_be_only_one!', '$then', '$to_proc', '$fail', '$always', '$trace', '$class', '$object_id', '$+', '$inspect', '$act?', '$nil?', '$prev', '$push', '$concat', '$it', '$proc', '$reverse', '$pop', '$<=', '$length', '$shift', '$-', '$wait', '$map', '$reduce', '$try', '$tap', '$all?', '$find']); return (function($base, $super, $parent_nesting) { - function $Promise(){}; - var self = $Promise = $klass($base, $super, 'Promise', $Promise); + var self = $klass($base, $super, 'Promise'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Promise_value_1, TMP_Promise_error_2, TMP_Promise_when_3, TMP_Promise_initialize_4, TMP_Promise_value_5, TMP_Promise_act$q_6, TMP_Promise_action_7, TMP_Promise_exception$q_8, TMP_Promise_realized$q_9, TMP_Promise_resolved$q_10, TMP_Promise_rejected$q_11, TMP_Promise_$_12, TMP_Promise_$lt$lt_13, TMP_Promise_$gt$gt_14, TMP_Promise_resolve_15, TMP_Promise_resolve$B_17, TMP_Promise_reject_18, TMP_Promise_reject$B_20, TMP_Promise_exception$B_21, TMP_Promise_then_22, TMP_Promise_then$B_23, TMP_Promise_fail_24, TMP_Promise_fail$B_25, TMP_Promise_always_26, TMP_Promise_always$B_27, TMP_Promise_trace_28, TMP_Promise_trace$B_29, TMP_Promise_there_can_be_only_one$B_30, TMP_Promise_inspect_31; + var $nesting = [self].concat($parent_nesting), $Promise_value$1, $Promise_error$2, $Promise_when$3, $Promise_initialize$4, $Promise_value$5, $Promise_act$ques$6, $Promise_action$7, $Promise_exception$ques$8, $Promise_realized$ques$9, $Promise_resolved$ques$10, $Promise_rejected$ques$11, $Promise_$$12, $Promise_$lt$lt$13, $Promise_$gt$gt$14, $Promise_resolve$15, $Promise_resolve$excl$16, $Promise_reject$18, $Promise_reject$excl$19, $Promise_exception$excl$21, $Promise_then$22, $Promise_then$excl$23, $Promise_fail$24, $Promise_fail$excl$25, $Promise_always$26, $Promise_always$excl$27, $Promise_trace$28, $Promise_trace$excl$29, $Promise_there_can_be_only_one$excl$30, $Promise_inspect$31; - def.value = def.action = def.exception = def.realized = def.next = def.delayed = def.error = def.prev = nil; + self.$$prototype.value = self.$$prototype.action = self.$$prototype.exception = self.$$prototype.realized = self.$$prototype.next = self.$$prototype.delayed = self.$$prototype.error = self.$$prototype.prev = nil; - Opal.defs(self, '$value', TMP_Promise_value_1 = function $$value(value) { + Opal.defs(self, '$value', $Promise_value$1 = function $$value(value) { var self = this; return self.$new().$resolve(value) - }, TMP_Promise_value_1.$$arity = 1); - Opal.defs(self, '$error', TMP_Promise_error_2 = function $$error(value) { + }, $Promise_value$1.$$arity = 1); + Opal.defs(self, '$error', $Promise_error$2 = function $$error(value) { var self = this; return self.$new().$reject(value) - }, TMP_Promise_error_2.$$arity = 1); - Opal.defs(self, '$when', TMP_Promise_when_3 = function $$when($a_rest) { - var self = this, promises; - - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - promises = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - promises[$arg_idx - 0] = arguments[$arg_idx]; - } - return Opal.const_get_relative($nesting, 'When').$new(promises) - }, TMP_Promise_when_3.$$arity = -1); + }, $Promise_error$2.$$arity = 1); + Opal.defs(self, '$when', $Promise_when$3 = function $$when($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + promises = $post_args;; + return $$($nesting, 'When').$new(promises); + }, $Promise_when$3.$$arity = -1); self.$attr_reader("error", "prev", "next"); - Opal.defn(self, '$initialize', TMP_Promise_initialize_4 = function $$initialize(action) { + Opal.def(self, '$initialize', $Promise_initialize$4 = function $$initialize(action) { var self = this; + + if (action == null) { action = $hash2([], {}); - } - + }; self.action = action; self.realized = false; self.exception = false; @@ -53324,72 +60810,72 @@ Opal.modules["promise"] = function(Opal) { self.delayed = false; self.prev = nil; return (self.next = []); - }, TMP_Promise_initialize_4.$$arity = -1); + }, $Promise_initialize$4.$$arity = -1); - Opal.defn(self, '$value', TMP_Promise_value_5 = function $$value() { + Opal.def(self, '$value', $Promise_value$5 = function $$value() { var self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Promise')['$==='](self.value))) { + if ($truthy($$($nesting, 'Promise')['$==='](self.value))) { return self.value.$value() - } else { + } else { return self.value } - }, TMP_Promise_value_5.$$arity = 0); + }, $Promise_value$5.$$arity = 0); - Opal.defn(self, '$act?', TMP_Promise_act$q_6 = function() { + Opal.def(self, '$act?', $Promise_act$ques$6 = function() { var $a, self = this; - return ($truthy($a = self.action['$has_key?']("success")) ? $a : self.action['$has_key?']("always")) - }, TMP_Promise_act$q_6.$$arity = 0); + return ($truthy($a = self.action['$key?']("success")) ? $a : self.action['$key?']("always")) + }, $Promise_act$ques$6.$$arity = 0); - Opal.defn(self, '$action', TMP_Promise_action_7 = function $$action() { + Opal.def(self, '$action', $Promise_action$7 = function $$action() { var self = this; return self.action.$keys() - }, TMP_Promise_action_7.$$arity = 0); + }, $Promise_action$7.$$arity = 0); - Opal.defn(self, '$exception?', TMP_Promise_exception$q_8 = function() { + Opal.def(self, '$exception?', $Promise_exception$ques$8 = function() { var self = this; return self.exception - }, TMP_Promise_exception$q_8.$$arity = 0); + }, $Promise_exception$ques$8.$$arity = 0); - Opal.defn(self, '$realized?', TMP_Promise_realized$q_9 = function() { + Opal.def(self, '$realized?', $Promise_realized$ques$9 = function() { var self = this; - return self.realized['$!']()['$!']() - }, TMP_Promise_realized$q_9.$$arity = 0); + return self.realized['$!='](false) + }, $Promise_realized$ques$9.$$arity = 0); - Opal.defn(self, '$resolved?', TMP_Promise_resolved$q_10 = function() { + Opal.def(self, '$resolved?', $Promise_resolved$ques$10 = function() { var self = this; return self.realized['$==']("resolve") - }, TMP_Promise_resolved$q_10.$$arity = 0); + }, $Promise_resolved$ques$10.$$arity = 0); - Opal.defn(self, '$rejected?', TMP_Promise_rejected$q_11 = function() { + Opal.def(self, '$rejected?', $Promise_rejected$ques$11 = function() { var self = this; return self.realized['$==']("reject") - }, TMP_Promise_rejected$q_11.$$arity = 0); + }, $Promise_rejected$ques$11.$$arity = 0); - Opal.defn(self, '$^', TMP_Promise_$_12 = function(promise) { + Opal.def(self, '$^', $Promise_$$12 = function(promise) { var self = this; promise['$<<'](self); self['$>>'](promise); return promise; - }, TMP_Promise_$_12.$$arity = 1); + }, $Promise_$$12.$$arity = 1); - Opal.defn(self, '$<<', TMP_Promise_$lt$lt_13 = function(promise) { + Opal.def(self, '$<<', $Promise_$lt$lt$13 = function(promise) { var self = this; self.prev = promise; return self; - }, TMP_Promise_$lt$lt_13.$$arity = 1); + }, $Promise_$lt$lt$13.$$arity = 1); - Opal.defn(self, '$>>', TMP_Promise_$gt$gt_14 = function(promise) { + Opal.def(self, '$>>', $Promise_$gt$gt$14 = function(promise) { var $a, self = this; @@ -53399,422 +60885,485 @@ Opal.modules["promise"] = function(Opal) { } else if ($truthy(self['$resolved?']())) { promise.$resolve((function() {if ($truthy(self.delayed)) { return self.delayed['$[]'](0) - } else { + } else { return self.$value() }; return nil; })()) } else if ($truthy(self['$rejected?']())) { - if ($truthy(($truthy($a = self.action['$has_key?']("failure")['$!']()) ? $a : Opal.const_get_relative($nesting, 'Promise')['$===']((function() {if ($truthy(self.delayed)) { + if ($truthy(($truthy($a = self.action['$key?']("failure")['$!']()) ? $a : $$($nesting, 'Promise')['$===']((function() {if ($truthy(self.delayed)) { return self.delayed['$[]'](0) - } else { + } else { return self.error }; return nil; })())))) { promise.$reject((function() {if ($truthy(self.delayed)) { return self.delayed['$[]'](0) - } else { + } else { return self.$error() }; return nil; })()) } else if ($truthy(promise.$action()['$include?']("always"))) { promise.$reject((function() {if ($truthy(self.delayed)) { return self.delayed['$[]'](0) - } else { + } else { return self.$error() }; return nil; })())}}; return self; - }, TMP_Promise_$gt$gt_14.$$arity = 1); + }, $Promise_$gt$gt$14.$$arity = 1); - Opal.defn(self, '$resolve', TMP_Promise_resolve_15 = function $$resolve(value) { + Opal.def(self, '$resolve', $Promise_resolve$15 = function $$resolve(value) { var $a, self = this, block = nil, e = nil; + + if (value == null) { value = nil; - } - + }; if ($truthy(self['$realized?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "the promise has already been realized")}; - if ($truthy(Opal.const_get_relative($nesting, 'Promise')['$==='](value))) { + self.$raise($$($nesting, 'ArgumentError'), "the promise has already been realized")}; + if ($truthy($$($nesting, 'Promise')['$==='](value))) { return value['$<<'](self.prev)['$^'](self)}; try { - if ($truthy((block = ($truthy($a = self.action['$[]']("success")) ? $a : self.action['$[]']("always"))))) { + block = ($truthy($a = self.action['$[]']("success")) ? $a : self.action['$[]']("always")); + if ($truthy(block)) { value = block.$call(value)}; self['$resolve!'](value); } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'Exception')])) {e = $err; + if (Opal.rescue($err, [$$($nesting, 'Exception')])) {e = $err; try { self['$exception!'](e) } finally { Opal.pop_exception() } } else { throw $err; } };; return self; - }, TMP_Promise_resolve_15.$$arity = -1); + }, $Promise_resolve$15.$$arity = -1); - Opal.defn(self, '$resolve!', TMP_Promise_resolve$B_17 = function(value) { - var TMP_16, self = this; + Opal.def(self, '$resolve!', $Promise_resolve$excl$16 = function(value) { + var $$17, self = this; self.realized = "resolve"; self.value = value; if ($truthy(self.next['$any?']())) { - return $send(self.next, 'each', [], (TMP_16 = function(p){var self = TMP_16.$$s || this; -if (p == null) p = nil; - return p.$resolve(value)}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16)) - } else { + return $send(self.next, 'each', [], ($$17 = function(p){var self = $$17.$$s || this; + + + + if (p == null) { + p = nil; + }; + return p.$resolve(value);}, $$17.$$s = self, $$17.$$arity = 1, $$17)) + } else { return (self.delayed = [value]) }; - }, TMP_Promise_resolve$B_17.$$arity = 1); + }, $Promise_resolve$excl$16.$$arity = 1); - Opal.defn(self, '$reject', TMP_Promise_reject_18 = function $$reject(value) { + Opal.def(self, '$reject', $Promise_reject$18 = function $$reject(value) { var $a, self = this, block = nil, e = nil; + + if (value == null) { value = nil; - } - + }; if ($truthy(self['$realized?']())) { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "the promise has already been realized")}; - if ($truthy(Opal.const_get_relative($nesting, 'Promise')['$==='](value))) { + self.$raise($$($nesting, 'ArgumentError'), "the promise has already been realized")}; + if ($truthy($$($nesting, 'Promise')['$==='](value))) { return value['$<<'](self.prev)['$^'](self)}; try { - if ($truthy((block = ($truthy($a = self.action['$[]']("failure")) ? $a : self.action['$[]']("always"))))) { + block = ($truthy($a = self.action['$[]']("failure")) ? $a : self.action['$[]']("always")); + if ($truthy(block)) { value = block.$call(value)}; - if ($truthy(self.action['$has_key?']("always"))) { + if ($truthy(self.action['$key?']("always"))) { self['$resolve!'](value) - } else { + } else { self['$reject!'](value) }; } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'Exception')])) {e = $err; + if (Opal.rescue($err, [$$($nesting, 'Exception')])) {e = $err; try { self['$exception!'](e) } finally { Opal.pop_exception() } } else { throw $err; } };; return self; - }, TMP_Promise_reject_18.$$arity = -1); + }, $Promise_reject$18.$$arity = -1); - Opal.defn(self, '$reject!', TMP_Promise_reject$B_20 = function(value) { - var TMP_19, self = this; + Opal.def(self, '$reject!', $Promise_reject$excl$19 = function(value) { + var $$20, self = this; self.realized = "reject"; self.error = value; if ($truthy(self.next['$any?']())) { - return $send(self.next, 'each', [], (TMP_19 = function(p){var self = TMP_19.$$s || this; -if (p == null) p = nil; - return p.$reject(value)}, TMP_19.$$s = self, TMP_19.$$arity = 1, TMP_19)) - } else { + return $send(self.next, 'each', [], ($$20 = function(p){var self = $$20.$$s || this; + + + + if (p == null) { + p = nil; + }; + return p.$reject(value);}, $$20.$$s = self, $$20.$$arity = 1, $$20)) + } else { return (self.delayed = [value]) }; - }, TMP_Promise_reject$B_20.$$arity = 1); + }, $Promise_reject$excl$19.$$arity = 1); - Opal.defn(self, '$exception!', TMP_Promise_exception$B_21 = function(error) { + Opal.def(self, '$exception!', $Promise_exception$excl$21 = function(error) { var self = this; self.exception = true; return self['$reject!'](error); - }, TMP_Promise_exception$B_21.$$arity = 1); + }, $Promise_exception$excl$21.$$arity = 1); - Opal.defn(self, '$then', TMP_Promise_then_22 = function $$then() { - var self = this, $iter = TMP_Promise_then_22.$$p, block = $iter || nil; + Opal.def(self, '$then', $Promise_then$22 = function $$then() { + var $iter = $Promise_then$22.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_then_22.$$p = null; - return self['$^'](Opal.const_get_relative($nesting, 'Promise').$new($hash2(["success"], {"success": block}))) - }, TMP_Promise_then_22.$$arity = 0); + if ($iter) $Promise_then$22.$$p = null; + + + if ($iter) $Promise_then$22.$$p = null;; + return self['$^']($$($nesting, 'Promise').$new($hash2(["success"], {"success": block}))); + }, $Promise_then$22.$$arity = 0); - Opal.defn(self, '$then!', TMP_Promise_then$B_23 = function() { - var self = this, $iter = TMP_Promise_then$B_23.$$p, block = $iter || nil; + Opal.def(self, '$then!', $Promise_then$excl$23 = function() { + var $iter = $Promise_then$excl$23.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_then$B_23.$$p = null; + if ($iter) $Promise_then$excl$23.$$p = null; + + if ($iter) $Promise_then$excl$23.$$p = null;; self['$there_can_be_only_one!'](); return $send(self, 'then', [], block.$to_proc()); - }, TMP_Promise_then$B_23.$$arity = 0); + }, $Promise_then$excl$23.$$arity = 0); Opal.alias(self, "do", "then"); Opal.alias(self, "do!", "then!"); - Opal.defn(self, '$fail', TMP_Promise_fail_24 = function $$fail() { - var self = this, $iter = TMP_Promise_fail_24.$$p, block = $iter || nil; + Opal.def(self, '$fail', $Promise_fail$24 = function $$fail() { + var $iter = $Promise_fail$24.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_fail_24.$$p = null; - return self['$^'](Opal.const_get_relative($nesting, 'Promise').$new($hash2(["failure"], {"failure": block}))) - }, TMP_Promise_fail_24.$$arity = 0); + if ($iter) $Promise_fail$24.$$p = null; + + + if ($iter) $Promise_fail$24.$$p = null;; + return self['$^']($$($nesting, 'Promise').$new($hash2(["failure"], {"failure": block}))); + }, $Promise_fail$24.$$arity = 0); - Opal.defn(self, '$fail!', TMP_Promise_fail$B_25 = function() { - var self = this, $iter = TMP_Promise_fail$B_25.$$p, block = $iter || nil; + Opal.def(self, '$fail!', $Promise_fail$excl$25 = function() { + var $iter = $Promise_fail$excl$25.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_fail$B_25.$$p = null; + if ($iter) $Promise_fail$excl$25.$$p = null; + + if ($iter) $Promise_fail$excl$25.$$p = null;; self['$there_can_be_only_one!'](); return $send(self, 'fail', [], block.$to_proc()); - }, TMP_Promise_fail$B_25.$$arity = 0); + }, $Promise_fail$excl$25.$$arity = 0); Opal.alias(self, "rescue", "fail"); Opal.alias(self, "catch", "fail"); Opal.alias(self, "rescue!", "fail!"); Opal.alias(self, "catch!", "fail!"); - Opal.defn(self, '$always', TMP_Promise_always_26 = function $$always() { - var self = this, $iter = TMP_Promise_always_26.$$p, block = $iter || nil; + Opal.def(self, '$always', $Promise_always$26 = function $$always() { + var $iter = $Promise_always$26.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_always_26.$$p = null; - return self['$^'](Opal.const_get_relative($nesting, 'Promise').$new($hash2(["always"], {"always": block}))) - }, TMP_Promise_always_26.$$arity = 0); + if ($iter) $Promise_always$26.$$p = null; + + + if ($iter) $Promise_always$26.$$p = null;; + return self['$^']($$($nesting, 'Promise').$new($hash2(["always"], {"always": block}))); + }, $Promise_always$26.$$arity = 0); - Opal.defn(self, '$always!', TMP_Promise_always$B_27 = function() { - var self = this, $iter = TMP_Promise_always$B_27.$$p, block = $iter || nil; + Opal.def(self, '$always!', $Promise_always$excl$27 = function() { + var $iter = $Promise_always$excl$27.$$p, block = $iter || nil, self = this; - if ($iter) TMP_Promise_always$B_27.$$p = null; + if ($iter) $Promise_always$excl$27.$$p = null; + + if ($iter) $Promise_always$excl$27.$$p = null;; self['$there_can_be_only_one!'](); return $send(self, 'always', [], block.$to_proc()); - }, TMP_Promise_always$B_27.$$arity = 0); + }, $Promise_always$excl$27.$$arity = 0); Opal.alias(self, "finally", "always"); Opal.alias(self, "ensure", "always"); Opal.alias(self, "finally!", "always!"); Opal.alias(self, "ensure!", "always!"); - Opal.defn(self, '$trace', TMP_Promise_trace_28 = function $$trace(depth) { - var self = this, $iter = TMP_Promise_trace_28.$$p, block = $iter || nil; + Opal.def(self, '$trace', $Promise_trace$28 = function $$trace(depth) { + var $iter = $Promise_trace$28.$$p, block = $iter || nil, self = this; + if ($iter) $Promise_trace$28.$$p = null; + + + if ($iter) $Promise_trace$28.$$p = null;; + if (depth == null) { depth = nil; - } - if ($iter) TMP_Promise_trace_28.$$p = null; - return self['$^'](Opal.const_get_relative($nesting, 'Trace').$new(depth, block)) - }, TMP_Promise_trace_28.$$arity = -1); + }; + return self['$^']($$($nesting, 'Trace').$new(depth, block)); + }, $Promise_trace$28.$$arity = -1); - Opal.defn(self, '$trace!', TMP_Promise_trace$B_29 = function($a_rest) { - var self = this, args, $iter = TMP_Promise_trace$B_29.$$p, block = $iter || nil; + Opal.def(self, '$trace!', $Promise_trace$excl$29 = function($a) { + var $iter = $Promise_trace$excl$29.$$p, block = $iter || nil, $post_args, args, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_Promise_trace$B_29.$$p = null; + if ($iter) $Promise_trace$excl$29.$$p = null; + + if ($iter) $Promise_trace$excl$29.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; self['$there_can_be_only_one!'](); return $send(self, 'trace', Opal.to_a(args), block.$to_proc()); - }, TMP_Promise_trace$B_29.$$arity = -1); + }, $Promise_trace$excl$29.$$arity = -1); - Opal.defn(self, '$there_can_be_only_one!', TMP_Promise_there_can_be_only_one$B_30 = function() { + Opal.def(self, '$there_can_be_only_one!', $Promise_there_can_be_only_one$excl$30 = function() { var self = this; if ($truthy(self.next['$any?']())) { - return self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "a promise has already been chained") - } else { + return self.$raise($$($nesting, 'ArgumentError'), "a promise has already been chained") + } else { return nil } - }, TMP_Promise_there_can_be_only_one$B_30.$$arity = 0); + }, $Promise_there_can_be_only_one$excl$30.$$arity = 0); - Opal.defn(self, '$inspect', TMP_Promise_inspect_31 = function $$inspect() { + Opal.def(self, '$inspect', $Promise_inspect$31 = function $$inspect() { var $a, self = this, result = nil; result = "" + "#<" + (self.$class()) + "(" + (self.$object_id()) + ")"; if ($truthy(self.next['$any?']())) { result = $rb_plus(result, "" + " >> " + (self.next.$inspect()))}; - if ($truthy(self['$realized?']())) { - result = $rb_plus(result, "" + ": " + (($truthy($a = self.value) ? $a : self.error).$inspect()) + ">") - } else { - result = $rb_plus(result, ">") - }; + result = $rb_plus(result, (function() {if ($truthy(self['$realized?']())) { + return "" + ": " + (($truthy($a = self.value) ? $a : self.error).$inspect()) + ">" + } else { + return ">" + }; return nil; })()); return result; - }, TMP_Promise_inspect_31.$$arity = 0); + }, $Promise_inspect$31.$$arity = 0); (function($base, $super, $parent_nesting) { - function $Trace(){}; - var self = $Trace = $klass($base, $super, 'Trace', $Trace); + var self = $klass($base, $super, 'Trace'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Trace_it_32, TMP_Trace_initialize_33; + var $nesting = [self].concat($parent_nesting), $Trace_it$32, $Trace_initialize$33; - Opal.defs(self, '$it', TMP_Trace_it_32 = function $$it(promise) { + Opal.defs(self, '$it', $Trace_it$32 = function $$it(promise) { var $a, self = this, current = nil, prev = nil; current = []; if ($truthy(($truthy($a = promise['$act?']()) ? $a : promise.$prev()['$nil?']()))) { current.$push(promise.$value())}; - if ($truthy((prev = promise.$prev()))) { + prev = promise.$prev(); + if ($truthy(prev)) { return current.$concat(self.$it(prev)) - } else { + } else { return current }; - }, TMP_Trace_it_32.$$arity = 1); - return (Opal.defn(self, '$initialize', TMP_Trace_initialize_33 = function $$initialize(depth, block) { - var TMP_34, self = this, $iter = TMP_Trace_initialize_33.$$p, $yield = $iter || nil; + }, $Trace_it$32.$$arity = 1); + return (Opal.def(self, '$initialize', $Trace_initialize$33 = function $$initialize(depth, block) { + var $$34, $iter = $Trace_initialize$33.$$p, $yield = $iter || nil, self = this; - if ($iter) TMP_Trace_initialize_33.$$p = null; + if ($iter) $Trace_initialize$33.$$p = null; self.depth = depth; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Trace_initialize_33, false), [$hash2(["success"], {"success": $send(self, 'proc', [], (TMP_34 = function(){var self = TMP_34.$$s || this, $a, trace = nil; + return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Trace_initialize$33, false), [$hash2(["success"], {"success": $send(self, 'proc', [], ($$34 = function(){var self = $$34.$$s || this, $a, trace = nil; - trace = Opal.const_get_relative($nesting, 'Trace').$it(self).$reverse(); + trace = $$($nesting, 'Trace').$it(self).$reverse(); trace.$pop(); if ($truthy(($truthy($a = depth) ? $rb_le(depth, trace.$length()) : $a))) { trace.$shift($rb_minus(trace.$length(), depth))}; - return $send(block, 'call', Opal.to_a(trace));}, TMP_34.$$s = self, TMP_34.$$arity = 0, TMP_34))})], null); - }, TMP_Trace_initialize_33.$$arity = 2), nil) && 'initialize'; + return $send(block, 'call', Opal.to_a(trace));}, $$34.$$s = self, $$34.$$arity = 0, $$34))})], null); + }, $Trace_initialize$33.$$arity = 2), nil) && 'initialize'; })($nesting[0], self, $nesting); return (function($base, $super, $parent_nesting) { - function $When(){}; - var self = $When = $klass($base, $super, 'When', $When); + var self = $klass($base, $super, 'When'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_When_initialize_35, TMP_When_each_37, TMP_When_collect_39, TMP_When_inject_41, TMP_When_wait_44, TMP_When_$gt$gt_45, TMP_When_try_47; + var $nesting = [self].concat($parent_nesting), $When_initialize$35, $When_each$37, $When_collect$39, $When_inject$41, $When_wait$43, $When_$gt$gt$45, $When_try$47; - def.wait = nil; + self.$$prototype.wait = nil; - Opal.defn(self, '$initialize', TMP_When_initialize_35 = function $$initialize(promises) { - var TMP_36, self = this, $iter = TMP_When_initialize_35.$$p, $yield = $iter || nil; + Opal.def(self, '$initialize', $When_initialize$35 = function $$initialize(promises) { + var $$36, $iter = $When_initialize$35.$$p, $yield = $iter || nil, self = this; + if ($iter) $When_initialize$35.$$p = null; + + if (promises == null) { promises = []; - } - if ($iter) TMP_When_initialize_35.$$p = null; - - $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_When_initialize_35, false), [], null); + }; + $send(self, Opal.find_super_dispatcher(self, 'initialize', $When_initialize$35, false), [], null); self.wait = []; - return $send(promises, 'each', [], (TMP_36 = function(promise){var self = TMP_36.$$s || this; -if (promise == null) promise = nil; - return self.$wait(promise)}, TMP_36.$$s = self, TMP_36.$$arity = 1, TMP_36)); - }, TMP_When_initialize_35.$$arity = -1); + return $send(promises, 'each', [], ($$36 = function(promise){var self = $$36.$$s || this; + + + + if (promise == null) { + promise = nil; + }; + return self.$wait(promise);}, $$36.$$s = self, $$36.$$arity = 1, $$36)); + }, $When_initialize$35.$$arity = -1); - Opal.defn(self, '$each', TMP_When_each_37 = function $$each() { - var TMP_38, self = this, $iter = TMP_When_each_37.$$p, block = $iter || nil; + Opal.def(self, '$each', $When_each$37 = function $$each() { + var $iter = $When_each$37.$$p, block = $iter || nil, $$38, self = this; - if ($iter) TMP_When_each_37.$$p = null; + if ($iter) $When_each$37.$$p = null; + + if ($iter) $When_each$37.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no block given") + } else { + self.$raise($$($nesting, 'ArgumentError'), "no block given") }; - return $send(self, 'then', [], (TMP_38 = function(values){var self = TMP_38.$$s || this; -if (values == null) values = nil; - return $send(values, 'each', [], block.$to_proc())}, TMP_38.$$s = self, TMP_38.$$arity = 1, TMP_38)); - }, TMP_When_each_37.$$arity = 0); + return $send(self, 'then', [], ($$38 = function(values){var self = $$38.$$s || this; + + + + if (values == null) { + values = nil; + }; + return $send(values, 'each', [], block.$to_proc());}, $$38.$$s = self, $$38.$$arity = 1, $$38)); + }, $When_each$37.$$arity = 0); - Opal.defn(self, '$collect', TMP_When_collect_39 = function $$collect() { - var TMP_40, self = this, $iter = TMP_When_collect_39.$$p, block = $iter || nil; + Opal.def(self, '$collect', $When_collect$39 = function $$collect() { + var $iter = $When_collect$39.$$p, block = $iter || nil, $$40, self = this; - if ($iter) TMP_When_collect_39.$$p = null; + if ($iter) $When_collect$39.$$p = null; + + if ($iter) $When_collect$39.$$p = null;; if ($truthy(block)) { - } else { - self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "no block given") + } else { + self.$raise($$($nesting, 'ArgumentError'), "no block given") }; - return $send(self, 'then', [], (TMP_40 = function(values){var self = TMP_40.$$s || this; -if (values == null) values = nil; - return Opal.const_get_relative($nesting, 'When').$new($send(values, 'map', [], block.$to_proc()))}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40)); - }, TMP_When_collect_39.$$arity = 0); + return $send(self, 'then', [], ($$40 = function(values){var self = $$40.$$s || this; + + + + if (values == null) { + values = nil; + }; + return $$($nesting, 'When').$new($send(values, 'map', [], block.$to_proc()));}, $$40.$$s = self, $$40.$$arity = 1, $$40)); + }, $When_collect$39.$$arity = 0); - Opal.defn(self, '$inject', TMP_When_inject_41 = function $$inject($a_rest) { - var TMP_42, self = this, args, $iter = TMP_When_inject_41.$$p, block = $iter || nil; + Opal.def(self, '$inject', $When_inject$41 = function $$inject($a) { + var $iter = $When_inject$41.$$p, block = $iter || nil, $post_args, args, $$42, self = this; - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } - if ($iter) TMP_When_inject_41.$$p = null; - return $send(self, 'then', [], (TMP_42 = function(values){var self = TMP_42.$$s || this; -if (values == null) values = nil; - return $send(values, 'reduce', Opal.to_a(args), block.$to_proc())}, TMP_42.$$s = self, TMP_42.$$arity = 1, TMP_42)) - }, TMP_When_inject_41.$$arity = -1); + if ($iter) $When_inject$41.$$p = null; + + + if ($iter) $When_inject$41.$$p = null;; + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; + return $send(self, 'then', [], ($$42 = function(values){var self = $$42.$$s || this; + + + + if (values == null) { + values = nil; + }; + return $send(values, 'reduce', Opal.to_a(args), block.$to_proc());}, $$42.$$s = self, $$42.$$arity = 1, $$42)); + }, $When_inject$41.$$arity = -1); Opal.alias(self, "map", "collect"); Opal.alias(self, "reduce", "inject"); - Opal.defn(self, '$wait', TMP_When_wait_44 = function $$wait(promise) { - var TMP_43, self = this; + Opal.def(self, '$wait', $When_wait$43 = function $$wait(promise) { + var $$44, self = this; - if ($truthy(Opal.const_get_relative($nesting, 'Promise')['$==='](promise))) { - } else { - promise = Opal.const_get_relative($nesting, 'Promise').$value(promise) + if ($truthy($$($nesting, 'Promise')['$==='](promise))) { + } else { + promise = $$($nesting, 'Promise').$value(promise) }; if ($truthy(promise['$act?']())) { promise = promise.$then()}; self.wait['$<<'](promise); - $send(promise, 'always', [], (TMP_43 = function(){var self = TMP_43.$$s || this; + $send(promise, 'always', [], ($$44 = function(){var self = $$44.$$s || this; if (self.next == null) self.next = nil; if ($truthy(self.next['$any?']())) { return self.$try() - } else { + } else { return nil - }}, TMP_43.$$s = self, TMP_43.$$arity = 0, TMP_43)); + }}, $$44.$$s = self, $$44.$$arity = 0, $$44)); return self; - }, TMP_When_wait_44.$$arity = 1); + }, $When_wait$43.$$arity = 1); Opal.alias(self, "and", "wait"); - Opal.defn(self, '$>>', TMP_When_$gt$gt_45 = function($a_rest) { - var TMP_46, self = this, $iter = TMP_When_$gt$gt_45.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; + Opal.def(self, '$>>', $When_$gt$gt$45 = function($a) { + var $post_args, $$46, $iter = $When_$gt$gt$45.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - if ($iter) TMP_When_$gt$gt_45.$$p = null; + if ($iter) $When_$gt$gt$45.$$p = null; // Prepare super implicit arguments for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { $zuper[$zuper_i] = arguments[$zuper_i]; } - return $send($send(self, Opal.find_super_dispatcher(self, '>>', TMP_When_$gt$gt_45, false), $zuper, $iter), 'tap', [], (TMP_46 = function(){var self = TMP_46.$$s || this; + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + ; + return $send($send(self, Opal.find_super_dispatcher(self, '>>', $When_$gt$gt$45, false), $zuper, $iter), 'tap', [], ($$46 = function(){var self = $$46.$$s || this; - return self.$try()}, TMP_46.$$s = self, TMP_46.$$arity = 0, TMP_46)) - }, TMP_When_$gt$gt_45.$$arity = -1); - return (Opal.defn(self, '$try', TMP_When_try_47 = function() { + return self.$try()}, $$46.$$s = self, $$46.$$arity = 0, $$46)); + }, $When_$gt$gt$45.$$arity = -1); + return (Opal.def(self, '$try', $When_try$47 = function() { var self = this, promise = nil; if ($truthy($send(self.wait, 'all?', [], "realized?".$to_proc()))) { - if ($truthy((promise = $send(self.wait, 'find', [], "rejected?".$to_proc())))) { + + promise = $send(self.wait, 'find', [], "rejected?".$to_proc()); + if ($truthy(promise)) { return self.$reject(promise.$error()) - } else { - return self.$resolve($send(self.wait, 'map', [], "value".$to_proc())) - } } else { + return self.$resolve($send(self.wait, 'map', [], "value".$to_proc())) + }; + } else { return nil } - }, TMP_When_try_47.$$arity = 0), nil) && 'try'; + }, $When_try$47.$$arity = 0), nil) && 'try'; })($nesting[0], self, $nesting); })($nesting[0], null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["time"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; Opal.add_stubs(['$strftime']); return (function($base, $super, $parent_nesting) { - function $Time(){}; - var self = $Time = $klass($base, $super, 'Time', $Time); + var self = $klass($base, $super, 'Time'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Time_parse_1, TMP_Time_iso8601_2; + var $nesting = [self].concat($parent_nesting), $Time_parse$1, $Time_iso8601$2; - Opal.defs(self, '$parse', TMP_Time_parse_1 = function $$parse(str) { + Opal.defs(self, '$parse', $Time_parse$1 = function $$parse(str) { var self = this; - return new Date(Date.parse(str)) - }, TMP_Time_parse_1.$$arity = 1); - return (Opal.defn(self, '$iso8601', TMP_Time_iso8601_2 = function $$iso8601() { + return new Date(Date.parse(str)); + }, $Time_parse$1.$$arity = 1); + return (Opal.def(self, '$iso8601', $Time_iso8601$2 = function $$iso8601() { var self = this; return self.$strftime("%FT%T%z") - }, TMP_Time_iso8601_2.$$arity = 0), nil) && 'iso8601'; + }, $Time_iso8601$2.$$arity = 0), nil) && 'iso8601'; })($nesting[0], null, $nesting) }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/patches/require_remote"] = function(Opal) { - var TMP_require_remote_1, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; + var $require_remote$1, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$require', '$eval']); self.$require("opal-parser"); - return (Opal.defn(Opal.Object, '$require_remote', TMP_require_remote_1 = function $$require_remote(url) { + return (Opal.def(self, '$require_remote', $require_remote$1 = function $$require_remote(url) { var self = this; @@ -53825,40 +61374,39 @@ Opal.modules["dxopal/patches/require_remote"] = function(Opal) { r.send(''); ; return self.$eval(r.responseText); - }, TMP_require_remote_1.$$arity = 1), nil) && 'require_remote'; + }, $require_remote$1.$$arity = 1), nil) && 'require_remote'; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ Opal.modules["dxopal/patches/require_dxopal"] = function(Opal) { - var TMP_require_1, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send; + var $require$1, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send; Opal.add_stubs(['$==', '$dxopal_orig_require']); (function($base, $parent_nesting) { - var $Kernel, self = $Kernel = $module($base, 'Kernel'); + var self = $module($base, 'Kernel'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting); + var $nesting = [self].concat($parent_nesting); Opal.alias(self, "dxopal_orig_require", "require") })($nesting[0], $nesting); - return (Opal.defn(Opal.Object, '$require', TMP_require_1 = function $$require($a_rest) { - var self = this, args; - - var $args_len = arguments.length, $rest_len = $args_len - 0; - if ($rest_len < 0) { $rest_len = 0; } - args = new Array($rest_len); - for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) { - args[$arg_idx - 0] = arguments[$arg_idx]; - } + return (Opal.def(self, '$require', $require$1 = function $$require($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments, 0, arguments.length); + + args = $post_args;; if (args['$=='](["dxopal"])) { return nil - } else { + } else { return $send(self, 'dxopal_orig_require', Opal.to_a(args)) - } - }, TMP_require_1.$$arity = -1), nil) && 'require'; + }; + }, $require$1.$$arity = -1), nil) && 'require'; }; -/* Generated by Opal 0.11.4 */ +/* Generated by Opal 1.0.5 */ (function(Opal) { function $rb_minus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); @@ -53869,19 +61417,19 @@ Opal.modules["dxopal/patches/require_dxopal"] = function(Opal) { function $rb_plus(lhs, rhs) { return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); } - var TMP_console_1, self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send; + var $console$1, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$require', '$include', '$call', '$name', '$class', '$Array', '$backtrace', '$raise', '$new', '$[]=', '$-', '$join', '$sort', '$keys', '$>=', '$[]', '$inspect', '$+']); self.$require("opal"); self.$require("console"); - Opal.defn(Opal.Object, '$console', TMP_console_1 = function $$console() { + Opal.def(self, '$console', $console$1 = function $$console() { var self = this; if ($gvars.console == null) $gvars.console = nil; return $gvars.console - }, TMP_console_1.$$arity = 0); + }, $console$1.$$arity = 0); self.$require("dxopal/constants/colors"); self.$require("dxopal/font"); self.$require("dxopal/input"); @@ -53903,23 +61451,26 @@ Opal.modules["dxopal/patches/require_dxopal"] = function(Opal) { self.$require("dxopal/patches/require_remote"); self.$require("dxopal/patches/require_dxopal"); (function($base, $parent_nesting) { - var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); + var self = $module($base, 'DXOpal'); - var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DXOpal_dump_error_2, TMP_DXOpal_3, TMP_DXOpal_p__4; + var $nesting = [self].concat($parent_nesting), $DXOpal_dump_error$2, $DXOpal$3, $DXOpal_p_$4; - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Constants'), 'Colors')); - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Input'), 'KeyCodes')); - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'Input'), 'MouseCodes')); - self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting, 'DXOpal'), 'SoundEffect'), 'WaveTypes')); - Opal.defs(self, '$dump_error', TMP_DXOpal_dump_error_2 = function $$dump_error() { - var self = this, $iter = TMP_DXOpal_dump_error_2.$$p, block = $iter || nil, ex = nil, div = nil; + self.$include($$$($$$($$($nesting, 'DXOpal'), 'Constants'), 'Colors')); + self.$include($$$($$$($$($nesting, 'DXOpal'), 'Input'), 'KeyCodes')); + self.$include($$$($$$($$($nesting, 'DXOpal'), 'Input'), 'MouseCodes')); + self.$include($$$($$$($$($nesting, 'DXOpal'), 'SoundEffect'), 'WaveTypes')); + Opal.defs(self, '$dump_error', $DXOpal_dump_error$2 = function $$dump_error() { + var $iter = $DXOpal_dump_error$2.$$p, block = $iter || nil, self = this, ex = nil, div = nil; - if ($iter) TMP_DXOpal_dump_error_2.$$p = null; + if ($iter) $DXOpal_dump_error$2.$$p = null; + + + if ($iter) $DXOpal_dump_error$2.$$p = null;; try { return block.$call() } catch ($err) { - if (Opal.rescue($err, [Opal.const_get_relative($nesting, 'Exception')])) {ex = $err; + if (Opal.rescue($err, [$$($nesting, 'Exception')])) {ex = $err; try { div = document.getElementById('dxopal-errors'); @@ -53939,31 +61490,40 @@ Opal.modules["dxopal/patches/require_dxopal"] = function(Opal) { return self.$raise(ex); } finally { Opal.pop_exception() } } else { throw $err; } - } - }, TMP_DXOpal_dump_error_2.$$arity = 0); - Opal.const_set($nesting[0], 'P_CT', $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_DXOpal_3 = function(h, k){var self = TMP_DXOpal_3.$$s || this, $writer = nil; -if (h == null) h = nil;if (k == null) k = nil; + }; + }, $DXOpal_dump_error$2.$$arity = 0); + Opal.const_set($nesting[0], 'P_CT', $send($$($nesting, 'Hash'), 'new', [], ($DXOpal$3 = function(h, k){var self = $DXOpal$3.$$s || this, $writer = nil; + + + if (h == null) { + h = nil; + }; + + if (k == null) { + k = nil; + }; $writer = [k, 0]; $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, TMP_DXOpal_3.$$s = self, TMP_DXOpal_3.$$arity = 2, TMP_DXOpal_3))); + return $writer[$rb_minus($writer["length"], 1)];}, $DXOpal$3.$$s = self, $DXOpal$3.$$arity = 2, $DXOpal$3))); - Opal.defn(self, '$p_', TMP_DXOpal_p__4 = function $$p_(hash, n) { + Opal.def(self, '$p_', $DXOpal_p_$4 = function $$p_(hash, n) { var self = this, key = nil, $writer = nil; + + if (n == null) { n = 10; - } - + }; key = hash.$keys().$sort().$join(); - if ($truthy($rb_ge(Opal.const_get_relative($nesting, 'P_CT')['$[]'](key), n))) { + if ($truthy($rb_ge($$($nesting, 'P_CT')['$[]'](key), n))) { return nil}; console.log(hash.$inspect()); - $writer = [key, $rb_plus(Opal.const_get_relative($nesting, 'P_CT')['$[]'](key), 1)]; - $send(Opal.const_get_relative($nesting, 'P_CT'), '[]=', Opal.to_a($writer)); + $writer = [key, $rb_plus($$($nesting, 'P_CT')['$[]'](key), 1)]; + $send($$($nesting, 'P_CT'), '[]=', Opal.to_a($writer)); return $writer[$rb_minus($writer["length"], 1)];; - }, TMP_DXOpal_p__4.$$arity = -2); + }, $DXOpal_p_$4.$$arity = -2); })($nesting[0], $nesting); // Like `console.log`, but prints only limited times. @@ -53981,5 +61541,5 @@ if (h == null) h = nil;if (k == null) k = nil; }; })(); ; - return self.$include(Opal.const_get_relative($nesting, 'DXOpal')); + return self.$include($$($nesting, 'DXOpal')); })(Opal); diff --git a/build/dxopal.min.js b/build/dxopal.min.js index ebee08e..5d5f5e0 100644 --- a/build/dxopal.min.js +++ b/build/dxopal.min.js @@ -1 +1 @@ -(function(undefined){var global_object=this,console;if(typeof global!=="undefined"){global_object=global}if(typeof window!=="undefined"){global_object=window}if(typeof global_object.console==="object"){console=global_object.console}else if(global_object.console==null){console=global_object.console={}}else{console={}}if(!("log"in console)){console.log=function(){}}if(!("warn"in console)){console.warn=console.log}if(typeof this.Opal!=="undefined"){console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup.");return this.Opal}var nil;var BasicObject;var _Object;var Module;var Class;function BasicObject_alloc(){}function Object_alloc(){}function Class_alloc(){}function Module_alloc(){}function NilClass_alloc(){}var Opal=this.Opal={};var BridgedClasses={};Opal.global=global_object;global_object.Opal=Opal;Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning",enable_stack_trace:true};var $hasOwn=Object.hasOwnProperty;var $slice=Opal.slice=Array.prototype.slice;var nil_id=4;var unique_id=nil_id;Opal.uid=function(){unique_id+=2;return unique_id};Opal.id=function(obj){if(obj.$$is_number)return obj*2+1;return obj.$$id||(obj.$$id=Opal.uid())};Opal.gvars={};Opal.exit=function(status){if(Opal.gvars.DEBUG)console.log("Exited with status "+status)};Opal.exceptions=[];Opal.pop_exception=function(){Opal.gvars["!"]=Opal.exceptions.pop()||nil};Opal.inspect=function(obj){if(obj===undefined){return"undefined"}else if(obj===null){return"null"}else if(!obj.$$class){return obj.toString()}else{return obj.$inspect()}};Opal.truthy=function(val){return val!==nil&&val!=null&&(!val.$$is_boolean||val==true)};Opal.falsy=function(val){return val===nil||val==null||val.$$is_boolean&&val==false};function const_get_name(cref,name){if(cref)return cref.$$const[name]}function const_lookup_nesting(nesting,name){var i,ii,result,constant;if(nesting.length===0)return;for(i=0,ii=nesting.length;i")+">";klass.$$proto=alloc.prototype;klass.$$proto.$$class=klass;klass.constructor=singleton_class_alloc;klass.$$is_class=true;klass.$$class=Class;return klass};Opal.module=function(base,name){var module;if(base==null){base=_Object}if(!base.$$is_class&&!base.$$is_module){base=base.$$class}module=const_get_name(base,name);if(module==null&&base===_Object)module=const_lookup_ancestors(_Object,name);if(module){if(!module.$$is_module&&module!==_Object){throw Opal.TypeError.$new(name+" is not a module")}}else{module=Opal.module_allocate(Module);Opal.const_set(base,name,module)}return module};Opal.module_initialize=function(module,block){if(block!==nil){var block_self=block.$$s;block.$$s=null;block.call(module);block.$$s=block_self}return nil};Opal.module_allocate=function(superclass){var mtor=function(){};mtor.prototype=superclass.$$alloc.prototype;var module_constructor=function(){};module_constructor.prototype=new mtor;var module=new module_constructor;var module_prototype={};Opal.setup_module_or_class(module);module.$$included_in=[];module_constructor.displayName="#>";module.$$proto=module_prototype;module.constructor=module_constructor;module.$$is_module=true;module.$$class=Module;module.$$super=superclass;module.$$parent=superclass;return module};Opal.get_singleton_class=function(object){if(object.$$meta){return object.$$meta}if(object.$$is_class||object.$$is_module){return Opal.build_class_singleton_class(object)}return Opal.build_object_singleton_class(object)};Opal.build_class_singleton_class=function(object){var alloc,superclass,klass;if(object.$$meta){return object.$$meta}alloc=object.constructor;superclass=object===BasicObject?Class:Opal.build_class_singleton_class(object.$$super);klass=Opal.setup_class_object(null,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.build_object_singleton_class=function(object){var superclass=object.$$class,name="#>";var alloc=Opal.boot_class_alloc(name,function(){},superclass);var klass=Opal.setup_class_object(name,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;klass.$$class=superclass.$$class;klass.$$proto=object;klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.class_variables=function(module){var ancestors=Opal.ancestors(module),i,length=ancestors.length,result={};for(i=length-1;i>=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars){result[cvar]=ancestor.$$cvars[cvar]}}return result};Opal.class_variable_set=function(module,name,value){var ancestors=Opal.ancestors(module),i,length=ancestors.length;for(i=length-2;i>=0;i--){var ancestor=ancestors[i];if($hasOwn.call(ancestor.$$cvars,name)){ancestor.$$cvars[name]=value;return value}}module.$$cvars[name]=value;return value};Opal.bridge_method=function(target_constructor,from,name,body){var ancestors,i,ancestor,length;ancestors=target_constructor.$$bridge.$ancestors();for(i=0,length=ancestors.length;i=0;i--){Opal_bridge_methods_to_constructor(bridged[i],donator)}}};function Opal_bridge_methods_to_constructor(target_constructor,donator){var i,method,methods=donator.$instance_methods();for(i=methods.length-1;i>=0;i--){method="$"+methods[i];Opal.bridge_method(target_constructor,donator,method,donator.$$proto[method])}}function Opal_add_bridged_constructor(target_constructor,donator){var donator_id=donator.$__id__();if(!BridgedClasses[donator_id]){BridgedClasses[donator_id]=[]}BridgedClasses[donator_id].push(target_constructor)}Opal.has_cyclic_dep=function has_cyclic_dep(base_id,deps,prop,seen){var i,dep_id,dep;for(i=deps.length-1;i>=0;i--){dep=deps[i];dep_id=dep.$$id;if(seen[dep_id]){continue}seen[dep_id]=true;if(dep_id===base_id){return true}if(has_cyclic_dep(base_id,dep[prop],prop,seen)){return true}}return false};Opal.append_features=function(module,includer){var iclass,donator,prototype,methods,id,i;for(i=includer.$$inc.length-1;i>=0;i--){if(includer.$$inc[i]===module){return}}if(!includer.$$is_class&&Opal.has_cyclic_dep(includer.$$id,[module],"$$inc",{})){throw Opal.ArgumentError.$new("cyclic include detected")}Opal.const_cache_version++;includer.$$inc.push(module);module.$$included_in.push(includer);Opal.bridge_methods(includer,module);iclass={$$name:module.$$name,$$proto:module.$$proto,$$parent:includer.$$parent,$$module:module,$$iclass:true};includer.$$parent=iclass;methods=module.$instance_methods();for(i=methods.length-1;i>=0;i--){Opal.update_includer(module,includer,"$"+methods[i])}};Opal.stubs={};Opal.bridge=function(klass,constructor){if(constructor.$$bridge){throw Opal.ArgumentError.$new("already bridged")}Opal.stub_subscribers.push(constructor.prototype);for(var method_name in Opal.stubs){if(!(method_name in constructor.prototype)){constructor.prototype[method_name]=Opal.stub_for(method_name)}}constructor.prototype.$$class=klass;constructor.$$bridge=klass;var ancestors=klass.$ancestors();for(var i=ancestors.length-1;i>=0;i--){Opal_add_bridged_constructor(constructor,ancestors[i]);Opal_bridge_methods_to_constructor(constructor,ancestors[i])}for(var name in BasicObject_alloc.prototype){var method=BasicObject_alloc.prototype[method];if(method&&method.$$stub&&!(name in constructor.prototype)){constructor.prototype[name]=method}}return klass};Opal.update_includer=function(module,includer,jsid){var dest,current,body,klass_includees,j,jj,current_owner_index,module_index;body=module.$$proto[jsid];dest=includer.$$proto;current=dest[jsid];if(dest.hasOwnProperty(jsid)&&!current.$$donated&&!current.$$stub){}else if(dest.hasOwnProperty(jsid)&&!current.$$stub){klass_includees=includer.$$inc;for(j=0,jj=klass_includees.length;j=0;i--){modules=Opal.ancestors(parent.$$inc[i]);for(j=0,jj=modules.length;j1||(has_mlhs||has_trailing_comma)&&block.length===1){arg=Opal.to_ary(arg)}if((block.length>1||has_trailing_comma&&block.length===1)&&arg.$$is_array){return block.apply(null,arg)}else{return block(arg)}};Opal.yieldX=function(block,args){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&args.length===1){if(args[0].$$is_array){return block.apply(null,args[0])}}if(!args.$$is_array){var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i=0;i--){Opal.bridge_method(bridged[i],obj,jsid,body)}}var singleton_of=obj.$$singleton_of;if(obj.$method_added&&!obj.$method_added.$$stub&&!singleton_of){obj.$method_added(jsid.substr(1))}else if(singleton_of&&singleton_of.$singleton_method_added&&!singleton_of.$singleton_method_added.$$stub){singleton_of.$singleton_method_added(jsid.substr(1))}return nil};Opal.defs=function(obj,jsid,body){Opal.defn(Opal.get_singleton_class(obj),jsid,body)};Opal.rdef=function(obj,jsid){if(!$hasOwn.call(obj.$$proto,jsid)){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}delete obj.$$proto[jsid];if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_removed&&!obj.$$proto.$singleton_method_removed.$$stub){obj.$$proto.$singleton_method_removed(jsid.substr(1))}}else{if(obj.$method_removed&&!obj.$method_removed.$$stub){obj.$method_removed(jsid.substr(1))}}};Opal.udef=function(obj,jsid){if(!obj.$$proto[jsid]||obj.$$proto[jsid].$$stub){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}Opal.add_stub_for(obj.$$proto,jsid);if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_undefined&&!obj.$$proto.$singleton_method_undefined.$$stub){obj.$$proto.$singleton_method_undefined(jsid.substr(1))}}else{if(obj.$method_undefined&&!obj.$method_undefined.$$stub){obj.$method_undefined(jsid.substr(1))}}};Opal.alias=function(obj,name,old){var id="$"+name,old_id="$"+old,body=obj.$$proto["$"+old],alias;if(obj.$$eval){return Opal.alias(Opal.get_singleton_class(obj),name,old)}if(typeof body!=="function"||body.$$stub){var ancestor=obj.$$super;while(typeof body!=="function"&&ancestor){body=ancestor[old_id];ancestor=ancestor.$$super}if(typeof body!=="function"||body.$$stub){throw Opal.NameError.$new("undefined method `"+old+"' for class `"+obj.$name()+"'")}}if(body.$$alias_of)body=body.$$alias_of;alias=function(){var block=alias.$$p,args,i,ii;args=new Array(arguments.length);for(i=0,ii=arguments.length;i","$coerce_to!","$!=","$[]","$upcase"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Opal_bridge_1,TMP_Opal_type_error_2,TMP_Opal_coerce_to_3,TMP_Opal_coerce_to$B_4,TMP_Opal_coerce_to$q_5,TMP_Opal_try_convert_6,TMP_Opal_compare_7,TMP_Opal_destructure_8,TMP_Opal_respond_to$q_9,TMP_Opal_inspect_obj_10,TMP_Opal_instance_variable_name$B_11,TMP_Opal_class_variable_name$B_12,TMP_Opal_const_name$B_13,TMP_Opal_pristine_14;Opal.defs(self,"$bridge",TMP_Opal_bridge_1=function $$bridge(klass,constructor){var self=this;return Opal.bridge(klass,constructor)},TMP_Opal_bridge_1.$$arity=2);Opal.defs(self,"$type_error",TMP_Opal_type_error_2=function $$type_error(object,type,method,coerced){var $a,self=this;if(method==null){method=nil}if(coerced==null){coerced=nil}if($truthy($truthy($a=method)?coerced:$a)){return Opal.const_get_relative($nesting,"TypeError").$new(""+"can't convert "+object.$class()+" into "+type+" ("+object.$class()+"#"+method+" gives "+coerced.$class())}else{return Opal.const_get_relative($nesting,"TypeError").$new(""+"no implicit conversion of "+object.$class()+" into "+type)}},TMP_Opal_type_error_2.$$arity=-3);Opal.defs(self,"$coerce_to",TMP_Opal_coerce_to_3=function $$coerce_to(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){}else{self.$raise(self.$type_error(object,type))}return object.$__send__(method)},TMP_Opal_coerce_to_3.$$arity=3);Opal.defs(self,"$coerce_to!",TMP_Opal_coerce_to$B_4=function(object,type,method){var self=this,coerced=nil;coerced=self.$coerce_to(object,type,method);if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_Opal_coerce_to$B_4.$$arity=3);Opal.defs(self,"$coerce_to?",TMP_Opal_coerce_to$q_5=function(object,type,method){var self=this,coerced=nil;if($truthy(object["$respond_to?"](method))){}else{return nil}coerced=self.$coerce_to(object,type,method);if($truthy(coerced["$nil?"]())){return nil}if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_Opal_coerce_to$q_5.$$arity=3);Opal.defs(self,"$try_convert",TMP_Opal_try_convert_6=function $$try_convert(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){return object.$__send__(method)}else{return nil}},TMP_Opal_try_convert_6.$$arity=3);Opal.defs(self,"$compare",TMP_Opal_compare_7=function $$compare(a,b){var self=this,compare=nil;compare=a["$<=>"](b);if($truthy(compare===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+a.$class()+" with "+b.$class()+" failed")}return compare},TMP_Opal_compare_7.$$arity=2);Opal.defs(self,"$destructure",TMP_Opal_destructure_8=function $$destructure(args){var self=this;if(args.length==1){return args[0]}else if(args.$$is_array){return args}else{var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i=0;i--){method_name=method_names[i];method=owner_class.$$proto["$"+method_name];if(method&&!method.$$stub){method.$$pristine=true}}return nil},TMP_Opal_pristine_14.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/module"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$===","$raise","$equal?","$<","$>","$nil?","$attr_reader","$attr_writer","$class_variable_name!","$new","$const_name!","$=~","$inject","$split","$const_get","$==","$!","$start_with?","$to_proc","$lambda","$bind","$call","$class","$append_features","$included","$name","$cover?","$size","$merge","$compile","$proc","$+","$to_s","$__id__","$constants","$include?","$copy_class_variables","$copy_constants"]);return function($base,$super,$parent_nesting){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Module_allocate_1,TMP_Module_initialize_2,TMP_Module_$eq$eq$eq_3,TMP_Module_$lt_4,TMP_Module_$lt$eq_5,TMP_Module_$gt_6,TMP_Module_$gt$eq_7,TMP_Module_$lt$eq$gt_8,TMP_Module_alias_method_9,TMP_Module_alias_native_10,TMP_Module_ancestors_11,TMP_Module_append_features_12,TMP_Module_attr_accessor_13,TMP_Module_attr_reader_14,TMP_Module_attr_writer_15,TMP_Module_autoload_16,TMP_Module_class_variables_17,TMP_Module_class_variable_get_18,TMP_Module_class_variable_set_19,TMP_Module_class_variable_defined$q_20,TMP_Module_remove_class_variable_21,TMP_Module_constants_22,TMP_Module_constants_23,TMP_Module_nesting_24,TMP_Module_const_defined$q_25,TMP_Module_const_get_27,TMP_Module_const_missing_28,TMP_Module_const_set_29,TMP_Module_public_constant_30,TMP_Module_define_method_31,TMP_Module_remove_method_33,TMP_Module_singleton_class$q_34,TMP_Module_include_35,TMP_Module_included_modules_36,TMP_Module_include$q_37,TMP_Module_instance_method_38,TMP_Module_instance_methods_39,TMP_Module_included_40,TMP_Module_extended_41,TMP_Module_method_added_42,TMP_Module_method_removed_43,TMP_Module_method_undefined_44,TMP_Module_module_eval_45,TMP_Module_module_exec_47,TMP_Module_method_defined$q_48,TMP_Module_module_function_49,TMP_Module_name_50,TMP_Module_remove_const_51,TMP_Module_to_s_52,TMP_Module_undef_method_53,TMP_Module_instance_variables_54,TMP_Module_dup_55,TMP_Module_copy_class_variables_56,TMP_Module_copy_constants_57;Opal.defs(self,"$allocate",TMP_Module_allocate_1=function $$allocate(){var self=this;var module;module=Opal.module_allocate(self);return module},TMP_Module_allocate_1.$$arity=0);Opal.defn(self,"$initialize",TMP_Module_initialize_2=function $$initialize(){var self=this,$iter=TMP_Module_initialize_2.$$p,block=$iter||nil;if($iter)TMP_Module_initialize_2.$$p=null;return Opal.module_initialize(self,block)},TMP_Module_initialize_2.$$arity=0);Opal.defn(self,"$===",TMP_Module_$eq$eq$eq_3=function(object){var self=this;if($truthy(object==null)){return false}return Opal.is_a(object,self)},TMP_Module_$eq$eq$eq_3.$$arity=1);Opal.defn(self,"$<",TMP_Module_$lt_4=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"compared with non class/module")}var working=self,ancestors,i,length;if(working===other){return false}for(i=0,ancestors=Opal.ancestors(self),length=ancestors.length;i",TMP_Module_$gt_6=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"compared with non class/module")}return $rb_lt(other,self)},TMP_Module_$gt_6.$$arity=1);Opal.defn(self,"$>=",TMP_Module_$gt$eq_7=function(other){var $a,self=this;return $truthy($a=self["$equal?"](other))?$a:$rb_gt(self,other)},TMP_Module_$gt$eq_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Module_$lt$eq$gt_8=function(other){var self=this,lt=nil;if(self===other){return 0}if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{return nil}lt=$rb_lt(self,other);if($truthy(lt["$nil?"]())){return nil}if($truthy(lt)){return-1}else{return 1}},TMP_Module_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$alias_method",TMP_Module_alias_method_9=function $$alias_method(newname,oldname){var self=this;Opal.alias(self,newname,oldname);return self},TMP_Module_alias_method_9.$$arity=2);Opal.defn(self,"$alias_native",TMP_Module_alias_native_10=function $$alias_native(mid,jsid){var self=this;if(jsid==null){jsid=mid}Opal.alias_native(self,mid,jsid);return self},TMP_Module_alias_native_10.$$arity=-2);Opal.defn(self,"$ancestors",TMP_Module_ancestors_11=function $$ancestors(){var self=this;return Opal.ancestors(self)},TMP_Module_ancestors_11.$$arity=0);Opal.defn(self,"$append_features",TMP_Module_append_features_12=function $$append_features(includer){var self=this;Opal.append_features(self,includer);return self},TMP_Module_append_features_12.$$arity=1);Opal.defn(self,"$attr_accessor",TMP_Module_attr_accessor_13=function $$attr_accessor($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}$send(self,"attr_reader",Opal.to_a(names));return $send(self,"attr_writer",Opal.to_a(names))},TMP_Module_attr_accessor_13.$$arity=-1);Opal.alias(self,"attr","attr_accessor");Opal.defn(self,"$attr_reader",TMP_Module_attr_reader_14=function $$attr_reader($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name);var body=function(ivar){return function(){if(this[ivar]==null){return nil}else{return this[ivar]}}}(ivar);proto[ivar]=nil;body.$$parameters=[];body.$$arity=0;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_Module_attr_reader_14.$$arity=-1);Opal.defn(self,"$attr_writer",TMP_Module_attr_writer_15=function $$attr_writer($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name);var body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]];body.$$arity=1;proto[ivar]=nil;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_Module_attr_writer_15.$$arity=-1);Opal.defn(self,"$autoload",TMP_Module_autoload_16=function $$autoload(const$,path){var self=this;if(self.$$autoload==null)self.$$autoload={};Opal.const_cache_version++;self.$$autoload[const$]=path;return nil},TMP_Module_autoload_16.$$arity=2);Opal.defn(self,"$class_variables",TMP_Module_class_variables_17=function $$class_variables(){var self=this;return Object.keys(Opal.class_variables(self))},TMP_Module_class_variables_17.$$arity=0);Opal.defn(self,"$class_variable_get",TMP_Module_class_variable_get_18=function $$class_variable_get(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);var value=Opal.class_variables(self)[name];if(value==null){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"uninitialized class variable "+name+" in "+self,name))}return value},TMP_Module_class_variable_get_18.$$arity=1);Opal.defn(self,"$class_variable_set",TMP_Module_class_variable_set_19=function $$class_variable_set(name,value){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variable_set(self,name,value)},TMP_Module_class_variable_set_19.$$arity=2);Opal.defn(self,"$class_variable_defined?",TMP_Module_class_variable_defined$q_20=function(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variables(self).hasOwnProperty(name)},TMP_Module_class_variable_defined$q_20.$$arity=1);Opal.defn(self,"$remove_class_variable",TMP_Module_remove_class_variable_21=function $$remove_class_variable(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);if(Opal.hasOwnProperty.call(self.$$cvars,name)){var value=self.$$cvars[name];delete self.$$cvars[name];return value}else{self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"cannot remove "+name+" for "+self))}},TMP_Module_remove_class_variable_21.$$arity=1);Opal.defn(self,"$constants",TMP_Module_constants_22=function $$constants(inherit){var self=this;if(inherit==null){inherit=true}return Opal.constants(self,inherit)},TMP_Module_constants_22.$$arity=-1);Opal.defs(self,"$constants",TMP_Module_constants_23=function $$constants(inherit){var self=this;if(inherit==null){var nesting=(self.$$nesting||[]).concat(Opal.Object),constant,constants={},i,ii;for(i=0,ii=nesting.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(self);mod.$included(self)}return self},TMP_Module_include_35.$$arity=-1);Opal.defn(self,"$included_modules",TMP_Module_included_modules_36=function $$included_modules(){var self=this;var results;var module_chain=function(klass){var included=[];for(var i=0,ii=klass.$$inc.length;i"},TMP_Module_to_s_52.$$arity=0);Opal.defn(self,"$undef_method",TMP_Module_undef_method_53=function $$undef_method($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=names.length;i"}else if(singleton_of){return""+"#>"}return $send(self,Opal.find_super_dispatcher(self,"to_s",TMP_Class_to_s_7,false),[],null)},TMP_Class_to_s_7.$$arity=0),nil)&&"to_s"}($nesting[0],null,$nesting)};Opal.modules["corelib/basic_object"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$range=Opal.range,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$==","$!","$nil?","$cover?","$size","$raise","$merge","$compile","$proc","$>","$new","$inspect"]);return function($base,$super,$parent_nesting){function $BasicObject(){}var self=$BasicObject=$klass($base,$super,"BasicObject",$BasicObject);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BasicObject_initialize_1,TMP_BasicObject_$eq$eq_2,TMP_BasicObject_eql$q_3,TMP_BasicObject___id___4,TMP_BasicObject___send___5,TMP_BasicObject_$B_6,TMP_BasicObject_$B$eq_7,TMP_BasicObject_instance_eval_8,TMP_BasicObject_instance_exec_10,TMP_BasicObject_singleton_method_added_11,TMP_BasicObject_singleton_method_removed_12,TMP_BasicObject_singleton_method_undefined_13,TMP_BasicObject_method_missing_14;Opal.defn(self,"$initialize",TMP_BasicObject_initialize_1=function $$initialize($a_rest){var self=this;return nil},TMP_BasicObject_initialize_1.$$arity=-1);Opal.defn(self,"$==",TMP_BasicObject_$eq$eq_2=function(other){var self=this;return self===other},TMP_BasicObject_$eq$eq_2.$$arity=1);Opal.defn(self,"$eql?",TMP_BasicObject_eql$q_3=function(other){var self=this;return self["$=="](other)},TMP_BasicObject_eql$q_3.$$arity=1);Opal.alias(self,"equal?","==");Opal.defn(self,"$__id__",TMP_BasicObject___id___4=function $$__id__(){var self=this;return self.$$id||(self.$$id=Opal.uid())},TMP_BasicObject___id___4.$$arity=0);Opal.defn(self,"$__send__",TMP_BasicObject___send___5=function $$__send__(symbol,$a_rest){var self=this,args,$iter=TMP_BasicObject___send___5.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_BasicObject___send___5.$$p=null;var func=self["$"+symbol];if(func){if(block!==nil){func.$$p=block}return func.apply(self,args)}if(block!==nil){self.$method_missing.$$p=block}return self.$method_missing.apply(self,[symbol].concat(args))},TMP_BasicObject___send___5.$$arity=-2);Opal.defn(self,"$!",TMP_BasicObject_$B_6=function(){var self=this;return false},TMP_BasicObject_$B_6.$$arity=0);Opal.defn(self,"$!=",TMP_BasicObject_$B$eq_7=function(other){var self=this;return self["$=="](other)["$!"]()},TMP_BasicObject_$B$eq_7.$$arity=1);Opal.defn(self,"$instance_eval",TMP_BasicObject_instance_eval_8=function $$instance_eval($a_rest){var $b,TMP_9,self=this,args,$iter=TMP_BasicObject_instance_eval_8.$$p,block=$iter||nil,string=nil,file=nil,_lineno=nil,default_eval_options=nil,compiling_options=nil,compiled=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_BasicObject_instance_eval_8.$$p=null;if($truthy($truthy($b=block["$nil?"]())?!!Opal.compile:$b)){if($truthy($range(1,3,false)["$cover?"](args.$size()))){}else{Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),"wrong number of arguments (0 for 1..3)")}$b=[].concat(Opal.to_a(args)),string=$b[0]==null?nil:$b[0],file=$b[1]==null?nil:$b[1],_lineno=$b[2]==null?nil:$b[2],$b;default_eval_options=$hash2(["file","eval"],{file:$truthy($b=file)?$b:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);compiled=Opal.const_get_qualified("::","Opal").$compile(string,compiling_options);block=$send(Opal.const_get_qualified("::","Kernel"),"proc",[],(TMP_9=function(){var self=TMP_9.$$s||this;return function(self){return eval(compiled)}(self)},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))}else if($truthy($rb_gt(args.$size(),0))){Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),""+"wrong number of arguments ("+args.$size()+" for 0)")}var old=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.call(self,self)}finally{self.$$eval=false}}else{result=block.call(self,self)}block.$$s=old;return result},TMP_BasicObject_instance_eval_8.$$arity=-1);Opal.defn(self,"$instance_exec",TMP_BasicObject_instance_exec_10=function $$instance_exec($a_rest){var self=this,args,$iter=TMP_BasicObject_instance_exec_10.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_BasicObject_instance_exec_10.$$p=null;if($truthy(block)){}else{Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.apply(self,args)}finally{self.$$eval=false}}else{result=block.apply(self,args)}block.$$s=block_self;return result},TMP_BasicObject_instance_exec_10.$$arity=-1);Opal.defn(self,"$singleton_method_added",TMP_BasicObject_singleton_method_added_11=function $$singleton_method_added($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_added_11.$$arity=-1);Opal.defn(self,"$singleton_method_removed",TMP_BasicObject_singleton_method_removed_12=function $$singleton_method_removed($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_removed_12.$$arity=-1);Opal.defn(self,"$singleton_method_undefined",TMP_BasicObject_singleton_method_undefined_13=function $$singleton_method_undefined($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_undefined_13.$$arity=-1);return(Opal.defn(self,"$method_missing",TMP_BasicObject_method_missing_14=function $$method_missing(symbol,$a_rest){var self=this,args,$iter=TMP_BasicObject_method_missing_14.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_BasicObject_method_missing_14.$$p=null;return Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","NoMethodError").$new(function(){if($truthy(self.$inspect&&!self.$inspect.$$stub)){return""+"undefined method `"+symbol+"' for "+self.$inspect()+":"+self.$$class}else{return""+"undefined method `"+symbol+"' for "+self.$$class}return nil}(),symbol))},TMP_BasicObject_method_missing_14.$$arity=-2),nil)&&"method_missing"}($nesting[0],null,$nesting)};Opal.modules["corelib/kernel"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$klass=Opal.klass;Opal.add_stubs(["$raise","$new","$inspect","$!","$=~","$==","$object_id","$class","$coerce_to?","$<<","$allocate","$copy_instance_variables","$copy_singleton_methods","$initialize_clone","$initialize_copy","$define_method","$singleton_class","$to_proc","$initialize_dup","$for","$>","$size","$pop","$call","$coerce_to","$append_features","$extended","$length","$respond_to?","$[]","$nil?","$to_a","$to_int","$fetch","$Integer","$Float","$to_ary","$to_str","$to_s","$__id__","$instance_variable_name!","$coerce_to!","$===","$enum_for","$result","$print","$format","$puts","$each","$<=","$empty?","$exception","$kind_of?","$rand","$respond_to_missing?","$try_convert!","$expand_path","$join","$start_with?","$srand","$new_seed","$sym","$arg","$open","$include"]);(function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_method_missing_1,TMP_Kernel_$eq$_2,TMP_Kernel_$B$_3,TMP_Kernel_$eq$eq$eq_4,TMP_Kernel_$lt$eq$gt_5,TMP_Kernel_method_6,TMP_Kernel_methods_7,TMP_Kernel_Array_8,TMP_Kernel_at_exit_9,TMP_Kernel_caller_10,TMP_Kernel_class_11,TMP_Kernel_copy_instance_variables_12,TMP_Kernel_copy_singleton_methods_13,TMP_Kernel_clone_14,TMP_Kernel_initialize_clone_15,TMP_Kernel_define_singleton_method_16,TMP_Kernel_dup_17,TMP_Kernel_initialize_dup_18,TMP_Kernel_enum_for_19,TMP_Kernel_equal$q_20,TMP_Kernel_exit_21,TMP_Kernel_extend_22,TMP_Kernel_format_23,TMP_Kernel_hash_24,TMP_Kernel_initialize_copy_25,TMP_Kernel_inspect_26,TMP_Kernel_instance_of$q_27,TMP_Kernel_instance_variable_defined$q_28,TMP_Kernel_instance_variable_get_29,TMP_Kernel_instance_variable_set_30,TMP_Kernel_remove_instance_variable_31,TMP_Kernel_instance_variables_32,TMP_Kernel_Integer_33,TMP_Kernel_Float_34,TMP_Kernel_Hash_35,TMP_Kernel_is_a$q_36,TMP_Kernel_itself_37,TMP_Kernel_lambda_38,TMP_Kernel_load_39,TMP_Kernel_loop_40,TMP_Kernel_nil$q_42,TMP_Kernel_printf_43,TMP_Kernel_proc_44,TMP_Kernel_puts_45,TMP_Kernel_p_47,TMP_Kernel_print_48,TMP_Kernel_warn_49,TMP_Kernel_raise_50,TMP_Kernel_rand_51,TMP_Kernel_respond_to$q_52,TMP_Kernel_respond_to_missing$q_53,TMP_Kernel_require_54,TMP_Kernel_require_relative_55,TMP_Kernel_require_tree_56,TMP_Kernel_singleton_class_57,TMP_Kernel_sleep_58,TMP_Kernel_srand_59,TMP_Kernel_String_60,TMP_Kernel_tap_61,TMP_Kernel_to_proc_62,TMP_Kernel_to_s_63,TMP_Kernel_catch_64,TMP_Kernel_throw_65,TMP_Kernel_open_66;Opal.defn(self,"$method_missing",TMP_Kernel_method_missing_1=function $$method_missing(symbol,$a_rest){var self=this,args,$iter=TMP_Kernel_method_missing_1.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Kernel_method_missing_1.$$p=null;return self.$raise(Opal.const_get_relative($nesting,"NoMethodError").$new(""+"undefined method `"+symbol+"' for "+self.$inspect(),symbol,args))},TMP_Kernel_method_missing_1.$$arity=-2);Opal.defn(self,"$=~",TMP_Kernel_$eq$_2=function(obj){var self=this;return false},TMP_Kernel_$eq$_2.$$arity=1);Opal.defn(self,"$!~",TMP_Kernel_$B$_3=function(obj){var self=this;return self["$=~"](obj)["$!"]()},TMP_Kernel_$B$_3.$$arity=1);Opal.defn(self,"$===",TMP_Kernel_$eq$eq$eq_4=function(other){var $a,self=this;return $truthy($a=self.$object_id()["$=="](other.$object_id()))?$a:self["$=="](other)},TMP_Kernel_$eq$eq$eq_4.$$arity=1);Opal.defn(self,"$<=>",TMP_Kernel_$lt$eq$gt_5=function(other){var self=this;self.$$comparable=true;var x=self["$=="](other);if(x&&x!==nil){return 0}return nil},TMP_Kernel_$lt$eq$gt_5.$$arity=1);Opal.defn(self,"$method",TMP_Kernel_method_6=function $$method(name){var self=this;var meth=self["$"+name];if(!meth||meth.$$stub){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"undefined method `"+name+"' for class `"+self.$class()+"'",name))}return Opal.const_get_relative($nesting,"Method").$new(self,meth.$$owner||self.$class(),meth,name)},TMP_Kernel_method_6.$$arity=1);Opal.defn(self,"$methods",TMP_Kernel_methods_7=function $$methods(all){var self=this;if(all==null){all=true}var methods=[];for(var key in self){if(key[0]=="$"&&typeof self[key]==="function"){if(all==false||all===nil){if(!Opal.hasOwnProperty.call(self,key)){continue}}if(self[key].$$stub===undefined){methods.push(key.substr(1))}}}return methods},TMP_Kernel_methods_7.$$arity=-1);Opal.alias(self,"public_methods","methods");Opal.defn(self,"$Array",TMP_Kernel_Array_8=function $$Array(object){var self=this;var coerced;if(object===nil){return[]}if(object.$$is_array){return object}coerced=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](object,Opal.const_get_relative($nesting,"Array"),"to_ary");if(coerced!==nil){return coerced}coerced=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](object,Opal.const_get_relative($nesting,"Array"),"to_a");if(coerced!==nil){return coerced}return[object]},TMP_Kernel_Array_8.$$arity=1);Opal.defn(self,"$at_exit",TMP_Kernel_at_exit_9=function $$at_exit(){var $a,self=this,$iter=TMP_Kernel_at_exit_9.$$p,block=$iter||nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if($iter)TMP_Kernel_at_exit_9.$$p=null;$gvars.__at_exit__=$truthy($a=$gvars.__at_exit__)?$a:[];return $gvars.__at_exit__["$<<"](block)},TMP_Kernel_at_exit_9.$$arity=0);Opal.defn(self,"$caller",TMP_Kernel_caller_10=function $$caller($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return[]},TMP_Kernel_caller_10.$$arity=-1);Opal.defn(self,"$class",TMP_Kernel_class_11=function(){var self=this;return self.$$class},TMP_Kernel_class_11.$$arity=0);Opal.defn(self,"$copy_instance_variables",TMP_Kernel_copy_instance_variables_12=function $$copy_instance_variables(other){var self=this;var keys=Object.keys(other),i,ii,name;for(i=0,ii=keys.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(singleton);mod.$extended(self)}return self},TMP_Kernel_extend_22.$$arity=-1);Opal.defn(self,"$format",TMP_Kernel_format_23=function $$format(format_string,$a_rest){var $b,self=this,args,ary=nil;if($gvars.DEBUG==null)$gvars.DEBUG=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($truthy(($b=args.$length()["$=="](1))?args["$[]"](0)["$respond_to?"]("to_ary"):args.$length()["$=="](1))){ary=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](args["$[]"](0),Opal.const_get_relative($nesting,"Array"),"to_ary");if($truthy(ary["$nil?"]())){}else{args=ary.$to_a()}}var result="",begin_slice=0,end_slice,i,len=format_string.length,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,seq_arg_num=1,pos_arg_num=0,flags,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){if(flags&FWIDTH){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"flag after width")}if(flags&FPREC0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"flag after precision")}}function CHECK_FOR_WIDTH(){if(flags&FWIDTH){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"width given twice")}if(flags&FPREC0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"width after precision")}}function GET_NTH_ARG(num){if(num>=args.length){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"too few arguments")}return args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with numbered");case-2:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with named")}pos_arg_num=seq_arg_num++;return GET_NTH_ARG(pos_arg_num-1)}function GET_POS_ARG(num){if(pos_arg_num>0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"numbered("+num+") after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-2){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"numbered("+num+") after named")}if(num<1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid index - "+num+"$")}pos_arg_num=-1;return GET_NTH_ARG(num-1)}function GET_ARG(){return next_arg===undefined?GET_NEXT_ARG():next_arg}function READ_NUM(label){var num,str="";for(;;i++){if(i===len){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"malformed format string - %*[0-9]")}if(format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57){i--;num=parseInt(str,10)||0;if(num>2147483647){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+label+" too big")}return num}str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);if(format_string.charAt(i+1)==="$"){i++;arg=GET_POS_ARG(num)}else{arg=GET_NEXT_ARG()}return arg.$to_int()}for(i=format_string.indexOf("%");i!==-1;i=format_string.indexOf("%",i)){str=undefined;flags=FNONE;width=-1;precision=-1;next_arg=undefined;end_slice=i;i++;switch(format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}";hash_parameter_key="";i++;for(;;i++){if(i===len){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"malformed name - unmatched parenthesis")}if(format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after numbered")}pos_arg_num=-2;if(args[0]===undefined||!args[0].$$is_hash){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"one hash required")}next_arg=args[0].$fetch(hash_parameter_key);if(closing_brace_char===">"){continue format_sequence}else{str=next_arg.toString();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length=0){str=arg.toString();while(str.length=0){str=arg.toString(base_number);while(str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);while(str.length=0||isNaN(arg)){if(arg===Infinity){str="Inf"}else{switch(format_string.charAt(i)){case"f":str=arg.toFixed(precision===-1?6:precision);break;case"e":case"E":str=arg.toExponential(precision===-1?6:precision);break;case"g":case"G":str=arg.toExponential();exponent=parseInt(str.split("e")[1],10);if(!(exponent<-4||exponent>=(precision===-1?6:precision))){str=arg.toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length=(precision===-1?6:precision))){str=(-arg).toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){str="-"+str;while(str.length=0&&seq_arg_num36){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid radix "+base)}}str=value.toLowerCase();str=str.replace(/(\d)_(?=\d)/g,"$1");str=str.replace(/^(\s*[+-]?)(0[bodx]?)/,function(_,head,flag){switch(flag){case"0b":if(base===0||base===2){base=2;return head}case"0":case"0o":if(base===0||base===8){base=8;return head}case"0d":if(base===0||base===10){base=10;return head}case"0x":if(base===0||base===16){base=16;return head}}self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')});base=base===0?10:base;base_digits="0-"+(base<=10?base-1:"9a-"+String.fromCharCode(97+(base-11)));if(!new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}i=parseInt(str,base);if(isNaN(i)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}return i},TMP_Kernel_Integer_33.$$arity=-2);Opal.defn(self,"$Float",TMP_Kernel_Float_34=function $$Float(value){var self=this;var str;if(value===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert nil into Float")}if(value.$$is_string){str=value.toString();str=str.replace(/(\d)_(?=\d)/g,"$1");if(/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)){return self.$Integer(str)}if(!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Float(): "'+value+'"')}return parseFloat(str)}return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](value,Opal.const_get_relative($nesting,"Float"),"to_f")},TMP_Kernel_Float_34.$$arity=1);Opal.defn(self,"$Hash",TMP_Kernel_Hash_35=function $$Hash(arg){var $a,self=this;if($truthy($truthy($a=arg["$nil?"]())?$a:arg["$=="]([]))){return $hash2([],{})}if($truthy(Opal.const_get_relative($nesting,"Hash")["$==="](arg))){return arg}return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](arg,Opal.const_get_relative($nesting,"Hash"),"to_hash")},TMP_Kernel_Hash_35.$$arity=1);Opal.defn(self,"$is_a?",TMP_Kernel_is_a$q_36=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"class or module required")}return Opal.is_a(self,klass)},TMP_Kernel_is_a$q_36.$$arity=1);Opal.defn(self,"$itself",TMP_Kernel_itself_37=function $$itself(){var self=this;return self},TMP_Kernel_itself_37.$$arity=0);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$lambda",TMP_Kernel_lambda_38=function $$lambda(){var self=this,$iter=TMP_Kernel_lambda_38.$$p,block=$iter||nil;if($iter)TMP_Kernel_lambda_38.$$p=null;block.$$is_lambda=true;return block},TMP_Kernel_lambda_38.$$arity=0);Opal.defn(self,"$load",TMP_Kernel_load_39=function $$load(file){var self=this;file=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](file,Opal.const_get_relative($nesting,"String"),"to_str");return Opal.load(file)},TMP_Kernel_load_39.$$arity=1);Opal.defn(self,"$loop",TMP_Kernel_loop_40=function $$loop(){var TMP_41,$a,self=this,$iter=TMP_Kernel_loop_40.$$p,$yield=$iter||nil,e=nil;if($iter)TMP_Kernel_loop_40.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["loop"],(TMP_41=function(){var self=TMP_41.$$s||this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")},TMP_41.$$s=self,TMP_41.$$arity=0,TMP_41))}while($truthy(true)){try{Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StopIteration")])){e=$err;try{return e.$result()}finally{Opal.pop_exception()}}else{throw $err}}}return self},TMP_Kernel_loop_40.$$arity=0);Opal.defn(self,"$nil?",TMP_Kernel_nil$q_42=function(){var self=this;return false},TMP_Kernel_nil$q_42.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$printf",TMP_Kernel_printf_43=function $$printf($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),0))){self.$print($send(self,"format",Opal.to_a(args)))}return nil},TMP_Kernel_printf_43.$$arity=-1);Opal.defn(self,"$proc",TMP_Kernel_proc_44=function $$proc(){var self=this,$iter=TMP_Kernel_proc_44.$$p,block=$iter||nil;if($iter)TMP_Kernel_proc_44.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to create Proc object without a block")}block.$$is_lambda=false;return block},TMP_Kernel_proc_44.$$arity=0);Opal.defn(self,"$puts",TMP_Kernel_puts_45=function $$puts($a_rest){var self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send($gvars.stdout,"puts",Opal.to_a(strs))},TMP_Kernel_puts_45.$$arity=-1);Opal.defn(self,"$p",TMP_Kernel_p_47=function $$p($a_rest){var TMP_46,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}$send(args,"each",[],(TMP_46=function(obj){var self=TMP_46.$$s||this;if($gvars.stdout==null)$gvars.stdout=nil;if(obj==null)obj=nil;return $gvars.stdout.$puts(obj.$inspect())},TMP_46.$$s=self,TMP_46.$$arity=1,TMP_46));if($truthy($rb_le(args.$length(),1))){return args["$[]"](0)}else{return args}},TMP_Kernel_p_47.$$arity=-1);Opal.defn(self,"$print",TMP_Kernel_print_48=function $$print($a_rest){var self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send($gvars.stdout,"print",Opal.to_a(strs))},TMP_Kernel_print_48.$$arity=-1);Opal.defn(self,"$warn",TMP_Kernel_warn_49=function $$warn($a_rest){var $b,self=this,strs;if($gvars.VERBOSE==null)$gvars.VERBOSE=nil;if($gvars.stderr==null)$gvars.stderr=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}if($truthy($truthy($b=$gvars.VERBOSE["$nil?"]())?$b:strs["$empty?"]())){return nil}else{return $send($gvars.stderr,"puts",Opal.to_a(strs))}},TMP_Kernel_warn_49.$$arity=-1);Opal.defn(self,"$raise",TMP_Kernel_raise_50=function $$raise(exception,string,_backtrace){var self=this;if($gvars["!"]==null)$gvars["!"]=nil;if(string==null){string=nil}if(_backtrace==null){_backtrace=nil}if(exception==null&&$gvars["!"]!==nil){throw $gvars["!"]}if(exception==null){exception=Opal.const_get_relative($nesting,"RuntimeError").$new()}else if(exception.$$is_string){exception=Opal.const_get_relative($nesting,"RuntimeError").$new(exception)}else if(exception.$$is_class&&exception["$respond_to?"]("exception")){exception=exception.$exception(string)}else if(exception["$kind_of?"](Opal.const_get_relative($nesting,"Exception"))){}else{exception=Opal.const_get_relative($nesting,"TypeError").$new("exception class/object expected")}if($gvars["!"]!==nil){Opal.exceptions.push($gvars["!"])}$gvars["!"]=exception;throw exception},TMP_Kernel_raise_50.$$arity=-1);Opal.alias(self,"fail","raise");Opal.defn(self,"$rand",TMP_Kernel_rand_51=function $$rand(max){var self=this;if(max===undefined){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Random"),"DEFAULT").$rand()}if(max.$$is_number){if(max<0){max=Math.abs(max)}if(max%1!==0){max=max.$to_i()}if(max===0){max=undefined}}return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Random"),"DEFAULT").$rand(max)},TMP_Kernel_rand_51.$$arity=-1);Opal.defn(self,"$respond_to?",TMP_Kernel_respond_to$q_52=function(name,include_all){var self=this;if(include_all==null){include_all=false}if($truthy(self["$respond_to_missing?"](name,include_all))){return true}var body=self["$"+name];if(typeof body==="function"&&!body.$$stub){return true}return false},TMP_Kernel_respond_to$q_52.$$arity=-2);Opal.defn(self,"$respond_to_missing?",TMP_Kernel_respond_to_missing$q_53=function(method_name,include_all){var self=this;if(include_all==null){include_all=false}return false},TMP_Kernel_respond_to_missing$q_53.$$arity=-2);Opal.defn(self,"$require",TMP_Kernel_require_54=function $$require(file){var self=this;file=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](file,Opal.const_get_relative($nesting,"String"),"to_str");return Opal.require(file)},TMP_Kernel_require_54.$$arity=1);Opal.defn(self,"$require_relative",TMP_Kernel_require_relative_55=function $$require_relative(file){var self=this;Opal.const_get_relative($nesting,"Opal")["$try_convert!"](file,Opal.const_get_relative($nesting,"String"),"to_str");file=Opal.const_get_relative($nesting,"File").$expand_path(Opal.const_get_relative($nesting,"File").$join(Opal.current_file,"..",file));return Opal.require(file)},TMP_Kernel_require_relative_55.$$arity=1);Opal.defn(self,"$require_tree",TMP_Kernel_require_tree_56=function $$require_tree(path){var self=this;var result=[];path=Opal.const_get_relative($nesting,"File").$expand_path(path);path=Opal.normalize(path);if(path===".")path="";for(var name in Opal.modules){if(name["$start_with?"](path)){result.push([name,Opal.require(name)])}}return result},TMP_Kernel_require_tree_56.$$arity=1);Opal.alias(self,"send","__send__");Opal.alias(self,"public_send","__send__");Opal.defn(self,"$singleton_class",TMP_Kernel_singleton_class_57=function $$singleton_class(){var self=this;return Opal.get_singleton_class(self)},TMP_Kernel_singleton_class_57.$$arity=0);Opal.defn(self,"$sleep",TMP_Kernel_sleep_58=function $$sleep(seconds){var self=this;if(seconds==null){seconds=nil}if(seconds===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert NilClass into time interval")}if(!seconds.$$is_number){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+seconds.$class()+" into time interval")}if(seconds<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"time interval must be positive")}var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date};var t=get_time();while(get_time()-t<=seconds*1e3);return seconds},TMP_Kernel_sleep_58.$$arity=-1);Opal.alias(self,"sprintf","format");Opal.defn(self,"$srand",TMP_Kernel_srand_59=function $$srand(seed){var self=this;if(seed==null){seed=Opal.const_get_relative($nesting,"Random").$new_seed()}return Opal.const_get_relative($nesting,"Random").$srand(seed)},TMP_Kernel_srand_59.$$arity=-1);Opal.defn(self,"$String",TMP_Kernel_String_60=function $$String(str){var $a,self=this;return $truthy($a=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](str,Opal.const_get_relative($nesting,"String"),"to_str"))?$a:Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](str,Opal.const_get_relative($nesting,"String"),"to_s")},TMP_Kernel_String_60.$$arity=1);Opal.defn(self,"$tap",TMP_Kernel_tap_61=function $$tap(){var self=this,$iter=TMP_Kernel_tap_61.$$p,block=$iter||nil;if($iter)TMP_Kernel_tap_61.$$p=null;Opal.yield1(block,self);return self},TMP_Kernel_tap_61.$$arity=0);Opal.defn(self,"$to_proc",TMP_Kernel_to_proc_62=function $$to_proc(){var self=this;return self},TMP_Kernel_to_proc_62.$$arity=0);Opal.defn(self,"$to_s",TMP_Kernel_to_s_63=function $$to_s(){var self=this;return""+"#<"+self.$class()+":0x"+self.$__id__().$to_s(16)+">"},TMP_Kernel_to_s_63.$$arity=0);Opal.defn(self,"$catch",TMP_Kernel_catch_64=function(sym){var self=this,$iter=TMP_Kernel_catch_64.$$p,$yield=$iter||nil,e=nil;if($iter)TMP_Kernel_catch_64.$$p=null;try{return Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"UncaughtThrowError")])){e=$err;try{if(e.$sym()["$=="](sym)){return e.$arg()}return self.$raise()}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Kernel_catch_64.$$arity=1);Opal.defn(self,"$throw",TMP_Kernel_throw_65=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise(Opal.const_get_relative($nesting,"UncaughtThrowError").$new(args))},TMP_Kernel_throw_65.$$arity=-1);Opal.defn(self,"$open",TMP_Kernel_open_66=function $$open($a_rest){var self=this,args,$iter=TMP_Kernel_open_66.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Kernel_open_66.$$p=null;return $send(Opal.const_get_relative($nesting,"File"),"open",Opal.to_a(args),block.$to_proc())},TMP_Kernel_open_66.$$arity=-1)})($nesting[0],$nesting);return function($base,$super,$parent_nesting){function $Object(){}var self=$Object=$klass($base,$super,"Object",$Object);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$include(Opal.const_get_relative($nesting,"Kernel"))}($nesting[0],null,$nesting)};Opal.modules["corelib/error"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$new","$clone","$to_s","$empty?","$class","$+","$attr_reader","$[]","$>","$length","$inspect"]);(function($base,$super,$parent_nesting){function $Exception(){}var self=$Exception=$klass($base,$super,"Exception",$Exception);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Exception_new_1,TMP_Exception_exception_2,TMP_Exception_initialize_3,TMP_Exception_backtrace_4,TMP_Exception_exception_5,TMP_Exception_message_6,TMP_Exception_inspect_7,TMP_Exception_to_s_8;def.message=nil;var Kernel$raise=Opal.const_get_relative($nesting,"Kernel").$raise;Opal.defs(self,"$new",TMP_Exception_new_1=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var message=args.length>0?args[0]:nil;var error=new self.$$alloc(message);error.name=self.$$name;error.message=message;Opal.send(error,error.$initialize,args);if(Opal.config.enable_stack_trace&&Error.captureStackTrace){Error.captureStackTrace(error,Kernel$raise)}return error},TMP_Exception_new_1.$$arity=-1);Opal.defs(self,"$exception",TMP_Exception_exception_2=function $$exception($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self,"new",Opal.to_a(args))},TMP_Exception_exception_2.$$arity=-1);Opal.defn(self,"$initialize",TMP_Exception_initialize_3=function $$initialize($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.message=args.length>0?args[0]:nil},TMP_Exception_initialize_3.$$arity=-1);Opal.defn(self,"$backtrace",TMP_Exception_backtrace_4=function $$backtrace(){var self=this;var backtrace=self.stack;if(typeof backtrace==="string"){return backtrace.split("\n").slice(0,15)}else if(backtrace){return backtrace.slice(0,15)}return[]},TMP_Exception_backtrace_4.$$arity=0);Opal.defn(self,"$exception",TMP_Exception_exception_5=function $$exception(str){var self=this;if(str==null){str=nil}if(str===nil||self===str){return self}var cloned=self.$clone();cloned.message=str;return cloned},TMP_Exception_exception_5.$$arity=-1);Opal.defn(self,"$message",TMP_Exception_message_6=function $$message(){var self=this;return self.$to_s()},TMP_Exception_message_6.$$arity=0);Opal.defn(self,"$inspect",TMP_Exception_inspect_7=function $$inspect(){var self=this,as_str=nil;as_str=self.$to_s();if($truthy(as_str["$empty?"]())){return self.$class().$to_s()}else{return""+"#<"+self.$class().$to_s()+": "+self.$to_s()+">"}},TMP_Exception_inspect_7.$$arity=0);return(Opal.defn(self,"$to_s",TMP_Exception_to_s_8=function $$to_s(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.message)?self.message.$to_s():$b)?$a:self.$class().$to_s()},TMP_Exception_to_s_8.$$arity=0),nil)&&"to_s"})($nesting[0],Error,$nesting);(function($base,$super,$parent_nesting){function $ScriptError(){}var self=$ScriptError=$klass($base,$super,"ScriptError",$ScriptError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $LoadError(){}var self=$LoadError=$klass($base,$super,"LoadError",$LoadError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $NotImplementedError(){}var self=$NotImplementedError=$klass($base,$super,"NotImplementedError",$NotImplementedError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $SystemExit(){}var self=$SystemExit=$klass($base,$super,"SystemExit",$SystemExit);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $NoMemoryError(){}var self=$NoMemoryError=$klass($base,$super,"NoMemoryError",$NoMemoryError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SignalException(){}var self=$SignalException=$klass($base,$super,"SignalException",$SignalException);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $Interrupt(){}var self=$Interrupt=$klass($base,$super,"Interrupt",$Interrupt);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SecurityError(){}var self=$SecurityError=$klass($base,$super,"SecurityError",$SecurityError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $StandardError(){}var self=$StandardError=$klass($base,$super,"StandardError",$StandardError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $ZeroDivisionError(){}var self=$ZeroDivisionError=$klass($base,$super,"ZeroDivisionError",$ZeroDivisionError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"NameError"),$nesting);(function($base,$super,$parent_nesting){function $RuntimeError(){}var self=$RuntimeError=$klass($base,$super,"RuntimeError",$RuntimeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $LocalJumpError(){}var self=$LocalJumpError=$klass($base,$super,"LocalJumpError",$LocalJumpError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $TypeError(){}var self=$TypeError=$klass($base,$super,"TypeError",$TypeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $ArgumentError(){}var self=$ArgumentError=$klass($base,$super,"ArgumentError",$ArgumentError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $IndexError(){}var self=$IndexError=$klass($base,$super,"IndexError",$IndexError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"IndexError"),$nesting);(function($base,$super,$parent_nesting){function $KeyError(){}var self=$KeyError=$klass($base,$super,"KeyError",$KeyError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"IndexError"),$nesting);(function($base,$super,$parent_nesting){function $RangeError(){}var self=$RangeError=$klass($base,$super,"RangeError",$RangeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $FloatDomainError(){}var self=$FloatDomainError=$klass($base,$super,"FloatDomainError",$FloatDomainError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"RangeError"),$nesting);(function($base,$super,$parent_nesting){function $IOError(){}var self=$IOError=$klass($base,$super,"IOError",$IOError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $SystemCallError(){}var self=$SystemCallError=$klass($base,$super,"SystemCallError",$SystemCallError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$parent_nesting){var $Errno,self=$Errno=$module($base,"Errno");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EINVAL(){}var self=$EINVAL=$klass($base,$super,"EINVAL",$EINVAL);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EINVAL_new_9;return Opal.defs(self,"$new",TMP_EINVAL_new_9=function(name){var self=this,$iter=TMP_EINVAL_new_9.$$p,$yield=$iter||nil,message=nil;if(name==null){name=nil}if($iter)TMP_EINVAL_new_9.$$p=null;message="Invalid argument";if($truthy(name)){message=$rb_plus(message,""+" - "+name)}return $send(self,Opal.find_super_dispatcher(self,"new",TMP_EINVAL_new_9,false,$EINVAL),[message],null)},TMP_EINVAL_new_9.$$arity=-1)})($nesting[0],Opal.const_get_relative($nesting,"SystemCallError"),$nesting)})($nesting[0],$nesting);(function($base,$super,$parent_nesting){function $UncaughtThrowError(){}var self=$UncaughtThrowError=$klass($base,$super,"UncaughtThrowError",$UncaughtThrowError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UncaughtThrowError_initialize_10;def.sym=nil;self.$attr_reader("sym","arg");return(Opal.defn(self,"$initialize",TMP_UncaughtThrowError_initialize_10=function $$initialize(args){var self=this,$iter=TMP_UncaughtThrowError_initialize_10.$$p,$yield=$iter||nil;if($iter)TMP_UncaughtThrowError_initialize_10.$$p=null;self.sym=args["$[]"](0);if($truthy($rb_gt(args.$length(),1))){self.arg=args["$[]"](1)}return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_UncaughtThrowError_initialize_10,false),[""+"uncaught throw "+self.sym.$inspect()],null)},TMP_UncaughtThrowError_initialize_10.$$arity=1),nil)&&"initialize"})($nesting[0],Opal.const_get_relative($nesting,"ArgumentError"),$nesting);(function($base,$super,$parent_nesting){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NameError_initialize_11;self.$attr_reader("name");return(Opal.defn(self,"$initialize",TMP_NameError_initialize_11=function $$initialize(message,name){var self=this,$iter=TMP_NameError_initialize_11.$$p,$yield=$iter||nil;if(name==null){name=nil}if($iter)TMP_NameError_initialize_11.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NameError_initialize_11,false),[message],null);return self.name=name},TMP_NameError_initialize_11.$$arity=-2),nil)&&"initialize"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NoMethodError_initialize_12;self.$attr_reader("args");return(Opal.defn(self,"$initialize",TMP_NoMethodError_initialize_12=function $$initialize(message,name,args){var self=this,$iter=TMP_NoMethodError_initialize_12.$$p,$yield=$iter||nil;if(name==null){name=nil}if(args==null){args=[]}if($iter)TMP_NoMethodError_initialize_12.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NoMethodError_initialize_12,false),[message,name],null);return self.args=args},TMP_NoMethodError_initialize_12.$$arity=-2),nil)&&"initialize"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_reader("result")})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $JS,self=$JS=$module($base,"JS");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Error(){}var self=$Error=$klass($base,$super,"Error",$Error);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["corelib/constants"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.const_set($nesting[0],"RUBY_PLATFORM","opal");Opal.const_set($nesting[0],"RUBY_ENGINE","opal");Opal.const_set($nesting[0],"RUBY_VERSION","2.4.5");Opal.const_set($nesting[0],"RUBY_ENGINE_VERSION","0.11.4");Opal.const_set($nesting[0],"RUBY_RELEASE_DATE","2018-11-07");Opal.const_set($nesting[0],"RUBY_PATCHLEVEL",0);Opal.const_set($nesting[0],"RUBY_REVISION",0);Opal.const_set($nesting[0],"RUBY_COPYRIGHT","opal - Copyright (C) 2013-2015 Adam Beynon");return Opal.const_set($nesting[0],"RUBY_DESCRIPTION",""+"opal "+Opal.const_get_relative($nesting,"RUBY_ENGINE_VERSION")+" ("+Opal.const_get_relative($nesting,"RUBY_RELEASE_DATE")+" revision "+Opal.const_get_relative($nesting,"RUBY_REVISION")+")")};Opal.modules["opal/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("corelib/runtime");self.$require("corelib/helpers");self.$require("corelib/module");self.$require("corelib/class");self.$require("corelib/basic_object");self.$require("corelib/kernel");self.$require("corelib/error");return self.$require("corelib/constants")};Opal.modules["corelib/nil"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$raise","$name","$new","$>","$length","$Rational"]);(function($base,$super,$parent_nesting){function $NilClass(){}var self=$NilClass=$klass($base,$super,"NilClass",$NilClass);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NilClass_$B_2,TMP_NilClass_$_3,TMP_NilClass_$_4,TMP_NilClass_$_5,TMP_NilClass_$eq$eq_6,TMP_NilClass_dup_7,TMP_NilClass_clone_8,TMP_NilClass_inspect_9,TMP_NilClass_nil$q_10,TMP_NilClass_singleton_class_11,TMP_NilClass_to_a_12,TMP_NilClass_to_h_13,TMP_NilClass_to_i_14,TMP_NilClass_to_s_15,TMP_NilClass_to_c_16,TMP_NilClass_rationalize_17,TMP_NilClass_to_r_18,TMP_NilClass_instance_variables_19;def.$$meta=self;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$!",TMP_NilClass_$B_2=function(){var self=this;return true},TMP_NilClass_$B_2.$$arity=0);Opal.defn(self,"$&",TMP_NilClass_$_3=function(other){var self=this;return false},TMP_NilClass_$_3.$$arity=1);Opal.defn(self,"$|",TMP_NilClass_$_4=function(other){var self=this;return other!==false&&other!==nil},TMP_NilClass_$_4.$$arity=1);Opal.defn(self,"$^",TMP_NilClass_$_5=function(other){var self=this;return other!==false&&other!==nil},TMP_NilClass_$_5.$$arity=1);Opal.defn(self,"$==",TMP_NilClass_$eq$eq_6=function(other){var self=this;return other===nil},TMP_NilClass_$eq$eq_6.$$arity=1);Opal.defn(self,"$dup",TMP_NilClass_dup_7=function $$dup(){var self=this;return nil},TMP_NilClass_dup_7.$$arity=0);Opal.defn(self,"$clone",TMP_NilClass_clone_8=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return nil},TMP_NilClass_clone_8.$$arity=-1);Opal.defn(self,"$inspect",TMP_NilClass_inspect_9=function $$inspect(){var self=this;return"nil"},TMP_NilClass_inspect_9.$$arity=0);Opal.defn(self,"$nil?",TMP_NilClass_nil$q_10=function(){var self=this;return true},TMP_NilClass_nil$q_10.$$arity=0);Opal.defn(self,"$singleton_class",TMP_NilClass_singleton_class_11=function $$singleton_class(){var self=this;return Opal.const_get_relative($nesting,"NilClass")},TMP_NilClass_singleton_class_11.$$arity=0);Opal.defn(self,"$to_a",TMP_NilClass_to_a_12=function $$to_a(){var self=this;return[]},TMP_NilClass_to_a_12.$$arity=0);Opal.defn(self,"$to_h",TMP_NilClass_to_h_13=function $$to_h(){var self=this;return Opal.hash()},TMP_NilClass_to_h_13.$$arity=0);Opal.defn(self,"$to_i",TMP_NilClass_to_i_14=function $$to_i(){var self=this;return 0},TMP_NilClass_to_i_14.$$arity=0);Opal.alias(self,"to_f","to_i");Opal.defn(self,"$to_s",TMP_NilClass_to_s_15=function $$to_s(){var self=this;return""},TMP_NilClass_to_s_15.$$arity=0);Opal.defn(self,"$to_c",TMP_NilClass_to_c_16=function $$to_c(){var self=this;return Opal.const_get_relative($nesting,"Complex").$new(0,0)},TMP_NilClass_to_c_16.$$arity=0);Opal.defn(self,"$rationalize",TMP_NilClass_rationalize_17=function $$rationalize($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),1))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"))}return self.$Rational(0,1)},TMP_NilClass_rationalize_17.$$arity=-1);Opal.defn(self,"$to_r",TMP_NilClass_to_r_18=function $$to_r(){var self=this;return self.$Rational(0,1)},TMP_NilClass_to_r_18.$$arity=0);return(Opal.defn(self,"$instance_variables",TMP_NilClass_instance_variables_19=function $$instance_variables(){var self=this;return[]},TMP_NilClass_instance_variables_19.$$arity=0),nil)&&"instance_variables"})($nesting[0],null,$nesting);return Opal.const_set($nesting[0],"NIL",nil)};Opal.modules["corelib/boolean"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$raise","$name"]);(function($base,$super,$parent_nesting){function $Boolean(){}var self=$Boolean=$klass($base,$super,"Boolean",$Boolean);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Boolean___id___2,TMP_Boolean_$B_3,TMP_Boolean_$_4,TMP_Boolean_$_5,TMP_Boolean_$_6,TMP_Boolean_$eq$eq_7,TMP_Boolean_singleton_class_8,TMP_Boolean_to_s_9,TMP_Boolean_dup_10,TMP_Boolean_clone_11;def.$$is_boolean=true;def.$$meta=self;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$__id__",TMP_Boolean___id___2=function $$__id__(){var self=this;return self.valueOf()?2:0},TMP_Boolean___id___2.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$!",TMP_Boolean_$B_3=function(){var self=this;return self!=true},TMP_Boolean_$B_3.$$arity=0);Opal.defn(self,"$&",TMP_Boolean_$_4=function(other){var self=this;return self==true?other!==false&&other!==nil:false},TMP_Boolean_$_4.$$arity=1);Opal.defn(self,"$|",TMP_Boolean_$_5=function(other){var self=this;return self==true?true:other!==false&&other!==nil},TMP_Boolean_$_5.$$arity=1);Opal.defn(self,"$^",TMP_Boolean_$_6=function(other){var self=this;return self==true?other===false||other===nil:other!==false&&other!==nil},TMP_Boolean_$_6.$$arity=1);Opal.defn(self,"$==",TMP_Boolean_$eq$eq_7=function(other){var self=this;return self==true===other.valueOf()},TMP_Boolean_$eq$eq_7.$$arity=1);Opal.alias(self,"equal?","==");Opal.alias(self,"eql?","==");Opal.defn(self,"$singleton_class",TMP_Boolean_singleton_class_8=function $$singleton_class(){var self=this;return Opal.const_get_relative($nesting,"Boolean")},TMP_Boolean_singleton_class_8.$$arity=0);Opal.defn(self,"$to_s",TMP_Boolean_to_s_9=function $$to_s(){var self=this;return self==true?"true":"false"},TMP_Boolean_to_s_9.$$arity=0);Opal.defn(self,"$dup",TMP_Boolean_dup_10=function $$dup(){var self=this;return self},TMP_Boolean_dup_10.$$arity=0);return(Opal.defn(self,"$clone",TMP_Boolean_clone_11=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},TMP_Boolean_clone_11.$$arity=-1),nil)&&"clone"})($nesting[0],Boolean,$nesting);Opal.const_set($nesting[0],"TrueClass",Opal.const_get_relative($nesting,"Boolean"));Opal.const_set($nesting[0],"FalseClass",Opal.const_get_relative($nesting,"Boolean"));Opal.const_set($nesting[0],"TRUE",true);return Opal.const_set($nesting[0],"FALSE",false)};Opal.modules["corelib/comparable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$<","$equal?","$<=>","$normalize","$raise","$class"]);return function($base,$parent_nesting){var $Comparable,self=$Comparable=$module($base,"Comparable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Comparable_normalize_1,TMP_Comparable_$eq$eq_2,TMP_Comparable_$gt_3,TMP_Comparable_$gt$eq_4,TMP_Comparable_$lt_5,TMP_Comparable_$lt$eq_6,TMP_Comparable_between$q_7,TMP_Comparable_clamp_8;Opal.defs(self,"$normalize",TMP_Comparable_normalize_1=function $$normalize(what){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](what))){return what}if($truthy($rb_gt(what,0))){return 1}if($truthy($rb_lt(what,0))){return-1}return 0},TMP_Comparable_normalize_1.$$arity=1);Opal.defn(self,"$==",TMP_Comparable_$eq$eq_2=function(other){var self=this,cmp=nil;try{if($truthy(self["$equal?"](other))){return true}if(self["$<=>"]==Opal.Kernel["$<=>"]){return false}if(self.$$comparable){delete self.$$comparable;return false}if($truthy(cmp=self["$<=>"](other))){}else{return false}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)==0}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StandardError")])){try{return false}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Comparable_$eq$eq_2.$$arity=1);Opal.defn(self,"$>",TMP_Comparable_$gt_3=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)>0},TMP_Comparable_$gt_3.$$arity=1);Opal.defn(self,"$>=",TMP_Comparable_$gt$eq_4=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)>=0},TMP_Comparable_$gt$eq_4.$$arity=1);Opal.defn(self,"$<",TMP_Comparable_$lt_5=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)<0},TMP_Comparable_$lt_5.$$arity=1);Opal.defn(self,"$<=",TMP_Comparable_$lt$eq_6=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)<=0},TMP_Comparable_$lt$eq_6.$$arity=1);Opal.defn(self,"$between?",TMP_Comparable_between$q_7=function(min,max){var self=this;if($rb_lt(self,min)){return false}if($rb_gt(self,max)){return false}return true},TMP_Comparable_between$q_7.$$arity=2);Opal.defn(self,"$clamp",TMP_Comparable_clamp_8=function $$clamp(min,max){var self=this,cmp=nil;cmp=min["$<=>"](max);if($truthy(cmp)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+min.$class()+" with "+max.$class()+" failed")}if($truthy($rb_gt(Opal.const_get_relative($nesting,"Comparable").$normalize(cmp),0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"min argument must be smaller than max argument")}if($truthy($rb_lt(Opal.const_get_relative($nesting,"Comparable").$normalize(self["$<=>"](min)),0))){return min}if($truthy($rb_gt(Opal.const_get_relative($nesting,"Comparable").$normalize(self["$<=>"](max)),0))){return max}return self},TMP_Comparable_clamp_8.$$arity=2)}($nesting[0],$nesting)};Opal.modules["corelib/regexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$nil?","$[]","$raise","$escape","$options","$to_str","$new","$join","$coerce_to!","$!","$match","$coerce_to?","$begin","$coerce_to","$call","$=~","$attr_reader","$===","$inspect","$to_a"]);(function($base,$super,$parent_nesting){function $RegexpError(){}var self=$RegexpError=$klass($base,$super,"RegexpError",$RegexpError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $Regexp(){}var self=$Regexp=$klass($base,$super,"Regexp",$Regexp);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Regexp_$eq$eq_6,TMP_Regexp_$eq$eq$eq_7,TMP_Regexp_$eq$_8,TMP_Regexp_inspect_9,TMP_Regexp_match_10,TMP_Regexp_match$q_11,TMP_Regexp_$_12,TMP_Regexp_source_13,TMP_Regexp_options_14,TMP_Regexp_casefold$q_15;Opal.const_set($nesting[0],"IGNORECASE",1);Opal.const_set($nesting[0],"MULTILINE",4);def.$$is_regexp=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1,TMP_escape_2,TMP_last_match_3,TMP_union_4,TMP_new_5;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this,$iter=TMP_allocate_1.$$p,$yield=$iter||nil,allocated=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_allocate_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}allocated=$send(self,Opal.find_super_dispatcher(self,"allocate",TMP_allocate_1,false),$zuper,$iter);allocated.uninitialized=true;return allocated},TMP_allocate_1.$$arity=0);Opal.defn(self,"$escape",TMP_escape_2=function $$escape(string){var self=this;return Opal.escape_regexp(string)},TMP_escape_2.$$arity=1);Opal.defn(self,"$last_match",TMP_last_match_3=function $$last_match(n){var self=this;if($gvars["~"]==null)$gvars["~"]=nil;if(n==null){n=nil}if($truthy(n["$nil?"]())){return $gvars["~"]}else{return $gvars["~"]["$[]"](n)}},TMP_last_match_3.$$arity=-1);Opal.alias(self,"quote","escape");Opal.defn(self,"$union",TMP_union_4=function $$union($a_rest){var self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}var is_first_part_array,quoted_validated,part,options,each_part_options;if(parts.length==0){return/(?!)/}is_first_part_array=parts[0].$$is_array;if(parts.length>1&&is_first_part_array){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"no implicit conversion of Array into String")}if(is_first_part_array){parts=parts[0]}options=undefined;quoted_validated=[];for(var i=0;i=pos){$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(re,md);return block===nil?$gvars["~"]:block.$call($gvars["~"])}re.lastIndex=md.index+1}},TMP_Regexp_match_10.$$arity=-2);Opal.defn(self,"$match?",TMP_Regexp_match$q_11=function(string,pos){var self=this;if(self.uninitialized){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"uninitialized Regexp")}if(pos===undefined){pos=0}else{pos=Opal.const_get_relative($nesting,"Opal").$coerce_to(pos,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(string===nil){return false}string=Opal.const_get_relative($nesting,"Opal").$coerce_to(string,Opal.const_get_relative($nesting,"String"),"to_str");if(pos<0){pos+=string.length;if(pos<0){return false}}var source=self.source;var flags="g";if(self.multiline){source=source.replace(".","[\\s\\S]");flags+="m"}var md,re=new RegExp(source,flags+(self.ignoreCase?"i":""));md=re.exec(string);if(md===null||md.index"},TMP_MatchData_inspect_23.$$arity=0);Opal.defn(self,"$length",TMP_MatchData_length_24=function $$length(){var self=this;return self.matches.length},TMP_MatchData_length_24.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_MatchData_to_a_25=function $$to_a(){var self=this;return self.matches},TMP_MatchData_to_a_25.$$arity=0);Opal.defn(self,"$to_s",TMP_MatchData_to_s_26=function $$to_s(){var self=this;return self.matches[0]},TMP_MatchData_to_s_26.$$arity=0);return(Opal.defn(self,"$values_at",TMP_MatchData_values_at_27=function $$values_at($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var i,a,index,values=[];for(i=0;i","$==","$=~","$new","$empty?","$ljust","$ceil","$/","$+","$rjust","$floor","$to_a","$each_char","$to_proc","$coerce_to!","$copy_singleton_methods","$initialize_clone","$initialize_dup","$enum_for","$size","$chomp","$[]","$to_i","$each_line","$class","$match","$captures","$proc","$succ","$escape"]);self.$require("corelib/comparable");self.$require("corelib/regexp");(function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String___id___1,TMP_String_try_convert_2,TMP_String_new_3,TMP_String_initialize_4,TMP_String_$_5,TMP_String_$_6,TMP_String_$_7,TMP_String_$lt$eq$gt_8,TMP_String_$eq$eq_9,TMP_String_$eq$_10,TMP_String_$$_11,TMP_String_capitalize_12,TMP_String_casecmp_13,TMP_String_center_14,TMP_String_chars_15,TMP_String_chomp_16,TMP_String_chop_17,TMP_String_chr_18,TMP_String_clone_19,TMP_String_dup_20,TMP_String_count_21,TMP_String_delete_22,TMP_String_downcase_23,TMP_String_each_char_24,TMP_String_each_line_26,TMP_String_empty$q_27,TMP_String_end_with$q_28,TMP_String_gsub_29,TMP_String_hash_30,TMP_String_hex_31,TMP_String_include$q_32,TMP_String_index_33,TMP_String_inspect_34,TMP_String_intern_35,TMP_String_lines_36,TMP_String_length_37,TMP_String_ljust_38,TMP_String_lstrip_39,TMP_String_ascii_only$q_40,TMP_String_match_41,TMP_String_next_42,TMP_String_oct_43,TMP_String_ord_44,TMP_String_partition_45,TMP_String_reverse_46,TMP_String_rindex_47,TMP_String_rjust_48,TMP_String_rpartition_49,TMP_String_rstrip_50,TMP_String_scan_51,TMP_String_split_52,TMP_String_squeeze_53,TMP_String_start_with$q_54,TMP_String_strip_55,TMP_String_sub_56,TMP_String_sum_57,TMP_String_swapcase_58,TMP_String_to_f_59,TMP_String_to_i_60,TMP_String_to_proc_62,TMP_String_to_s_63,TMP_String_tr_64,TMP_String_tr_s_65,TMP_String_upcase_66,TMP_String_upto_67,TMP_String_instance_variables_68,TMP_String__load_69,TMP_String_unpack_70;def.length=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));def.$$is_string=true;Opal.defn(self,"$__id__",TMP_String___id___1=function $$__id__(){var self=this;return self.toString()},TMP_String___id___1.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defs(self,"$try_convert",TMP_String_try_convert_2=function $$try_convert(what){var self=this;return Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](what,Opal.const_get_relative($nesting,"String"),"to_str")},TMP_String_try_convert_2.$$arity=1);Opal.defs(self,"$new",TMP_String_new_3=function(str){var self=this;if(str==null){str=""}str=Opal.const_get_relative($nesting,"Opal").$coerce_to(str,Opal.const_get_relative($nesting,"String"),"to_str");return new String(str)},TMP_String_new_3.$$arity=-1);Opal.defn(self,"$initialize",TMP_String_initialize_4=function $$initialize(str){var self=this;if(str===undefined){return self}return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"),"Mutable strings are not supported in Opal.")},TMP_String_initialize_4.$$arity=-1);Opal.defn(self,"$%",TMP_String_$_5=function(data){var self=this;if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](data))){return $send(self,"format",[self].concat(Opal.to_a(data)))}else{return self.$format(self,data)}},TMP_String_$_5.$$arity=1);Opal.defn(self,"$*",TMP_String_$_6=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal").$coerce_to(count,Opal.const_get_relative($nesting,"Integer"),"to_int");if(count<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"negative argument")}if(count===0){return""}var result="",string=self.toString();if(string.length*count>=1<<28){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"multiply count must not overflow maximum string size")}for(;;){if((count&1)===1){result+=string}count>>>=1;if(count===0){break}string+=string}return result},TMP_String_$_6.$$arity=1);Opal.defn(self,"$+",TMP_String_$_7=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str");return self+other.$to_s()},TMP_String_$_7.$$arity=1);Opal.defn(self,"$<=>",TMP_String_$lt$eq$gt_8=function(other){var self=this;if($truthy(other["$respond_to?"]("to_str"))){other=other.$to_str().$to_s();return self>other?1:self"](self);if(cmp===nil){return nil}else{return cmp>0?-1:cmp<0?1:0}}},TMP_String_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$==",TMP_String_$eq$eq_9=function(other){var self=this;if(other.$$is_string){return self.toString()===other.toString()}if(Opal.const_get_relative($nesting,"Opal")["$respond_to?"](other,"to_str")){return other["$=="](self)}return false},TMP_String_$eq$eq_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$=~",TMP_String_$eq$_10=function(other){var self=this;if(other.$$is_string){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"type mismatch: String given")}return other["$=~"](self)},TMP_String_$eq$_10.$$arity=1);Opal.defn(self,"$[]",TMP_String_$$_11=function(index,length){var self=this;var size=self.length,exclude;if(index.$$is_range){exclude=index.excl;length=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.end,Opal.const_get_relative($nesting,"Integer"),"to_int");index=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.begin,Opal.const_get_relative($nesting,"Integer"),"to_int");if(Math.abs(index)>size){return nil}if(index<0){index+=size}if(length<0){length+=size}if(!exclude){length+=1}length=length-index;if(length<0){length=0}return self.substr(index,length)}if(index.$$is_string){if(length!=null){self.$raise(Opal.const_get_relative($nesting,"TypeError"))}return self.indexOf(index)!==-1?index:nil}if(index.$$is_regexp){var match=self.match(index);if(match===null){$gvars["~"]=nil;return nil}$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(index,match);if(length==null){return match[0]}length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0&&-length=0&&length=size||index<0){return nil}return self.substr(index,1)}length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0){return nil}if(index>size||index<0){return nil}return self.substr(index,length)},TMP_String_$$_11.$$arity=-2);Opal.alias(self,"byteslice","[]");Opal.defn(self,"$capitalize",TMP_String_capitalize_12=function $$capitalize(){var self=this;return self.charAt(0).toUpperCase()+self.substr(1).toLowerCase()},TMP_String_capitalize_12.$$arity=0);Opal.defn(self,"$casecmp",TMP_String_casecmp_13=function $$casecmp(other){var self=this;other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;if(ascii_only.test(self)&&ascii_only.test(other)){self=self.toLowerCase();other=other.toLowerCase()}return self["$<=>"](other)},TMP_String_casecmp_13.$$arity=1);Opal.defn(self,"$center",TMP_String_center_14=function $$center(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var ljustified=self.$ljust($rb_divide($rb_plus(width,self.length),2).$ceil(),padstr),rjustified=self.$rjust($rb_divide($rb_plus(width,self.length),2).$floor(),padstr);return rjustified+ljustified.slice(self.length)},TMP_String_center_14.$$arity=-2);Opal.defn(self,"$chars",TMP_String_chars_15=function $$chars(){var self=this,$iter=TMP_String_chars_15.$$p,block=$iter||nil;if($iter)TMP_String_chars_15.$$p=null;if($truthy(block)){}else{return self.$each_char().$to_a()}return $send(self,"each_char",[],block.$to_proc())},TMP_String_chars_15.$$arity=0);Opal.defn(self,"$chomp",TMP_String_chomp_16=function $$chomp(separator){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($truthy(separator===nil||self.length===0)){return self}separator=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](separator,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(separator==="\n"){return self.replace(/\r?\n?$/,"")}else if(separator===""){return self.replace(/(\r?\n)+$/,"")}else if(self.length>separator.length){var tail=self.substr(self.length-separator.length,separator.length);if(tail===separator){return self.substr(0,self.length-separator.length)}}return self},TMP_String_chomp_16.$$arity=-1);Opal.defn(self,"$chop",TMP_String_chop_17=function $$chop(){var self=this;var length=self.length;if(length<=1){return""}if(self.charAt(length-1)==="\n"&&self.charAt(length-2)==="\r"){return self.substr(0,length-2)}else{return self.substr(0,length-1)}},TMP_String_chop_17.$$arity=0);Opal.defn(self,"$chr",TMP_String_chr_18=function $$chr(){var self=this;return self.charAt(0)},TMP_String_chr_18.$$arity=0);Opal.defn(self,"$clone",TMP_String_clone_19=function $$clone(){var self=this,copy=nil;copy=self.slice();copy.$copy_singleton_methods(self);copy.$initialize_clone(self);return copy},TMP_String_clone_19.$$arity=0);Opal.defn(self,"$dup",TMP_String_dup_20=function $$dup(){var self=this,copy=nil;copy=self.slice();copy.$initialize_dup(self);return copy},TMP_String_dup_20.$$arity=0);Opal.defn(self,"$count",TMP_String_count_21=function $$count($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return 0}return self.length-self.replace(new RegExp(char_class,"g"),"").length},TMP_String_count_21.$$arity=-1);Opal.defn(self,"$delete",TMP_String_delete_22=function($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp(char_class,"g"),"")},TMP_String_delete_22.$$arity=-1);Opal.defn(self,"$downcase",TMP_String_downcase_23=function $$downcase(){var self=this;return self.toLowerCase()},TMP_String_downcase_23.$$arity=0);Opal.defn(self,"$each_char",TMP_String_each_char_24=function $$each_char(){var TMP_25,self=this,$iter=TMP_String_each_char_24.$$p,block=$iter||nil;if($iter)TMP_String_each_char_24.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_char"],(TMP_25=function(){var self=TMP_25.$$s||this;return self.$size()},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25))}for(var i=0,length=self.length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix){return true}}return false},TMP_String_end_with$q_28.$$arity=-1);Opal.alias(self,"eql?","==");Opal.alias(self,"equal?","===");Opal.defn(self,"$gsub",TMP_String_gsub_29=function $$gsub(pattern,replacement){var self=this,$iter=TMP_String_gsub_29.$$p,block=$iter||nil;if($iter)TMP_String_gsub_29.$$p=null;if(replacement===undefined&&block===nil){return self.$enum_for("gsub",pattern)}var result="",match_data=nil,index=0,match,_replacement;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while(true){match=pattern.exec(self);if(match===null){$gvars["~"]=nil;result+=self.slice(index);break}match_data=Opal.const_get_relative($nesting,"MatchData").$new(pattern,match);if(replacement===undefined){_replacement=block(match[0])}else if(replacement.$$is_hash){_replacement=replacement["$[]"](match[0]).$to_s()}else{if(!replacement.$$is_string){replacement=Opal.const_get_relative($nesting,"Opal").$coerce_to(replacement,Opal.const_get_relative($nesting,"String"),"to_str")}_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,function(original,slashes,command){if(slashes.length%2===0){return original}switch(command){case"+":for(var i=match.length-1;i>0;i--){if(match[i]!==undefined){return slashes.slice(1)+match[i]}}return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}}).replace(/\\\\/g,"\\")}if(pattern.lastIndex===match.index){result+=_replacement+self.slice(index,match.index+1);pattern.lastIndex+=1}else{result+=self.slice(index,match.index)+_replacement}index=pattern.lastIndex}$gvars["~"]=match_data;return result},TMP_String_gsub_29.$$arity=-2);Opal.defn(self,"$hash",TMP_String_hash_30=function $$hash(){var self=this;return self.toString()},TMP_String_hash_30.$$arity=0);Opal.defn(self,"$hex",TMP_String_hex_31=function $$hex(){var self=this;return self.$to_i(16)},TMP_String_hex_31.$$arity=0);Opal.defn(self,"$include?",TMP_String_include$q_32=function(other){var self=this;if(!other.$$is_string){other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str")}return self.indexOf(other)!==-1},TMP_String_include$q_32.$$arity=1);Opal.defn(self,"$index",TMP_String_index_33=function $$index(search,offset){var self=this;var index,match,regex;if(offset===undefined){offset=0}else{offset=Opal.const_get_relative($nesting,"Opal").$coerce_to(offset,Opal.const_get_relative($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){regex=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){match=regex.exec(self);if(match===null){$gvars["~"]=nil;index=-1;break}if(match.index>=offset){$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(regex,match);index=match.index;break}regex.lastIndex=match.index+1}}else{search=Opal.const_get_relative($nesting,"Opal").$coerce_to(search,Opal.const_get_relative($nesting,"String"),"to_str");if(search.length===0&&offset>self.length){index=-1}else{index=self.indexOf(search,offset)}}return index===-1?nil:index},TMP_String_index_33.$$arity=-2);Opal.defn(self,"$inspect",TMP_String_inspect_34=function $$inspect(){var self=this;var escapable=/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"},escaped=self.replace(escapable,function(chr){return meta[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4)});return'"'+escaped.replace(/\#[\$\@\{]/g,"\\$&")+'"'},TMP_String_inspect_34.$$arity=0);Opal.defn(self,"$intern",TMP_String_intern_35=function $$intern(){var self=this;return self},TMP_String_intern_35.$$arity=0);Opal.defn(self,"$lines",TMP_String_lines_36=function $$lines(separator){var self=this,$iter=TMP_String_lines_36.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_String_lines_36.$$p=null;e=$send(self,"each_line",[separator],block.$to_proc());if($truthy(block)){return self}else{return e.$to_a()}},TMP_String_lines_36.$$arity=-1);Opal.defn(self,"$length",TMP_String_length_37=function $$length(){var self=this;return self.length},TMP_String_length_37.$$arity=0);Opal.defn(self,"$ljust",TMP_String_ljust_38=function $$ljust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var index=-1,result="";width-=self.length;while(++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){switch(code){case 57:carry=true;code=48;break;case 90:carry=true;code=65;break;case 122:carry=true;code=97;break;default:carry=false;code+=1}}else{if(first_alphanum_char_index===-1){if(code===255){carry=true;code=0}else{carry=false;code+=1}}else{carry=true}}result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1);if(carry&&(i===0||i===first_alphanum_char_index)){switch(code){case 65:break;case 97:break;default:code+=1}if(i===0){result=String.fromCharCode(code)+result}else{result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i)}carry=false}if(!carry){break}}return result},TMP_String_next_42.$$arity=0);Opal.defn(self,"$oct",TMP_String_oct_43=function $$oct(){var self=this;var result,string=self,radix=8;if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"){return original}}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16;break}return head+tail});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_String_oct_43.$$arity=0);Opal.defn(self,"$ord",TMP_String_ord_44=function $$ord(){var self=this;return self.charCodeAt(0)},TMP_String_ord_44.$$arity=0);Opal.defn(self,"$partition",TMP_String_partition_45=function $$partition(sep){var self=this;var i,m;if(sep.$$is_regexp){m=sep.exec(self);if(m===null){i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(sep,m);sep=m[0];i=m.index}}else{sep=Opal.const_get_relative($nesting,"Opal").$coerce_to(sep,Opal.const_get_relative($nesting,"String"),"to_str");i=self.indexOf(sep)}if(i===-1){return[self,"",""]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_String_partition_45.$$arity=1);Opal.defn(self,"$reverse",TMP_String_reverse_46=function $$reverse(){var self=this;return self.split("").reverse().join("")},TMP_String_reverse_46.$$arity=0);Opal.defn(self,"$rindex",TMP_String_rindex_47=function $$rindex(search,offset){var self=this;var i,m,r,_m;if(offset===undefined){offset=self.length}else{offset=Opal.const_get_relative($nesting,"Opal").$coerce_to(offset,Opal.const_get_relative($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){m=null;r=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null||_m.index>offset){break}m=_m;r.lastIndex=m.index+1}if(m===null){$gvars["~"]=nil;i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(r,m);i=m.index}}else{search=Opal.const_get_relative($nesting,"Opal").$coerce_to(search,Opal.const_get_relative($nesting,"String"),"to_str");i=self.lastIndexOf(search,offset)}return i===-1?nil:i},TMP_String_rindex_47.$$arity=-2);Opal.defn(self,"$rjust",TMP_String_rjust_48=function $$rjust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var chars=Math.floor(width-self.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return result+padstr.slice(0,remaining)+self},TMP_String_rjust_48.$$arity=-2);Opal.defn(self,"$rpartition",TMP_String_rpartition_49=function $$rpartition(sep){var self=this;var i,m,r,_m;if(sep.$$is_regexp){m=null;r=new RegExp(sep.source,"gm"+(sep.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null){break}m=_m;r.lastIndex=m.index+1}if(m===null){i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(r,m);sep=m[0];i=m.index}}else{sep=Opal.const_get_relative($nesting,"Opal").$coerce_to(sep,Opal.const_get_relative($nesting,"String"),"to_str");i=self.lastIndexOf(sep)}if(i===-1){return["","",self]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_String_rpartition_49.$$arity=1);Opal.defn(self,"$rstrip",TMP_String_rstrip_50=function $$rstrip(){var self=this;return self.replace(/[\s\u0000]*$/,"")},TMP_String_rstrip_50.$$arity=0);Opal.defn(self,"$scan",TMP_String_scan_51=function $$scan(pattern){var self=this,$iter=TMP_String_scan_51.$$p,block=$iter||nil;if($iter)TMP_String_scan_51.$$p=null;var result=[],match_data=nil,match;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while((match=pattern.exec(self))!=null){match_data=Opal.const_get_relative($nesting,"MatchData").$new(pattern,match);if(block===nil){match.length==1?result.push(match[0]):result.push(match_data.$captures())}else{match.length==1?block(match[0]):block.call(self,match_data.$captures())}if(pattern.lastIndex===match.index){pattern.lastIndex+=1}}$gvars["~"]=match_data;return block!==nil?self:result},TMP_String_scan_51.$$arity=1);Opal.alias(self,"size","length");Opal.alias(self,"slice","[]");Opal.defn(self,"$split",TMP_String_split_52=function $$split(pattern,limit){var $a,self=this;if($gvars[";"]==null)$gvars[";"]=nil;if(self.length===0){return[]}if(limit===undefined){limit=0}else{limit=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](limit,Opal.const_get_relative($nesting,"Integer"),"to_int");if(limit===1){return[self]}}if(pattern===undefined||pattern===nil){pattern=$truthy($a=$gvars[";"])?$a:" "}var result=[],string=self.toString(),index=0,match,i,ii;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(pattern===" "){pattern=/\s+/gm;string=string.replace(/^\s+/,"")}else{pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}}result=string.split(pattern);if(result.length===1&&result[0]===string){return result}while((i=result.indexOf(undefined))!==-1){result.splice(i,1)}if(limit===0){while(result[result.length-1]===""){result.length-=1}return result}match=pattern.exec(string);if(limit<0){if(match!==null&&match[0]===""&&pattern.source.indexOf("(?=")===-1){for(i=0,ii=match.length;i=result.length){return result}i=0;while(match!==null){i++;index=pattern.lastIndex;if(i+1===limit){break}match=pattern.exec(string)}result.splice(limit-1,result.length-1,string.slice(index));return result},TMP_String_split_52.$$arity=-1);Opal.defn(self,"$squeeze",TMP_String_squeeze_53=function $$squeeze($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){return self.replace(/(.)\1+/g,"$1")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp("("+char_class+")\\1+","g"),"$1")},TMP_String_squeeze_53.$$arity=-1);Opal.defn(self,"$start_with?",TMP_String_start_with$q_54=function($a_rest){var self=this,prefixes;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}prefixes=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){prefixes[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=prefixes.length;i0;i--){if(result[i]!==undefined){return slashes.slice(1)+result[i]}}return"";case"&":return slashes.slice(1)+result[0];case"`":return slashes.slice(1)+self.slice(0,result.index);case"'":return slashes.slice(1)+self.slice(result.index+result[0].length);default:return slashes.slice(1)+(result[command]||"")}}).replace(/\\\\/g,"\\");return self.slice(0,result.index)+replacement+self.slice(result.index+result[0].length)},TMP_String_sub_56.$$arity=-2);Opal.alias(self,"succ","next");Opal.defn(self,"$sum",TMP_String_sum_57=function $$sum(n){var self=this;if(n==null){n=16}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");var result=0,length=self.length,i=0;for(;i36){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid radix "+radix)}if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"&&(radix===0||radix===16)){return original}}switch(flag){case"0b":if(radix===0||radix===2){radix=2;return head+tail}break;case"0":case"0o":if(radix===0||radix===8){radix=8;return head+tail}break;case"0d":if(radix===0||radix===10){radix=10;return head+tail}break;case"0x":if(radix===0||radix===16){radix=16;return head+tail}break}return original});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_String_to_i_60.$$arity=-1);Opal.defn(self,"$to_proc",TMP_String_to_proc_62=function $$to_proc(){var TMP_61,self=this,sym=nil;sym=self.valueOf();return $send(self,"proc",[],(TMP_61=function($a_rest){var self=TMP_61.$$s||this,block,args;block=TMP_61.$$p||nil;if(block)TMP_61.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(args.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no receiver given")}var obj=args.shift();if(obj==null)obj=nil;return Opal.send(obj,sym,args,block)},TMP_61.$$s=self,TMP_61.$$arity=-1,TMP_61))},TMP_String_to_proc_62.$$arity=0);Opal.defn(self,"$to_s",TMP_String_to_s_63=function $$to_s(){var self=this;return self.toString()},TMP_String_to_s_63.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.alias(self,"to_sym","intern");Opal.defn(self,"$tr",TMP_String_tr_64=function $$tr(from,to){var self=this;from=Opal.const_get_relative($nesting,"Opal").$coerce_to(from,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();to=Opal.const_get_relative($nesting,"Opal").$coerce_to(to,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(from.length==0||from===to){return self}var i,in_range,c,ch,start,end,length;var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"&&from_chars.length>1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i0&&ichar_code_upto){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration')}for(char_code=char_code_from+1;char_code1;set=explode_sequences_in_character_set(neg?set.slice(1):set);if(neg){neg_intersection=intersection(neg_intersection,set)}else{pos_intersection=intersection(pos_intersection,set)}}if(pos_intersection.length>0&&neg_intersection.length>0){tmp="";for(i=0,len=pos_intersection.length;i0){return"["+Opal.const_get_relative($nesting,"Regexp").$escape(pos_intersection)+"]"}if(neg_intersection.length>0){return"[^"+Opal.const_get_relative($nesting,"Regexp").$escape(neg_intersection)+"]"}return null}Opal.defn(self,"$instance_variables",TMP_String_instance_variables_68=function $$instance_variables(){var self=this;return[]},TMP_String_instance_variables_68.$$arity=0);Opal.defs(self,"$_load",TMP_String__load_69=function $$_load($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self,"new",Opal.to_a(args))},TMP_String__load_69.$$arity=-1);return(Opal.defn(self,"$unpack",TMP_String_unpack_70=function $$unpack(pattern){var self=this,$case=nil;function stringToBytes(string){var i,singleByte,l=string.length,result=[];for(i=0;irhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$*","$coerce_to","$try_convert","$<","$+","$-","$ceil","$/","$size","$===","$<<","$[]","$[]=","$inspect","$__send__","$<=>","$first","$reverse","$sort","$to_proc","$compare","$call","$dup","$to_a","$lambda","$sort!","$map!","$has_key?","$values","$zip"]);return function($base,$parent_nesting){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Enumerable_all$q_1,TMP_Enumerable_any$q_4,TMP_Enumerable_chunk_7,TMP_Enumerable_chunk_while_10,TMP_Enumerable_collect_12,TMP_Enumerable_collect_concat_14,TMP_Enumerable_count_17,TMP_Enumerable_cycle_21,TMP_Enumerable_detect_23,TMP_Enumerable_drop_25,TMP_Enumerable_drop_while_26,TMP_Enumerable_each_cons_27,TMP_Enumerable_each_entry_29,TMP_Enumerable_each_slice_31,TMP_Enumerable_each_with_index_33,TMP_Enumerable_each_with_object_35,TMP_Enumerable_entries_37,TMP_Enumerable_find_all_38,TMP_Enumerable_find_index_40,TMP_Enumerable_first_45,TMP_Enumerable_grep_46,TMP_Enumerable_grep_v_47,TMP_Enumerable_group_by_48,TMP_Enumerable_include$q_51,TMP_Enumerable_inject_52,TMP_Enumerable_lazy_54,TMP_Enumerable_enumerator_size_55,TMP_Enumerable_max_56,TMP_Enumerable_max_by_57,TMP_Enumerable_min_59,TMP_Enumerable_min_by_60,TMP_Enumerable_minmax_62,TMP_Enumerable_minmax_by_64,TMP_Enumerable_none$q_65,TMP_Enumerable_one$q_68,TMP_Enumerable_partition_71,TMP_Enumerable_reject_73,TMP_Enumerable_reverse_each_75,TMP_Enumerable_slice_before_77,TMP_Enumerable_slice_after_79,TMP_Enumerable_slice_when_82,TMP_Enumerable_sort_84,TMP_Enumerable_sort_by_86,TMP_Enumerable_sum_91,TMP_Enumerable_take_93,TMP_Enumerable_take_while_94,TMP_Enumerable_uniq_96,TMP_Enumerable_zip_98;Opal.defn(self,"$all?",TMP_Enumerable_all$q_1=function(){try{var TMP_2,TMP_3,self=this,$iter=TMP_Enumerable_all$q_1.$$p,block=$iter||nil;if($iter)TMP_Enumerable_all$q_1.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_2=function($a_rest){var self=TMP_2.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){return nil}else{Opal.ret(false)}},TMP_2.$$s=self,TMP_2.$$arity=-1,TMP_2))}else{$send(self,"each",[],(TMP_3=function($a_rest){var self=TMP_3.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){return nil}else{Opal.ret(false)}},TMP_3.$$s=self,TMP_3.$$arity=-1,TMP_3))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_all$q_1.$$arity=0);Opal.defn(self,"$any?",TMP_Enumerable_any$q_4=function(){try{var TMP_5,TMP_6,self=this,$iter=TMP_Enumerable_any$q_4.$$p,block=$iter||nil;if($iter)TMP_Enumerable_any$q_4.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_5=function($a_rest){var self=TMP_5.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(true)}else{return nil}},TMP_5.$$s=self,TMP_5.$$arity=-1,TMP_5))}else{$send(self,"each",[],(TMP_6=function($a_rest){var self=TMP_6.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){Opal.ret(true)}else{return nil}},TMP_6.$$s=self,TMP_6.$$arity=-1,TMP_6))}return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_any$q_4.$$arity=0);Opal.defn(self,"$chunk",TMP_Enumerable_chunk_7=function $$chunk(){var TMP_8,TMP_9,self=this,$iter=TMP_Enumerable_chunk_7.$$p,block=$iter||nil;if($iter)TMP_Enumerable_chunk_7.$$p=null;if(block!==nil){}else{return $send(self,"to_enum",["chunk"],(TMP_8=function(){var self=TMP_8.$$s||this;return self.$enumerator_size()},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8))}return $send(Opal.const_get_qualified("::","Enumerator"),"new",[],(TMP_9=function(yielder){var self=TMP_9.$$s||this;if(yielder==null)yielder=nil;var previous=nil,accumulate=[];function releaseAccumulate(){if(accumulate.length>0){yielder.$yield(previous,accumulate)}}self.$each.$$p=function(value){var key=Opal.yield1(block,value);if(key===nil){releaseAccumulate();accumulate=[];previous=nil}else{if(previous===nil||previous===key){accumulate.push(value)}else{releaseAccumulate();accumulate=[value]}previous=key}};self.$each();releaseAccumulate()},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_Enumerable_chunk_7.$$arity=0);Opal.defn(self,"$chunk_while",TMP_Enumerable_chunk_while_10=function $$chunk_while(){var TMP_11,self=this,$iter=TMP_Enumerable_chunk_while_10.$$p,block=$iter||nil;if($iter)TMP_Enumerable_chunk_while_10.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"slice_when",[],(TMP_11=function(before,after){var self=TMP_11.$$s||this;if(before==null)before=nil;if(after==null)after=nil;return Opal.yieldX(block,[before,after])["$!"]()},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11))},TMP_Enumerable_chunk_while_10.$$arity=0);Opal.defn(self,"$collect",TMP_Enumerable_collect_12=function $$collect(){var TMP_13,self=this,$iter=TMP_Enumerable_collect_12.$$p,block=$iter||nil;if($iter)TMP_Enumerable_collect_12.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect"],(TMP_13=function(){var self=TMP_13.$$s||this;return self.$enumerator_size()},TMP_13.$$s=self,TMP_13.$$arity=0,TMP_13))}var result=[];self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);result.push(value)};self.$each();return result},TMP_Enumerable_collect_12.$$arity=0);Opal.defn(self,"$collect_concat",TMP_Enumerable_collect_concat_14=function $$collect_concat(){var TMP_15,TMP_16,self=this,$iter=TMP_Enumerable_collect_concat_14.$$p,block=$iter||nil;if($iter)TMP_Enumerable_collect_concat_14.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect_concat"],(TMP_15=function(){var self=TMP_15.$$s||this;return self.$enumerator_size()},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15))}return $send(self,"map",[],(TMP_16=function(item){var self=TMP_16.$$s||this;if(item==null)item=nil;return Opal.yield1(block,item)},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16)).$flatten(1)},TMP_Enumerable_collect_concat_14.$$arity=0);Opal.defn(self,"$count",TMP_Enumerable_count_17=function $$count(object){var TMP_18,TMP_19,TMP_20,self=this,$iter=TMP_Enumerable_count_17.$$p,block=$iter||nil,result=nil;if($iter)TMP_Enumerable_count_17.$$p=null;result=0;if(object!=null&&block!==nil){self.$warn("warning: given block not used")}if($truthy(object!=null)){block=$send(self,"proc",[],(TMP_18=function($a_rest){var self=TMP_18.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Opal").$destructure(args)["$=="](object)},TMP_18.$$s=self,TMP_18.$$arity=-1,TMP_18))}else if($truthy(block["$nil?"]())){block=$send(self,"proc",[],(TMP_19=function(){var self=TMP_19.$$s||this;return true},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19))}$send(self,"each",[],(TMP_20=function($a_rest){var self=TMP_20.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,args))){return result++}else{return nil}},TMP_20.$$s=self,TMP_20.$$arity=-1,TMP_20));return result},TMP_Enumerable_count_17.$$arity=-1);Opal.defn(self,"$cycle",TMP_Enumerable_cycle_21=function $$cycle(n){var TMP_22,self=this,$iter=TMP_Enumerable_cycle_21.$$p,block=$iter||nil;if(n==null){n=nil}if($iter)TMP_Enumerable_cycle_21.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["cycle",n],(TMP_22=function(){var self=TMP_22.$$s||this;if(n["$=="](nil)){if($truthy(self["$respond_to?"]("size"))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")}else{return nil}}else{n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_gt(n,0))){return $rb_times(self.$enumerator_size(),n)}else{return 0}}},TMP_22.$$s=self,TMP_22.$$arity=0,TMP_22))}if($truthy(n["$nil?"]())){}else{n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(n<=0)){return nil}}var result,all=[],i,length,value;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);all.push(param)};self.$each();if(result!==undefined){return result}if(all.length===0){return nil}if(n===nil){while(true){for(i=0,length=all.length;i1){for(i=0,length=all.length;in){buffer.shift()}if(buffer.length==n){Opal.yield1(block,buffer.slice(0,n))}};self.$each();return result},TMP_Enumerable_each_cons_27.$$arity=1);Opal.defn(self,"$each_entry",TMP_Enumerable_each_entry_29=function $$each_entry($a_rest){var TMP_30,self=this,data,$iter=TMP_Enumerable_each_entry_29.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}data=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){data[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_each_entry_29.$$p=null;if(block!==nil){}else{return $send(self,"to_enum",["each_entry"].concat(Opal.to_a(data)),(TMP_30=function(){var self=TMP_30.$$s||this;return self.$enumerator_size()},TMP_30.$$s=self,TMP_30.$$arity=0,TMP_30))}self.$each.$$p=function(){var item=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);Opal.yield1(block,item)};self.$each.apply(self,data);return self},TMP_Enumerable_each_entry_29.$$arity=-1);Opal.defn(self,"$each_slice",TMP_Enumerable_each_slice_31=function $$each_slice(n){var TMP_32,self=this,$iter=TMP_Enumerable_each_slice_31.$$p,block=$iter||nil;if($iter)TMP_Enumerable_each_slice_31.$$p=null;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(n<=0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"invalid slice size")}if(block!==nil){}else{return $send(self,"enum_for",["each_slice",n],(TMP_32=function(){var self=TMP_32.$$s||this;if($truthy(self["$respond_to?"]("size"))){return $rb_divide(self.$size(),n).$ceil()}else{return nil}},TMP_32.$$s=self,TMP_32.$$arity=0,TMP_32))}var result,slice=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);slice.push(param);if(slice.length===n){Opal.yield1(block,slice);slice=[]}};self.$each();if(result!==undefined){return result}if(slice.length>0){Opal.yield1(block,slice)}return nil},TMP_Enumerable_each_slice_31.$$arity=1);Opal.defn(self,"$each_with_index",TMP_Enumerable_each_with_index_33=function $$each_with_index($a_rest){var TMP_34,self=this,args,$iter=TMP_Enumerable_each_with_index_33.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_each_with_index_33.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_with_index"].concat(Opal.to_a(args)),(TMP_34=function(){var self=TMP_34.$$s||this;return self.$enumerator_size()},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))}var result,index=0;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);block(param,index);index++};self.$each.apply(self,args);if(result!==undefined){return result}return self},TMP_Enumerable_each_with_index_33.$$arity=-1);Opal.defn(self,"$each_with_object",TMP_Enumerable_each_with_object_35=function $$each_with_object(object){var TMP_36,self=this,$iter=TMP_Enumerable_each_with_object_35.$$p,block=$iter||nil;if($iter)TMP_Enumerable_each_with_object_35.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_with_object",object],(TMP_36=function(){var self=TMP_36.$$s||this;return self.$enumerator_size()},TMP_36.$$s=self,TMP_36.$$arity=0,TMP_36))}var result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);block(param,object)};self.$each();if(result!==undefined){return result}return object},TMP_Enumerable_each_with_object_35.$$arity=1);Opal.defn(self,"$entries",TMP_Enumerable_entries_37=function $$entries($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var result=[];self.$each.$$p=function(){result.push(Opal.const_get_relative($nesting,"Opal").$destructure(arguments))};self.$each.apply(self,args);return result},TMP_Enumerable_entries_37.$$arity=-1);Opal.alias(self,"find","detect");Opal.defn(self,"$find_all",TMP_Enumerable_find_all_38=function $$find_all(){var TMP_39,self=this,$iter=TMP_Enumerable_find_all_38.$$p,block=$iter||nil;if($iter)TMP_Enumerable_find_all_38.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["find_all"],(TMP_39=function(){var self=TMP_39.$$s||this;return self.$enumerator_size()},TMP_39.$$s=self,TMP_39.$$arity=0,TMP_39))}var result=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){result.push(param)}};self.$each();return result},TMP_Enumerable_find_all_38.$$arity=0);Opal.defn(self,"$find_index",TMP_Enumerable_find_index_40=function $$find_index(object){try{var TMP_41,TMP_42,self=this,$iter=TMP_Enumerable_find_index_40.$$p,block=$iter||nil,index=nil;if($iter)TMP_Enumerable_find_index_40.$$p=null;if($truthy(object===undefined&&block===nil)){return self.$enum_for("find_index")}if(object!=null&&block!==nil){self.$warn("warning: given block not used")}index=0;if($truthy(object!=null)){$send(self,"each",[],(TMP_41=function($a_rest){var self=TMP_41.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(Opal.const_get_relative($nesting,"Opal").$destructure(value)["$=="](object)){Opal.ret(index)}return index+=1},TMP_41.$$s=self,TMP_41.$$arity=-1,TMP_41))}else{$send(self,"each",[],(TMP_42=function($a_rest){var self=TMP_42.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(index)}return index+=1},TMP_42.$$s=self,TMP_42.$$arity=-1,TMP_42))}return nil}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_find_index_40.$$arity=-1);Opal.defn(self,"$first",TMP_Enumerable_first_45=function $$first(number){try{var TMP_43,TMP_44,self=this,result=nil,current=nil;if($truthy(number===undefined)){return $send(self,"each",[],(TMP_43=function(value){var self=TMP_43.$$s||this;if(value==null)value=nil;Opal.ret(value)},TMP_43.$$s=self,TMP_43.$$arity=1,TMP_43))}else{result=[];number=Opal.const_get_relative($nesting,"Opal").$coerce_to(number,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(number<0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to take negative size")}if($truthy(number==0)){return[]}current=0;$send(self,"each",[],(TMP_44=function($a_rest){var self=TMP_44.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}result.push(Opal.const_get_relative($nesting,"Opal").$destructure(args));if($truthy(number<=++current)){Opal.ret(result)}else{return nil}},TMP_44.$$s=self,TMP_44.$$arity=-1,TMP_44));return result}}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_first_45.$$arity=-1);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_Enumerable_grep_46=function $$grep(pattern){var self=this,$iter=TMP_Enumerable_grep_46.$$p,block=$iter||nil;if($iter)TMP_Enumerable_grep_46.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)){value=Opal.yield1(block,param);result.push(value)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)){result.push(param)}}}self.$each();return result},TMP_Enumerable_grep_46.$$arity=1);Opal.defn(self,"$grep_v",TMP_Enumerable_grep_v_47=function $$grep_v(pattern){var self=this,$iter=TMP_Enumerable_grep_v_47.$$p,block=$iter||nil;if($iter)TMP_Enumerable_grep_v_47.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($falsy(value)){value=Opal.yield1(block,param);result.push(value)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($falsy(value)){result.push(param)}}}self.$each();return result},TMP_Enumerable_grep_v_47.$$arity=1);Opal.defn(self,"$group_by",TMP_Enumerable_group_by_48=function $$group_by(){var TMP_49,$a,self=this,$iter=TMP_Enumerable_group_by_48.$$p,block=$iter||nil,hash=nil,$writer=nil;if($iter)TMP_Enumerable_group_by_48.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["group_by"],(TMP_49=function(){var self=TMP_49.$$s||this;return self.$enumerator_size()},TMP_49.$$s=self,TMP_49.$$arity=0,TMP_49))}hash=Opal.const_get_relative($nesting,"Hash").$new();var result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);($truthy($a=hash["$[]"](value))?$a:($writer=[value,[]],$send(hash,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]))["$<<"](param)};self.$each();if(result!==undefined){return result}return hash},TMP_Enumerable_group_by_48.$$arity=0);Opal.defn(self,"$include?",TMP_Enumerable_include$q_51=function(obj){try{var TMP_50,self=this;$send(self,"each",[],(TMP_50=function($a_rest){var self=TMP_50.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(Opal.const_get_relative($nesting,"Opal").$destructure(args)["$=="](obj)){Opal.ret(true)}else{return nil}},TMP_50.$$s=self,TMP_50.$$arity=-1,TMP_50));return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_include$q_51.$$arity=1);Opal.defn(self,"$inject",TMP_Enumerable_inject_52=function $$inject(object,sym){var self=this,$iter=TMP_Enumerable_inject_52.$$p,block=$iter||nil;if($iter)TMP_Enumerable_inject_52.$$p=null;var result=object;if(block!==nil&&sym===undefined){self.$each.$$p=function(){var value=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}value=Opal.yieldX(block,[result,value]);result=value}}else{if(sym===undefined){if(!Opal.const_get_relative($nesting,"Symbol")["$==="](object)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+object.$inspect()+" is not a Symbol")}sym=object;result=undefined}self.$each.$$p=function(){var value=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}result=result.$__send__(sym,value)}}self.$each();return result==undefined?nil:result},TMP_Enumerable_inject_52.$$arity=-1);Opal.defn(self,"$lazy",TMP_Enumerable_lazy_54=function $$lazy(){var TMP_53,self=this;return $send(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Enumerator"),"Lazy"),"new",[self,self.$enumerator_size()],(TMP_53=function(enum$,$a_rest){var self=TMP_53.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;return $send(enum$,"yield",Opal.to_a(args))},TMP_53.$$s=self,TMP_53.$$arity=-2,TMP_53))},TMP_Enumerable_lazy_54.$$arity=0);Opal.defn(self,"$enumerator_size",TMP_Enumerable_enumerator_size_55=function $$enumerator_size(){var self=this;if($truthy(self["$respond_to?"]("size"))){return self.$size()}else{return nil}},TMP_Enumerable_enumerator_size_55.$$arity=0);Opal.alias(self,"map","collect");Opal.defn(self,"$max",TMP_Enumerable_max_56=function $$max(n){var self=this,$iter=TMP_Enumerable_max_56.$$p,block=$iter||nil;if($iter)TMP_Enumerable_max_56.$$p=null;if(n===undefined||n===nil){var result,value;self.$each.$$p=function(){var item=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=item;return}if(block!==nil){value=Opal.yieldX(block,[item,result])}else{value=item["$<=>"](result)}if(value===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}if(value>0){result=item}};self.$each();if(result===undefined){return nil}else{return result}}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");return $send(self,"sort",[],block.$to_proc()).$reverse().$first(n)},TMP_Enumerable_max_56.$$arity=-1);Opal.defn(self,"$max_by",TMP_Enumerable_max_by_57=function $$max_by(){var TMP_58,self=this,$iter=TMP_Enumerable_max_by_57.$$p,block=$iter||nil;if($iter)TMP_Enumerable_max_by_57.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["max_by"],(TMP_58=function(){var self=TMP_58.$$s||this;return self.$enumerator_size()},TMP_58.$$s=self,TMP_58.$$arity=0,TMP_58))}var result,by;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)>0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_Enumerable_max_by_57.$$arity=0);Opal.alias(self,"member?","include?");Opal.defn(self,"$min",TMP_Enumerable_min_59=function $$min(){var self=this,$iter=TMP_Enumerable_min_59.$$p,block=$iter||nil;if($iter)TMP_Enumerable_min_59.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}if(value<0){result=param}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}if(Opal.const_get_relative($nesting,"Opal").$compare(param,result)<0){result=param}}}self.$each();return result===undefined?nil:result},TMP_Enumerable_min_59.$$arity=0);Opal.defn(self,"$min_by",TMP_Enumerable_min_by_60=function $$min_by(){var TMP_61,self=this,$iter=TMP_Enumerable_min_by_60.$$p,block=$iter||nil;if($iter)TMP_Enumerable_min_by_60.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["min_by"],(TMP_61=function(){var self=TMP_61.$$s||this;return self.$enumerator_size()},TMP_61.$$s=self,TMP_61.$$arity=0,TMP_61))}var result,by;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)<0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_Enumerable_min_by_60.$$arity=0);Opal.defn(self,"$minmax",TMP_Enumerable_minmax_62=function $$minmax(){var $a,TMP_63,self=this,$iter=TMP_Enumerable_minmax_62.$$p,block=$iter||nil;if($iter)TMP_Enumerable_minmax_62.$$p=null;block=$truthy($a=block)?$a:$send(self,"proc",[],(TMP_63=function(a,b){var self=TMP_63.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_63.$$s=self,TMP_63.$$arity=2,TMP_63));var min=nil,max=nil,first_time=true;self.$each.$$p=function(){var element=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(first_time){min=max=element;first_time=false}else{var min_cmp=block.$call(min,element);if(min_cmp===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}else if(min_cmp>0){min=element}var max_cmp=block.$call(max,element);if(max_cmp===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}else if(max_cmp<0){max=element}}};self.$each();return[min,max]},TMP_Enumerable_minmax_62.$$arity=0);Opal.defn(self,"$minmax_by",TMP_Enumerable_minmax_by_64=function $$minmax_by(){var self=this,$iter=TMP_Enumerable_minmax_by_64.$$p,block=$iter||nil;if($iter)TMP_Enumerable_minmax_by_64.$$p=null;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Enumerable_minmax_by_64.$$arity=0);Opal.defn(self,"$none?",TMP_Enumerable_none$q_65=function(){try{var TMP_66,TMP_67,self=this,$iter=TMP_Enumerable_none$q_65.$$p,block=$iter||nil;if($iter)TMP_Enumerable_none$q_65.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_66=function($a_rest){var self=TMP_66.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(false)}else{return nil}},TMP_66.$$s=self,TMP_66.$$arity=-1,TMP_66))}else{$send(self,"each",[],(TMP_67=function($a_rest){var self=TMP_67.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){Opal.ret(false)}else{return nil}},TMP_67.$$s=self,TMP_67.$$arity=-1,TMP_67))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_none$q_65.$$arity=0);Opal.defn(self,"$one?",TMP_Enumerable_one$q_68=function(){try{var TMP_69,TMP_70,self=this,$iter=TMP_Enumerable_one$q_68.$$p,block=$iter||nil,count=nil;if($iter)TMP_Enumerable_one$q_68.$$p=null;count=0;if(block!==nil){$send(self,"each",[],(TMP_69=function($a_rest){var self=TMP_69.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}}else{return nil}},TMP_69.$$s=self,TMP_69.$$arity=-1,TMP_69))}else{$send(self,"each",[],(TMP_70=function($a_rest){var self=TMP_70.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}}else{return nil}},TMP_70.$$s=self,TMP_70.$$arity=-1,TMP_70))}return count["$=="](1)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_one$q_68.$$arity=0);Opal.defn(self,"$partition",TMP_Enumerable_partition_71=function $$partition(){var TMP_72,self=this,$iter=TMP_Enumerable_partition_71.$$p,block=$iter||nil;if($iter)TMP_Enumerable_partition_71.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["partition"],(TMP_72=function(){var self=TMP_72.$$s||this;return self.$enumerator_size()},TMP_72.$$s=self,TMP_72.$$arity=0,TMP_72))}var truthy=[],falsy=[],result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){truthy.push(param)}else{falsy.push(param)}};self.$each();return[truthy,falsy]},TMP_Enumerable_partition_71.$$arity=0);Opal.alias(self,"reduce","inject");Opal.defn(self,"$reject",TMP_Enumerable_reject_73=function $$reject(){var TMP_74,self=this,$iter=TMP_Enumerable_reject_73.$$p,block=$iter||nil;if($iter)TMP_Enumerable_reject_73.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reject"],(TMP_74=function(){var self=TMP_74.$$s||this;return self.$enumerator_size()},TMP_74.$$s=self,TMP_74.$$arity=0,TMP_74))}var result=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($falsy(value)){result.push(param)}};self.$each();return result},TMP_Enumerable_reject_73.$$arity=0);Opal.defn(self,"$reverse_each",TMP_Enumerable_reverse_each_75=function $$reverse_each(){var TMP_76,self=this,$iter=TMP_Enumerable_reverse_each_75.$$p,block=$iter||nil;if($iter)TMP_Enumerable_reverse_each_75.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reverse_each"],(TMP_76=function(){var self=TMP_76.$$s||this;return self.$enumerator_size()},TMP_76.$$s=self,TMP_76.$$arity=0,TMP_76))}var result=[];self.$each.$$p=function(){result.push(arguments)};self.$each();for(var i=result.length-1;i>=0;i--){Opal.yieldX(block,result[i])}return result},TMP_Enumerable_reverse_each_75.$$arity=0);Opal.alias(self,"select","find_all");Opal.defn(self,"$slice_before",TMP_Enumerable_slice_before_77=function $$slice_before(pattern){var TMP_78,self=this,$iter=TMP_Enumerable_slice_before_77.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_before_77.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_78=function(e){var self=TMP_78.$$s||this;if(e==null)e=nil;var slice=[];if(block!==nil){if(pattern===undefined){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=block(param,pattern.$dup());if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}self.$each();if(slice.length>0){e["$<<"](slice)}},TMP_78.$$s=self,TMP_78.$$arity=1,TMP_78))},TMP_Enumerable_slice_before_77.$$arity=-1);Opal.defn(self,"$slice_after",TMP_Enumerable_slice_after_79=function $$slice_after(pattern){var TMP_80,TMP_81,self=this,$iter=TMP_Enumerable_slice_after_79.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_after_79.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}if($truthy(pattern!==undefined)){block=$send(self,"proc",[],(TMP_80=function(e){var self=TMP_80.$$s||this;if(e==null)e=nil;return pattern["$==="](e)},TMP_80.$$s=self,TMP_80.$$arity=1,TMP_80))}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_81=function(yielder){var self=TMP_81.$$s||this;if(yielder==null)yielder=nil;var accumulate;self.$each.$$p=function(){var element=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),end_chunk=Opal.yield1(block,element);if(accumulate==null){accumulate=[]}if($truthy(end_chunk)){accumulate.push(element);yielder.$yield(accumulate);accumulate=null}else{accumulate.push(element)}};self.$each();if(accumulate!=null){yielder.$yield(accumulate)}},TMP_81.$$s=self,TMP_81.$$arity=1,TMP_81))},TMP_Enumerable_slice_after_79.$$arity=-1);Opal.defn(self,"$slice_when",TMP_Enumerable_slice_when_82=function $$slice_when(){var TMP_83,self=this,$iter=TMP_Enumerable_slice_when_82.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_when_82.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"wrong number of arguments (0 for 1)")}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_83=function(yielder){var self=TMP_83.$$s||this;if(yielder==null)yielder=nil;var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),before=params[0],after=params[1],match=Opal.yieldX(block,[before,after]);last_after=after;if(slice===nil){slice=[]}if($truthy(match)){slice.push(before);yielder.$yield(slice);slice=[]}else{slice.push(before)}};self.$each_cons(2);if(slice!==nil){slice.push(last_after);yielder.$yield(slice)}},TMP_83.$$s=self,TMP_83.$$arity=1,TMP_83))},TMP_Enumerable_slice_when_82.$$arity=0);Opal.defn(self,"$sort",TMP_Enumerable_sort_84=function $$sort(){var TMP_85,self=this,$iter=TMP_Enumerable_sort_84.$$p,block=$iter||nil,ary=nil;if($iter)TMP_Enumerable_sort_84.$$p=null;ary=self.$to_a();if(block!==nil){}else{block=$send(self,"lambda",[],(TMP_85=function(a,b){var self=TMP_85.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_85.$$s=self,TMP_85.$$arity=2,TMP_85))}return $send(ary,"sort",[],block.$to_proc())},TMP_Enumerable_sort_84.$$arity=0);Opal.defn(self,"$sort_by",TMP_Enumerable_sort_by_86=function $$sort_by(){var TMP_87,TMP_88,TMP_89,TMP_90,self=this,$iter=TMP_Enumerable_sort_by_86.$$p,block=$iter||nil,dup=nil;if($iter)TMP_Enumerable_sort_by_86.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["sort_by"],(TMP_87=function(){var self=TMP_87.$$s||this;return self.$enumerator_size()},TMP_87.$$s=self,TMP_87.$$arity=0,TMP_87))}dup=$send(self,"map",[],(TMP_88=function(){var self=TMP_88.$$s||this,arg=nil;arg=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);return[Opal.yield1(block,arg),arg]},TMP_88.$$s=self,TMP_88.$$arity=0,TMP_88));$send(dup,"sort!",[],(TMP_89=function(a,b){var self=TMP_89.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a[0]["$<=>"](b[0])},TMP_89.$$s=self,TMP_89.$$arity=2,TMP_89));return $send(dup,"map!",[],(TMP_90=function(i){var self=TMP_90.$$s||this;if(i==null)i=nil;return i[1]},TMP_90.$$s=self,TMP_90.$$arity=1,TMP_90))},TMP_Enumerable_sort_by_86.$$arity=0);Opal.defn(self,"$sum",TMP_Enumerable_sum_91=function $$sum(initial){var TMP_92,self=this,$iter=TMP_Enumerable_sum_91.$$p,block=$iter||nil,result=nil;if(initial==null){initial=0}if($iter)TMP_Enumerable_sum_91.$$p=null;result=initial;$send(self,"each",[],(TMP_92=function($a_rest){var self=TMP_92.$$s||this,args,item=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(block!==nil){item=$send(block,"call",Opal.to_a(args))}else{item=Opal.const_get_relative($nesting,"Opal").$destructure(args)}return result=$rb_plus(result,item)},TMP_92.$$s=self,TMP_92.$$arity=-1,TMP_92));return result},TMP_Enumerable_sum_91.$$arity=-1);Opal.defn(self,"$take",TMP_Enumerable_take_93=function $$take(num){var self=this;return self.$first(num)},TMP_Enumerable_take_93.$$arity=1);Opal.defn(self,"$take_while",TMP_Enumerable_take_while_94=function $$take_while(){try{var TMP_95,self=this,$iter=TMP_Enumerable_take_while_94.$$p,block=$iter||nil,result=nil;if($iter)TMP_Enumerable_take_while_94.$$p=null;if($truthy(block)){}else{return self.$enum_for("take_while")}result=[];return $send(self,"each",[],(TMP_95=function($a_rest){var self=TMP_95.$$s||this,args,value=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=Opal.const_get_relative($nesting,"Opal").$destructure(args);if($truthy(Opal.yield1(block,value))){}else{Opal.ret(result)}return result.push(value)},TMP_95.$$s=self,TMP_95.$$arity=-1,TMP_95))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_take_while_94.$$arity=0);Opal.defn(self,"$uniq",TMP_Enumerable_uniq_96=function $$uniq(){var TMP_97,self=this,$iter=TMP_Enumerable_uniq_96.$$p,block=$iter||nil,hash=nil;if($iter)TMP_Enumerable_uniq_96.$$p=null;hash=$hash2([],{});$send(self,"each",[],(TMP_97=function($a_rest){var self=TMP_97.$$s||this,args,value=nil,produced=nil,$writer=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=Opal.const_get_relative($nesting,"Opal").$destructure(args);produced=function(){if(block!==nil){return block.$call(value)}else{return value}return nil}();if($truthy(hash["$has_key?"](produced))){return nil}else{$writer=[produced,value];$send(hash,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}},TMP_97.$$s=self,TMP_97.$$arity=-1,TMP_97));return hash.$values()},TMP_Enumerable_uniq_96.$$arity=0);Opal.alias(self,"to_a","entries");Opal.defn(self,"$zip",TMP_Enumerable_zip_98=function $$zip($a_rest){var self=this,others,$iter=TMP_Enumerable_zip_98.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}others=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){others[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_zip_98.$$p=null;return $send(self.$to_a(),"zip",Opal.to_a(others))},TMP_Enumerable_zip_98.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["corelib/enumerator"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs")},TMP_Enumerator_inspect_7.$$arity=0);(function($base,$super,$parent_nesting){function $Generator(){}var self=$Generator=$klass($base,$super,"Generator",$Generator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Generator_initialize_8,TMP_Generator_each_9;def.block=nil;self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defn(self,"$initialize",TMP_Generator_initialize_8=function $$initialize(){var self=this,$iter=TMP_Generator_initialize_8.$$p,block=$iter||nil;if($iter)TMP_Generator_initialize_8.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"LocalJumpError"),"no block given")}return self.block=block},TMP_Generator_initialize_8.$$arity=0);return(Opal.defn(self,"$each",TMP_Generator_each_9=function $$each($a_rest){var self=this,args,$iter=TMP_Generator_each_9.$$p,block=$iter||nil,yielder=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Generator_each_9.$$p=null;yielder=$send(Opal.const_get_relative($nesting,"Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder);Opal.yieldX(self.block,args)}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}return self},TMP_Generator_each_9.$$arity=-1),nil)&&"each"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $Yielder(){}var self=$Yielder=$klass($base,$super,"Yielder",$Yielder);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Yielder_initialize_10,TMP_Yielder_yield_11,TMP_Yielder_$lt$lt_12;def.block=nil;Opal.defn(self,"$initialize",TMP_Yielder_initialize_10=function $$initialize(){var self=this,$iter=TMP_Yielder_initialize_10.$$p,block=$iter||nil;if($iter)TMP_Yielder_initialize_10.$$p=null;return self.block=block},TMP_Yielder_initialize_10.$$arity=0);Opal.defn(self,"$yield",TMP_Yielder_yield_11=function($a_rest){var self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}var value=Opal.yieldX(self.block,values);if(value===$breaker){throw $breaker}return value},TMP_Yielder_yield_11.$$arity=-1);return(Opal.defn(self,"$<<",TMP_Yielder_$lt$lt_12=function($a_rest){var self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}$send(self,"yield",Opal.to_a(values));return self},TMP_Yielder_$lt$lt_12.$$arity=-1),nil)&&"<<"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $Lazy(){}var self=$Lazy=$klass($base,$super,"Lazy",$Lazy);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Lazy_initialize_13,TMP_Lazy_lazy_16,TMP_Lazy_collect_17,TMP_Lazy_collect_concat_19,TMP_Lazy_drop_24,TMP_Lazy_drop_while_25,TMP_Lazy_enum_for_27,TMP_Lazy_find_all_28,TMP_Lazy_grep_30,TMP_Lazy_reject_33,TMP_Lazy_take_36,TMP_Lazy_take_while_37,TMP_Lazy_inspect_39;def.enumerator=nil;(function($base,$super,$parent_nesting){function $StopLazyError(){}var self=$StopLazyError=$klass($base,$super,"StopLazyError",$StopLazyError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);Opal.defn(self,"$initialize",TMP_Lazy_initialize_13=function $$initialize(object,size){var TMP_14,self=this,$iter=TMP_Lazy_initialize_13.$$p,block=$iter||nil;if(size==null){size=nil}if($iter)TMP_Lazy_initialize_13.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy new without a block")}self.enumerator=object;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Lazy_initialize_13,false),[size],(TMP_14=function(yielder,$a_rest){var self=TMP_14.$$s||this,each_args,TMP_15;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}each_args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){each_args[$arg_idx-1]=arguments[$arg_idx]}if(yielder==null)yielder=nil;try{return $send(object,"each",Opal.to_a(each_args),(TMP_15=function($a_rest){var self=TMP_15.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args.unshift(yielder);Opal.yieldX(block,args)},TMP_15.$$s=self,TMP_15.$$arity=-1,TMP_15))}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_14.$$s=self,TMP_14.$$arity=-2,TMP_14))},TMP_Lazy_initialize_13.$$arity=-2);Opal.alias(self,"force","to_a");Opal.defn(self,"$lazy",TMP_Lazy_lazy_16=function $$lazy(){var self=this;return self},TMP_Lazy_lazy_16.$$arity=0);Opal.defn(self,"$collect",TMP_Lazy_collect_17=function $$collect(){var TMP_18,self=this,$iter=TMP_Lazy_collect_17.$$p,block=$iter||nil;if($iter)TMP_Lazy_collect_17.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,self.$enumerator_size()],(TMP_18=function(enum$,$a_rest){var self=TMP_18.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);enum$.$yield(value)},TMP_18.$$s=self,TMP_18.$$arity=-2,TMP_18))},TMP_Lazy_collect_17.$$arity=0);Opal.defn(self,"$collect_concat",TMP_Lazy_collect_concat_19=function $$collect_concat(){var TMP_20,self=this,$iter=TMP_Lazy_collect_concat_19.$$p,block=$iter||nil;if($iter)TMP_Lazy_collect_concat_19.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_20=function(enum$,$a_rest){var self=TMP_20.$$s||this,args,TMP_21,TMP_22;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each")){$send(value,"each",[],(TMP_21=function(v){var self=TMP_21.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}else{var array=Opal.const_get_relative($nesting,"Opal").$try_convert(value,Opal.const_get_relative($nesting,"Array"),"to_ary");if(array===nil){enum$.$yield(value)}else{$send(value,"each",[],(TMP_22=function(v){var self=TMP_22.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}}},TMP_20.$$s=self,TMP_20.$$arity=-2,TMP_20))},TMP_Lazy_collect_concat_19.$$arity=0);Opal.defn(self,"$drop",TMP_Lazy_drop_24=function $$drop(n){var TMP_23,self=this,current_size=nil,set_size=nil,dropped=nil;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to drop negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();dropped=0;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,set_size],(TMP_23=function(enum$,$a_rest){var self=TMP_23.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy($rb_lt(dropped,n))){return dropped=$rb_plus(dropped,1)}else{return $send(enum$,"yield",Opal.to_a(args))}},TMP_23.$$s=self,TMP_23.$$arity=-2,TMP_23))},TMP_Lazy_drop_24.$$arity=1);Opal.defn(self,"$drop_while",TMP_Lazy_drop_while_25=function $$drop_while(){var TMP_26,self=this,$iter=TMP_Lazy_drop_while_25.$$p,block=$iter||nil,succeeding=nil;if($iter)TMP_Lazy_drop_while_25.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy drop_while without a block")}succeeding=true;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_26=function(enum$,$a_rest){var self=TMP_26.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy(succeeding)){var value=Opal.yieldX(block,args);if($falsy(value)){succeeding=false;$send(enum$,"yield",Opal.to_a(args))}}else{return $send(enum$,"yield",Opal.to_a(args))}},TMP_26.$$s=self,TMP_26.$$arity=-2,TMP_26))},TMP_Lazy_drop_while_25.$$arity=0);Opal.defn(self,"$enum_for",TMP_Lazy_enum_for_27=function $$enum_for(method,$a_rest){var self=this,args,$iter=TMP_Lazy_enum_for_27.$$p,block=$iter||nil;if(method==null){method="each"}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Lazy_enum_for_27.$$p=null;return $send(self.$class(),"for",[self,method].concat(Opal.to_a(args)),block.$to_proc())},TMP_Lazy_enum_for_27.$$arity=-1);Opal.defn(self,"$find_all",TMP_Lazy_find_all_28=function $$find_all(){var TMP_29,self=this,$iter=TMP_Lazy_find_all_28.$$p,block=$iter||nil;if($iter)TMP_Lazy_find_all_28.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy select without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_29=function(enum$,$a_rest){var self=TMP_29.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}},TMP_29.$$s=self,TMP_29.$$arity=-2,TMP_29))},TMP_Lazy_find_all_28.$$arity=0);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_Lazy_grep_30=function $$grep(pattern){var TMP_31,TMP_32,self=this,$iter=TMP_Lazy_grep_30.$$p,block=$iter||nil;if($iter)TMP_Lazy_grep_30.$$p=null;if($truthy(block)){return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_31=function(enum$,$a_rest){var self=TMP_31.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=Opal.const_get_relative($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){value=Opal.yield1(block,param);enum$.$yield(Opal.yield1(block,param))}},TMP_31.$$s=self,TMP_31.$$arity=-2,TMP_31))}else{return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_32=function(enum$,$a_rest){var self=TMP_32.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=Opal.const_get_relative($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){enum$.$yield(param)}},TMP_32.$$s=self,TMP_32.$$arity=-2,TMP_32))}},TMP_Lazy_grep_30.$$arity=1);Opal.alias(self,"map","collect");Opal.alias(self,"select","find_all");Opal.defn(self,"$reject",TMP_Lazy_reject_33=function $$reject(){var TMP_34,self=this,$iter=TMP_Lazy_reject_33.$$p,block=$iter||nil;if($iter)TMP_Lazy_reject_33.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy reject without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_34=function(enum$,$a_rest){var self=TMP_34.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($falsy(value)){$send(enum$,"yield",Opal.to_a(args))}},TMP_34.$$s=self,TMP_34.$$arity=-2,TMP_34))},TMP_Lazy_reject_33.$$arity=0);Opal.defn(self,"$take",TMP_Lazy_take_36=function $$take(n){var TMP_35,self=this,current_size=nil,set_size=nil,taken=nil;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to take negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();taken=0;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,set_size],(TMP_35=function(enum$,$a_rest){var self=TMP_35.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy($rb_lt(taken,n))){$send(enum$,"yield",Opal.to_a(args));return taken=$rb_plus(taken,1)}else{return self.$raise(Opal.const_get_relative($nesting,"StopLazyError"))}},TMP_35.$$s=self,TMP_35.$$arity=-2,TMP_35))},TMP_Lazy_take_36.$$arity=1);Opal.defn(self,"$take_while",TMP_Lazy_take_while_37=function $$take_while(){var TMP_38,self=this,$iter=TMP_Lazy_take_while_37.$$p,block=$iter||nil;if($iter)TMP_Lazy_take_while_37.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy take_while without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_38=function(enum$,$a_rest){var self=TMP_38.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}else{self.$raise(Opal.const_get_relative($nesting,"StopLazyError"))}},TMP_38.$$s=self,TMP_38.$$arity=-2,TMP_38))},TMP_Lazy_take_while_37.$$arity=0);Opal.alias(self,"to_enum","enum_for");return(Opal.defn(self,"$inspect",TMP_Lazy_inspect_39=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.enumerator.$inspect()+">"},TMP_Lazy_inspect_39.$$arity=0),nil)&&"inspect"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["corelib/numeric"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$instance_of?","$class","$Float","$coerce","$===","$raise","$__send__","$equal?","$-","$*","$div","$<","$-@","$ceil","$to_f","$denominator","$to_r","$==","$floor","$/","$%","$Complex","$zero?","$numerator","$abs","$arg","$coerce_to!","$round","$to_i","$truncate","$>"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){function $Numeric(){}var self=$Numeric=$klass($base,$super,"Numeric",$Numeric);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Numeric_coerce_1,TMP_Numeric___coerced___2,TMP_Numeric_$lt$eq$gt_3,TMP_Numeric_$$_4,TMP_Numeric_$$_5,TMP_Numeric_$_6,TMP_Numeric_abs_7,TMP_Numeric_abs2_8,TMP_Numeric_angle_9,TMP_Numeric_ceil_10,TMP_Numeric_conj_11,TMP_Numeric_denominator_12,TMP_Numeric_div_13,TMP_Numeric_divmod_14,TMP_Numeric_fdiv_15,TMP_Numeric_floor_16,TMP_Numeric_i_17,TMP_Numeric_imag_18,TMP_Numeric_integer$q_19,TMP_Numeric_nonzero$q_20,TMP_Numeric_numerator_21,TMP_Numeric_polar_22,TMP_Numeric_quo_23,TMP_Numeric_real_24,TMP_Numeric_real$q_25,TMP_Numeric_rect_26,TMP_Numeric_round_27,TMP_Numeric_to_c_28,TMP_Numeric_to_int_29,TMP_Numeric_truncate_30,TMP_Numeric_zero$q_31,TMP_Numeric_positive$q_32,TMP_Numeric_negative$q_33,TMP_Numeric_dup_34,TMP_Numeric_clone_35;self.$include(Opal.const_get_relative($nesting,"Comparable"));Opal.defn(self,"$coerce",TMP_Numeric_coerce_1=function $$coerce(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){return[other,self]}return[self.$Float(other),self.$Float(self)]},TMP_Numeric_coerce_1.$$arity=1);Opal.defn(self,"$__coerced__",TMP_Numeric___coerced___2=function $$__coerced__(method,other){var $a,$b,self=this,a=nil,b=nil,$case=nil;try{$b=other.$coerce(self),$a=Opal.to_ary($b),a=$a[0]==null?nil:$a[0],b=$a[1]==null?nil:$a[1],$b}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StandardError")])){try{$case=method;if("+"["$==="]($case)||"-"["$==="]($case)||"*"["$==="]($case)||"/"["$==="]($case)||"%"["$==="]($case)||"&"["$==="]($case)||"|"["$==="]($case)||"^"["$==="]($case)||"**"["$==="]($case)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerce into Numeric")}else if(">"["$==="]($case)||">="["$==="]($case)||"<"["$==="]($case)||"<="["$==="]($case)||"<=>"["$==="]($case)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}}finally{Opal.pop_exception()}}else{throw $err}}return a.$__send__(method,b)},TMP_Numeric___coerced___2.$$arity=2);Opal.defn(self,"$<=>",TMP_Numeric_$lt$eq$gt_3=function(other){var self=this;if($truthy(self["$equal?"](other))){return 0}return nil},TMP_Numeric_$lt$eq$gt_3.$$arity=1);Opal.defn(self,"$+@",TMP_Numeric_$$_4=function(){var self=this;return self},TMP_Numeric_$$_4.$$arity=0);Opal.defn(self,"$-@",TMP_Numeric_$$_5=function(){var self=this;return $rb_minus(0,self)},TMP_Numeric_$$_5.$$arity=0);Opal.defn(self,"$%",TMP_Numeric_$_6=function(other){var self=this;return $rb_minus(self,$rb_times(other,self.$div(other)))},TMP_Numeric_$_6.$$arity=1);Opal.defn(self,"$abs",TMP_Numeric_abs_7=function $$abs(){var self=this;if($rb_lt(self,0)){return self["$-@"]()}else{return self}},TMP_Numeric_abs_7.$$arity=0);Opal.defn(self,"$abs2",TMP_Numeric_abs2_8=function $$abs2(){var self=this;return $rb_times(self,self)},TMP_Numeric_abs2_8.$$arity=0);Opal.defn(self,"$angle",TMP_Numeric_angle_9=function $$angle(){var self=this;if($rb_lt(self,0)){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")}else{return 0}},TMP_Numeric_angle_9.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$ceil",TMP_Numeric_ceil_10=function $$ceil(){var self=this;return self.$to_f().$ceil()},TMP_Numeric_ceil_10.$$arity=0);Opal.defn(self,"$conj",TMP_Numeric_conj_11=function $$conj(){var self=this;return self},TMP_Numeric_conj_11.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_Numeric_denominator_12=function $$denominator(){var self=this;return self.$to_r().$denominator()},TMP_Numeric_denominator_12.$$arity=0);Opal.defn(self,"$div",TMP_Numeric_div_13=function $$div(other){var self=this;if(other["$=="](0)){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by o")}return $rb_divide(self,other).$floor()},TMP_Numeric_div_13.$$arity=1);Opal.defn(self,"$divmod",TMP_Numeric_divmod_14=function $$divmod(other){var self=this;return[self.$div(other),self["$%"](other)]},TMP_Numeric_divmod_14.$$arity=1);Opal.defn(self,"$fdiv",TMP_Numeric_fdiv_15=function $$fdiv(other){var self=this;return $rb_divide(self.$to_f(),other)},TMP_Numeric_fdiv_15.$$arity=1);Opal.defn(self,"$floor",TMP_Numeric_floor_16=function $$floor(){var self=this;return self.$to_f().$floor()},TMP_Numeric_floor_16.$$arity=0);Opal.defn(self,"$i",TMP_Numeric_i_17=function $$i(){var self=this;return self.$Complex(0,self)},TMP_Numeric_i_17.$$arity=0);Opal.defn(self,"$imag",TMP_Numeric_imag_18=function $$imag(){var self=this;return 0},TMP_Numeric_imag_18.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$integer?",TMP_Numeric_integer$q_19=function(){var self=this;return false},TMP_Numeric_integer$q_19.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$nonzero?",TMP_Numeric_nonzero$q_20=function(){var self=this;if($truthy(self["$zero?"]())){return nil}else{return self}},TMP_Numeric_nonzero$q_20.$$arity=0);Opal.defn(self,"$numerator",TMP_Numeric_numerator_21=function $$numerator(){var self=this;return self.$to_r().$numerator()},TMP_Numeric_numerator_21.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_Numeric_polar_22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_Numeric_polar_22.$$arity=0);Opal.defn(self,"$quo",TMP_Numeric_quo_23=function $$quo(other){var self=this;return $rb_divide(Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](self,Opal.const_get_relative($nesting,"Rational"),"to_r"),other)},TMP_Numeric_quo_23.$$arity=1);Opal.defn(self,"$real",TMP_Numeric_real_24=function $$real(){var self=this;return self},TMP_Numeric_real_24.$$arity=0);Opal.defn(self,"$real?",TMP_Numeric_real$q_25=function(){var self=this;return true},TMP_Numeric_real$q_25.$$arity=0);Opal.defn(self,"$rect",TMP_Numeric_rect_26=function $$rect(){var self=this;return[self,0]},TMP_Numeric_rect_26.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$round",TMP_Numeric_round_27=function $$round(digits){var self=this;return self.$to_f().$round(digits)},TMP_Numeric_round_27.$$arity=-1);Opal.defn(self,"$to_c",TMP_Numeric_to_c_28=function $$to_c(){var self=this;return self.$Complex(self,0)},TMP_Numeric_to_c_28.$$arity=0);Opal.defn(self,"$to_int",TMP_Numeric_to_int_29=function $$to_int(){var self=this;return self.$to_i()},TMP_Numeric_to_int_29.$$arity=0);Opal.defn(self,"$truncate",TMP_Numeric_truncate_30=function $$truncate(){var self=this;return self.$to_f().$truncate()},TMP_Numeric_truncate_30.$$arity=0);Opal.defn(self,"$zero?",TMP_Numeric_zero$q_31=function(){var self=this;return self["$=="](0)},TMP_Numeric_zero$q_31.$$arity=0);Opal.defn(self,"$positive?",TMP_Numeric_positive$q_32=function(){var self=this;return $rb_gt(self,0)},TMP_Numeric_positive$q_32.$$arity=0);Opal.defn(self,"$negative?",TMP_Numeric_negative$q_33=function(){var self=this;return $rb_lt(self,0)},TMP_Numeric_negative$q_33.$$arity=0);Opal.defn(self,"$dup",TMP_Numeric_dup_34=function $$dup(){var self=this;return self},TMP_Numeric_dup_34.$$arity=0);return(Opal.defn(self,"$clone",TMP_Numeric_clone_35=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},TMP_Numeric_clone_35.$$arity=-1),nil)&&"clone"}($nesting[0],null,$nesting)};Opal.modules["corelib/array"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$==","$object_id","$inspect","$enum_for","$bsearch_index","$to_proc","$coerce_to!","$>","$*","$enumerator_size","$empty?","$size","$map","$equal?","$dup","$each","$[]","$dig","$eql?","$length","$begin","$end","$exclude_end?","$flatten","$__id__","$to_s","$new","$!","$>=","$**","$delete_if","$reverse","$rotate","$rand","$at","$keep_if","$shuffle!","$<","$sort","$sort_by","$!=","$times","$[]=","$-","$<<","$values","$kind_of?","$last","$first","$upto","$reject","$pristine"]);self.$require("corelib/enumerable");self.$require("corelib/numeric");return function($base,$super,$parent_nesting){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Array_$$_1,TMP_Array_initialize_2,TMP_Array_try_convert_3,TMP_Array_$_4,TMP_Array_$_5,TMP_Array_$_6,TMP_Array_$_7,TMP_Array_$_8,TMP_Array_$lt$lt_9,TMP_Array_$lt$eq$gt_10,TMP_Array_$eq$eq_11,TMP_Array_$$_12,TMP_Array_$$$eq_13,TMP_Array_any$q_14,TMP_Array_assoc_15,TMP_Array_at_16,TMP_Array_bsearch_index_17,TMP_Array_bsearch_18,TMP_Array_cycle_19,TMP_Array_clear_21,TMP_Array_count_22,TMP_Array_initialize_copy_23,TMP_Array_collect_24,TMP_Array_collect$B_26,TMP_Array_combination_28,TMP_Array_repeated_combination_30,TMP_Array_compact_32,TMP_Array_compact$B_33,TMP_Array_concat_36,TMP_Array_delete_37,TMP_Array_delete_at_38,TMP_Array_delete_if_39,TMP_Array_dig_41,TMP_Array_drop_42,TMP_Array_dup_43,TMP_Array_each_44,TMP_Array_each_index_46,TMP_Array_empty$q_48,TMP_Array_eql$q_49,TMP_Array_fetch_50,TMP_Array_fill_51,TMP_Array_first_52,TMP_Array_flatten_53,TMP_Array_flatten$B_54,TMP_Array_hash_55,TMP_Array_include$q_56,TMP_Array_index_57,TMP_Array_insert_58,TMP_Array_inspect_59,TMP_Array_join_60,TMP_Array_keep_if_61,TMP_Array_last_63,TMP_Array_length_64,TMP_Array_permutation_65,TMP_Array_repeated_permutation_67,TMP_Array_pop_69,TMP_Array_product_70,TMP_Array_push_71,TMP_Array_rassoc_72,TMP_Array_reject_73,TMP_Array_reject$B_75,TMP_Array_replace_77,TMP_Array_reverse_78,TMP_Array_reverse$B_79,TMP_Array_reverse_each_80,TMP_Array_rindex_82,TMP_Array_rotate_83,TMP_Array_rotate$B_84,TMP_Array_sample_87,TMP_Array_select_88,TMP_Array_select$B_90,TMP_Array_shift_92,TMP_Array_shuffle_93,TMP_Array_shuffle$B_94,TMP_Array_slice$B_95,TMP_Array_sort_96,TMP_Array_sort$B_97,TMP_Array_sort_by$B_98,TMP_Array_take_100,TMP_Array_take_while_101,TMP_Array_to_a_102,TMP_Array_to_h_103,TMP_Array_transpose_106,TMP_Array_uniq_107,TMP_Array_uniq$B_108,TMP_Array_unshift_109,TMP_Array_values_at_112,TMP_Array_zip_113,TMP_Array_inherited_114,TMP_Array_instance_variables_115;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_array=true;function toArraySubclass(obj,klass){if(klass.$$name===Opal.Array){return obj}else{return klass.$allocate().$replace(obj.$to_a())}}Opal.defs(self,"$[]",TMP_Array_$$_1=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return toArraySubclass(objects,self)},TMP_Array_$$_1.$$arity=-1);Opal.defn(self,"$initialize",TMP_Array_initialize_2=function $$initialize(size,obj){var self=this,$iter=TMP_Array_initialize_2.$$p,block=$iter||nil;if(size==null){size=nil}if(obj==null){obj=nil}if($iter)TMP_Array_initialize_2.$$p=null;if(obj!==nil&&block!==nil){self.$warn("warning: block supersedes default value argument")}if(size>Opal.const_get_qualified(Opal.const_get_relative($nesting,"Integer"),"MAX")){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"array size too big")}if(arguments.length>2){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..2)")}if(arguments.length===0){self.splice(0,self.length);return self}if(arguments.length===1){if(size.$$is_array){self.$replace(size.$to_a());return self}else if(size["$respond_to?"]("to_ary")){self.$replace(size.$to_ary());return self}}size=Opal.const_get_relative($nesting,"Opal").$coerce_to(size,Opal.const_get_relative($nesting,"Integer"),"to_int");if(size<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"negative array size")}self.splice(0,self.length);var i,value;if(block===nil){for(i=0;i",TMP_Array_$lt$eq$gt_10=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](other))){other=other.$to_a()}else if($truthy(other["$respond_to?"]("to_ary"))){other=other.$to_ary().$to_a()}else{return nil}if(self.$hash()===other.$hash()){return 0}var count=Math.min(self.length,other.length);for(var i=0;i"](other[i]);if(tmp!==0){return tmp}}return self.length["$<=>"](other.length)},TMP_Array_$lt$eq$gt_10.$$arity=1);Opal.defn(self,"$==",TMP_Array_$eq$eq_11=function(other){var self=this;var recursed={};function _eqeq(array,other){var i,length,a,b;if(array===other)return true;if(!other.$$is_array){if(Opal.const_get_relative($nesting,"Opal")["$respond_to?"](other,"to_ary")){return other["$=="](array)}else{return false}}if(array.constructor!==Array)array=array.$to_a();if(other.constructor!==Array)other=other.$to_a();if(array.length!==other.length){return false}recursed[array.$object_id()]=true;for(i=0,length=array.length;isize){return nil}if(to<0){to+=size;if(to<0){return[]}}if(!exclude){to+=1}result=self.slice(from,to);return toArraySubclass(result,self.$class())}function $array_slice_index_length(self,index,length){var size=self.length,exclude,from,to,result;index=Opal.Opal.$coerce_to(index,Opal.Integer,"to_int");if(index<0){index+=size;if(index<0){return nil}}if(length===undefined){if(index>=size||index<0){return nil}return self[index]}else{length=Opal.Opal.$coerce_to(length,Opal.Integer,"to_int");if(length<0||index>size||index<0){return nil}result=self.slice(index,index+length)}return toArraySubclass(result,self.$class())}Opal.defn(self,"$[]",TMP_Array_$$_12=function(index,length){var self=this;if(index.$$is_range){return $array_slice_range(self,index)}else{return $array_slice_index_length(self,index,length)}},TMP_Array_$$_12.$$arity=-2);Opal.defn(self,"$[]=",TMP_Array_$$$eq_13=function(index,value,extra){var self=this,data=nil,length=nil;var i,size=self.length;if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](index))){if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](value))){data=value.$to_a()}else if($truthy(value["$respond_to?"]("to_ary"))){data=value.$to_ary().$to_a()}else{data=[value]}var exclude=index.excl,from=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.begin,Opal.const_get_relative($nesting,"Integer"),"to_int"),to=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.end,Opal.const_get_relative($nesting,"Integer"),"to_int");if(from<0){from+=size;if(from<0){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+index.$inspect()+" out of range")}}if(to<0){to+=size}if(!exclude){to+=1}if(from>size){for(i=size;isize){for(i=size;i=self.length){return nil}return self[index]},TMP_Array_at_16.$$arity=1);Opal.defn(self,"$bsearch_index",TMP_Array_bsearch_index_17=function $$bsearch_index(){var self=this,$iter=TMP_Array_bsearch_index_17.$$p,block=$iter||nil;if($iter)TMP_Array_bsearch_index_17.$$p=null;if(block!==nil){}else{return self.$enum_for("bsearch_index")}var min=0,max=self.length,mid,val,ret,smaller=false,satisfied=nil;while(min0){for(i=0,length=self.length;i0&&n>k){return binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k)}return 0}Opal.defn(self,"$combination",TMP_Array_combination_28=function $$combination(n){var TMP_29,self=this,$iter=TMP_Array_combination_28.$$p,$yield=$iter||nil,num=nil;if($iter)TMP_Array_combination_28.$$p=null;num=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($yield!==nil){}else{return $send(self,"enum_for",["combination",num],(TMP_29=function(){var self=TMP_29.$$s||this;return binomial_coefficient(self.length,num)},TMP_29.$$s=self,TMP_29.$$arity=0,TMP_29))}var i,length,stack,chosen,lev,done,next;if(num===0){Opal.yield1($yield,[])}else if(num===1){for(i=0,length=self.length;i=0&&num=0){iterate(num,0,[],self)}return self},TMP_Array_repeated_combination_30.$$arity=1);Opal.defn(self,"$compact",TMP_Array_compact_32=function $$compact(){var self=this;var result=[];for(var i=0,length=self.length,item;i=self.length){return nil}var result=self[index];self.splice(index,1);return result},TMP_Array_delete_at_38.$$arity=1);Opal.defn(self,"$delete_if",TMP_Array_delete_if_39=function $$delete_if(){var TMP_40,self=this,$iter=TMP_Array_delete_if_39.$$p,block=$iter||nil;if($iter)TMP_Array_delete_if_39.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["delete_if"],(TMP_40=function(){var self=TMP_40.$$s||this;return self.$size()},TMP_40.$$s=self,TMP_40.$$arity=0,TMP_40))}for(var i=0,length=self.length,value;i=0&&index2)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 0..2)")}$c=args,$b=Opal.to_ary($c),one=$b[0]==null?nil:$b[0],two=$b[1]==null?nil:$b[1],$c}else{if($truthy(args.length==0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"wrong number of arguments (0 for 1..3)")}else if($truthy(args.length>3)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 1..3)")}$c=args,$b=Opal.to_ary($c),obj=$b[0]==null?nil:$b[0],one=$b[1]==null?nil:$b[1],two=$b[2]==null?nil:$b[2],$c}if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](one))){if($truthy(two)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"length invalid with range")}left=Opal.const_get_relative($nesting,"Opal").$coerce_to(one.$begin(),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+one.$inspect()+" out of range")}right=Opal.const_get_relative($nesting,"Opal").$coerce_to(one.$end(),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(right<0)){right+=this.length}if($truthy(one["$exclude_end?"]())){}else{right+=1}if($truthy(right<=left)){return self}}else if($truthy(one)){left=Opal.const_get_relative($nesting,"Opal").$coerce_to(one,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){left=0}if($truthy(two)){right=Opal.const_get_relative($nesting,"Opal").$coerce_to(two,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(right==0)){return self}right+=left}else{right=this.length}}else{left=0;right=this.length}if($truthy(left>this.length)){for(i=this.length;ithis.length)){this.length=right}if($truthy(block)){for(length=this.length;left0){if(index<0){index+=self.length+1;if(index<0){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+index+" is out of bounds")}}if(index>self.length){for(var i=self.length;iself.length){count=self.length}return self.slice(self.length-count,self.length)},TMP_Array_last_63.$$arity=-1);Opal.defn(self,"$length",TMP_Array_length_64=function $$length(){var self=this;return self.length},TMP_Array_length_64.$$arity=0);Opal.alias(self,"map","collect");Opal.alias(self,"map!","collect!");function descending_factorial(from,how_many){var count=how_many>=0?1:0;while(how_many){count*=from;from--;how_many--}return count}Opal.defn(self,"$permutation",TMP_Array_permutation_65=function $$permutation(num){var TMP_66,self=this,$iter=TMP_Array_permutation_65.$$p,block=$iter||nil,perm=nil,used=nil;if($iter)TMP_Array_permutation_65.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["permutation",num],(TMP_66=function(){var self=TMP_66.$$s||this;return descending_factorial(self.length,num===undefined?self.length:num)},TMP_66.$$s=self,TMP_66.$$arity=0,TMP_66))}var permute,offensive,output;if(num===undefined){num=self.length}else{num=Opal.const_get_relative($nesting,"Opal").$coerce_to(num,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(num<0||self.lengthself.length)){return self.splice(0,self.length)}else{return self.splice(self.length-count,self.length)}},TMP_Array_pop_69.$$arity=-1);Opal.defn(self,"$product",TMP_Array_product_70=function $$product($a_rest){var self=this,args,$iter=TMP_Array_product_70.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Array_product_70.$$p=null;var result=block!==nil?null:[],n=args.length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),i,m,subarray,len,resultlen=1;arrays[0]=self;for(i=1;i2147483647){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"too big to product")}lengths[i]=len;counters[i]=0}outer_loop:for(;;){subarray=[];for(i=0;i=0;i--){if(i>=self.length){break}if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(i=self.length-1;i>=0;i--){if(i>=self.length){break}value=block(self[i]);if(value!==false&&value!==nil){return i}}}else if(object==null){return self.$enum_for("rindex")}return nil},TMP_Array_rindex_82.$$arity=-1);Opal.defn(self,"$rotate",TMP_Array_rotate_83=function $$rotate(n){var self=this;if(n==null){n=1}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");var ary,idx,firstPart,lastPart;if(self.length===1){return self.slice()}if(self.length===0){return[]}ary=self.slice();idx=n%ary.length;firstPart=ary.slice(idx);lastPart=ary.slice(0,idx);return firstPart.concat(lastPart)},TMP_Array_rotate_83.$$arity=-1);Opal.defn(self,"$rotate!",TMP_Array_rotate$B_84=function(cnt){var self=this,ary=nil;if(cnt==null){cnt=1}if(self.length===0||self.length===1){return self}cnt=Opal.const_get_relative($nesting,"Opal").$coerce_to(cnt,Opal.const_get_relative($nesting,"Integer"),"to_int");ary=self.$rotate(cnt);return self.$replace(ary)},TMP_Array_rotate$B_84.$$arity=-1);(function($base,$super,$parent_nesting){function $SampleRandom(){}var self=$SampleRandom=$klass($base,$super,"SampleRandom",$SampleRandom);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SampleRandom_initialize_85,TMP_SampleRandom_rand_86;def.rng=nil;Opal.defn(self,"$initialize",TMP_SampleRandom_initialize_85=function $$initialize(rng){var self=this;return self.rng=rng},TMP_SampleRandom_initialize_85.$$arity=1);return(Opal.defn(self,"$rand",TMP_SampleRandom_rand_86=function $$rand(size){var self=this,random=nil;random=Opal.const_get_relative($nesting,"Opal").$coerce_to(self.rng.$rand(size),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(random<0)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"random value must be >= 0")}if($truthy(randomself.length){count=self.length}switch(count){case 0:return[];break;case 1:return[self[rng.$rand(self.length)]];break;case 2:i=rng.$rand(self.length);j=rng.$rand(self.length);if(i===j){j=i===0?i+1:i-1}return[self[i],self[j]];break;default:if(self.length/count>3){abandon=false;spin=0;result=Opal.const_get_relative($nesting,"Array").$new(count);i=1;result[0]=rng.$rand(self.length);while(i100){abandon=true;break}k=rng.$rand(self.length)}if(abandon){break}j++}if(abandon){break}result[i]=k;i++}if(!abandon){i=0;while(i=i){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"random number too big "+j)}}else{j=self.$rand(i)}tmp=self[--i];self[i]=self[j];self[j]=tmp}return self},TMP_Array_shuffle$B_94.$$arity=-1);Opal.alias(self,"slice","[]");Opal.defn(self,"$slice!",TMP_Array_slice$B_95=function(index,length){var self=this,result=nil,range=nil,range_start=nil,range_end=nil,start=nil;result=nil;if($truthy(length===undefined)){if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](index))){range=index;result=self["$[]"](range);range_start=Opal.const_get_relative($nesting,"Opal").$coerce_to(range.$begin(),Opal.const_get_relative($nesting,"Integer"),"to_int");range_end=Opal.const_get_relative($nesting,"Opal").$coerce_to(range.$end(),Opal.const_get_relative($nesting,"Integer"),"to_int");if(range_start<0){range_start+=self.length}if(range_end<0){range_end+=self.length}else if(range_end>=self.length){range_end=self.length-1;if(range.excl){range_end+=1}}var range_length=range_end-range_start;if(range.excl){range_end-=1}else{range_length+=1}if(range_start=0&&range_end=0&&range_length>0){self.splice(range_start,range_length)}}else{start=Opal.const_get_relative($nesting,"Opal").$coerce_to(index,Opal.const_get_relative($nesting,"Integer"),"to_int");if(start<0){start+=self.length}if(start<0||start>=self.length){return nil}result=self[start];if(start===0){self.shift()}else{self.splice(start,1)}}}else{start=Opal.const_get_relative($nesting,"Opal").$coerce_to(index,Opal.const_get_relative($nesting,"Integer"),"to_int");length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0){return nil}var end=start+length;result=self["$[]"](start,length);if(start<0){start+=self.length}if(start+length>self.length){length=self.length-start}if(start=0){self.splice(start,length)}}return result},TMP_Array_slice$B_95.$$arity=-2);Opal.defn(self,"$sort",TMP_Array_sort_96=function $$sort(){var self=this,$iter=TMP_Array_sort_96.$$p,block=$iter||nil;if($iter)TMP_Array_sort_96.$$p=null;if($truthy(self.length>1)){}else{return self}if(block===nil){block=function(a,b){return a["$<=>"](b)}}return self.slice().sort(function(x,y){var ret=block(x,y);if(ret===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed")}return $rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0})},TMP_Array_sort_96.$$arity=0);Opal.defn(self,"$sort!",TMP_Array_sort$B_97=function(){var self=this,$iter=TMP_Array_sort$B_97.$$p,block=$iter||nil;if($iter)TMP_Array_sort$B_97.$$p=null;var result;if(block!==nil){result=$send(self.slice(),"sort",[],block.$to_proc())}else{result=self.slice().$sort()}self.length=0;for(var i=0,length=result.length;i=0;i--){self.unshift(objects[i])}return self},TMP_Array_unshift_109.$$arity=-1);Opal.defn(self,"$values_at",TMP_Array_values_at_112=function $$values_at($a_rest){var TMP_110,self=this,args,out=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}out=[];$send(args,"each",[],(TMP_110=function(elem){var self=TMP_110.$$s||this,TMP_111,finish=nil,start=nil,i=nil;if(elem==null)elem=nil;if($truthy(elem["$kind_of?"](Opal.const_get_relative($nesting,"Range")))){finish=Opal.const_get_relative($nesting,"Opal").$coerce_to(elem.$last(),Opal.const_get_relative($nesting,"Integer"),"to_int");start=Opal.const_get_relative($nesting,"Opal").$coerce_to(elem.$first(),Opal.const_get_relative($nesting,"Integer"),"to_int");if(start<0){start=start+self.length;return nil}if(finish<0){finish=finish+self.length}if(elem["$exclude_end?"]()){finish--}if(finish=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include","$coerce_to?","$[]","$merge!","$allocate","$raise","$coerce_to!","$each","$fetch","$>=","$>","$==","$compare_by_identity","$lambda?","$abs","$arity","$call","$enum_for","$size","$respond_to?","$class","$dig","$inspect","$map","$to_proc","$flatten","$eql?","$default","$dup","$default_proc","$default_proc=","$-","$default=","$alias_method","$proc"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Hash(){}var self=$Hash=$klass($base,$super,"Hash",$Hash);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Hash_$$_1,TMP_Hash_allocate_2,TMP_Hash_try_convert_3,TMP_Hash_initialize_4,TMP_Hash_$eq$eq_5,TMP_Hash_$gt$eq_7,TMP_Hash_$gt_8,TMP_Hash_$lt_9,TMP_Hash_$lt$eq_10,TMP_Hash_$$_11,TMP_Hash_$$$eq_12,TMP_Hash_assoc_13,TMP_Hash_clear_14,TMP_Hash_clone_15,TMP_Hash_compact_16,TMP_Hash_compact$B_17,TMP_Hash_compare_by_identity_18,TMP_Hash_compare_by_identity$q_19,TMP_Hash_default_20,TMP_Hash_default$eq_21,TMP_Hash_default_proc_22,TMP_Hash_default_proc$eq_23,TMP_Hash_delete_24,TMP_Hash_delete_if_25,TMP_Hash_dig_27,TMP_Hash_each_28,TMP_Hash_each_key_30,TMP_Hash_each_value_32,TMP_Hash_empty$q_34,TMP_Hash_fetch_35,TMP_Hash_fetch_values_36,TMP_Hash_flatten_38,TMP_Hash_has_key$q_39,TMP_Hash_has_value$q_40,TMP_Hash_hash_41,TMP_Hash_index_42,TMP_Hash_indexes_43,TMP_Hash_inspect_44,TMP_Hash_invert_45,TMP_Hash_keep_if_46,TMP_Hash_keys_48,TMP_Hash_length_49,TMP_Hash_merge_50,TMP_Hash_merge$B_51,TMP_Hash_rassoc_52,TMP_Hash_rehash_53,TMP_Hash_reject_54,TMP_Hash_reject$B_56,TMP_Hash_replace_58,TMP_Hash_select_59,TMP_Hash_select$B_61,TMP_Hash_shift_63,TMP_Hash_to_a_64,TMP_Hash_to_h_65,TMP_Hash_to_hash_66,TMP_Hash_to_proc_68,TMP_Hash_transform_values_69,TMP_Hash_transform_values$B_71,TMP_Hash_values_73;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_hash=true;Opal.defs(self,"$[]",TMP_Hash_$$_1=function($a_rest){var self=this,argv;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}argv=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){argv[$arg_idx-0]=arguments[$arg_idx]}var hash,argc=argv.length,i;if(argc===1){hash=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),Opal.const_get_relative($nesting,"Hash"),"to_hash");if(hash!==nil){return self.$allocate()["$merge!"](hash)}argv=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),Opal.const_get_relative($nesting,"Array"),"to_ary");if(argv===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"odd number of arguments for Hash")}argc=argv.length;hash=self.$allocate();for(i=0;i=",TMP_Hash_$gt$eq_7=function(other){var TMP_6,self=this,result=nil;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");if(self.$$keys.length",TMP_Hash_$gt_8=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");if(self.$$keys.length<=other.$$keys.length){return false}return $rb_ge(self,other)},TMP_Hash_$gt_8.$$arity=1);Opal.defn(self,"$<",TMP_Hash_$lt_9=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");return $rb_gt(other,self)},TMP_Hash_$lt_9.$$arity=1);Opal.defn(self,"$<=",TMP_Hash_$lt$eq_10=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");return $rb_ge(other,self)},TMP_Hash_$lt$eq_10.$$arity=1);Opal.defn(self,"$[]",TMP_Hash_$$_11=function(key){var self=this;var value=Opal.hash_get(self,key);if(value!==undefined){return value}return self.$default(key)},TMP_Hash_$$_11.$$arity=1);Opal.defn(self,"$[]=",TMP_Hash_$$$eq_12=function(key,value){var self=this;Opal.hash_put(self,key,value);return value},TMP_Hash_$$$eq_12.$$arity=2);Opal.defn(self,"$assoc",TMP_Hash_assoc_13=function $$assoc(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key;i"+value.$inspect())}return"{"+result.join(", ")+"}"}finally{if(top){inspect_ids=undefined}}},TMP_Hash_inspect_44.$$arity=0);Opal.defn(self,"$invert",TMP_Hash_invert_45=function $$invert(){var self=this;var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value;i0){key=keys[0];key=key.$$is_string?key:key.key;return[key,Opal.hash_delete(self,key)]}return self.$default(nil)},TMP_Hash_shift_63.$$arity=0);Opal.alias(self,"size","length");self.$alias_method("store","[]=");Opal.defn(self,"$to_a",TMP_Hash_to_a_64=function $$to_a(){var self=this;var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key,value;irhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$bridge","$raise","$name","$class","$Float","$respond_to?","$coerce_to!","$__coerced__","$===","$!","$>","$**","$new","$<","$to_f","$==","$nan?","$infinite?","$enum_for","$+","$-","$gcd","$lcm","$/","$frexp","$to_i","$ldexp","$rationalize","$*","$<<","$to_r","$-@","$size","$<=","$>=","$<=>","$compare","$empty?"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Number(){}var self=$Number=$klass($base,$super,"Number",$Number);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Number_coerce_2,TMP_Number___id___3,TMP_Number_$_4,TMP_Number_$_5,TMP_Number_$_6,TMP_Number_$_7,TMP_Number_$_8,TMP_Number_$_9,TMP_Number_$_10,TMP_Number_$_11,TMP_Number_$lt_12,TMP_Number_$lt$eq_13,TMP_Number_$gt_14,TMP_Number_$gt$eq_15,TMP_Number_$lt$eq$gt_16,TMP_Number_$lt$lt_17,TMP_Number_$gt$gt_18,TMP_Number_$$_19,TMP_Number_$$_20,TMP_Number_$$_21,TMP_Number_$_22,TMP_Number_$$_23,TMP_Number_$eq$eq$eq_24,TMP_Number_$eq$eq_25,TMP_Number_abs_26,TMP_Number_abs2_27,TMP_Number_angle_28,TMP_Number_bit_length_29,TMP_Number_ceil_30,TMP_Number_chr_31,TMP_Number_denominator_32,TMP_Number_downto_33,TMP_Number_equal$q_35,TMP_Number_even$q_36,TMP_Number_floor_37,TMP_Number_gcd_38,TMP_Number_gcdlcm_39,TMP_Number_integer$q_40,TMP_Number_is_a$q_41,TMP_Number_instance_of$q_42,TMP_Number_lcm_43,TMP_Number_next_44,TMP_Number_nonzero$q_45,TMP_Number_numerator_46,TMP_Number_odd$q_47,TMP_Number_ord_48,TMP_Number_pred_49,TMP_Number_quo_50,TMP_Number_rationalize_51,TMP_Number_round_52,TMP_Number_step_53,TMP_Number_times_55,TMP_Number_to_f_57,TMP_Number_to_i_58,TMP_Number_to_r_59,TMP_Number_to_s_60,TMP_Number_divmod_61,TMP_Number_upto_62,TMP_Number_zero$q_64,TMP_Number_size_65,TMP_Number_nan$q_66,TMP_Number_finite$q_67,TMP_Number_infinite$q_68,TMP_Number_positive$q_69,TMP_Number_negative$q_70;Opal.const_get_relative($nesting,"Opal").$bridge(self,Number);Number.prototype.$$is_number=true;self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$coerce",TMP_Number_coerce_2=function $$coerce(other){var self=this;if(other===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}else if(other.$$is_string){return[self.$Float(other),self]}else if(other["$respond_to?"]("to_f")){return[Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Float"),"to_f"),self]}else if(other.$$is_number){return[other,self]}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}},TMP_Number_coerce_2.$$arity=1);Opal.defn(self,"$__id__",TMP_Number___id___3=function $$__id__(){var self=this;return self*2+1},TMP_Number___id___3.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$+",TMP_Number_$_4=function(other){var self=this;if(other.$$is_number){return self+other}else{return self.$__coerced__("+",other)}},TMP_Number_$_4.$$arity=1);Opal.defn(self,"$-",TMP_Number_$_5=function(other){var self=this;if(other.$$is_number){return self-other}else{return self.$__coerced__("-",other)}},TMP_Number_$_5.$$arity=1);Opal.defn(self,"$*",TMP_Number_$_6=function(other){var self=this;if(other.$$is_number){return self*other}else{return self.$__coerced__("*",other)}},TMP_Number_$_6.$$arity=1);Opal.defn(self,"$/",TMP_Number_$_7=function(other){var self=this;if(other.$$is_number){return self/other}else{return self.$__coerced__("/",other)}},TMP_Number_$_7.$$arity=1);Opal.alias(self,"fdiv","/");Opal.defn(self,"$%",TMP_Number_$_8=function(other){var self=this;if(other.$$is_number){if(other==-Infinity){return other}else if(other==0){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else if(other<0||self<0){return(self%other+other)%other}else{return self%other}}else{return self.$__coerced__("%",other)}},TMP_Number_$_8.$$arity=1);Opal.defn(self,"$&",TMP_Number_$_9=function(other){var self=this;if(other.$$is_number){return self&other}else{return self.$__coerced__("&",other)}},TMP_Number_$_9.$$arity=1);Opal.defn(self,"$|",TMP_Number_$_10=function(other){var self=this;if(other.$$is_number){return self|other}else{return self.$__coerced__("|",other)}},TMP_Number_$_10.$$arity=1);Opal.defn(self,"$^",TMP_Number_$_11=function(other){var self=this;if(other.$$is_number){return self^other}else{return self.$__coerced__("^",other)}},TMP_Number_$_11.$$arity=1);Opal.defn(self,"$<",TMP_Number_$lt_12=function(other){var self=this;if(other.$$is_number){return self",TMP_Number_$gt_14=function(other){var self=this;if(other.$$is_number){return self>other}else{return self.$__coerced__(">",other)}},TMP_Number_$gt_14.$$arity=1);Opal.defn(self,"$>=",TMP_Number_$gt$eq_15=function(other){var self=this;if(other.$$is_number){return self>=other}else{return self.$__coerced__(">=",other)}},TMP_Number_$gt$eq_15.$$arity=1);var spaceship_operator=function(self,other){if(other.$$is_number){if(isNaN(self)||isNaN(other)){return nil}if(self>other){return 1}else if(self",other)}};Opal.defn(self,"$<=>",TMP_Number_$lt$eq$gt_16=function(other){var self=this;try{return spaceship_operator(self,other)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Number_$lt$eq$gt_16.$$arity=1);Opal.defn(self,"$<<",TMP_Number_$lt$lt_17=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](count,Opal.const_get_relative($nesting,"Integer"),"to_int");return count>0?self<>-count},TMP_Number_$lt$lt_17.$$arity=1);Opal.defn(self,"$>>",TMP_Number_$gt$gt_18=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](count,Opal.const_get_relative($nesting,"Integer"),"to_int");return count>0?self>>count:self<<-count},TMP_Number_$gt$gt_18.$$arity=1);Opal.defn(self,"$[]",TMP_Number_$$_19=function(bit){var self=this;bit=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](bit,Opal.const_get_relative($nesting,"Integer"),"to_int");if(bit<0){return 0}if(bit>=32){return self<0?1:0}return self>>bit&1},TMP_Number_$$_19.$$arity=1);Opal.defn(self,"$+@",TMP_Number_$$_20=function(){var self=this;return+self},TMP_Number_$$_20.$$arity=0);Opal.defn(self,"$-@",TMP_Number_$$_21=function(){var self=this;return-self},TMP_Number_$$_21.$$arity=0);Opal.defn(self,"$~",TMP_Number_$_22=function(){var self=this;return~self},TMP_Number_$_22.$$arity=0);Opal.defn(self,"$**",TMP_Number_$$_23=function(other){var $a,$b,self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){if($truthy($truthy($a=Opal.const_get_relative($nesting,"Integer")["$==="](self)["$!"]())?$a:$rb_gt(other,0))){return Math.pow(self,other)}else{return Opal.const_get_relative($nesting,"Rational").$new(self,1)["$**"](other)}}else if($truthy(($a=$rb_lt(self,0))?$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](other))?$b:Opal.const_get_relative($nesting,"Rational")["$==="](other):$rb_lt(self,0))){return Opal.const_get_relative($nesting,"Complex").$new(self,0)["$**"](other.$to_f())}else if($truthy(other.$$is_number!=null)){return Math.pow(self,other)}else{return self.$__coerced__("**",other)}},TMP_Number_$$_23.$$arity=1);Opal.defn(self,"$===",TMP_Number_$eq$eq$eq_24=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},TMP_Number_$eq$eq$eq_24.$$arity=1);Opal.defn(self,"$==",TMP_Number_$eq$eq_25=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},TMP_Number_$eq$eq_25.$$arity=1);Opal.defn(self,"$abs",TMP_Number_abs_26=function $$abs(){var self=this;return Math.abs(self)},TMP_Number_abs_26.$$arity=0);Opal.defn(self,"$abs2",TMP_Number_abs2_27=function $$abs2(){var self=this;return Math.abs(self*self)},TMP_Number_abs2_27.$$arity=0);Opal.defn(self,"$angle",TMP_Number_angle_28=function $$angle(){var self=this;if($truthy(self["$nan?"]())){return self}if(self==0){if(1/self>0){return 0}else{return Math.PI}}else if(self<0){return Math.PI}else{return 0}},TMP_Number_angle_28.$$arity=0);Opal.alias(self,"arg","angle");Opal.alias(self,"phase","angle");Opal.defn(self,"$bit_length",TMP_Number_bit_length_29=function $$bit_length(){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){}else{self.$raise(Opal.const_get_relative($nesting,"NoMethodError").$new(""+"undefined method `bit_length` for "+self+":Float","bit_length"))}if(self===0||self===-1){return 0}var result=0,value=self<0?~self:self;while(value!=0){result+=1;value>>>=1}return result},TMP_Number_bit_length_29.$$arity=0);Opal.defn(self,"$ceil",TMP_Number_ceil_30=function $$ceil(){var self=this;return Math.ceil(self)},TMP_Number_ceil_30.$$arity=0);Opal.defn(self,"$chr",TMP_Number_chr_31=function $$chr(encoding){var self=this;return String.fromCharCode(self)},TMP_Number_chr_31.$$arity=-1);Opal.defn(self,"$denominator",TMP_Number_denominator_32=function $$denominator(){var $a,self=this,$iter=TMP_Number_denominator_32.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_denominator_32.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return 1}else{return $send(self,Opal.find_super_dispatcher(self,"denominator",TMP_Number_denominator_32,false),$zuper,$iter)}},TMP_Number_denominator_32.$$arity=0);Opal.defn(self,"$downto",TMP_Number_downto_33=function $$downto(stop){var TMP_34,self=this,$iter=TMP_Number_downto_33.$$p,block=$iter||nil;if($iter)TMP_Number_downto_33.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["downto",stop],(TMP_34=function(){var self=TMP_34.$$s||this;if($truthy(Opal.const_get_relative($nesting,"Numeric")["$==="](stop))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if($truthy($rb_gt(stop,self))){return 0}else{return $rb_plus($rb_minus(self,stop),1)}},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))}if(!stop.$$is_number){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i>=stop;i--){block(i)}return self},TMP_Number_downto_33.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$equal?",TMP_Number_equal$q_35=function(other){var $a,self=this;return $truthy($a=self["$=="](other))?$a:isNaN(self)&&isNaN(other)},TMP_Number_equal$q_35.$$arity=1);Opal.defn(self,"$even?",TMP_Number_even$q_36=function(){var self=this;return self%2===0},TMP_Number_even$q_36.$$arity=0);Opal.defn(self,"$floor",TMP_Number_floor_37=function $$floor(){var self=this;return Math.floor(self)},TMP_Number_floor_37.$$arity=0);Opal.defn(self,"$gcd",TMP_Number_gcd_38=function $$gcd(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an integer")}var min=Math.abs(self),max=Math.abs(other);while(min>0){var tmp=min;min=max%min;max=tmp}return max},TMP_Number_gcd_38.$$arity=1);Opal.defn(self,"$gcdlcm",TMP_Number_gcdlcm_39=function $$gcdlcm(other){var self=this;return[self.$gcd(),self.$lcm()]},TMP_Number_gcdlcm_39.$$arity=1);Opal.defn(self,"$integer?",TMP_Number_integer$q_40=function(){var self=this;return self%1===0},TMP_Number_integer$q_40.$$arity=0);Opal.defn(self,"$is_a?",TMP_Number_is_a$q_41=function(klass){var $a,self=this,$iter=TMP_Number_is_a$q_41.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_is_a$q_41.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Integer")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Float")))?Opal.const_get_relative($nesting,"Float")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"is_a?",TMP_Number_is_a$q_41,false),$zuper,$iter)},TMP_Number_is_a$q_41.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$instance_of?",TMP_Number_instance_of$q_42=function(klass){var $a,self=this,$iter=TMP_Number_instance_of$q_42.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_instance_of$q_42.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Integer")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Float")))?Opal.const_get_relative($nesting,"Float")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"instance_of?",TMP_Number_instance_of$q_42,false),$zuper,$iter)},TMP_Number_instance_of$q_42.$$arity=1);Opal.defn(self,"$lcm",TMP_Number_lcm_43=function $$lcm(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an integer")}if(self==0||other==0){return 0}else{return Math.abs(self*other/self.$gcd(other))}},TMP_Number_lcm_43.$$arity=1);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$next",TMP_Number_next_44=function $$next(){var self=this;return self+1},TMP_Number_next_44.$$arity=0);Opal.defn(self,"$nonzero?",TMP_Number_nonzero$q_45=function(){var self=this;return self==0?nil:self},TMP_Number_nonzero$q_45.$$arity=0);Opal.defn(self,"$numerator",TMP_Number_numerator_46=function $$numerator(){var $a,self=this,$iter=TMP_Number_numerator_46.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_numerator_46.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}else{return $send(self,Opal.find_super_dispatcher(self,"numerator",TMP_Number_numerator_46,false),$zuper,$iter)}},TMP_Number_numerator_46.$$arity=0);Opal.defn(self,"$odd?",TMP_Number_odd$q_47=function(){var self=this;return self%2!==0},TMP_Number_odd$q_47.$$arity=0);Opal.defn(self,"$ord",TMP_Number_ord_48=function $$ord(){var self=this;return self},TMP_Number_ord_48.$$arity=0);Opal.defn(self,"$pred",TMP_Number_pred_49=function $$pred(){var self=this;return self-1},TMP_Number_pred_49.$$arity=0);Opal.defn(self,"$quo",TMP_Number_quo_50=function $$quo(other){var self=this,$iter=TMP_Number_quo_50.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_quo_50.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){return $send(self,Opal.find_super_dispatcher(self,"quo",TMP_Number_quo_50,false),$zuper,$iter)}else{return $rb_divide(self,other)}},TMP_Number_quo_50.$$arity=1);Opal.defn(self,"$rationalize",TMP_Number_rationalize_51=function $$rationalize(eps){var $a,$b,self=this,f=nil,n=nil;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){return Opal.const_get_relative($nesting,"Rational").$new(self,1)}else if($truthy(self["$infinite?"]())){return self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"Infinity")}else if($truthy(self["$nan?"]())){return self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"NaN")}else if($truthy(eps==null)){$b=Opal.const_get_relative($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),f=$a[0]==null?nil:$a[0],n=$a[1]==null?nil:$a[1],$b;f=Opal.const_get_relative($nesting,"Math").$ldexp(f,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"MANT_DIG")).$to_i();n=$rb_minus(n,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"MANT_DIG"));return Opal.const_get_relative($nesting,"Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize(Opal.const_get_relative($nesting,"Rational").$new(1,1["$<<"]($rb_minus(1,n))))}else{return self.$to_r().$rationalize(eps)}},TMP_Number_rationalize_51.$$arity=-1);Opal.defn(self,"$round",TMP_Number_round_52=function $$round(ndigits){var $a,$b,self=this,_=nil,exp=nil;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){if($truthy(ndigits==null)){return self}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Float")["$==="](ndigits))?ndigits["$infinite?"]():$a)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"Infinity")}ndigits=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](ndigits,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(ndigits,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Integer"),"MIN")))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"out of bounds")}if($truthy(ndigits>=0)){return self}ndigits=ndigits["$-@"]();if(.415241*ndigits-.125>self.$size()){return 0}var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(x)+f/2)/f)*f;return self<0?-x:x}else{if($truthy($truthy($a=self["$nan?"]())?ndigits==null:$a)){self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"NaN")}ndigits=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](ndigits||0,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_le(ndigits,0))){if($truthy(self["$nan?"]())){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"NaN")}else if($truthy(self["$infinite?"]())){self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"Infinity")}}else if(ndigits["$=="](0)){return Math.round(self)}else if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}$b=Opal.const_get_relative($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],exp=$a[1]==null?nil:$a[1],$b;if($truthy($rb_ge(ndigits,$rb_minus($rb_plus(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"DIG"),2),function(){if($truthy($rb_gt(exp,0))){return $rb_divide(exp,4)}else{return $rb_minus($rb_divide(exp,3),1)}return nil}())))){return self}if($truthy($rb_lt(ndigits,function(){if($truthy($rb_gt(exp,0))){return $rb_plus($rb_divide(exp,3),1)}else{return $rb_divide(exp,4)}return nil}()["$-@"]()))){return 0}return Math.round(self*Math.pow(10,ndigits))/Math.pow(10,ndigits)}},TMP_Number_round_52.$$arity=-1);Opal.defn(self,"$step",TMP_Number_step_53=function $$step($limit,$step,$kwargs){var TMP_54,self=this,$post_args,to,by,limit,step,$iter=TMP_Number_step_53.$$p,block=$iter||nil,positional_args=nil,keyword_args=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}to=$kwargs.$$smap["to"];by=$kwargs.$$smap["by"];if(0<$post_args.length){limit=$post_args.splice(0,1)[0]}if(0<$post_args.length){step=$post_args.splice(0,1)[0]}if($iter)TMP_Number_step_53.$$p=null;if(limit!==undefined&&to!==undefined){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"to is given twice")}if(step!==undefined&&by!==undefined){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step is given twice")}function validateParameters(){if(to!==undefined){limit=to}if(limit===undefined){limit=nil}if(step===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"step must be numeric")}if(step===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be 0")}if(by!==undefined){step=by}if(step===nil||step==null){step=1}var sign=step["$<=>"](0);if(sign===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"0 can't be coerced into "+step.$class())}if(limit===nil||limit==null){limit=sign>0?Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY"):Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")["$-@"]()}Opal.const_get_relative($nesting,"Opal").$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5){err=.5}return floor((limit-self)/step+err)+1}}}function stepSize(){validateParameters();if(step===0){return Infinity}if(step%1!==0){return stepFloatSize()}else if(step>0&&self>limit||step<0&&self0){if(step===Infinity||step===-Infinity){block(self)}else{var i=0,d;if(step>0){while(id){d=limit}block(d);i+=1}}}}}else{var value=self;if(step>0){while(value<=limit){block(value);value+=step}}else{while(value>=limit){block(value);value+=step}}}return self},TMP_Number_step_53.$$arity=-1);Opal.alias(self,"succ","next");Opal.defn(self,"$times",TMP_Number_times_55=function $$times(){var TMP_56,self=this,$iter=TMP_Number_times_55.$$p,block=$iter||nil;if($iter)TMP_Number_times_55.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["times"],(TMP_56=function(){var self=TMP_56.$$s||this;return self},TMP_56.$$s=self,TMP_56.$$arity=0,TMP_56))}for(var i=0;i0)},TMP_Number_positive$q_69.$$arity=0);return(Opal.defn(self,"$negative?",TMP_Number_negative$q_70=function(){var self=this;return self==-Infinity||1/self<0},TMP_Number_negative$q_70.$$arity=0),nil)&&"negative?"})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);Opal.const_set($nesting[0],"Fixnum",Opal.const_get_relative($nesting,"Number"));(function($base,$super,$parent_nesting){function $Integer(){}var self=$Integer=$klass($base,$super,"Integer",$Integer);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_71,TMP_$eq$eq$eq_72;Opal.defn(self,"$allocate",TMP_allocate_71=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_71.$$arity=0);Opal.udef(self,"$"+"new");return(Opal.defn(self,"$===",TMP_$eq$eq$eq_72=function(other){var self=this;if(!other.$$is_number){return false}return other%1===0},TMP_$eq$eq$eq_72.$$arity=1),nil)&&"==="})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"MAX",Math.pow(2,30)-1);return Opal.const_set($nesting[0],"MIN",-Math.pow(2,30))})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$super,$parent_nesting){function $Float(){}var self=$Float=$klass($base,$super,"Float",$Float);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_73,TMP_$eq$eq$eq_74;Opal.defn(self,"$allocate",TMP_allocate_73=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_73.$$arity=0);Opal.udef(self,"$"+"new");return(Opal.defn(self,"$===",TMP_$eq$eq$eq_74=function(other){var self=this;return!!other.$$is_number},TMP_$eq$eq$eq_74.$$arity=1),nil)&&"==="})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"INFINITY",Infinity);Opal.const_set($nesting[0],"MAX",Number.MAX_VALUE);Opal.const_set($nesting[0],"MIN",Number.MIN_VALUE);Opal.const_set($nesting[0],"NAN",NaN);Opal.const_set($nesting[0],"DIG",15);Opal.const_set($nesting[0],"MANT_DIG",53);Opal.const_set($nesting[0],"RADIX",2);return Opal.const_set($nesting[0],"EPSILON",Number.EPSILON||2.220446049250313e-16)}($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting)};Opal.modules["corelib/range"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$attr_reader","$raise","$<=>","$include?","$<=","$<","$enum_for","$upto","$to_proc","$respond_to?","$class","$succ","$!","$==","$===","$exclude_end?","$eql?","$begin","$end","$last","$to_a","$>","$-","$abs","$to_i","$coerce_to!","$ceil","$/","$size","$loop","$+","$*","$>=","$each_with_index","$%","$bsearch","$inspect","$[]","$hash"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Range_initialize_1,TMP_Range_$eq$eq_2,TMP_Range_$eq$eq$eq_3,TMP_Range_cover$q_4,TMP_Range_each_5,TMP_Range_eql$q_6,TMP_Range_exclude_end$q_7,TMP_Range_first_8,TMP_Range_last_9,TMP_Range_max_10,TMP_Range_min_11,TMP_Range_size_12,TMP_Range_step_13,TMP_Range_bsearch_17,TMP_Range_to_s_18,TMP_Range_inspect_19,TMP_Range_marshal_load_20,TMP_Range_hash_21;def.begin=def.end=def.excl=nil;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_range=true;self.$attr_reader("begin","end");Opal.defn(self,"$initialize",TMP_Range_initialize_1=function $$initialize(first,last,exclude){var self=this;if(exclude==null){exclude=false}if($truthy(self.begin)){self.$raise(Opal.const_get_relative($nesting,"NameError"),"'initialize' called twice")}if($truthy(first["$<=>"](last))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"bad value for range")}self.begin=first;self.end=last;return self.excl=exclude},TMP_Range_initialize_1.$$arity=-3);Opal.defn(self,"$==",TMP_Range_$eq$eq_2=function(other){var self=this;if(!other.$$is_range){return false}return self.excl===other.excl&&self.begin==other.begin&&self.end==other.end},TMP_Range_$eq$eq_2.$$arity=1);Opal.defn(self,"$===",TMP_Range_$eq$eq$eq_3=function(value){var self=this;return self["$include?"](value)},TMP_Range_$eq$eq$eq_3.$$arity=1);Opal.defn(self,"$cover?",TMP_Range_cover$q_4=function(value){var $a,self=this,beg_cmp=nil,end_cmp=nil;beg_cmp=self.begin["$<=>"](value);if($truthy($truthy($a=beg_cmp)?$rb_le(beg_cmp,0):$a)){}else{return false}end_cmp=value["$<=>"](self.end);if($truthy(self.excl)){return $truthy($a=end_cmp)?$rb_lt(end_cmp,0):$a}else{return $truthy($a=end_cmp)?$rb_le(end_cmp,0):$a}},TMP_Range_cover$q_4.$$arity=1);Opal.defn(self,"$each",TMP_Range_each_5=function $$each(){var $a,self=this,$iter=TMP_Range_each_5.$$p,block=$iter||nil,current=nil,last=nil;if($iter)TMP_Range_each_5.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}var i,limit;if(self.begin.$$is_number&&self.end.$$is_number){if(self.begin%1!==0||self.end%1!==0){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't iterate from Float")}for(i=self.begin,limit=self.end+function(){if($truthy(self.excl)){return 0}else{return 1}return nil}();i"](last),0))){Opal.yield1(block,current);current=current.$succ()}if($truthy($truthy($a=self.excl["$!"]())?current["$=="](last):$a)){Opal.yield1(block,current)}return self},TMP_Range_each_5.$$arity=0);Opal.defn(self,"$eql?",TMP_Range_eql$q_6=function(other){var $a,$b,self=this;if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](other))){}else{return false}return $truthy($a=$truthy($b=self.excl["$==="](other["$exclude_end?"]()))?self.begin["$eql?"](other.$begin()):$b)?self.end["$eql?"](other.$end()):$a},TMP_Range_eql$q_6.$$arity=1);Opal.defn(self,"$exclude_end?",TMP_Range_exclude_end$q_7=function(){var self=this;return self.excl},TMP_Range_exclude_end$q_7.$$arity=0);Opal.defn(self,"$first",TMP_Range_first_8=function $$first(n){var self=this,$iter=TMP_Range_first_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_first_8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(n==null)){return self.begin}return $send(self,Opal.find_super_dispatcher(self,"first",TMP_Range_first_8,false),$zuper,$iter)},TMP_Range_first_8.$$arity=-1);Opal.alias(self,"include?","cover?");Opal.defn(self,"$last",TMP_Range_last_9=function $$last(n){var self=this;if($truthy(n==null)){return self.end}return self.$to_a().$last(n)},TMP_Range_last_9.$$arity=-1);Opal.defn(self,"$max",TMP_Range_max_10=function $$max(){var $a,self=this,$iter=TMP_Range_max_10.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_max_10.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"max",TMP_Range_max_10,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.excl?self.end-1:self.end}},TMP_Range_max_10.$$arity=0);Opal.alias(self,"member?","cover?");Opal.defn(self,"$min",TMP_Range_min_11=function $$min(){var $a,self=this,$iter=TMP_Range_min_11.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_min_11.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"min",TMP_Range_min_11,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.begin}},TMP_Range_min_11.$$arity=0);Opal.defn(self,"$size",TMP_Range_size_12=function $$size(){var $a,self=this,_begin=nil,_end=nil,infinity=nil;_begin=self.begin;_end=self.end;if($truthy(self.excl)){_end=$rb_minus(_end,1)}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](_begin))?Opal.const_get_relative($nesting,"Numeric")["$==="](_end):$a)){}else{return nil}if($truthy($rb_lt(_end,_begin))){return 0}infinity=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY");if($truthy($truthy($a=infinity["$=="](_begin.$abs()))?$a:_end.$abs()["$=="](infinity))){return infinity}return(Math.abs(_end-_begin)+1).$to_i()},TMP_Range_size_12.$$arity=0);Opal.defn(self,"$step",TMP_Range_step_13=function $$step(n){var TMP_14,TMP_15,TMP_16,self=this,$iter=TMP_Range_step_13.$$p,$yield=$iter||nil,i=nil;if(n==null){n=1}if($iter)TMP_Range_step_13.$$p=null;function coerceStepSize(){if(!n.$$is_number){n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(n<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be negative")}else if(n===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be 0")}}function enumeratorSize(){if(!self.begin["$respond_to?"]("succ")){return nil}if(self.begin.$$is_string&&self.end.$$is_string){return nil}if(n%1===0){return $rb_divide(self.$size(),n).$ceil()}else{var begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"EPSILON"),size;if(err>.5){err=.5}if(self.excl){size=floor((end-begin)/n-err);if(size*n+beginarity&&self.$$is_lambda&&!self.$$is_curried){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+length+" for "+arity+")")}if(length>=arity){return self.$call.apply(self,args)}result=function(){return curried.apply(null,args.concat($slice.call(arguments)))};result.$$is_lambda=self.$$is_lambda;result.$$is_curried=true;return result}curried.$$is_lambda=self.$$is_lambda;curried.$$is_curried=true;return curried},TMP_Proc_curry_9.$$arity=-1);Opal.defn(self,"$dup",TMP_Proc_dup_10=function $$dup(){var self=this;var original_proc=self.$$original_proc||self,proc=function(){return original_proc.apply(this,arguments)};for(var prop in self){if(self.hasOwnProperty(prop)){proc[prop]=self[prop]}}return proc},TMP_Proc_dup_10.$$arity=0);return Opal.alias(self,"clone","dup")}($nesting[0],Function,$nesting)};Opal.modules["corelib/method"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$arity","$new","$class","$join","$source_location","$raise"]);(function($base,$super,$parent_nesting){function $Method(){}var self=$Method=$klass($base,$super,"Method",$Method);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Method_initialize_1,TMP_Method_arity_2,TMP_Method_parameters_3,TMP_Method_source_location_4,TMP_Method_comments_5,TMP_Method_call_6,TMP_Method_unbind_7,TMP_Method_to_proc_8,TMP_Method_inspect_9;def.method=def.receiver=def.owner=def.name=nil;self.$attr_reader("owner","receiver","name");Opal.defn(self,"$initialize",TMP_Method_initialize_1=function $$initialize(receiver,owner,method,name){var self=this;self.receiver=receiver;self.owner=owner;self.name=name;return self.method=method},TMP_Method_initialize_1.$$arity=4);Opal.defn(self,"$arity",TMP_Method_arity_2=function $$arity(){var self=this;return self.method.$arity()},TMP_Method_arity_2.$$arity=0);Opal.defn(self,"$parameters",TMP_Method_parameters_3=function $$parameters(){var self=this;return self.method.$$parameters},TMP_Method_parameters_3.$$arity=0);Opal.defn(self,"$source_location",TMP_Method_source_location_4=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},TMP_Method_source_location_4.$$arity=0);Opal.defn(self,"$comments",TMP_Method_comments_5=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},TMP_Method_comments_5.$$arity=0);Opal.defn(self,"$call",TMP_Method_call_6=function $$call($a_rest){var self=this,args,$iter=TMP_Method_call_6.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Method_call_6.$$p=null;self.method.$$p=block;return self.method.apply(self.receiver,args)},TMP_Method_call_6.$$arity=-1);Opal.alias(self,"[]","call");Opal.defn(self,"$unbind",TMP_Method_unbind_7=function $$unbind(){var self=this;return Opal.const_get_relative($nesting,"UnboundMethod").$new(self.receiver.$class(),self.owner,self.method,self.name)},TMP_Method_unbind_7.$$arity=0);Opal.defn(self,"$to_proc",TMP_Method_to_proc_8=function $$to_proc(){var self=this;var proc=self.$call.bind(self);proc.$$unbound=self.method;proc.$$is_lambda=true;return proc},TMP_Method_to_proc_8.$$arity=0);return(Opal.defn(self,"$inspect",TMP_Method_inspect_9=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.receiver.$class()+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},TMP_Method_inspect_9.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $UnboundMethod(){}var self=$UnboundMethod=$klass($base,$super,"UnboundMethod",$UnboundMethod);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UnboundMethod_initialize_10,TMP_UnboundMethod_arity_11,TMP_UnboundMethod_parameters_12,TMP_UnboundMethod_source_location_13,TMP_UnboundMethod_comments_14,TMP_UnboundMethod_bind_15,TMP_UnboundMethod_inspect_16;def.method=def.owner=def.name=def.source=nil;self.$attr_reader("source","owner","name");Opal.defn(self,"$initialize",TMP_UnboundMethod_initialize_10=function $$initialize(source,owner,method,name){var self=this;self.source=source;self.owner=owner;self.method=method;return self.name=name},TMP_UnboundMethod_initialize_10.$$arity=4);Opal.defn(self,"$arity",TMP_UnboundMethod_arity_11=function $$arity(){var self=this;return self.method.$arity()},TMP_UnboundMethod_arity_11.$$arity=0);Opal.defn(self,"$parameters",TMP_UnboundMethod_parameters_12=function $$parameters(){var self=this;return self.method.$$parameters},TMP_UnboundMethod_parameters_12.$$arity=0);Opal.defn(self,"$source_location",TMP_UnboundMethod_source_location_13=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},TMP_UnboundMethod_source_location_13.$$arity=0);Opal.defn(self,"$comments",TMP_UnboundMethod_comments_14=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},TMP_UnboundMethod_comments_14.$$arity=0);Opal.defn(self,"$bind",TMP_UnboundMethod_bind_15=function $$bind(object){var self=this;if(self.owner.$$is_module||Opal.is_a(object,self.owner)){return Opal.const_get_relative($nesting,"Method").$new(object,self.owner,self.method,self.name)}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't bind singleton method to a different class (expected "+object+".kind_of?("+self.owner+" to be true)")}},TMP_UnboundMethod_bind_15.$$arity=1);return(Opal.defn(self,"$inspect",TMP_UnboundMethod_inspect_16=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.source+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},TMP_UnboundMethod_inspect_16.$$arity=0),nil)&&"inspect"}($nesting[0],null,$nesting)};Opal.modules["corelib/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil;$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features;$gvars.LOAD_PATH=$gvars[":"]=[];$gvars["/"]="\n";$gvars[","]=nil;Opal.const_set($nesting[0],"ARGV",[]);Opal.const_set($nesting[0],"ARGF",Opal.const_get_relative($nesting,"Object").$new());Opal.const_set($nesting[0],"ENV",$hash2([],{}));$gvars.VERBOSE=false;$gvars.DEBUG=false;return $gvars.SAFE=0};Opal.modules["opal/regexp_anchors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$==","$new"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"REGEXP_START",function(){if(Opal.const_get_relative($nesting,"RUBY_ENGINE")["$=="]("opal")){return"^"}else{return nil}return nil}());Opal.const_set($nesting[0],"REGEXP_END",function(){if(Opal.const_get_relative($nesting,"RUBY_ENGINE")["$=="]("opal")){return"$"}else{return nil}return nil}());Opal.const_set($nesting[0],"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"INLINE_IDENTIFIER_REGEXP",Opal.const_get_relative($nesting,"Regexp").$new(""+"[^"+Opal.const_get_relative($nesting,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+Opal.const_get_relative($nesting,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]"));Opal.const_set($nesting[0],"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"CONST_NAME_REGEXP",Opal.const_get_relative($nesting,"Regexp").$new(""+Opal.const_get_relative($nesting,"REGEXP_START")+"(::)?[A-Z][^"+Opal.const_get_relative($nesting,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+Opal.const_get_relative($nesting,"REGEXP_END")))}($nesting[0],$nesting)};Opal.modules["opal/mini"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("corelib/nil");self.$require("corelib/boolean");self.$require("corelib/string");self.$require("corelib/comparable");self.$require("corelib/enumerable");self.$require("corelib/enumerator");self.$require("corelib/array");self.$require("corelib/hash");self.$require("corelib/number");self.$require("corelib/range");self.$require("corelib/proc");self.$require("corelib/method");self.$require("corelib/regexp");self.$require("corelib/variables");return self.$require("opal/regexp_anchors")};Opal.modules["corelib/string/inheritance"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$require","$new","$allocate","$initialize","$to_proc","$__send__","$class","$clone","$respond_to?","$==","$to_s","$inspect","$+","$*","$map","$split","$enum_for","$each_line","$to_a","$%","$-"]);self.$require("corelib/string");(function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_inherited_1;return Opal.defs(self,"$inherited",TMP_String_inherited_1=function $$inherited(klass){var self=this,replace=nil;replace=Opal.const_get_relative($nesting,"Class").$new(Opal.const_get_qualified(Opal.const_get_relative($nesting,"String"),"Wrapper"));klass.$$proto=replace.$$proto;klass.$$proto.$$class=klass;klass.$$alloc=replace.$$alloc;klass.$$parent=Opal.const_get_qualified(Opal.const_get_relative($nesting,"String"),"Wrapper");klass.$allocate=replace.$allocate;klass.$new=replace.$new},TMP_String_inherited_1.$$arity=1)})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $Wrapper(){}var self=$Wrapper=$klass($base,$super,"Wrapper",$Wrapper);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Wrapper_allocate_2,TMP_Wrapper_new_3,TMP_Wrapper_$$_4,TMP_Wrapper_initialize_5,TMP_Wrapper_method_missing_6,TMP_Wrapper_initialize_copy_7,TMP_Wrapper_respond_to$q_8,TMP_Wrapper_$eq$eq_9,TMP_Wrapper_to_s_10,TMP_Wrapper_inspect_11,TMP_Wrapper_$_12,TMP_Wrapper_$_13,TMP_Wrapper_split_15,TMP_Wrapper_replace_16,TMP_Wrapper_each_line_17,TMP_Wrapper_lines_19,TMP_Wrapper_$_20,TMP_Wrapper_instance_variables_21;def.literal=nil;def.$$is_string=true;Opal.defs(self,"$allocate",TMP_Wrapper_allocate_2=function $$allocate(string){var self=this,$iter=TMP_Wrapper_allocate_2.$$p,$yield=$iter||nil,obj=nil;if(string==null){string=""}if($iter)TMP_Wrapper_allocate_2.$$p=null;obj=$send(self,Opal.find_super_dispatcher(self,"allocate",TMP_Wrapper_allocate_2,false,$Wrapper),[],null);obj.literal=string;return obj},TMP_Wrapper_allocate_2.$$arity=-1);Opal.defs(self,"$new",TMP_Wrapper_new_3=function($a_rest){var self=this,args,$iter=TMP_Wrapper_new_3.$$p,block=$iter||nil,obj=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Wrapper_new_3.$$p=null;obj=self.$allocate();$send(obj,"initialize",Opal.to_a(args),block.$to_proc());return obj},TMP_Wrapper_new_3.$$arity=-1);Opal.defs(self,"$[]",TMP_Wrapper_$$_4=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return self.$allocate(objects)},TMP_Wrapper_$$_4.$$arity=-1);Opal.defn(self,"$initialize",TMP_Wrapper_initialize_5=function $$initialize(string){var self=this;if(string==null){string=""}return self.literal=string},TMP_Wrapper_initialize_5.$$arity=-1);Opal.defn(self,"$method_missing",TMP_Wrapper_method_missing_6=function $$method_missing($a_rest){var self=this,args,$iter=TMP_Wrapper_method_missing_6.$$p,block=$iter||nil,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Wrapper_method_missing_6.$$p=null;result=$send(self.literal,"__send__",Opal.to_a(args),block.$to_proc());if($truthy(result.$$is_string!=null)){if($truthy(result==self.literal)){return self}else{return self.$class().$allocate(result)}}else{return result}},TMP_Wrapper_method_missing_6.$$arity=-1);Opal.defn(self,"$initialize_copy",TMP_Wrapper_initialize_copy_7=function $$initialize_copy(other){var self=this;return self.literal=other.literal.$clone()},TMP_Wrapper_initialize_copy_7.$$arity=1);Opal.defn(self,"$respond_to?",TMP_Wrapper_respond_to$q_8=function(name,$a_rest){var $b,self=this,$iter=TMP_Wrapper_respond_to$q_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Wrapper_respond_to$q_8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $truthy($b=$send(self,Opal.find_super_dispatcher(self,"respond_to?",TMP_Wrapper_respond_to$q_8,false),$zuper,$iter))?$b:self.literal["$respond_to?"](name)},TMP_Wrapper_respond_to$q_8.$$arity=-2);Opal.defn(self,"$==",TMP_Wrapper_$eq$eq_9=function(other){var self=this;return self.literal["$=="](other)},TMP_Wrapper_$eq$eq_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$to_s",TMP_Wrapper_to_s_10=function $$to_s(){var self=this;return self.literal.$to_s()},TMP_Wrapper_to_s_10.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.defn(self,"$inspect",TMP_Wrapper_inspect_11=function $$inspect(){var self=this;return self.literal.$inspect()},TMP_Wrapper_inspect_11.$$arity=0);Opal.defn(self,"$+",TMP_Wrapper_$_12=function(other){var self=this;return $rb_plus(self.literal,other)},TMP_Wrapper_$_12.$$arity=1);Opal.defn(self,"$*",TMP_Wrapper_$_13=function(other){var self=this;var result=$rb_times(self.literal,other);if(result.$$is_string){return self.$class().$allocate(result)}else{return result}},TMP_Wrapper_$_13.$$arity=1);Opal.defn(self,"$split",TMP_Wrapper_split_15=function $$split(pattern,limit){var TMP_14,self=this;return $send(self.literal.$split(pattern,limit),"map",[],(TMP_14=function(str){var self=TMP_14.$$s||this;if(str==null)str=nil;return self.$class().$allocate(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_Wrapper_split_15.$$arity=-1);Opal.defn(self,"$replace",TMP_Wrapper_replace_16=function $$replace(string){var self=this;return self.literal=string},TMP_Wrapper_replace_16.$$arity=1);Opal.defn(self,"$each_line",TMP_Wrapper_each_line_17=function $$each_line(separator){var TMP_18,self=this,$iter=TMP_Wrapper_each_line_17.$$p,$yield=$iter||nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_Wrapper_each_line_17.$$p=null;if($yield!==nil){}else{return self.$enum_for("each_line",separator)}return $send(self.literal,"each_line",[separator],(TMP_18=function(str){var self=TMP_18.$$s||this;if(str==null)str=nil;return Opal.yield1($yield,self.$class().$allocate(str))},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18))},TMP_Wrapper_each_line_17.$$arity=-1);Opal.defn(self,"$lines",TMP_Wrapper_lines_19=function $$lines(separator){var self=this,$iter=TMP_Wrapper_lines_19.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_Wrapper_lines_19.$$p=null;e=$send(self,"each_line",[separator],block.$to_proc());if($truthy(block)){return self}else{return e.$to_a()}},TMP_Wrapper_lines_19.$$arity=-1);Opal.defn(self,"$%",TMP_Wrapper_$_20=function(data){var self=this;return self.literal["$%"](data)},TMP_Wrapper_$_20.$$arity=1);return(Opal.defn(self,"$instance_variables",TMP_Wrapper_instance_variables_21=function $$instance_variables(){var self=this,$iter=TMP_Wrapper_instance_variables_21.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Wrapper_instance_variables_21.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $rb_minus($send(self,Opal.find_super_dispatcher(self,"instance_variables",TMP_Wrapper_instance_variables_21,false),$zuper,$iter),["@literal"])},TMP_Wrapper_instance_variables_21.$$arity=0),nil)&&"instance_variables"}(Opal.const_get_relative($nesting,"String"),null,$nesting)};Opal.modules["corelib/string/encoding"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var TMP_12,TMP_15,TMP_18,TMP_21,TMP_24,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$+","$[]","$new","$to_proc","$each","$const_set","$sub","$==","$default_external","$upcase","$raise","$attr_accessor","$attr_reader","$register","$length","$bytes","$to_a","$each_byte","$bytesize","$enum_for","$force_encoding","$dup","$coerce_to!","$find","$getbyte"]);self.$require("corelib/string");(function($base,$super,$parent_nesting){function $Encoding(){}var self=$Encoding=$klass($base,$super,"Encoding",$Encoding);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Encoding_register_1,TMP_Encoding_find_3,TMP_Encoding_initialize_4,TMP_Encoding_ascii_compatible$q_5,TMP_Encoding_dummy$q_6,TMP_Encoding_to_s_7,TMP_Encoding_inspect_8,TMP_Encoding_each_byte_9,TMP_Encoding_getbyte_10,TMP_Encoding_bytesize_11;def.ascii=def.dummy=def.name=nil;self["$$register"]={};Opal.defs(self,"$register",TMP_Encoding_register_1=function $$register(name,options){var $a,TMP_2,self=this,$iter=TMP_Encoding_register_1.$$p,block=$iter||nil,names=nil,encoding=nil,register=nil;if(options==null){options=$hash2([],{})}if($iter)TMP_Encoding_register_1.$$p=null;names=$rb_plus([name],$truthy($a=options["$[]"]("aliases"))?$a:[]);encoding=$send(Opal.const_get_relative($nesting,"Class"),"new",[self],block.$to_proc()).$new(name,names,$truthy($a=options["$[]"]("ascii"))?$a:false,$truthy($a=options["$[]"]("dummy"))?$a:false);register=self["$$register"];return $send(names,"each",[],(TMP_2=function(name){var self=TMP_2.$$s||this;if(name==null)name=nil;self.$const_set(name.$sub("-","_"),encoding);return register[""+"$$"+name]=encoding},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Encoding_register_1.$$arity=-2);Opal.defs(self,"$find",TMP_Encoding_find_3=function $$find(name){var $a,self=this,register=nil,encoding=nil;if(name["$=="]("default_external")){return self.$default_external()}register=self["$$register"];encoding=$truthy($a=register[""+"$$"+name])?$a:register[""+"$$"+name.$upcase()];if($truthy(encoding)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unknown encoding name - "+name)}return encoding},TMP_Encoding_find_3.$$arity=1);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("default_external")})(Opal.get_singleton_class(self),$nesting);self.$attr_reader("name","names");Opal.defn(self,"$initialize",TMP_Encoding_initialize_4=function $$initialize(name,names,ascii,dummy){var self=this;self.name=name;self.names=names;self.ascii=ascii;return self.dummy=dummy},TMP_Encoding_initialize_4.$$arity=4);Opal.defn(self,"$ascii_compatible?",TMP_Encoding_ascii_compatible$q_5=function(){var self=this;return self.ascii},TMP_Encoding_ascii_compatible$q_5.$$arity=0);Opal.defn(self,"$dummy?",TMP_Encoding_dummy$q_6=function(){var self=this;return self.dummy},TMP_Encoding_dummy$q_6.$$arity=0);Opal.defn(self,"$to_s",TMP_Encoding_to_s_7=function $$to_s(){var self=this;return self.name},TMP_Encoding_to_s_7.$$arity=0);Opal.defn(self,"$inspect",TMP_Encoding_inspect_8=function $$inspect(){var self=this;return""+"#"},TMP_Encoding_inspect_8.$$arity=0);Opal.defn(self,"$each_byte",TMP_Encoding_each_byte_9=function $$each_byte($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_each_byte_9.$$arity=-1);Opal.defn(self,"$getbyte",TMP_Encoding_getbyte_10=function $$getbyte($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_getbyte_10.$$arity=-1);Opal.defn(self,"$bytesize",TMP_Encoding_bytesize_11=function $$bytesize($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_bytesize_11.$$arity=-1);(function($base,$super,$parent_nesting){function $EncodingError(){}var self=$EncodingError=$klass($base,$super,"EncodingError",$EncodingError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);return function($base,$super,$parent_nesting){function $CompatibilityError(){}var self=$CompatibilityError=$klass($base,$super,"CompatibilityError",$CompatibilityError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil}($nesting[0],Opal.const_get_relative($nesting,"EncodingError"),$nesting)})($nesting[0],null,$nesting);$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:true})],(TMP_12=function(){var self=TMP_12.$$s||this,TMP_each_byte_13,TMP_bytesize_14;Opal.def(self,"$each_byte",TMP_each_byte_13=function $$each_byte(string){var self=this,$iter=TMP_each_byte_13.$$p,block=$iter||nil;if($iter)TMP_each_byte_13.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_16.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_17=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_17.$$arity=1),nil)&&"bytesize"},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-16BE"],(TMP_18=function(){var self=TMP_18.$$s||this,TMP_each_byte_19,TMP_bytesize_20;Opal.def(self,"$each_byte",TMP_each_byte_19=function $$each_byte(string){var self=this,$iter=TMP_each_byte_19.$$p,block=$iter||nil;if($iter)TMP_each_byte_19.$$p=null;for(var i=0,length=string.length;i>8);Opal.yield1(block,code&255)}},TMP_each_byte_19.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_20=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_20.$$arity=1),nil)&&"bytesize"},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-32LE"],(TMP_21=function(){var self=TMP_21.$$s||this,TMP_each_byte_22,TMP_bytesize_23;Opal.def(self,"$each_byte",TMP_each_byte_22=function $$each_byte(string){var self=this,$iter=TMP_each_byte_22.$$p,block=$iter||nil;if($iter)TMP_each_byte_22.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_22.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_23=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_23.$$arity=1),nil)&&"bytesize"},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii","dummy"],{aliases:["BINARY","US-ASCII","ASCII"],ascii:true,dummy:true})],(TMP_24=function(){var self=TMP_24.$$s||this,TMP_each_byte_25,TMP_bytesize_26;Opal.def(self,"$each_byte",TMP_each_byte_25=function $$each_byte(string){var self=this,$iter=TMP_each_byte_25.$$p,block=$iter||nil;if($iter)TMP_each_byte_25.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_25.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_26=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_26.$$arity=1),nil)&&"bytesize"},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24));return function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_bytes_27,TMP_String_bytesize_28,TMP_String_each_byte_29,TMP_String_encode_30,TMP_String_encoding_31,TMP_String_force_encoding_32,TMP_String_getbyte_33,TMP_String_valid_encoding$q_34;def.encoding=nil;String.prototype.encoding=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_16LE");Opal.defn(self,"$bytes",TMP_String_bytes_27=function $$bytes(){var self=this;return self.$each_byte().$to_a()},TMP_String_bytes_27.$$arity=0);Opal.defn(self,"$bytesize",TMP_String_bytesize_28=function $$bytesize(){var self=this;return self.encoding.$bytesize(self)},TMP_String_bytesize_28.$$arity=0);Opal.defn(self,"$each_byte",TMP_String_each_byte_29=function $$each_byte(){var self=this,$iter=TMP_String_each_byte_29.$$p,block=$iter||nil;if($iter)TMP_String_each_byte_29.$$p=null;if(block!==nil){}else{return self.$enum_for("each_byte")}$send(self.encoding,"each_byte",[self],block.$to_proc());return self},TMP_String_each_byte_29.$$arity=0);Opal.defn(self,"$encode",TMP_String_encode_30=function $$encode(encoding){var self=this;return self.$dup().$force_encoding(encoding)},TMP_String_encode_30.$$arity=1);Opal.defn(self,"$encoding",TMP_String_encoding_31=function $$encoding(){var self=this;return self.encoding},TMP_String_encoding_31.$$arity=0);Opal.defn(self,"$force_encoding",TMP_String_force_encoding_32=function $$force_encoding(encoding){var self=this;if(encoding===self.encoding){return self}encoding=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](encoding,Opal.const_get_relative($nesting,"String"),"to_s");encoding=Opal.const_get_relative($nesting,"Encoding").$find(encoding);if(encoding===self.encoding){return self}self.encoding=encoding;return self},TMP_String_force_encoding_32.$$arity=1);Opal.defn(self,"$getbyte",TMP_String_getbyte_33=function $$getbyte(idx){var self=this;return self.encoding.$getbyte(self,idx)},TMP_String_getbyte_33.$$arity=1);return(Opal.defn(self,"$valid_encoding?",TMP_String_valid_encoding$q_34=function(){var self=this;return true},TMP_String_valid_encoding$q_34.$$arity=0),nil)&&"valid_encoding?"}($nesting[0],null,$nesting)};Opal.modules["corelib/math"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy;Opal.add_stubs(["$new","$raise","$Float","$type_error","$Integer","$module_function","$checked","$float!","$===","$gamma","$-","$integer!","$/","$infinite?"]);return function($base,$parent_nesting){var $Math,self=$Math=$module($base,"Math");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Math_checked_1,TMP_Math_float$B_2,TMP_Math_integer$B_3,TMP_Math_acos_4,TMP_Math_acosh_5,TMP_Math_asin_6,TMP_Math_asinh_7,TMP_Math_atan_8,TMP_Math_atan2_9,TMP_Math_atanh_10,TMP_Math_cbrt_11,TMP_Math_cos_12,TMP_Math_cosh_13,TMP_Math_erf_14,TMP_Math_erfc_15,TMP_Math_exp_16,TMP_Math_frexp_17,TMP_Math_gamma_18,TMP_Math_hypot_19,TMP_Math_ldexp_20,TMP_Math_lgamma_21,TMP_Math_log_22,TMP_Math_log10_23,TMP_Math_log2_24,TMP_Math_sin_25,TMP_Math_sinh_26,TMP_Math_sqrt_27,TMP_Math_tan_28,TMP_Math_tanh_29;Opal.const_set($nesting[0],"E",Math.E);Opal.const_set($nesting[0],"PI",Math.PI);Opal.const_set($nesting[0],"DomainError",Opal.const_get_relative($nesting,"Class").$new(Opal.const_get_relative($nesting,"StandardError")));Opal.defs(self,"$checked",TMP_Math_checked_1=function $$checked(method,$a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(isNaN(args[0])||args.length==2&&isNaN(args[1])){return NaN}var result=Math[method].apply(null,args);if(isNaN(result)){self.$raise(Opal.const_get_relative($nesting,"DomainError"),""+'Numerical argument is out of domain - "'+method+'"')}return result},TMP_Math_checked_1.$$arity=-2);Opal.defs(self,"$float!",TMP_Math_float$B_2=function(value){var self=this;try{return self.$Float(value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return self.$raise(Opal.const_get_relative($nesting,"Opal").$type_error(value,Opal.const_get_relative($nesting,"Float")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Math_float$B_2.$$arity=1);Opal.defs(self,"$integer!",TMP_Math_integer$B_3=function(value){var self=this;try{return self.$Integer(value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return self.$raise(Opal.const_get_relative($nesting,"Opal").$type_error(value,Opal.const_get_relative($nesting,"Integer")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Math_integer$B_3.$$arity=1);self.$module_function();Opal.defn(self,"$acos",TMP_Math_acos_4=function $$acos(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("acos",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_acos_4.$$arity=1);if($truthy(typeof Math.acosh!=="undefined")){}else{Math.acosh=function(x){return Math.log(x+Math.sqrt(x*x-1))}}Opal.defn(self,"$acosh",TMP_Math_acosh_5=function $$acosh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("acosh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_acosh_5.$$arity=1);Opal.defn(self,"$asin",TMP_Math_asin_6=function $$asin(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("asin",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_asin_6.$$arity=1);if($truthy(typeof Math.asinh!=="undefined")){}else{Math.asinh=function(x){return Math.log(x+Math.sqrt(x*x+1))}}Opal.defn(self,"$asinh",TMP_Math_asinh_7=function $$asinh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("asinh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_asinh_7.$$arity=1);Opal.defn(self,"$atan",TMP_Math_atan_8=function $$atan(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atan",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atan_8.$$arity=1);Opal.defn(self,"$atan2",TMP_Math_atan2_9=function $$atan2(y,x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atan2",Opal.const_get_relative($nesting,"Math")["$float!"](y),Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atan2_9.$$arity=2);if($truthy(typeof Math.atanh!=="undefined")){}else{Math.atanh=function(x){return.5*Math.log((1+x)/(1-x))}}Opal.defn(self,"$atanh",TMP_Math_atanh_10=function $$atanh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atanh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atanh_10.$$arity=1);if($truthy(typeof Math.cbrt!=="undefined")){}else{Math.cbrt=function(x){if(x==0){return 0}if(x<0){return-Math.cbrt(-x)}var r=x,ex=0;while(r<.125){r*=8;ex--}while(r>1){r*=.125;ex++}r=(-.46946116*r+1.072302)*r+.3812513;while(ex<0){r*=.5;ex++}while(ex>0){r*=2;ex--}r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);return r}}Opal.defn(self,"$cbrt",TMP_Math_cbrt_11=function $$cbrt(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cbrt",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cbrt_11.$$arity=1);Opal.defn(self,"$cos",TMP_Math_cos_12=function $$cos(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cos",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cos_12.$$arity=1);if($truthy(typeof Math.cosh!=="undefined")){}else{Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}}Opal.defn(self,"$cosh",TMP_Math_cosh_13=function $$cosh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cosh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cosh_13.$$arity=1);if($truthy(typeof Math.erf!=="undefined")){}else{Math.erf=function(x){var A1=.254829592,A2=-.284496736,A3=1.421413741,A4=-1.453152027,A5=1.061405429,P=.3275911;var sign=1;if(x<0){sign=-1}x=Math.abs(x);var t=1/(1+P*x);var y=1-((((A5*t+A4)*t+A3)*t+A2)*t+A1)*t*Math.exp(-x*x);return sign*y}}Opal.defn(self,"$erf",TMP_Math_erf_14=function $$erf(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("erf",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_erf_14.$$arity=1);if($truthy(typeof Math.erfc!=="undefined")){}else{Math.erfc=function(x){var z=Math.abs(x),t=1/(.5*z+1);var A1=t*.17087277+-.82215223,A2=t*A1+1.48851587,A3=t*A2+-1.13520398,A4=t*A3+.27886807,A5=t*A4+-.18628806,A6=t*A5+.09678418,A7=t*A6+.37409196,A8=t*A7+1.00002368,A9=t*A8,A10=-z*z-1.26551223+A9;var a=t*Math.exp(A10);if(x<0){return 2-a}else{return a}}}Opal.defn(self,"$erfc",TMP_Math_erfc_15=function $$erfc(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("erfc",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_erfc_15.$$arity=1);Opal.defn(self,"$exp",TMP_Math_exp_16=function $$exp(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("exp",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_exp_16.$$arity=1);Opal.defn(self,"$frexp",TMP_Math_frexp_17=function $$frexp(x){var self=this;x=Opal.const_get_relative($nesting,"Math")["$float!"](x);if(isNaN(x)){return[NaN,0]}var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1,frac=x/Math.pow(2,ex);return[frac,ex]},TMP_Math_frexp_17.$$arity=1);Opal.defn(self,"$gamma",TMP_Math_gamma_18=function $$gamma(n){var self=this;n=Opal.const_get_relative($nesting,"Math")["$float!"](n);var i,t,x,value,result,twoN,threeN,fourN,fiveN;var G=4.7421875;var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n)){return NaN}if(n===0&&1/n<0){return-Infinity}if(n===-1||n===-Infinity){self.$raise(Opal.const_get_relative($nesting,"DomainError"),'Numerical argument is out of domain - "gamma"')}if(Opal.const_get_relative($nesting,"Integer")["$==="](n)){if(n<=0){return isFinite(n)?Infinity:NaN}if(n>171){return Infinity}value=n-2;result=n-1;while(value>1){result*=value;value--}if(result==0){result=1}return result}if(n<.5){return Math.PI/(Math.sin(Math.PI*n)*Opal.const_get_relative($nesting,"Math").$gamma($rb_minus(1,n)))}if(n>=171.35){return Infinity}if(n>85){twoN=n*n;threeN=twoN*n;fourN=threeN*n;fiveN=fourN*n;return Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n))}n-=1;x=P[0];for(i=1;irhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$===","$real?","$raise","$new","$*","$cos","$sin","$attr_reader","$class","$==","$real","$imag","$Complex","$-@","$+","$__coerced__","$-","$nan?","$/","$conj","$abs2","$quo","$polar","$exp","$log","$>","$!=","$divmod","$**","$hypot","$atan2","$lcm","$denominator","$to_s","$numerator","$abs","$arg","$rationalize","$to_f","$to_i","$to_r","$inspect","$positive?","$zero?","$infinite?"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Complex(){}var self=$Complex=$klass($base,$super,"Complex",$Complex);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Complex_rect_1,TMP_Complex_polar_2,TMP_Complex_initialize_3,TMP_Complex_coerce_4,TMP_Complex_$eq$eq_5,TMP_Complex_$$_6,TMP_Complex_$_7,TMP_Complex_$_8,TMP_Complex_$_9,TMP_Complex_$_10,TMP_Complex_$$_11,TMP_Complex_abs_12,TMP_Complex_abs2_13,TMP_Complex_angle_14,TMP_Complex_conj_15,TMP_Complex_denominator_16,TMP_Complex_eql$q_17,TMP_Complex_fdiv_18,TMP_Complex_hash_19,TMP_Complex_inspect_20,TMP_Complex_numerator_21,TMP_Complex_polar_22,TMP_Complex_rationalize_23,TMP_Complex_real$q_24,TMP_Complex_rect_25,TMP_Complex_to_f_26,TMP_Complex_to_i_27,TMP_Complex_to_r_28,TMP_Complex_to_s_29;def.real=def.imag=nil;Opal.defs(self,"$rect",TMP_Complex_rect_1=function $$rect(real,imag){var $a,$b,$c,self=this;if(imag==null){imag=0}if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Numeric")["$==="](real))?real["$real?"]():$c)?Opal.const_get_relative($nesting,"Numeric")["$==="](imag):$b)?imag["$real?"]():$a)){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not a real")}return self.$new(real,imag)},TMP_Complex_rect_1.$$arity=-2);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return Opal.alias(self,"rectangular","rect")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$polar",TMP_Complex_polar_2=function $$polar(r,theta){var $a,$b,$c,self=this;if(theta==null){theta=0}if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Numeric")["$==="](r))?r["$real?"]():$c)?Opal.const_get_relative($nesting,"Numeric")["$==="](theta):$b)?theta["$real?"]():$a)){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not a real")}return self.$new($rb_times(r,Opal.const_get_relative($nesting,"Math").$cos(theta)),$rb_times(r,Opal.const_get_relative($nesting,"Math").$sin(theta)))},TMP_Complex_polar_2.$$arity=-2);self.$attr_reader("real","imag");Opal.defn(self,"$initialize",TMP_Complex_initialize_3=function $$initialize(real,imag){var self=this;if(imag==null){imag=0}self.real=real;return self.imag=imag},TMP_Complex_initialize_3.$$arity=-2);Opal.defn(self,"$coerce",TMP_Complex_coerce_4=function $$coerce(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return[other,self]}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return[Opal.const_get_relative($nesting,"Complex").$new(other,0),self]}else{return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}},TMP_Complex_coerce_4.$$arity=1);Opal.defn(self,"$==",TMP_Complex_$eq$eq_5=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return($a=self.real["$=="](other.$real()))?self.imag["$=="](other.$imag()):self.real["$=="](other.$real())}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return($a=self.real["$=="](other))?self.imag["$=="](0):self.real["$=="](other)}else{return other["$=="](self)}},TMP_Complex_$eq$eq_5.$$arity=1);Opal.defn(self,"$-@",TMP_Complex_$$_6=function(){var self=this;return self.$Complex(self.real["$-@"](),self.imag["$-@"]())},TMP_Complex_$$_6.$$arity=0);Opal.defn(self,"$+",TMP_Complex_$_7=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_plus(self.real,other.$real()),$rb_plus(self.imag,other.$imag()))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_plus(self.real,other),self.imag)}else{return self.$__coerced__("+",other)}},TMP_Complex_$_7.$$arity=1);Opal.defn(self,"$-",TMP_Complex_$_8=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus(self.real,other.$real()),$rb_minus(self.imag,other.$imag()))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_minus(self.real,other),self.imag)}else{return self.$__coerced__("-",other)}},TMP_Complex_$_8.$$arity=1);Opal.defn(self,"$*",TMP_Complex_$_9=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus($rb_times(self.real,other.$real()),$rb_times(self.imag,other.$imag())),$rb_plus($rb_times(self.real,other.$imag()),$rb_times(self.imag,other.$real())))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_times(self.real,other),$rb_times(self.imag,other))}else{return self.$__coerced__("*",other)}},TMP_Complex_$_9.$$arity=1);Opal.defn(self,"$/",TMP_Complex_$_10=function(other){var $a,$b,$c,$d,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=Opal.const_get_relative($nesting,"Number")["$==="](self.real))?self.real["$nan?"]():$d)?$c:$truthy($d=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$d)?$b:$truthy($c=Opal.const_get_relative($nesting,"Number")["$==="](other.$real()))?other.$real()["$nan?"]():$c)?$a:$truthy($b=Opal.const_get_relative($nesting,"Number")["$==="](other.$imag()))?other.$imag()["$nan?"]():$b)){return Opal.const_get_relative($nesting,"Complex").$new(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"NAN"),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"NAN"))}else{return $rb_divide($rb_times(self,other.$conj()),other.$abs2())}}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex(self.real.$quo(other),self.imag.$quo(other))}else{return self.$__coerced__("/",other)}},TMP_Complex_$_10.$$arity=1);Opal.defn(self,"$**",TMP_Complex_$$_11=function(other){var $a,$b,$c,$d,self=this,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if(other["$=="](0)){return Opal.const_get_relative($nesting,"Complex").$new(1,0)}if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;ore=other.$real();oim=other.$imag();nr=Opal.const_get_relative($nesting,"Math").$exp($rb_minus($rb_times(ore,Opal.const_get_relative($nesting,"Math").$log(r)),$rb_times(oim,theta)));ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,Opal.const_get_relative($nesting,"Math").$log(r)));return Opal.const_get_relative($nesting,"Complex").$polar(nr,ntheta)}else if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){if($truthy($rb_gt(other,0))){x=self;z=x;n=$rb_minus(other,1);while($truthy(n["$!="](0))){while($truthy(($d=n.$divmod(2),$c=Opal.to_ary($d),div=$c[0]==null?nil:$c[0],mod=$c[1]==null?nil:$c[1],$d,mod["$=="](0)))){x=self.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag()));n=div}z=$rb_times(z,x);n=$rb_minus(n,1)}return z}else{return $rb_divide(Opal.const_get_relative($nesting,"Rational").$new(1,1),self)["$**"](other["$-@"]())}}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Float")["$==="](other))?$a:Opal.const_get_relative($nesting,"Rational")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;return Opal.const_get_relative($nesting,"Complex").$polar(r["$**"](other),$rb_times(theta,other))}else{return self.$__coerced__("**",other)}},TMP_Complex_$$_11.$$arity=1);Opal.defn(self,"$abs",TMP_Complex_abs_12=function $$abs(){var self=this;return Opal.const_get_relative($nesting,"Math").$hypot(self.real,self.imag)},TMP_Complex_abs_12.$$arity=0);Opal.defn(self,"$abs2",TMP_Complex_abs2_13=function $$abs2(){var self=this;return $rb_plus($rb_times(self.real,self.real),$rb_times(self.imag,self.imag))},TMP_Complex_abs2_13.$$arity=0);Opal.defn(self,"$angle",TMP_Complex_angle_14=function $$angle(){var self=this;return Opal.const_get_relative($nesting,"Math").$atan2(self.imag,self.real)},TMP_Complex_angle_14.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$conj",TMP_Complex_conj_15=function $$conj(){var self=this;return self.$Complex(self.real,self.imag["$-@"]())},TMP_Complex_conj_15.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_Complex_denominator_16=function $$denominator(){var self=this;return self.real.$denominator().$lcm(self.imag.$denominator())},TMP_Complex_denominator_16.$$arity=0);Opal.alias(self,"divide","/");Opal.defn(self,"$eql?",TMP_Complex_eql$q_17=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Complex")["$==="](other))?self.real.$class()["$=="](self.imag.$class()):$b)?self["$=="](other):$a},TMP_Complex_eql$q_17.$$arity=1);Opal.defn(self,"$fdiv",TMP_Complex_fdiv_18=function $$fdiv(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Numeric")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}return $rb_divide(self,other)},TMP_Complex_fdiv_18.$$arity=1);Opal.defn(self,"$hash",TMP_Complex_hash_19=function $$hash(){var self=this;return""+"Complex:"+self.real+":"+self.imag},TMP_Complex_hash_19.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$inspect",TMP_Complex_inspect_20=function $$inspect(){var self=this;return""+"("+self.$to_s()+")"},TMP_Complex_inspect_20.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.udef(self,"$"+"negative?");Opal.defn(self,"$numerator",TMP_Complex_numerator_21=function $$numerator(){var self=this,d=nil;d=self.$denominator();return self.$Complex($rb_times(self.real.$numerator(),$rb_divide(d,self.real.$denominator())),$rb_times(self.imag.$numerator(),$rb_divide(d,self.imag.$denominator())))},TMP_Complex_numerator_21.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_Complex_polar_22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_Complex_polar_22.$$arity=0);Opal.udef(self,"$"+"positive?");Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_Complex_rationalize_23=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy(self.imag["$!="](0))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't' convert "+self+" into Rational")}return self.$real().$rationalize(eps)},TMP_Complex_rationalize_23.$$arity=-1);Opal.defn(self,"$real?",TMP_Complex_real$q_24=function(){var self=this;return false},TMP_Complex_real$q_24.$$arity=0);Opal.defn(self,"$rect",TMP_Complex_rect_25=function $$rect(){var self=this;return[self.real,self.imag]},TMP_Complex_rect_25.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$to_f",TMP_Complex_to_f_26=function $$to_f(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Float")}return self.real.$to_f()},TMP_Complex_to_f_26.$$arity=0);Opal.defn(self,"$to_i",TMP_Complex_to_i_27=function $$to_i(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Integer")}return self.real.$to_i()},TMP_Complex_to_i_27.$$arity=0);Opal.defn(self,"$to_r",TMP_Complex_to_r_28=function $$to_r(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Rational")}return self.real.$to_r()},TMP_Complex_to_r_28.$$arity=0);Opal.defn(self,"$to_s",TMP_Complex_to_s_29=function $$to_s(){var $a,$b,$c,self=this,result=nil;result=self.real.$inspect();if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$c)?$b:self.imag["$positive?"]())?$a:self.imag["$zero?"]())){result=$rb_plus(result,"+")}else{result=$rb_plus(result,"-")}result=$rb_plus(result,self.imag.$abs().$inspect());if($truthy($truthy($a=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?$truthy($b=self.imag["$nan?"]())?$b:self.imag["$infinite?"]():$a)){result=$rb_plus(result,"*")}return $rb_plus(result,"i")},TMP_Complex_to_s_29.$$arity=0);return Opal.const_set($nesting[0],"I",self.$new(0,1))})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Complex_30;Opal.defn(self,"$Complex",TMP_Kernel_Complex_30=function $$Complex(real,imag){var self=this;if(imag==null){imag=nil}if($truthy(imag)){return Opal.const_get_relative($nesting,"Complex").$new(real,imag)}else{return Opal.const_get_relative($nesting,"Complex").$new(real,0)}},TMP_Kernel_Complex_30.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/rational"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$to_i","$==","$raise","$<","$-@","$new","$gcd","$/","$nil?","$===","$reduce","$to_r","$equal?","$!","$coerce_to!","$attr_reader","$to_f","$numerator","$denominator","$<=>","$-","$*","$__coerced__","$+","$Rational","$>","$**","$abs","$ceil","$with_precision","$floor","$to_s","$<=","$truncate","$send","$convert"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Rational(){}var self=$Rational=$klass($base,$super,"Rational",$Rational);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rational_reduce_1,TMP_Rational_convert_2,TMP_Rational_initialize_3,TMP_Rational_numerator_4,TMP_Rational_denominator_5,TMP_Rational_coerce_6,TMP_Rational_$eq$eq_7,TMP_Rational_$lt$eq$gt_8,TMP_Rational_$_9,TMP_Rational_$_10,TMP_Rational_$_11,TMP_Rational_$_12,TMP_Rational_$$_13,TMP_Rational_abs_14,TMP_Rational_ceil_15,TMP_Rational_floor_16,TMP_Rational_hash_17,TMP_Rational_inspect_18,TMP_Rational_rationalize_19,TMP_Rational_round_20,TMP_Rational_to_f_21,TMP_Rational_to_i_22,TMP_Rational_to_r_23,TMP_Rational_to_s_24,TMP_Rational_truncate_25,TMP_Rational_with_precision_26;def.num=def.den=nil;Opal.defs(self,"$reduce",TMP_Rational_reduce_1=function $$reduce(num,den){var self=this,gcd=nil;num=num.$to_i();den=den.$to_i();if(den["$=="](0)){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else if($truthy($rb_lt(den,0))){num=num["$-@"]();den=den["$-@"]()}else if(den["$=="](1)){return self.$new(num,den)}gcd=num.$gcd(den);return self.$new($rb_divide(num,gcd),$rb_divide(den,gcd))},TMP_Rational_reduce_1.$$arity=2);Opal.defs(self,"$convert",TMP_Rational_convert_2=function $$convert(num,den){var $a,$b,self=this;if($truthy($truthy($a=num["$nil?"]())?$a:den["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"cannot convert nil into Rational")}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Integer")["$==="](num))?Opal.const_get_relative($nesting,"Integer")["$==="](den):$a)){return self.$reduce(num,den)}if($truthy($truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](num))?$b:Opal.const_get_relative($nesting,"String")["$==="](num))?$a:Opal.const_get_relative($nesting,"Complex")["$==="](num))){num=num.$to_r()}if($truthy($truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](den))?$b:Opal.const_get_relative($nesting,"String")["$==="](den))?$a:Opal.const_get_relative($nesting,"Complex")["$==="](den))){den=den.$to_r()}if($truthy($truthy($a=den["$equal?"](1))?Opal.const_get_relative($nesting,"Integer")["$==="](num)["$!"]():$a)){return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](num,Opal.const_get_relative($nesting,"Rational"),"to_r")}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](num))?Opal.const_get_relative($nesting,"Numeric")["$==="](den):$a)){return $rb_divide(num,den)}else{return self.$reduce(num,den)}},TMP_Rational_convert_2.$$arity=2);self.$attr_reader("numerator","denominator");Opal.defn(self,"$initialize",TMP_Rational_initialize_3=function $$initialize(num,den){var self=this;self.num=num;return self.den=den},TMP_Rational_initialize_3.$$arity=2);Opal.defn(self,"$numerator",TMP_Rational_numerator_4=function $$numerator(){var self=this;return self.num},TMP_Rational_numerator_4.$$arity=0);Opal.defn(self,"$denominator",TMP_Rational_denominator_5=function $$denominator(){var self=this;return self.den},TMP_Rational_denominator_5.$$arity=0);Opal.defn(self,"$coerce",TMP_Rational_coerce_6=function $$coerce(other){var self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return[other,self]}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return[other.$to_r(),self]}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return[other,self.$to_f()]}else{return nil}}()},TMP_Rational_coerce_6.$$arity=1);Opal.defn(self,"$==",TMP_Rational_$eq$eq_7=function(other){var $a,self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return($a=self.num["$=="](other.$numerator()))?self.den["$=="](other.$denominator()):self.num["$=="](other.$numerator())}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return($a=self.num["$=="](other))?self.den["$=="](1):self.num["$=="](other)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$=="](other)}else{return other["$=="](self)}}()},TMP_Rational_$eq$eq_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Rational_$lt$eq$gt_8=function(other){var self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return $rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()))["$<=>"](0)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return $rb_minus(self.num,$rb_times(self.den,other))["$<=>"](0)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$<=>"](other)}else{return self.$__coerced__("<=>",other)}}()},TMP_Rational_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$+",TMP_Rational_$_9=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_plus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_plus(self.num,$rb_times(other,self.den)),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_plus(self.$to_f(),other)}else{return self.$__coerced__("+",other)}}()},TMP_Rational_$_9.$$arity=1);Opal.defn(self,"$-",TMP_Rational_$_10=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_minus(self.num,$rb_times(other,self.den)),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_minus(self.$to_f(),other)}else{return self.$__coerced__("-",other)}}()},TMP_Rational_$_10.$$arity=1);Opal.defn(self,"$*",TMP_Rational_$_11=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$numerator());den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_times(self.num,other),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_times(self.$to_f(),other)}else{return self.$__coerced__("*",other)}}()},TMP_Rational_$_11.$$arity=1);Opal.defn(self,"$/",TMP_Rational_$_12=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$denominator());den=$rb_times(self.den,other.$numerator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){if(other["$=="](0)){return $rb_divide(self.$to_f(),0)}else{return self.$Rational(self.num,$rb_times(self.den,other))}}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_divide(self.$to_f(),other)}else{return self.$__coerced__("/",other)}}()},TMP_Rational_$_12.$$arity=1);Opal.defn(self,"$**",TMP_Rational_$$_13=function(other){var $a,self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")}else if($truthy($rb_gt(other,0))){return self.$Rational(self.num["$**"](other),self.den["$**"](other))}else if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other["$-@"]()),self.num["$**"](other["$-@"]()))}else{return self.$Rational(1,1)}}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$**"](other)}else if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){if(other["$=="](0)){return self.$Rational(1,1)}else if(other.$denominator()["$=="](1)){if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other.$numerator().$abs()),self.num["$**"](other.$numerator().$abs()))}else{return self.$Rational(self.num["$**"](other.$numerator()),self.den["$**"](other.$numerator()))}}else if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else{return self.$to_f()["$**"](other)}}else{return self.$__coerced__("**",other)}}()},TMP_Rational_$$_13.$$arity=1);Opal.defn(self,"$abs",TMP_Rational_abs_14=function $$abs(){var self=this;return self.$Rational(self.num.$abs(),self.den.$abs())},TMP_Rational_abs_14.$$arity=0);Opal.defn(self,"$ceil",TMP_Rational_ceil_15=function $$ceil(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$ceil()}else{return self.$with_precision("ceil",precision)}},TMP_Rational_ceil_15.$$arity=-1);Opal.alias(self,"divide","/");Opal.defn(self,"$floor",TMP_Rational_floor_16=function $$floor(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$floor()}else{return self.$with_precision("floor",precision)}},TMP_Rational_floor_16.$$arity=-1);Opal.defn(self,"$hash",TMP_Rational_hash_17=function $$hash(){var self=this;return""+"Rational:"+self.num+":"+self.den},TMP_Rational_hash_17.$$arity=0);Opal.defn(self,"$inspect",TMP_Rational_inspect_18=function $$inspect(){var self=this;return""+"("+self.$to_s()+")"},TMP_Rational_inspect_18.$$arity=0);Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_Rational_rationalize_19=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if(eps==null){return self}var e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e);var p0=0,p1=1,q0=1,q1=0,p2,q2;var c,k,t;while(true){c=a.$ceil();if($rb_le(c,b)){break}k=c-1;p2=k*p1+p0;q2=k*q1+q0;t=$rb_divide(1,$rb_minus(b,k));b=$rb_divide(1,$rb_minus(a,k));a=t;p0=p1;q0=q1;p1=p2;q1=q2}return self.$Rational(c*p1+p0,c*q1+q0)},TMP_Rational_rationalize_19.$$arity=-1);Opal.defn(self,"$round",TMP_Rational_round_20=function $$round(precision){var self=this,num=nil,den=nil,approx=nil;if(precision==null){precision=0}if(precision["$=="](0)){}else{return self.$with_precision("round",precision)}if(self.num["$=="](0)){return 0}if(self.den["$=="](1)){return self.num}num=$rb_plus($rb_times(self.num.$abs(),2),self.den);den=$rb_times(self.den,2);approx=$rb_divide(num,den).$truncate();if($truthy($rb_lt(self.num,0))){return approx["$-@"]()}else{return approx}},TMP_Rational_round_20.$$arity=-1);Opal.defn(self,"$to_f",TMP_Rational_to_f_21=function $$to_f(){var self=this;return $rb_divide(self.num,self.den)},TMP_Rational_to_f_21.$$arity=0);Opal.defn(self,"$to_i",TMP_Rational_to_i_22=function $$to_i(){var self=this;return self.$truncate()},TMP_Rational_to_i_22.$$arity=0);Opal.defn(self,"$to_r",TMP_Rational_to_r_23=function $$to_r(){var self=this;return self},TMP_Rational_to_r_23.$$arity=0);Opal.defn(self,"$to_s",TMP_Rational_to_s_24=function $$to_s(){var self=this;return""+self.num+"/"+self.den},TMP_Rational_to_s_24.$$arity=0);Opal.defn(self,"$truncate",TMP_Rational_truncate_25=function $$truncate(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){if($truthy($rb_lt(self.num,0))){return self.$ceil()}else{return self.$floor()}}else{return self.$with_precision("truncate",precision)}},TMP_Rational_truncate_25.$$arity=-1);return(Opal.defn(self,"$with_precision",TMP_Rational_with_precision_26=function $$with_precision(method,precision){var self=this,p=nil,s=nil;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](precision))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an Integer")}p=10["$**"](precision);s=$rb_times(self,p);if($truthy($rb_lt(precision,1))){return $rb_divide(s.$send(method),p).$to_i()}else{return self.$Rational(s.$send(method),p)}},TMP_Rational_with_precision_26.$$arity=2),nil)&&"with_precision"})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Rational_27;Opal.defn(self,"$Rational",TMP_Kernel_Rational_27=function $$Rational(numerator,denominator){var self=this;if(denominator==null){denominator=1}return Opal.const_get_relative($nesting,"Rational").$convert(numerator,denominator)},TMP_Kernel_Rational_27.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/time"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$to_f","$nil?","$>","$<","$strftime","$year","$month","$day","$+","$round","$/","$-","$copy_instance_variables","$initialize_dup","$is_a?","$zero?","$wday","$utc?","$mon","$yday","$hour","$min","$sec","$rjust","$ljust","$zone","$to_s","$[]","$cweek_cyear","$isdst","$<=","$!=","$==","$ceil"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Time_at_1,TMP_Time_new_2,TMP_Time_local_3,TMP_Time_gm_4,TMP_Time_now_5,TMP_Time_$_6,TMP_Time_$_7,TMP_Time_$lt$eq$gt_8,TMP_Time_$eq$eq_9,TMP_Time_asctime_10,TMP_Time_day_11,TMP_Time_yday_12,TMP_Time_isdst_13,TMP_Time_dup_14,TMP_Time_eql$q_15,TMP_Time_friday$q_16,TMP_Time_hash_17,TMP_Time_hour_18,TMP_Time_inspect_19,TMP_Time_min_20,TMP_Time_mon_21,TMP_Time_monday$q_22,TMP_Time_saturday$q_23,TMP_Time_sec_24,TMP_Time_succ_25,TMP_Time_usec_26,TMP_Time_zone_27,TMP_Time_getgm_28,TMP_Time_gmtime_29,TMP_Time_gmt$q_30,TMP_Time_gmt_offset_31,TMP_Time_strftime_32,TMP_Time_sunday$q_33,TMP_Time_thursday$q_34,TMP_Time_to_a_35,TMP_Time_to_f_36,TMP_Time_to_i_37,TMP_Time_tuesday$q_38,TMP_Time_wday_39,TMP_Time_wednesday$q_40,TMP_Time_year_41,TMP_Time_cweek_cyear_42;self.$include(Opal.const_get_relative($nesting,"Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];Opal.defs(self,"$at",TMP_Time_at_1=function $$at(seconds,frac){var self=this;var result;if(Opal.const_get_relative($nesting,"Time")["$==="](seconds)){if(frac!==undefined){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert Time into an exact number")}result=new Date(seconds.getTime());result.is_utc=seconds.is_utc;return result}if(!seconds.$$is_number){seconds=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](seconds,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(frac===undefined){return new Date(seconds*1e3)}if(!frac.$$is_number){frac=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](frac,Opal.const_get_relative($nesting,"Integer"),"to_int")}return new Date(seconds*1e3+frac/1e3)},TMP_Time_at_1.$$arity=-2);function time_params(year,month,day,hour,min,sec){if(year.$$is_string){year=parseInt(year,10)}else{year=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](year,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(month===nil){month=1}else if(!month.$$is_number){if(month["$respond_to?"]("to_str")){month=month.$to_str();switch(month.toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}}else{month=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](month,Opal.const_get_relative($nesting,"Integer"),"to_int")}}if(month<1||month>12){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"month out of range: "+month)}month=month-1;if(day===nil){day=1}else if(day.$$is_string){day=parseInt(day,10)}else{day=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](day,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(day<1||day>31){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"day out of range: "+day)}if(hour===nil){hour=0}else if(hour.$$is_string){hour=parseInt(hour,10)}else{hour=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](hour,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(hour<0||hour>24){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"hour out of range: "+hour)}if(min===nil){min=0}else if(min.$$is_string){min=parseInt(min,10)}else{min=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](min,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(min<0||min>59){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"min out of range: "+min)}if(sec===nil){sec=0}else if(!sec.$$is_number){if(sec.$$is_string){sec=parseInt(sec,10)}else{sec=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](sec,Opal.const_get_relative($nesting,"Integer"),"to_int")}}if(sec<0||sec>60){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"sec out of range: "+sec)}return[year,month,day,hour,min,sec]}Opal.defs(self,"$new",TMP_Time_new_2=function(year,month,day,hour,min,sec,utc_offset){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(utc_offset==null){utc_offset=nil}var args,result;if(year===undefined){return new Date}if(utc_offset!==nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time")}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_Time_new_2.$$arity=-1);Opal.defs(self,"$local",TMP_Time_local_3=function $$local(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_Time_local_3.$$arity=-2);Opal.defs(self,"$gm",TMP_Time_gm_4=function $$gm(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(Date.UTC(year,month,day,hour,min,0,sec*1e3));if(year<100){result.setUTCFullYear(year)}result.is_utc=true;return result},TMP_Time_gm_4.$$arity=-2);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"mktime","local");return Opal.alias(self,"utc","gm")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$now",TMP_Time_now_5=function $$now(){var self=this;return self.$new()},TMP_Time_now_5.$$arity=0);Opal.defn(self,"$+",TMP_Time_$_6=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"time + time?")}if(!other.$$is_number){other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()+other*1e3);result.is_utc=self.is_utc;return result},TMP_Time_$_6.$$arity=1);Opal.defn(self,"$-",TMP_Time_$_7=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){return(self.getTime()-other.getTime())/1e3}if(!other.$$is_number){other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()-other*1e3);result.is_utc=self.is_utc;return result},TMP_Time_$_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Time_$lt$eq$gt_8=function(other){var self=this,r=nil;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){return self.$to_f()["$<=>"](other.$to_f())}else{r=other["$<=>"](self);if($truthy(r["$nil?"]())){return nil}else if($truthy($rb_gt(r,0))){return-1}else if($truthy($rb_lt(r,0))){return 1}else{return 0}}},TMP_Time_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$==",TMP_Time_$eq$eq_9=function(other){var $a,self=this;return $truthy($a=Opal.const_get_relative($nesting,"Time")["$==="](other))?self.$to_f()===other.$to_f():$a},TMP_Time_$eq$eq_9.$$arity=1);Opal.defn(self,"$asctime",TMP_Time_asctime_10=function $$asctime(){var self=this;return self.$strftime("%a %b %e %H:%M:%S %Y")},TMP_Time_asctime_10.$$arity=0);Opal.alias(self,"ctime","asctime");Opal.defn(self,"$day",TMP_Time_day_11=function $$day(){var self=this;return self.is_utc?self.getUTCDate():self.getDate()},TMP_Time_day_11.$$arity=0);Opal.defn(self,"$yday",TMP_Time_yday_12=function $$yday(){var self=this,start_of_year=nil,start_of_day=nil,one_day=nil;start_of_year=Opal.const_get_relative($nesting,"Time").$new(self.$year()).$to_i();start_of_day=Opal.const_get_relative($nesting,"Time").$new(self.$year(),self.$month(),self.$day()).$to_i();one_day=86400;return $rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),one_day).$round(),1)},TMP_Time_yday_12.$$arity=0);Opal.defn(self,"$isdst",TMP_Time_isdst_13=function $$isdst(){var self=this;var jan=new Date(self.getFullYear(),0,1),jul=new Date(self.getFullYear(),6,1);return self.getTimezoneOffset()"](other)["$zero?"]():$a},TMP_Time_eql$q_15.$$arity=1);Opal.defn(self,"$friday?",TMP_Time_friday$q_16=function(){var self=this;return self.$wday()==5},TMP_Time_friday$q_16.$$arity=0);Opal.defn(self,"$hash",TMP_Time_hash_17=function $$hash(){var self=this;return"Time:"+self.getTime()},TMP_Time_hash_17.$$arity=0);Opal.defn(self,"$hour",TMP_Time_hour_18=function $$hour(){var self=this;return self.is_utc?self.getUTCHours():self.getHours()},TMP_Time_hour_18.$$arity=0);Opal.defn(self,"$inspect",TMP_Time_inspect_19=function $$inspect(){var self=this;if($truthy(self["$utc?"]())){return self.$strftime("%Y-%m-%d %H:%M:%S UTC")}else{return self.$strftime("%Y-%m-%d %H:%M:%S %z")}},TMP_Time_inspect_19.$$arity=0);Opal.alias(self,"mday","day");Opal.defn(self,"$min",TMP_Time_min_20=function $$min(){var self=this;return self.is_utc?self.getUTCMinutes():self.getMinutes()},TMP_Time_min_20.$$arity=0);Opal.defn(self,"$mon",TMP_Time_mon_21=function $$mon(){var self=this;return(self.is_utc?self.getUTCMonth():self.getMonth())+1},TMP_Time_mon_21.$$arity=0);Opal.defn(self,"$monday?",TMP_Time_monday$q_22=function(){var self=this;return self.$wday()==1},TMP_Time_monday$q_22.$$arity=0);Opal.alias(self,"month","mon");Opal.defn(self,"$saturday?",TMP_Time_saturday$q_23=function(){var self=this;return self.$wday()==6},TMP_Time_saturday$q_23.$$arity=0);Opal.defn(self,"$sec",TMP_Time_sec_24=function $$sec(){var self=this;return self.is_utc?self.getUTCSeconds():self.getSeconds()},TMP_Time_sec_24.$$arity=0);Opal.defn(self,"$succ",TMP_Time_succ_25=function $$succ(){var self=this;var result=new Date(self.getTime()+1e3);result.is_utc=self.is_utc;return result},TMP_Time_succ_25.$$arity=0);Opal.defn(self,"$usec",TMP_Time_usec_26=function $$usec(){var self=this;return self.getMilliseconds()*1e3},TMP_Time_usec_26.$$arity=0);Opal.defn(self,"$zone",TMP_Time_zone_27=function $$zone(){var self=this;var string=self.toString(),result;if(string.indexOf("(")==-1){result=string.match(/[A-Z]{3,4}/)[0]}else{result=string.match(/\((.+)\)(?:\s|$)/)[1]}if(result=="GMT"&&/(GMT\W*\d{4})/.test(string)){return RegExp.$1}else{return result}},TMP_Time_zone_27.$$arity=0);Opal.defn(self,"$getgm",TMP_Time_getgm_28=function $$getgm(){var self=this;var result=new Date(self.getTime());result.is_utc=true;return result},TMP_Time_getgm_28.$$arity=0);Opal.alias(self,"getutc","getgm");Opal.defn(self,"$gmtime",TMP_Time_gmtime_29=function $$gmtime(){var self=this;self.is_utc=true;return self},TMP_Time_gmtime_29.$$arity=0);Opal.alias(self,"utc","gmtime");Opal.defn(self,"$gmt?",TMP_Time_gmt$q_30=function(){var self=this;return self.is_utc===true},TMP_Time_gmt$q_30.$$arity=0);Opal.defn(self,"$gmt_offset",TMP_Time_gmt_offset_31=function $$gmt_offset(){var self=this;return-self.getTimezoneOffset()*60},TMP_Time_gmt_offset_31.$$arity=0);Opal.defn(self,"$strftime",TMP_Time_strftime_32=function $$strftime(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,function(full,flags,width,_,conv){var result="",zero=flags.indexOf("0")!==-1,pad=flags.indexOf("-")===-1,blank=flags.indexOf("_")!==-1,upcase=flags.indexOf("^")!==-1,invert=flags.indexOf("#")!==-1,colons=(flags.match(":")||[]).length;width=parseInt(width,10);if(zero&&blank){if(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank;result+=self.$min();break;case"S":zero=!blank;result+=self.$sec();break;case"L":zero=!blank;width=isNaN(width)?3:width;result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width;result+=self.getMilliseconds().toString().$rjust(3,"0");result=result.$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-";result+=hours<10?"0":"";result+=hours;if(colons>0){result+=":"}result+=minutes<10?"0":"";result+=minutes;if(colons>1){result+=":00"}break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,false));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}if(upcase){result=result.toUpperCase()}if(invert){result=result.replace(/[A-Z]/,function(c){c.toLowerCase()}).replace(/[a-z]/,function(c){c.toUpperCase()})}if(pad&&(zero||blank)){result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")}return result})},TMP_Time_strftime_32.$$arity=1);Opal.defn(self,"$sunday?",TMP_Time_sunday$q_33=function(){var self=this;return self.$wday()==0},TMP_Time_sunday$q_33.$$arity=0);Opal.defn(self,"$thursday?",TMP_Time_thursday$q_34=function(){var self=this;return self.$wday()==4},TMP_Time_thursday$q_34.$$arity=0);Opal.defn(self,"$to_a",TMP_Time_to_a_35=function $$to_a(){var self=this;return[self.$sec(),self.$min(),self.$hour(),self.$day(),self.$month(),self.$year(),self.$wday(),self.$yday(),self.$isdst(),self.$zone()]},TMP_Time_to_a_35.$$arity=0);Opal.defn(self,"$to_f",TMP_Time_to_f_36=function $$to_f(){var self=this;return self.getTime()/1e3},TMP_Time_to_f_36.$$arity=0);Opal.defn(self,"$to_i",TMP_Time_to_i_37=function $$to_i(){var self=this;return parseInt(self.getTime()/1e3,10)},TMP_Time_to_i_37.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$tuesday?",TMP_Time_tuesday$q_38=function(){var self=this;return self.$wday()==2},TMP_Time_tuesday$q_38.$$arity=0);Opal.alias(self,"tv_sec","to_i");Opal.alias(self,"tv_usec","usec");Opal.alias(self,"utc?","gmt?");Opal.alias(self,"gmtoff","gmt_offset");Opal.alias(self,"utc_offset","gmt_offset");Opal.defn(self,"$wday",TMP_Time_wday_39=function $$wday(){var self=this;return self.is_utc?self.getUTCDay():self.getDay()},TMP_Time_wday_39.$$arity=0);Opal.defn(self,"$wednesday?",TMP_Time_wednesday$q_40=function(){var self=this;return self.$wday()==3},TMP_Time_wednesday$q_40.$$arity=0);Opal.defn(self,"$year",TMP_Time_year_41=function $$year(){var self=this;return self.is_utc?self.getUTCFullYear():self.getFullYear()},TMP_Time_year_41.$$arity=0);return(Opal.defn(self,"$cweek_cyear",TMP_Time_cweek_cyear_42=function $$cweek_cyear(){var $a,self=this,jan01=nil,jan01_wday=nil,first_monday=nil,year=nil,offset=nil,week=nil,dec31=nil,dec31_wday=nil;jan01=Opal.const_get_relative($nesting,"Time").$new(self.$year(),1,1);jan01_wday=jan01.$wday();first_monday=0;year=self.$year();if($truthy($truthy($a=$rb_le(jan01_wday,4))?jan01_wday["$!="](0):$a)){offset=$rb_minus(jan01_wday,1)}else{offset=$rb_minus($rb_minus(jan01_wday,7),1);if(offset["$=="](-8)){offset=-1}}week=$rb_divide($rb_plus(self.$yday(),offset),7).$ceil();if($truthy($rb_le(week,0))){return Opal.const_get_relative($nesting,"Time").$new($rb_minus(self.$year(),1),12,31).$cweek_cyear()}else if(week["$=="](53)){dec31=Opal.const_get_relative($nesting,"Time").$new(self.$year(),12,31);dec31_wday=dec31.$wday();if($truthy($truthy($a=$rb_le(dec31_wday,3))?dec31_wday["$!="](0):$a)){week=1;year=$rb_plus(year,1)}}return[week,year]},TMP_Time_cweek_cyear_42.$$arity=0),nil)&&"cweek_cyear"}($nesting[0],Date,$nesting)};Opal.modules["corelib/struct"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$const_name!","$unshift","$map","$coerce_to!","$new","$each","$define_struct_attribute","$allocate","$initialize","$module_eval","$to_proc","$const_set","$==","$raise","$<<","$members","$define_method","$instance_eval","$>","$length","$class","$each_with_index","$[]","$[]=","$-","$hash","$===","$<","$-@","$size","$>=","$include?","$to_sym","$instance_of?","$__id__","$eql?","$enum_for","$name","$+","$join","$each_pair","$inspect","$inject","$flatten","$to_a","$respond_to?","$dig"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Struct(){}var self=$Struct=$klass($base,$super,"Struct",$Struct);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Struct_new_1,TMP_Struct_define_struct_attribute_8,TMP_Struct_members_9,TMP_Struct_inherited_11,TMP_Struct_initialize_13,TMP_Struct_members_14,TMP_Struct_hash_15,TMP_Struct_$$_16,TMP_Struct_$$$eq_17,TMP_Struct_$eq$eq_18,TMP_Struct_eql$q_19,TMP_Struct_each_20,TMP_Struct_each_pair_23,TMP_Struct_length_26,TMP_Struct_to_a_28,TMP_Struct_inspect_30,TMP_Struct_to_h_32,TMP_Struct_values_at_34,TMP_Struct_dig_35;self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defs(self,"$new",TMP_Struct_new_1=function(const_name,$a_rest){var TMP_2,TMP_3,self=this,args,$iter=TMP_Struct_new_1.$$p,block=$iter||nil,klass=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Struct_new_1.$$p=null;if($truthy(const_name)){try{const_name=Opal.const_get_relative($nesting,"Opal")["$const_name!"](const_name)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"TypeError"),Opal.const_get_relative($nesting,"NameError")])){try{args.$unshift(const_name);const_name=nil}finally{Opal.pop_exception()}}else{throw $err}}}$send(args,"map",[],(TMP_2=function(arg){var self=TMP_2.$$s||this;if(arg==null)arg=nil;return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](arg,Opal.const_get_relative($nesting,"String"),"to_str")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));klass=$send(Opal.const_get_relative($nesting,"Class"),"new",[self],(TMP_3=function(){var self=TMP_3.$$s||this,TMP_4;$send(args,"each",[],(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$define_struct_attribute(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_new_5;Opal.defn(self,"$new",TMP_new_5=function($a_rest){var self=this,args,instance=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}instance=self.$allocate();instance.$$data={};$send(instance,"initialize",Opal.to_a(args));return instance},TMP_new_5.$$arity=-1);return Opal.alias(self,"[]","new")}(Opal.get_singleton_class(self),$nesting)},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));if($truthy(block)){$send(klass,"module_eval",[],block.$to_proc())}if($truthy(const_name)){Opal.const_get_relative($nesting,"Struct").$const_set(const_name,klass)}return klass},TMP_Struct_new_1.$$arity=-2);Opal.defs(self,"$define_struct_attribute",TMP_Struct_define_struct_attribute_8=function $$define_struct_attribute(name){var TMP_6,TMP_7,self=this;if(self["$=="](Opal.const_get_relative($nesting,"Struct"))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"you cannot define attributes to the Struct class")}self.$members()["$<<"](name);$send(self,"define_method",[name],(TMP_6=function(){var self=TMP_6.$$s||this;return self.$$data[name]},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6));return $send(self,"define_method",[""+name+"="],(TMP_7=function(value){var self=TMP_7.$$s||this;if(value==null)value=nil;return self.$$data[name]=value},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_Struct_define_struct_attribute_8.$$arity=1);Opal.defs(self,"$members",TMP_Struct_members_9=function $$members(){var $a,self=this;if(self.members==null)self.members=nil;if(self["$=="](Opal.const_get_relative($nesting,"Struct"))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the Struct class has no members")}return self.members=$truthy($a=self.members)?$a:[]},TMP_Struct_members_9.$$arity=0);Opal.defs(self,"$inherited",TMP_Struct_inherited_11=function $$inherited(klass){var TMP_10,self=this,members=nil;if(self.members==null)self.members=nil;members=self.members;return $send(klass,"instance_eval",[],(TMP_10=function(){var self=TMP_10.$$s||this;return self.members=members},TMP_10.$$s=self,TMP_10.$$arity=0,TMP_10))},TMP_Struct_inherited_11.$$arity=1);Opal.defn(self,"$initialize",TMP_Struct_initialize_13=function $$initialize($a_rest){var TMP_12,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),self.$class().$members().$length()))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"struct size differs")}return $send(self.$class().$members(),"each_with_index",[],(TMP_12=function(name,index){var self=TMP_12.$$s||this,$writer=nil;if(name==null)name=nil;if(index==null)index=nil;$writer=[name,args["$[]"](index)];$send(self,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12))},TMP_Struct_initialize_13.$$arity=-1);Opal.defn(self,"$members",TMP_Struct_members_14=function $$members(){var self=this;return self.$class().$members()},TMP_Struct_members_14.$$arity=0);Opal.defn(self,"$hash",TMP_Struct_hash_15=function $$hash(){var self=this;return Opal.const_get_relative($nesting,"Hash").$new(self.$$data).$hash()},TMP_Struct_hash_15.$$arity=0);Opal.defn(self,"$[]",TMP_Struct_$$_16=function(name){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy(Opal.const_get_relative($nesting,"String")["$==="](name))){if(!self.$$data.hasOwnProperty(name)){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](name,Opal.const_get_relative($nesting,"String"),"to_str");return self.$$data[name]},TMP_Struct_$$_16.$$arity=1);Opal.defn(self,"$[]=",TMP_Struct_$$$eq_17=function(name,value){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy(Opal.const_get_relative($nesting,"String")["$==="](name))){if($truthy(self.$class().$members()["$include?"](name.$to_sym()))){}else{self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](name,Opal.const_get_relative($nesting,"String"),"to_str");return self.$$data[name]=value},TMP_Struct_$$$eq_17.$$arity=2);Opal.defn(self,"$==",TMP_Struct_$eq$eq_18=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if(Opal.const_get_relative($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$=="](b)){return false}}}return true}return _eqeq(self,other)},TMP_Struct_$eq$eq_18.$$arity=1);Opal.defn(self,"$eql?",TMP_Struct_eql$q_19=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if(Opal.const_get_relative($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$eql?"](b)){return false}}}return true}return _eqeq(self,other)},TMP_Struct_eql$q_19.$$arity=1);Opal.defn(self,"$each",TMP_Struct_each_20=function $$each(){var TMP_21,TMP_22,self=this,$iter=TMP_Struct_each_20.$$p,$yield=$iter||nil;if($iter)TMP_Struct_each_20.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each"],(TMP_21=function(){var self=TMP_21.$$s||this;return self.$size()},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21))}$send(self.$class().$members(),"each",[],(TMP_22=function(name){var self=TMP_22.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,self["$[]"](name))},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22));return self},TMP_Struct_each_20.$$arity=0);Opal.defn(self,"$each_pair",TMP_Struct_each_pair_23=function $$each_pair(){var TMP_24,TMP_25,self=this,$iter=TMP_Struct_each_pair_23.$$p,$yield=$iter||nil;if($iter)TMP_Struct_each_pair_23.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each_pair"],(TMP_24=function(){var self=TMP_24.$$s||this;return self.$size()},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24))}$send(self.$class().$members(),"each",[],(TMP_25=function(name){var self=TMP_25.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,[name,self["$[]"](name)])},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25));return self},TMP_Struct_each_pair_23.$$arity=0);Opal.defn(self,"$length",TMP_Struct_length_26=function $$length(){var self=this;return self.$class().$members().$length()},TMP_Struct_length_26.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_Struct_to_a_28=function $$to_a(){var TMP_27,self=this;return $send(self.$class().$members(),"map",[],(TMP_27=function(name){var self=TMP_27.$$s||this;if(name==null)name=nil;return self["$[]"](name)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27))},TMP_Struct_to_a_28.$$arity=0);Opal.alias(self,"values","to_a");Opal.defn(self,"$inspect",TMP_Struct_inspect_30=function $$inspect(){var $a,TMP_29,self=this,result=nil;result="#");return result},TMP_Struct_inspect_30.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$to_h",TMP_Struct_to_h_32=function $$to_h(){var TMP_31,self=this;return $send(self.$class().$members(),"inject",[$hash2([],{})],(TMP_31=function(h,name){var self=TMP_31.$$s||this,$writer=nil;if(h==null)h=nil;if(name==null)name=nil;$writer=[name,self["$[]"](name)];$send(h,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return h},TMP_31.$$s=self,TMP_31.$$arity=2,TMP_31))},TMP_Struct_to_h_32.$$arity=0);Opal.defn(self,"$values_at",TMP_Struct_values_at_34=function $$values_at($a_rest){var TMP_33,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args=$send(args,"map",[],(TMP_33=function(arg){var self=TMP_33.$$s||this;if(arg==null)arg=nil;return arg.$$is_range?arg.$to_a():arg},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33)).$flatten();var result=[];for(var i=0,len=args.length;i=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range,$hash2=Opal.hash2,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$try_convert","$native?","$respond_to?","$to_n","$raise","$inspect","$Native","$proc","$map!","$end_with?","$define_method","$[]","$convert","$call","$to_proc","$new","$each","$native_reader","$native_writer","$extend","$is_a?","$map","$alias_method","$to_a","$_Array","$include","$method_missing","$bind","$instance_method","$slice","$-","$length","$[]=","$enum_for","$===","$>=","$<<","$each_pair","$_initialize","$name","$exiting_mid","$native_module"]);(function($base,$parent_nesting){var $Native,self=$Native=$module($base,"Native");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Native_is_a$q_1,TMP_Native_try_convert_2,TMP_Native_convert_3,TMP_Native_call_4,TMP_Native_proc_5,TMP_Native_included_19,TMP_Native_initialize_20,TMP_Native_to_n_21;Opal.defs(self,"$is_a?",TMP_Native_is_a$q_1=function(object,klass){var self=this;try{return object instanceof self.$try_convert(klass)}catch(e){return false}},TMP_Native_is_a$q_1.$$arity=2);Opal.defs(self,"$try_convert",TMP_Native_try_convert_2=function $$try_convert(value,default$){var self=this;if(default$==null){default$=nil}if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{return default$}},TMP_Native_try_convert_2.$$arity=-2);Opal.defs(self,"$convert",TMP_Native_convert_3=function $$convert(value){var self=this;if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+value.$inspect()+" isn't native")}},TMP_Native_convert_3.$$arity=1);Opal.defs(self,"$call",TMP_Native_call_4=function $$call(obj,key,$a_rest){var self=this,args,$iter=TMP_Native_call_4.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-2;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=2;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-2]=arguments[$arg_idx]}if($iter)TMP_Native_call_4.$$p=null;var prop=obj[key];if(prop instanceof Function){var converted=new Array(args.length);for(var i=0,l=args.length;i"},TMP_Object_inspect_41.$$arity=0),nil)&&"inspect"})(Opal.const_get_relative($nesting,"Native"),Opal.const_get_relative($nesting,"BasicObject"),$nesting);(function($base,$super,$parent_nesting){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Array_initialize_42,TMP_Array_each_43,TMP_Array_$$_44,TMP_Array_$$$eq_45,TMP_Array_last_46,TMP_Array_length_47,TMP_Array_inspect_48;def.named=def["native"]=def.get=def.block=def.set=def.length=nil;self.$include(Opal.const_get_relative($nesting,"Native"));self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defn(self,"$initialize",TMP_Array_initialize_42=function $$initialize(native$,options){var $a,self=this,$iter=TMP_Array_initialize_42.$$p,block=$iter||nil;if(options==null){options=$hash2([],{})}if($iter)TMP_Array_initialize_42.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Array_initialize_42,false),[native$],null);self.get=$truthy($a=options["$[]"]("get"))?$a:options["$[]"]("access");self.named=options["$[]"]("named");self.set=$truthy($a=options["$[]"]("set"))?$a:options["$[]"]("access");self.length=$truthy($a=options["$[]"]("length"))?$a:"length";self.block=block;if($truthy(self.$length()==null)){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no length found on the array-like object")}else{return nil}},TMP_Array_initialize_42.$$arity=-2);Opal.defn(self,"$each",TMP_Array_each_43=function $$each(){var self=this,$iter=TMP_Array_each_43.$$p,block=$iter||nil;if($iter)TMP_Array_each_43.$$p=null;if($truthy(block)){}else{return self.$enum_for("each")}for(var i=0,length=self.$length();i0},TMP_Input_key_down$q_6.$$arity=1);Opal.defs(self,"$key_push?",TMP_Input_key_push$q_7=function(code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_keys"])==null?nil:$a)[code]==(($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1},TMP_Input_key_push$q_7.$$arity=1);Opal.defs(self,"$key_release?",TMP_Input_key_release$q_8=function(code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_keys"])==null?nil:$a)[code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_key_release$q_8.$$arity=1);Opal.const_set($nesting[0],"ON_KEYDOWN_",function(ev){Opal.const_get_relative($nesting,"Input").$_pressing_keys()[ev.code]=($a=$Input.$$cvars["@@tick"])==null?nil:$a;ev.preventDefault();ev.stopPropagation()});Opal.const_set($nesting[0],"ON_KEYUP_",function(ev){Opal.const_get_relative($nesting,"Input").$_pressing_keys()[ev.code]=-(($a=$Input.$$cvars["@@tick"])==null?nil:$a);ev.preventDefault();ev.stopPropagation()});Opal.defs(self,"$keyevent_target=",TMP_Input_keyevent_target$eq_9=function(target){var $a,self=this;if($truthy(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a)){(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keydown",Opal.const_get_relative($nesting,"ON_KEYDOWN_"));(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keyup",Opal.const_get_relative($nesting,"ON_KEYUP_"))}Opal.class_variable_set($Input,"@@keyevent_target",target);if((($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).tagName=="CANVAS"){(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).setAttribute("tabindex",0)}(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keydown",Opal.const_get_relative($nesting,"ON_KEYDOWN_"));(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keyup",Opal.const_get_relative($nesting,"ON_KEYUP_"))},TMP_Input_keyevent_target$eq_9.$$arity=1);Opal.defs(self,"$keyevent_target",TMP_Input_keyevent_target_10=function $$keyevent_target(){var $a,self=this;return($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a},TMP_Input_keyevent_target_10.$$arity=0);Opal.defs(self,"$_init_mouse_events",TMP_Input__init_mouse_events_11=function $$_init_mouse_events(){var $a,self=this;document.addEventListener("mousemove",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a)});document.addEventListener("mousedown",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if(ev.buttons&k){(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=($a=$Input.$$cvars["@@tick"])==null?nil:$a}}});document.addEventListener("mouseup",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if((ev.buttons&k)==0&&(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]){(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=-(($a=$Input.$$cvars["@@tick"])==null?nil:$a)}}})},TMP_Input__init_mouse_events_11.$$arity=0);Opal.defs(self,"$mouse_x",TMP_Input_mouse_x_12=function $$mouse_x(){var $a,self=this;return(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x},TMP_Input_mouse_x_12.$$arity=0);Opal.defs(self,"$mouse_y",TMP_Input_mouse_y_13=function $$mouse_y(){var $a,self=this;return(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y},TMP_Input_mouse_y_13.$$arity=0);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"mouse_pos_x","mouse_x");return Opal.alias(self,"mouse_pos_y","mouse_y")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$mouse_down?",TMP_Input_mouse_down$q_14=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_down?'")}return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]>0},TMP_Input_mouse_down$q_14.$$arity=1);Opal.defs(self,"$mouse_push?",TMP_Input_mouse_push$q_15=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_push?'")}return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_mouse_push$q_15.$$arity=1);Opal.defs(self,"$mouse_release?",TMP_Input_mouse_release$q_16=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_release?'")}return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_mouse_release$q_16.$$arity=1);Opal.defs(self,"$_init_touch_events",TMP_Input__init_touch_events_17=function $$_init_touch_events(){var $a,$b,$c,self=this,new_touch=nil,$writer=nil;Opal.class_variable_set($Input,"@@touches",$hash2([],{}));Opal.class_variable_set($Input,"@@new_touches",[]);(($a=$Input.$$cvars["@@canvas"])==null?nil:$a).addEventListener("touchmove",function(ev){ev.preventDefault();ev.stopPropagation();(($a=$Input.$$cvars["@@touch_info"])==null?nil:$a).x=ev.changedTouches[0].pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@touch_info"])==null?nil:$a).y=ev.changedTouches[0].pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);for(var touch of ev.changedTouches){const id=touch.identifier;const x=touch.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);const y=touch.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);$a=(($a=$Input.$$cvars["@@touches"])==null?nil:$a)["$[]"](id),$a===nil||$a==null?nil:$send($a,"_move",[x,y])}});(($b=$Input.$$cvars["@@canvas"])==null?nil:$b).addEventListener("touchstart",function(ev){ev.preventDefault();ev.stopPropagation();(($b=$Input.$$cvars["@@touch_info"])==null?nil:$b).x=ev.changedTouches[0].pageX-(($b=$Input.$$cvars["@@canvas_x"])==null?nil:$b);(($b=$Input.$$cvars["@@touch_info"])==null?nil:$b).y=ev.changedTouches[0].pageY-(($b=$Input.$$cvars["@@canvas_y"])==null?nil:$b);(($b=$Input.$$cvars["@@pressing_touch"])==null?nil:$b)[0]=($b=$Input.$$cvars["@@tick"])==null?nil:$b;for(var touch of ev.changedTouches){const id=touch.identifier;const x=touch.pageX-(($b=$Input.$$cvars["@@canvas_x"])==null?nil:$b);const y=touch.pageY-(($b=$Input.$$cvars["@@canvas_y"])==null?nil:$b);new_touch=Opal.const_get_relative($nesting,"Touch").$new(id,x,y),$writer=[id,new_touch],$send(($b=$Input.$$cvars["@@touches"])==null?nil:$b,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)],(($b=$Input.$$cvars["@@new_touches"])==null?nil:$b).$push(new_touch)}});(($b=$Input.$$cvars["@@canvas"])==null?nil:$b).addEventListener("touchend",function(ev){ev.preventDefault();ev.stopPropagation();(($b=$Input.$$cvars["@@touch_info"])==null?nil:$b).x=ev.changedTouches[0].pageX-(($b=$Input.$$cvars["@@canvas_x"])==null?nil:$b);(($b=$Input.$$cvars["@@touch_info"])==null?nil:$b).y=ev.changedTouches[0].pageY-(($b=$Input.$$cvars["@@canvas_y"])==null?nil:$b);(($b=$Input.$$cvars["@@pressing_touch"])==null?nil:$b)[0]=-(($b=$Input.$$cvars["@@tick"])==null?nil:$b);for(var touch of ev.changedTouches){const id=touch.identifier;$b=(($b=$Input.$$cvars["@@touches"])==null?nil:$b)["$[]"](id),$b===nil||$b==null?nil:$send($b,"_released",[($c=$Input.$$cvars["@@tick"])==null?nil:$c])}})},TMP_Input__init_touch_events_17.$$arity=0);Opal.defs(self,"$_update_touch_info",TMP_Input__update_touch_info_19=function $$_update_touch_info(){var $a,TMP_18,self=this;return $send(($a=$Input.$$cvars["@@touches"])==null?nil:$a,"delete_if",[],(TMP_18=function(id,t){var self=TMP_18.$$s||this,$b,$c;if(id==null)id=nil;if(t==null)t=nil;return $truthy($b=t["$released?"]())?$rb_lt(t.$_released_at(),$rb_minus(($c=$Input.$$cvars["@@tick"])==null?nil:$c,1)):$b},TMP_18.$$s=self,TMP_18.$$arity=2,TMP_18))},TMP_Input__update_touch_info_19.$$arity=0);Opal.defs(self,"$touch_x",TMP_Input_touch_x_20=function $$touch_x(){var $a,self=this;return(($a=$Input.$$cvars["@@touch_info"])==null?nil:$a).x},TMP_Input_touch_x_20.$$arity=0);Opal.defs(self,"$touch_y",TMP_Input_touch_y_21=function $$touch_y(){var $a,self=this;return(($a=$Input.$$cvars["@@touch_info"])==null?nil:$a).y},TMP_Input_touch_y_21.$$arity=0);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"touch_pos_x","touch_x");return Opal.alias(self,"touch_pos_y","touch_y")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$touch_down?",TMP_Input_touch_down$q_22=function(){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_touch"])==null?nil:$a)[0]>0},TMP_Input_touch_down$q_22.$$arity=0);Opal.defs(self,"$touch_push?",TMP_Input_touch_push$q_23=function(){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_touch"])==null?nil:$a)[0]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_touch_push$q_23.$$arity=0);Opal.defs(self,"$touch_release?",TMP_Input_touch_release$q_24=function(){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_touch"])==null?nil:$a)[0]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_touch_release$q_24.$$arity=0);(function($base,$super,$parent_nesting){function $Touch(){}var self=$Touch=$klass($base,$super,"Touch",$Touch);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Touch_initialize_25,TMP_Touch_released$q_26,TMP_Touch_inspect_27,TMP_Touch__move_28,TMP_Touch__released_29;def._released_at=nil;Opal.defn(self,"$initialize",TMP_Touch_initialize_25=function $$initialize(id,x,y){var self=this;self.id=id;self.$_move(x,y);self._released_at=nil;return self.data=$hash2([],{})},TMP_Touch_initialize_25.$$arity=3);self.$attr_reader("id","x","y","data","_released_at");Opal.defn(self,"$released?",TMP_Touch_released$q_26=function(){var self=this;return self._released_at["$!"]()["$!"]()},TMP_Touch_released$q_26.$$arity=0);Opal.defn(self,"$inspect",TMP_Touch_inspect_27=function $$inspect(){var self=this,rel=nil;rel=function(){if($truthy(self.$released_at())){return""+" released_at="+self.$released_at()}else{return""}return nil}();return""+"#"},TMP_Touch_inspect_27.$$arity=0);Opal.defn(self,"$_move",TMP_Touch__move_28=function $$_move(x,y){var self=this;self.x=x;return self.y=y},TMP_Touch__move_28.$$arity=2);return(Opal.defn(self,"$_released",TMP_Touch__released_29=function $$_released(tick){var self=this;return self._released_at=tick},TMP_Touch__released_29.$$arity=1),nil)&&"_released"})($nesting[0],null,$nesting);Opal.defs(self,"$touches",TMP_Input_touches_30=function $$touches(){var $a,self=this;return(($a=$Input.$$cvars["@@touches"])==null?nil:$a).$values()},TMP_Input_touches_30.$$arity=0);Opal.defs(self,"$new_touches",TMP_Input_new_touches_31=function $$new_touches(){var $a,self=this,ret=nil;ret=($a=$Input.$$cvars["@@new_touches"])==null?nil:$a;Opal.class_variable_set($Input,"@@new_touches",[]);return ret},TMP_Input_new_touches_31.$$arity=0)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/input/key_codes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Input,self=$Input=$module($base,"Input");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $KeyCodes,self=$KeyCodes=$module($base,"KeyCodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"K_ESCAPE","Escape");Opal.const_set($nesting[0],"K_1","Digit1");Opal.const_set($nesting[0],"K_2","Digit2");Opal.const_set($nesting[0],"K_3","Digit3");Opal.const_set($nesting[0],"K_4","Digit4");Opal.const_set($nesting[0],"K_5","Digit5");Opal.const_set($nesting[0],"K_6","Digit6");Opal.const_set($nesting[0],"K_7","Digit7");Opal.const_set($nesting[0],"K_8","Digit8");Opal.const_set($nesting[0],"K_9","Digit9");Opal.const_set($nesting[0],"K_0","Digit0");Opal.const_set($nesting[0],"K_MINUS","Minus");Opal.const_set($nesting[0],"K_EQUALS","Equal");Opal.const_set($nesting[0],"K_BACK","Backspace");Opal.const_set($nesting[0],"K_TAB","Tab");Opal.const_set($nesting[0],"K_Q","KeyQ");Opal.const_set($nesting[0],"K_W","KeyW");Opal.const_set($nesting[0],"K_E","KeyE");Opal.const_set($nesting[0],"K_R","KeyR");Opal.const_set($nesting[0],"K_T","KeyT");Opal.const_set($nesting[0],"K_Y","KeyY");Opal.const_set($nesting[0],"K_U","KeyU");Opal.const_set($nesting[0],"K_I","KeyI");Opal.const_set($nesting[0],"K_O","KeyO");Opal.const_set($nesting[0],"K_P","KeyP");Opal.const_set($nesting[0],"K_LBRACKET","BracketLeft");Opal.const_set($nesting[0],"K_RBRACKET","BracketRight");Opal.const_set($nesting[0],"K_RETURN","Enter");Opal.const_set($nesting[0],"K_ENTER","Enter");Opal.const_set($nesting[0],"K_LCONTROL","ControlLeft");Opal.const_set($nesting[0],"K_A","KeyA");Opal.const_set($nesting[0],"K_S","KeyS");Opal.const_set($nesting[0],"K_D","KeyD");Opal.const_set($nesting[0],"K_F","KeyF");Opal.const_set($nesting[0],"K_G","KeyG");Opal.const_set($nesting[0],"K_H","KeyH");Opal.const_set($nesting[0],"K_J","KeyJ");Opal.const_set($nesting[0],"K_K","KeyK");Opal.const_set($nesting[0],"K_L","KeyL");Opal.const_set($nesting[0],"K_SEMICOLON","Semicolon");Opal.const_set($nesting[0],"K_APOSTROPHE","Quote");Opal.const_set($nesting[0],"K_GRAVE","Backquote");Opal.const_set($nesting[0],"K_LSHIFT","ShiftLeft");Opal.const_set($nesting[0],"K_BACKSLASH","BackSlash");Opal.const_set($nesting[0],"K_Z","KeyZ");Opal.const_set($nesting[0],"K_X","KeyX");Opal.const_set($nesting[0],"K_C","KeyC");Opal.const_set($nesting[0],"K_V","KeyV");Opal.const_set($nesting[0],"K_B","KeyB");Opal.const_set($nesting[0],"K_N","KeyN");Opal.const_set($nesting[0],"K_M","KeyM");Opal.const_set($nesting[0],"K_COMMA","Comma");Opal.const_set($nesting[0],"K_PERIOD","Period");Opal.const_set($nesting[0],"K_SLASH","Slash");Opal.const_set($nesting[0],"K_RSHIFT","ShiftRight");Opal.const_set($nesting[0],"K_MULTIPLY","NumpadMultiply");Opal.const_set($nesting[0],"K_SPACE","Space");Opal.const_set($nesting[0],"K_F1","F1");Opal.const_set($nesting[0],"K_F2","F2");Opal.const_set($nesting[0],"K_F3","F3");Opal.const_set($nesting[0],"K_F4","F4");Opal.const_set($nesting[0],"K_F5","F5");Opal.const_set($nesting[0],"K_F6","F6");Opal.const_set($nesting[0],"K_F7","F7");Opal.const_set($nesting[0],"K_F8","F8");Opal.const_set($nesting[0],"K_F9","F9");Opal.const_set($nesting[0],"K_F10","F10");Opal.const_set($nesting[0],"K_NUMLOCK","NumLock");Opal.const_set($nesting[0],"K_SCROLL","ScrollLock");Opal.const_set($nesting[0],"K_NUMPAD7","Numpad7");Opal.const_set($nesting[0],"K_NUMPAD8","Numpad8");Opal.const_set($nesting[0],"K_NUMPAD9","Numpad9");Opal.const_set($nesting[0],"K_SUBTRACT","NumpadSubtract");Opal.const_set($nesting[0],"K_NUMPAD4","Numpad4");Opal.const_set($nesting[0],"K_NUMPAD5","Numpad5");Opal.const_set($nesting[0],"K_NUMPAD6","Numpad6");Opal.const_set($nesting[0],"K_ADD","NumpadAdd");Opal.const_set($nesting[0],"K_NUMPAD1","Numpad1");Opal.const_set($nesting[0],"K_NUMPAD2","Numpad2");Opal.const_set($nesting[0],"K_NUMPAD3","Numpad3");Opal.const_set($nesting[0],"K_NUMPAD0","Numpad0");Opal.const_set($nesting[0],"K_DECIMAL","NumpadDecimal");Opal.const_set($nesting[0],"K_F11","F11");Opal.const_set($nesting[0],"K_F12","F12");Opal.const_set($nesting[0],"K_F13","F13");Opal.const_set($nesting[0],"K_F14","F14");Opal.const_set($nesting[0],"K_F15","F15");Opal.const_set($nesting[0],"K_KANA","KanaMode");Opal.const_set($nesting[0],"K_CONVERT","Convert");Opal.const_set($nesting[0],"K_NOCONVERT","NonConvert");Opal.const_set($nesting[0],"K_YEN","IntlYen");Opal.const_set($nesting[0],"K_COLON","Colon");Opal.const_set($nesting[0],"K_UNDERLINE","IntlRo");Opal.const_set($nesting[0],"K_NUMPADENTER","NumpadEnter");Opal.const_set($nesting[0],"K_RCONTROL","ControlRight");Opal.const_set($nesting[0],"K_MUTE","VolumeMute");Opal.const_set($nesting[0],"K_VOLUMEDOWN","VolumeDown");Opal.const_set($nesting[0],"K_VOLUMEUP","VolumeUp");Opal.const_set($nesting[0],"K_WEBHOME","BrowserHome");Opal.const_set($nesting[0],"K_DIVIDE","NumpadDivide");Opal.const_set($nesting[0],"K_PAUSE","Pause");Opal.const_set($nesting[0],"K_HOME","Home");Opal.const_set($nesting[0],"K_UP","ArrowUp");Opal.const_set($nesting[0],"K_LEFT","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHT","ArrowRight");Opal.const_set($nesting[0],"K_END","End");Opal.const_set($nesting[0],"K_DOWN","ArrowDown");Opal.const_set($nesting[0],"K_INSERT","Insert");Opal.const_set($nesting[0],"K_DELETE","Delete");Opal.const_set($nesting[0],"K_WEBSEARCH","BrowserSearch");Opal.const_set($nesting[0],"K_WEBFAVORITES","BrowserFavorites");Opal.const_set($nesting[0],"K_WEBREFRESH","BrowserRefresh");Opal.const_set($nesting[0],"K_WEBSTOP","BrowserStop");Opal.const_set($nesting[0],"K_WEBFORWARD","BrowserForward");Opal.const_set($nesting[0],"K_WEBBACK","BrowserBack");Opal.const_set($nesting[0],"K_BACKSPACE","Backspace");Opal.const_set($nesting[0],"K_NUMPADSTAR","NumpadMultiply");Opal.const_set($nesting[0],"K_LALT","AltLeft");Opal.const_set($nesting[0],"K_CAPSLOCK","CapsLock");Opal.const_set($nesting[0],"K_NUMPADMINUS","NumpadSubtract");Opal.const_set($nesting[0],"K_NUMPADPLUS","NumpadAdd");Opal.const_set($nesting[0],"K_NUMPADPERIOD","NumpadDecimal");Opal.const_set($nesting[0],"K_NUMPADSLASH","NumpadDivide");Opal.const_set($nesting[0],"K_RALT","AltRight");Opal.const_set($nesting[0],"K_UPARROW","ArrowUp");Opal.const_set($nesting[0],"K_PGUP","PageUp");Opal.const_set($nesting[0],"K_LEFTARROW","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHTARROW","ArrowRight");Opal.const_set($nesting[0],"K_DOWNARROW","ArrowDown");Opal.const_set($nesting[0],"K_PGDN","PageDown")})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/remote_resource"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$new","$[]=","$-","$_klass_name","$[]","$raise","$inspect","$each","$!","$_load","$to_proc","$flat_map","$values","$call","$last","$split","$name"]);return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RemoteResource(){}var self=$RemoteResource=$klass($base,$super,"RemoteResource",$RemoteResource);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RemoteResource_1,TMP_RemoteResource_2,TMP_RemoteResource_3,TMP_RemoteResource_add_class_4,TMP_RemoteResource_register_5,TMP_RemoteResource_$$_6,TMP_RemoteResource__load_resources_7,TMP_RemoteResource__load_10,TMP_RemoteResource__klass_name_11;Opal.class_variable_set($RemoteResource,"@@resources",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_1=function(h,k){var self=TMP_RemoteResource_1.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_1.$$s=self,TMP_RemoteResource_1.$$arity=2,TMP_RemoteResource_1)));Opal.class_variable_set($RemoteResource,"@@promises",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_2=function(h,k){var self=TMP_RemoteResource_2.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_2.$$s=self,TMP_RemoteResource_2.$$arity=2,TMP_RemoteResource_2)));Opal.class_variable_set($RemoteResource,"@@instances",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_3=function(h,k){var self=TMP_RemoteResource_3.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_3.$$s=self,TMP_RemoteResource_3.$$arity=2,TMP_RemoteResource_3)));Opal.class_variable_set($RemoteResource,"@@klasses",$hash2([],{}));Opal.defs(self,"$add_class",TMP_RemoteResource_add_class_4=function $$add_class(subklass){var $a,self=this,$writer=nil;$writer=[subklass.$_klass_name(),subklass];$send(($a=$RemoteResource.$$cvars["@@klasses"])==null?nil:$a,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_add_class_4.$$arity=1);Opal.defs(self,"$register",TMP_RemoteResource_register_5=function $$register(name,$a_rest){var $b,$c,self=this,args,$iter=TMP_RemoteResource_register_5.$$p,block=$iter||nil,$writer=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_RemoteResource_register_5.$$p=null;$truthy($b=(($c=$RemoteResource.$$cvars["@@resources"])==null?nil:$c)["$[]"](self.$_klass_name()))?$b:($writer=[self.$_klass_name(),$hash2([],{})],$send(($c=$RemoteResource.$$cvars["@@resources"])==null?nil:$c,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]);$writer=[name,[block,args]];$send((($b=$RemoteResource.$$cvars["@@resources"])==null?nil:$b)["$[]"](self.$_klass_name()),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_register_5.$$arity=-2);Opal.defs(self,"$[]",TMP_RemoteResource_$$_6=function(name){var $a,self=this,ret=nil;if($truthy(ret=(($a=$RemoteResource.$$cvars["@@instances"])==null?nil:$a)["$[]"](self.$_klass_name())["$[]"](name))){return ret}else{return self.$raise(""+self.$_klass_name()+" "+name.$inspect()+" is not registered")}},TMP_RemoteResource_$$_6.$$arity=1);Opal.defs(self,"$_load_resources",TMP_RemoteResource__load_resources_7=function $$_load_resources(){var $a,TMP_8,self=this,$iter=TMP_RemoteResource__load_resources_7.$$p,block=$iter||nil,promises=nil;if($iter)TMP_RemoteResource__load_resources_7.$$p=null;$send(($a=$RemoteResource.$$cvars["@@resources"])==null?nil:$a,"each",[],(TMP_8=function(klass_name,items){var self=TMP_8.$$s||this,$b,TMP_9,klass=nil;if(klass_name==null)klass_name=nil;if(items==null)items=nil;klass=(($b=$RemoteResource.$$cvars["@@klasses"])==null?nil:$b)["$[]"](klass_name);return $send(items,"each",[],(TMP_9=function(name,$c){var self=TMP_9.$$s||this,$c_args,block2,args,$d,$e,instance=nil,promise=nil,$writer=nil;if($c==null){$c=nil}$c=Opal.to_ary($c);$c_args=Opal.slice.call($c,0,$c.length);block2=$c_args.splice(0,1)[0];if(block2==null){block2=nil}args=$c_args.splice(0,1)[0];if(args==null){args=nil}if(name==null)name=nil;if($truthy((($d=$RemoteResource.$$cvars["@@promises"])==null?nil:$d)["$[]"](klass_name)["$[]"](name)["$!"]())){$e=$send(klass,"_load",Opal.to_a(args),block2.$to_proc()),$d=Opal.to_ary($e),instance=$d[0]==null?nil:$d[0],promise=$d[1]==null?nil:$d[1],$e;$writer=[name,instance];$send((($d=$RemoteResource.$$cvars["@@instances"])==null?nil:$d)["$[]"](klass_name),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[name,promise];$send((($d=$RemoteResource.$$cvars["@@promises"])==null?nil:$d)["$[]"](klass_name),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_9.$$s=self,TMP_9.$$arity=2,TMP_9.$$has_top_level_mlhs_arg=true,TMP_9))},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8));promises=$send((($a=$RemoteResource.$$cvars["@@promises"])==null?nil:$a).$values(),"flat_map",[],"values".$to_proc());Promise.all(promises).then(function(){block.$call()})},TMP_RemoteResource__load_resources_7.$$arity=0);Opal.defs(self,"$_load",TMP_RemoteResource__load_10=function $$_load($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise("override me")},TMP_RemoteResource__load_10.$$arity=-1);return Opal.defs(self,"$_klass_name",TMP_RemoteResource__klass_name_11=function $$_klass_name(){var self=this;return self.$name().$split(/::/).$last()},TMP_RemoteResource__klass_name_11.$$arity=0)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/image"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs44100)freq=44100;if(volume<0)volume=0;if(volume>255)volume=255;var vol=volume/255;var period=valuesPerSecond*1/freq;for(;n<(i+1)/n_ticks*n_values;n++){var phase=n%period/period;var value;switch(wave_type){case"sine":value=Math.sin(2*Math.PI*phase)*2-1;break;case"sawtooth":value=phase*2-1;break;case"triangle":value=phase<.25?0+phase*4:phase<.5?1-(phase-.25)*4:phase<.75?0-(phase-.5)*4:-1+(phase-.75)*4;break;case"square":value=phase<.5?1:-1;break;default:self.$raise($rb_plus("unknown wave_type: ",wave_type.$inspect()))}values[n]=value*vol}}snd["$decoded="](myArrayBuffer);resolve()});return[snd,snd_promise]},TMP_SoundEffect__load_1.$$arity=-2);return(Opal.defn(self,"$add",TMP_SoundEffect_add_2=function $$add(wave_type,resolution){var self=this;if(wave_type==null){wave_type=Opal.const_get_relative($nesting,"WAVE_RECT")}if(resolution==null){resolution=1e3}return Opal.const_get_relative($nesting,"TODO")},TMP_SoundEffect_add_2.$$arity=-1),nil)&&"add"})($nesting[0],Opal.const_get_relative($nesting,"Sound"),$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_checker"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;(function(){var intersect=function(x1,y1,x2,y2,x3,y3,x4,y4){return((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))};var check_line_line=function(x1,y1,x2,y2,x3,y3,x4,y4){return!(((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))>0||((x3-x4)*(y1-y3)+(y3-y4)*(x3-x1))*((x3-x4)*(y2-y3)+(y3-y4)*(x3-x2))>0)};var check_circle_line=function(x,y,r,x1,y1,x2,y2){var vx=x2-x1,vy=y2-y1;var cx=x-x1,cy=y-y1;if(vx==0&&vy==0)return CCk.check_point_circle(x,y,r,x1,y1);var n1=vx*cx+vy*cy;if(n1<0)return cx*cx+cy*cyn2){var len=(x2-x)*(x2-x)+(y2-y)*(y2-y);return len=(cx-px)*(cx-px)+(cy-py)*(cy-py)},check_point_straight_rect:function(x,y,x1,y1,x2,y2){return x>=x1&&y>=y1&&x=(ox-dx)*(ox-dx)+(oy-dy)*(oy-dy)},check_ellipse_ellipse:function(E1,E2){var DefAng=E1.fAngle-E2.fAngle;var Cos=Math.cos(DefAng);var Sin=Math.sin(DefAng);var nx=E2.fRad_X*Cos;var ny=-E2.fRad_X*Sin;var px=E2.fRad_Y*Sin;var py=E2.fRad_Y*Cos;var ox=Math.cos(E1.fAngle)*(E2.fCx-E1.fCx)+Math.sin(E1.fAngle)*(E2.fCy-E1.fCy);var oy=-Math.sin(E1.fAngle)*(E2.fCx-E1.fCx)+Math.cos(E1.fAngle)*(E2.fCy-E1.fCy);var rx_pow2=1/(E1.fRad_X*E1.fRad_X);var ry_pow2=1/(E1.fRad_Y*E1.fRad_Y);var A=rx_pow2*nx*nx+ry_pow2*ny*ny;var B=rx_pow2*px*px+ry_pow2*py*py;var D=2*rx_pow2*nx*px+2*ry_pow2*ny*py;var E=2*rx_pow2*nx*ox+2*ry_pow2*ny*oy;var F=2*rx_pow2*px*ox+2*ry_pow2*py*oy;var G=ox/E1.fRad_X*(ox/E1.fRad_X)+oy/E1.fRad_Y*(oy/E1.fRad_Y)-1;var tmp1=1/(D*D-4*A*B);var h=(F*D-2*E*B)*tmp1;var k=(E*D-2*A*F)*tmp1;var Th=B-A==0?0:Math.atan(D/(B-A))*.5;var CosTh=Math.cos(Th);var SinTh=Math.sin(Th);var A_tt=A*CosTh*CosTh+B*SinTh*SinTh-D*CosTh*SinTh;var B_tt=A*SinTh*SinTh+B*CosTh*CosTh+D*CosTh*SinTh;var KK=A*h*h+B*k*k+D*h*k-E*h-F*k+G>0?0:A*h*h+B*k*k+D*h*k-E*h-F*k+G;var Rx_tt=1+Math.sqrt(-KK/A_tt);var Ry_tt=1+Math.sqrt(-KK/B_tt);var x_tt=CosTh*h-SinTh*k;var y_tt=SinTh*h+CosTh*k;var JudgeValue=x_tt*x_tt/(Rx_tt*Rx_tt)+y_tt*y_tt/(Ry_tt*Ry_tt);return JudgeValue<=1},check_circle_tilted_rect:function(cx,cy,cr,x1,y1,x2,y2,x3,y3,x4,y4){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||CCk.check_point_triangle(cx,cy,x1,y1,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x4,y4,x1,y1)},check_circle_triangle:function(cx,cy,cr,x1,y1,x2,y2,x3,y3){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x1,y1)},check_rect_rect:function(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2){return ax1x2)x2=poss[i][0];if(poss[i][1]>y2)y2=poss[i][1]}return[[x1,y1],[x2,y2]]},TMP_Base_aabb_7.$$arity=1),nil)&&"aabb"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $Point(){}var self=$Point=$klass($base,$super,"Point",$Point);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Point_initialize_8,TMP_Point_type_9,TMP_Point_collides$q_10,TMP_Point_absolute_pos_11;def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_Point_initialize_8=function $$initialize(sprite,x,y){var $a,self=this,$iter=TMP_Point_initialize_8.$$p,$yield=$iter||nil;if($iter)TMP_Point_initialize_8.$$p=null;$a=[sprite,x,y],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Point_initialize_8,false),[],null)},TMP_Point_initialize_8.$$arity=3);Opal.defn(self,"$type",TMP_Point_type_9=function $$type(){var self=this;return"Point"},TMP_Point_type_9.$$arity=0);Opal.defn(self,"$collides?",TMP_Point_collides$q_10=function(other){var $a,$b,self=this,$case=nil,x=nil,y=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return self.$absolute_pos()["$=="](other.$absolute_pos())}else if("Circle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;return Opal.DXOpal.CCk.check_point_circle(x,y,cx,cy,other.$r())}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_straight_rect(x,y,x1,y1,x2,y2)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_pos())),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_triangle(x,y,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_Point_collides$q_10.$$arity=1);return(Opal.defn(self,"$absolute_pos",TMP_Point_absolute_pos_11=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_Point_absolute_pos_11.$$arity=0),nil)&&"absolute_pos"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Circle(){}var self=$Circle=$klass($base,$super,"Circle",$Circle);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Circle_initialize_12,TMP_Circle_type_13,TMP_Circle_circle$q_14,TMP_Circle_collides$q_15,TMP_Circle_absolute_pos_16,TMP_Circle_absolute_norot_pos_17,TMP_Circle_collides_circle$q_18;def.sprite=def.r=def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_Circle_initialize_12=function $$initialize(sprite,x,y,r){var $a,self=this,$iter=TMP_Circle_initialize_12.$$p,$yield=$iter||nil;if($iter)TMP_Circle_initialize_12.$$p=null;$a=[sprite,x,y,r],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],self.r=$a[3],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Circle_initialize_12,false),[],null)},TMP_Circle_initialize_12.$$arity=4);self.$attr_reader("r");Opal.defn(self,"$type",TMP_Circle_type_13=function $$type(){var self=this;return"Circle"},TMP_Circle_type_13.$$arity=0);Opal.defn(self,"$circle?",TMP_Circle_circle$q_14=function(){var self=this;return self.sprite.$scale_x()["$=="](self.sprite.$scale_y())},TMP_Circle_circle$q_14.$$arity=0);Opal.defn(self,"$collides?",TMP_Circle_collides$q_15=function(other){var $a,$b,self=this,$case=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil,x4=nil,y4=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return other["$collides?"](self)}else if("Circle"["$==="]($case)){return self["$collides_circle?"](other)}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),x4=$b[0]==null?nil:$b[0],y4=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_tilted_rect(cx,cy,self.r,x1,y1,x2,y2,x3,y3,x4,y4)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_triangle(cx,cy,self.r,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_Circle_collides$q_15.$$arity=1);Opal.defn(self,"$absolute_pos",TMP_Circle_absolute_pos_16=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_Circle_absolute_pos_16.$$arity=0);Opal.defn(self,"$absolute_norot_pos",TMP_Circle_absolute_norot_pos_17=function $$absolute_norot_pos(){var self=this;return[$rb_plus(self.x,self.sprite.$x()),$rb_plus(self.y,self.sprite.$y())]},TMP_Circle_absolute_norot_pos_17.$$arity=0);self.$private();return(Opal.defn(self,"$collides_circle?",TMP_Circle_collides_circle$q_18=function(other){var $a,self=this,x1=nil,y1=nil,r1=nil,x2=nil,y2=nil,r2=nil,scale_x1=nil,scale_y1=nil,angle1=nil,scale_x2=nil,scale_y2=nil,angle2=nil,ret=nil;$a=[].concat(Opal.to_a(self.$absolute_pos())),x1=$a[0]==null?nil:$a[0],y1=$a[1]==null?nil:$a[1],$a;r1=self.r;$a=[].concat(Opal.to_a(other.$absolute_pos())),x2=$a[0]==null?nil:$a[0],y2=$a[1]==null?nil:$a[1],$a;r2=other.$r();if($truthy($truthy($a=self["$circle?"]())?other["$circle?"]():$a)){return Opal.DXOpal.CCk.check_circle_circle(x1,y1,self.r,x2,y2,other.$r())}else{if($truthy(self.sprite.$collision_sync())){scale_x1=self.sprite.$scale_x();scale_y1=self.sprite.$scale_y();angle1=$rb_divide($rb_times(self.sprite.$angle(),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")),180)}else{scale_x1=1;scale_y1=1;angle1=0}if($truthy(other.$sprite().$collision_sync())){scale_x2=other.$sprite().$scale_x();scale_y2=other.$sprite().$scale_y();angle2=$rb_divide($rb_times(other.$sprite().$angle(),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")),180)}else{scale_x2=1;scale_y2=1;angle2=0}ret=nil;var e1={fRad_X:scale_x1*r1,fRad_Y:scale_y1*r1,fAngle:angle1,fCx:x1,fCy:y1};var e2={fRad_X:scale_x2*r2,fRad_Y:scale_y2*r2,fAngle:angle2,fCx:x2,fCy:y2};ret=Opal.DXOpal.CCk.check_ellipse_ellipse(e1,e2);return ret}},TMP_Circle_collides_circle$q_18.$$arity=1),nil)&&"collides_circle?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Rect(){}var self=$Rect=$klass($base,$super,"Rect",$Rect);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rect_initialize_19,TMP_Rect_type_20,TMP_Rect_inspect_21,TMP_Rect_collides$q_22,TMP_Rect_absolute_poss_23,TMP_Rect_absolute_norot_poss_24;def.x1=def.y1=def.x2=def.y2=def.sprite=def.poss=nil;Opal.defn(self,"$initialize",TMP_Rect_initialize_19=function $$initialize(sprite,x1,y1,x2,y2){var $a,self=this,$iter=TMP_Rect_initialize_19.$$p,$yield=$iter||nil;if($iter)TMP_Rect_initialize_19.$$p=null;$a=[sprite,x1,y1,x2,y2],self.sprite=$a[0],self.x1=$a[1],self.y1=$a[2],self.x2=$a[3],self.y2=$a[4],$a;self.poss=[[x1,y1],[x2,y1],[x2,y2],[x1,y2]];return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Rect_initialize_19,false),[],null)},TMP_Rect_initialize_19.$$arity=5);Opal.defn(self,"$type",TMP_Rect_type_20=function $$type(){var self=this;return"Rect"},TMP_Rect_type_20.$$arity=0);Opal.defn(self,"$inspect",TMP_Rect_inspect_21=function $$inspect(){var self=this;return""+"#"},TMP_Rect_inspect_21.$$arity=0);Opal.defn(self,"$collides?",TMP_Rect_collides$q_22=function(other){var $a,$b,$c,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,ox3=nil,oy3=nil,ox4=nil,oy4=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)){return other["$collides?"](self)}else if("Rect"["$==="]($case)){$b=self.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(other.$absolute_poss(),self.sprite)),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}$b=other.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(self.$absolute_poss(),other.$sprite())),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}return true}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),ox4=$b[0]==null?nil:$b[0],oy4=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1,oy1,ox2,oy2,ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_Rect_collides$q_22.$$arity=1);Opal.defn(self,"$absolute_poss",TMP_Rect_absolute_poss_23=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_Rect_absolute_poss_23.$$arity=0);return(Opal.defn(self,"$absolute_norot_poss",TMP_Rect_absolute_norot_poss_24=function $$absolute_norot_poss(){var self=this;return[[$rb_plus(self.x1,self.sprite.$x()),$rb_plus(self.y1,self.sprite.$y())],[$rb_plus(self.x2,self.sprite.$x()),$rb_plus(self.y2,self.sprite.$y())]]},TMP_Rect_absolute_norot_poss_24.$$arity=0),nil)&&"absolute_norot_poss"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Triangle(){}var self=$Triangle=$klass($base,$super,"Triangle",$Triangle);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Triangle_initialize_25,TMP_Triangle_type_26,TMP_Triangle_collides$q_27,TMP_Triangle_absolute_poss_28;def.poss=nil;Opal.defn(self,"$initialize",TMP_Triangle_initialize_25=function $$initialize(sprite,x1,y1,x2,y2,x3,y3){var self=this,$iter=TMP_Triangle_initialize_25.$$p,$yield=$iter||nil;if($iter)TMP_Triangle_initialize_25.$$p=null;self.sprite=sprite;self.poss=[[x1,y1],[x2,y2],[x3,y3]];return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Triangle_initialize_25,false),[],null)},TMP_Triangle_initialize_25.$$arity=7);Opal.defn(self,"$type",TMP_Triangle_type_26=function $$type(){var self=this;return"Triangle"},TMP_Triangle_type_26.$$arity=0);Opal.defn(self,"$collides?",TMP_Triangle_collides$q_27=function(other){var $a,$b,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,ox3=nil,oy3=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)||"Rect"["$==="]($case)){return other["$collides?"](self)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_triangle_triangle(ox1,oy1,ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_Triangle_collides$q_27.$$arity=1);return(Opal.defn(self,"$absolute_poss",TMP_Triangle_absolute_poss_28=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_Triangle_absolute_poss_28.$$arity=0),nil)&&"absolute_poss"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$Array","$equal?","$select","$is_a?","$length","$===","$[]","$__send__","$nil?","$new","$width","$height","$attr_accessor","$attr_reader","$raise","$inspect","$x","$any?","$check","$_collides?","$_collision_area","$!","$_collidable?","$collides?"]);self.$require("dxopal/sprite/collision_area");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var $CollisionCheck,self=$CollisionCheck=$module($base,"CollisionCheck");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CollisionCheck_shot_3,TMP_CollisionCheck_hit_4,TMP_CollisionCheck__init_collision_info_5,TMP_CollisionCheck_collision$eq_6,TMP_CollisionCheck_$eq$eq$eq_7,TMP_CollisionCheck_check_9,TMP_CollisionCheck__collides$q_10,TMP_CollisionCheck__collidable$q_11;(function($base,$parent_nesting){var $ClassMethods,self=$ClassMethods=$module($base,"ClassMethods");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassMethods_check_2;Opal.defn(self,"$check",TMP_ClassMethods_check_2=function $$check(offences,defences,shot,hit){var TMP_1,self=this,i=nil,j=nil,sprites=nil,n=nil;if(shot==null){shot="shot"}if(hit==null){hit="hit"}offences=self.$Array(offences);defences=self.$Array(defences);i=j=0;if($truthy(offences["$equal?"](defences))){sprites=$send(offences,"select",[],(TMP_1=function(x){var self=TMP_1.$$s||this;if(x==null)x=nil;return x["$is_a?"](Opal.const_get_relative($nesting,"Sprite"))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));n=sprites.$length();for(var i=0;i{var[type,sprite,info]=Opal.const_get_relative($nesting,"Sprite").$_matter_sprites()["$[]"](body.id);switch(type){case"rectangle":var[width,height]=info;sprite["$_move_to_matter_body"](body.position.x,body.position.y);sprite["$angle="](body.angle/Math.PI*180);break;default:`self.$raise("" + "unknown type: " + (self.$type()))`}})},TMP_Sprite_matter_tick_9.$$arity=1)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$extend","$include","$each","$!","$respond_to?","$vanished?","$update","$reject!","$nil?","$sort_by","$flatten","$to_proc","$draw","$/","$width","$height","$_init_collision_info","$attr_accessor","$attr_reader","$_move_matter_body","$-","$collision=","$raise","$draw_ex"]);self.$require("dxopal/sprite/collision_check");self.$require("dxopal/sprite/physics");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Sprite_update_2,TMP_Sprite_clean_4,TMP_Sprite_draw_6,TMP_Sprite_initialize_7,TMP_Sprite_x$eq_8,TMP_Sprite_y$eq_9,TMP_Sprite_image_10,TMP_Sprite_image$eq_11,TMP_Sprite_vanish_12,TMP_Sprite_vanished$q_13,TMP_Sprite_draw_14;def.image=def._matter_body=def.collision=def.center_x=def.vanished=def.visible=def.x=def.y=def.scale_x=def.scale_y=def.alpha=def.blend=def.angle=def.center_y=nil;self.$extend(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"CollisionCheck"),"ClassMethods"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"CollisionCheck"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"Physics"));Opal.defs(self,"$update",TMP_Sprite_update_2=function $$update(sprites){var TMP_1,self=this;return $send(sprites,"each",[],(TMP_1=function(sprite){var self=TMP_1.$$s||this,$a;if(sprite==null)sprite=nil;if($truthy(sprite["$respond_to?"]("update")["$!"]())){return nil}if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$update()},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_Sprite_update_2.$$arity=1);Opal.defs(self,"$clean",TMP_Sprite_clean_4=function $$clean(sprites){var TMP_3,self=this;return $send(sprites,"reject!",[],(TMP_3=function(sprite){var self=TMP_3.$$s||this,$a;if(sprite==null)sprite=nil;return $truthy($a=sprite["$nil?"]())?$a:sprite["$vanished?"]()},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_Sprite_clean_4.$$arity=1);Opal.defs(self,"$draw",TMP_Sprite_draw_6=function $$draw(sprites){var TMP_5,self=this;return $send($send(sprites.$flatten(),"sort_by",[],"z".$to_proc()),"each",[],(TMP_5=function(sprite){var self=TMP_5.$$s||this,$a;if(sprite==null)sprite=nil;if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$draw()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_Sprite_draw_6.$$arity=1);Opal.defn(self,"$initialize",TMP_Sprite_initialize_7=function $$initialize(x,y,image){var $a,self=this;if(x==null){x=0}if(y==null){y=0}if(image==null){image=nil}$a=[x,y,image],self.x=$a[0],self.y=$a[1],self.image=$a[2],$a;self.z=0;self.angle=0;self.scale_x=self.scale_y=1;if($truthy(image)){self.center_x=$rb_divide(image.$width(),2);self.center_y=$rb_divide(image.$height(),2)}self.visible=true;self.vanished=false;return self.$_init_collision_info(self.image)},TMP_Sprite_initialize_7.$$arity=-1);self.$attr_accessor("z","visible");self.$attr_accessor("angle");self.$attr_accessor("scale_x","scale_y");self.$attr_accessor("center_x","center_y");self.$attr_accessor("alpha");self.$attr_accessor("blend");self.$attr_reader("x","y");Opal.defn(self,"$x=",TMP_Sprite_x$eq_8=function(newx){var self=this;self.x=newx;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},TMP_Sprite_x$eq_8.$$arity=1);Opal.defn(self,"$y=",TMP_Sprite_y$eq_9=function(newy){var self=this;self.y=newy;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},TMP_Sprite_y$eq_9.$$arity=1);Opal.defn(self,"$image",TMP_Sprite_image_10=function $$image(){var self=this;return self.image},TMP_Sprite_image_10.$$arity=0);Opal.defn(self,"$image=",TMP_Sprite_image$eq_11=function(img){var self=this,$writer=nil;self.image=img;if($truthy(self.collision["$nil?"]())){$writer=[[0,0,$rb_minus(img.$width(),1),$rb_minus(img.$height(),1)]];$send(self,"collision=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(self.center_x["$nil?"]())){self.center_x=$rb_divide(img.$width(),2);return self.center_y=$rb_divide(img.$height(),2)}else{return nil}},TMP_Sprite_image$eq_11.$$arity=1);Opal.defn(self,"$vanish",TMP_Sprite_vanish_12=function $$vanish(){var self=this;return self.vanished=true},TMP_Sprite_vanish_12.$$arity=0);Opal.defn(self,"$vanished?",TMP_Sprite_vanished$q_13=function(){var self=this;return self.vanished},TMP_Sprite_vanished$q_13.$$arity=0);return(Opal.defn(self,"$draw",TMP_Sprite_draw_14=function $$draw(){var self=this;if($truthy(self.image["$nil?"]())){self.$raise("image not set to Sprite")}if($truthy(self.visible["$!"]())){return nil}return Opal.const_get_relative($nesting,"Window").$draw_ex(self.x,self.y,self.image,$hash2(["scale_x","scale_y","alpha","blend","angle","center_x","center_y"],{scale_x:self.scale_x,scale_y:self.scale_y,alpha:self.alpha,blend:self.blend,angle:self.angle,center_x:self.center_x,center_y:self.center_y}))},TMP_Sprite_draw_14.$$arity=0),nil)&&"draw"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/window"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$now","$_load_resources","$dump_error","$to_proc","$!","$_loop","$clear","$draw_pause_screen","$nil?","$raise","$loop","$draw_box_fill","$width","$height","$draw_font","$default","$_init","$/","$-","$+","$>=","$matter_enabled?","$matter_tick","$_on_tick","$box_fill","$sort","$==","$[]","$<=>","$each","$===","$draw","$drop","$draw_rot","$draw_scale","$draw_ex","$[]=","$line","$box","$circle","$circle_fill","$triangle","$triangle_fill","$width=","$height=","$new","$enqueue_draw","$push","$length"]);self.$require("dxopal/constants/colors");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Window,self=$Window=$module($base,"Window");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Window_load_resources_1,TMP_Window_loop_3,TMP_Window_pause_5,TMP_Window_paused$q_6,TMP_Window_resume_7,TMP_Window_draw_pause_screen_8,TMP_Window__loop_13,TMP_Window__init_14,TMP_Window__img_15,TMP_Window_fps_16,TMP_Window_fps$eq_17,TMP_Window_real_fps_18,TMP_Window_width_19,TMP_Window_width$eq_20,TMP_Window_height_21,TMP_Window_height$eq_22,TMP_Window_bgcolor_23,TMP_Window_bgcolor$eq_24,TMP_Window_draw_25,TMP_Window_draw_scale_26,TMP_Window_draw_rot_27,TMP_Window_draw_ex_28,TMP_Window_draw_font_29,TMP_Window_draw_pixel_30,TMP_Window_draw_line_31,TMP_Window_draw_box_32,TMP_Window_draw_box_fill_33,TMP_Window_draw_circle_34,TMP_Window_draw_circle_fill_35,TMP_Window_draw_triangle_36,TMP_Window_draw_triangle_fill_37,TMP_Window_enqueue_draw_38;Opal.class_variable_set($Window,"@@fps",60);Opal.class_variable_set($Window,"@@fps_ts",nil);Opal.class_variable_set($Window,"@@fps_ct",0);Opal.class_variable_set($Window,"@@real_fps",0);Opal.class_variable_set($Window,"@@real_fps_ct",1);Opal.class_variable_set($Window,"@@real_fps_t",Opal.const_get_relative($nesting,"Time").$now());Opal.class_variable_set($Window,"@@width",640);Opal.class_variable_set($Window,"@@height",480);Opal.class_variable_set($Window,"@@block",nil);Opal.class_variable_set($Window,"@@paused",false);Opal.defs(self,"$load_resources",TMP_Window_load_resources_1=function $$load_resources(){var TMP_2,self=this,$iter=TMP_Window_load_resources_1.$$p,block=$iter||nil;if($iter)TMP_Window_load_resources_1.$$p=null;return $send(Opal.const_get_relative($nesting,"RemoteResource"),"_load_resources",[],(TMP_2=function(){var self=TMP_2.$$s||this;return $send(Opal.const_get_relative($nesting,"DXOpal"),"dump_error",[],block.$to_proc())},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_Window_load_resources_1.$$arity=0);Opal.defs(self,"$loop",TMP_Window_loop_3=function $$loop(){var $a,TMP_4,self=this,$iter=TMP_Window_loop_3.$$p,block=$iter||nil,already_running=nil;if($iter)TMP_Window_loop_3.$$p=null;already_running=(($a=$Window.$$cvars["@@block"])==null?nil:$a)["$!"]()["$!"]();Opal.class_variable_set($Window,"@@block",block);if($truthy(already_running)){return nil}return window.requestAnimationFrame((TMP_4=function(time){var self=TMP_4.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4))},TMP_Window_loop_3.$$arity=0);Opal.defs(self,"$pause",TMP_Window_pause_5=function $$pause(){var $a,self=this;Opal.class_variable_set($Window,"@@paused",true);(($a=$Window.$$cvars["@@draw_queue"])==null?nil:$a).$clear();return self.$draw_pause_screen()},TMP_Window_pause_5.$$arity=0);Opal.defs(self,"$paused?",TMP_Window_paused$q_6=function(){var $a,self=this;return($a=$Window.$$cvars["@@paused"])==null?nil:$a},TMP_Window_paused$q_6.$$arity=0);Opal.defs(self,"$resume",TMP_Window_resume_7=function $$resume(){var $a,self=this;if($truthy((($a=$Window.$$cvars["@@block"])==null?nil:$a)["$nil?"]())){self.$raise("Window.resume is called before Window.loop")}Opal.class_variable_set($Window,"@@paused",false);return $send(Opal.const_get_relative($nesting,"Window"),"loop",[],(($a=$Window.$$cvars["@@block"])==null?nil:$a).$to_proc())},TMP_Window_resume_7.$$arity=0);Opal.defs(self,"$draw_pause_screen",TMP_Window_draw_pause_screen_8=function $$draw_pause_screen(){var self=this;Opal.const_get_relative($nesting,"Window").$draw_box_fill(0,0,Opal.const_get_relative($nesting,"Window").$width(),Opal.const_get_relative($nesting,"Window").$height(),Opal.const_get_relative($nesting,"C_BLACK"));return Opal.const_get_relative($nesting,"Window").$draw_font(0,0,"...PAUSE...",Opal.const_get_relative($nesting,"Font").$default(),$hash2(["color"],{color:Opal.const_get_relative($nesting,"C_WHITE")}))},TMP_Window_draw_pause_screen_8.$$arity=0);Opal.defs(self,"$_loop",TMP_Window__loop_13=function $$_loop(timestamp){var $a,$b,TMP_9,TMP_10,TMP_11,TMP_12,self=this,frame_msec=nil,passed_msec=nil,t=nil,sorted=nil;Opal.class_variable_set($Window,"@@img",$truthy($a=($b=$Window.$$cvars["@@img"])==null?nil:$b)?$a:self.$_init());frame_msec=$rb_divide(1e3,($a=$Window.$$cvars["@@fps"])==null?nil:$a);Opal.class_variable_set($Window,"@@fps_ts",$truthy($a=($b=$Window.$$cvars["@@fps_ts"])==null?nil:$b)?$a:timestamp);passed_msec=$rb_minus(timestamp,($a=$Window.$$cvars["@@fps_ts"])==null?nil:$a);Opal.class_variable_set($Window,"@@fps_ts",timestamp);Opal.class_variable_set($Window,"@@fps_ct",$rb_plus(($a=$Window.$$cvars["@@fps_ct"])==null?nil:$a,passed_msec));if($truthy($rb_ge(($a=$Window.$$cvars["@@fps_ct"])==null?nil:$a,frame_msec))){Opal.class_variable_set($Window,"@@fps_ct",$rb_minus(($a=$Window.$$cvars["@@fps_ct"])==null?nil:$a,frame_msec))}else{window.requestAnimationFrame((TMP_9=function(time){var self=TMP_9.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));return nil}t=Opal.const_get_relative($nesting,"Time").$now();if($truthy($rb_ge($rb_minus(t,($a=$Window.$$cvars["@@real_fps_t"])==null?nil:$a),1))){Opal.class_variable_set($Window,"@@real_fps",($a=$Window.$$cvars["@@real_fps_ct"])==null?nil:$a);Opal.class_variable_set($Window,"@@real_fps_ct",1);Opal.class_variable_set($Window,"@@real_fps_t",t)}else{Opal.class_variable_set($Window,"@@real_fps_ct",$rb_plus(($a=$Window.$$cvars["@@real_fps_ct"])==null?nil:$a,1))}if($truthy(Opal.const_get_relative($nesting,"Sprite")["$matter_enabled?"]())){Opal.const_get_relative($nesting,"Sprite").$matter_tick(timestamp)}Opal.const_get_relative($nesting,"Input").$_on_tick();Opal.class_variable_set($Window,"@@draw_queue",[]);if($truthy(($a=$Window.$$cvars["@@paused"])==null?nil:$a)){Opal.const_get_relative($nesting,"Window").$draw_pause_screen()}else{$send(Opal.const_get_relative($nesting,"DXOpal"),"dump_error",[],(($a=$Window.$$cvars["@@block"])==null?nil:$a).$to_proc())}(($a=$Window.$$cvars["@@img"])==null?nil:$a).$box_fill(0,0,($a=$Window.$$cvars["@@width"])==null?nil:$a,($a=$Window.$$cvars["@@height"])==null?nil:$a,($a=$Window.$$cvars["@@bgcolor"])==null?nil:$a);sorted=$send(($a=$Window.$$cvars["@@draw_queue"])==null?nil:$a,"sort",[],(TMP_10=function(a,b){var self=TMP_10.$$s||this;if(a==null)a=nil;if(b==null)b=nil;if(a["$[]"](0)["$=="](b["$[]"](0))){return a["$[]"](1)["$<=>"](b["$[]"](1))}else{return a["$[]"](0)["$<=>"](b["$[]"](0))}},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10));$send(sorted,"each",[],(TMP_11=function(item){var self=TMP_11.$$s||this,$c,$case=nil,$writer=nil;if(item==null)item=nil;return function(){$case=item["$[]"](2);if("image"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw",Opal.to_a(item.$drop(3)))}else if("image_rot"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_rot",Opal.to_a(item.$drop(3)))}else if("image_scale"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_scale",Opal.to_a(item.$drop(3)))}else if("draw_ex"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_ex",Opal.to_a(item.$drop(3)))}else if("font"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_font",Opal.to_a(item.$drop(3)))}else if("pixel"["$==="]($case)){$writer=[].concat(Opal.to_a(item.$drop(3)));$send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if("line"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"line",Opal.to_a(item.$drop(3)))}else if("box"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"box",Opal.to_a(item.$drop(3)))}else if("box_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"box_fill",Opal.to_a(item.$drop(3)))}else if("circle"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"circle",Opal.to_a(item.$drop(3)))}else if("circle_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"circle_fill",Opal.to_a(item.$drop(3)))}else if("triangle"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"triangle",Opal.to_a(item.$drop(3)))}else if("triangle_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"triangle_fill",Opal.to_a(item.$drop(3)))}else{return nil}}()},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11));return window.requestAnimationFrame((TMP_12=function(time){var self=TMP_12.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12))},TMP_Window__loop_13.$$arity=1);Opal.defs(self,"$_init",TMP_Window__init_14=function $$_init(){var $a,self=this,canvas=nil,$writer=nil,img=nil;canvas=document.getElementById("dxopal-canvas");$writer=[($a=$Window.$$cvars["@@width"])==null?nil:$a];$send(self,"width=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[($a=$Window.$$cvars["@@height"])==null?nil:$a];$send(self,"height=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];img=Opal.const_get_relative($nesting,"Image").$new(self.$width(),self.$height(),$hash2(["canvas"],{canvas:canvas}));Opal.const_get_relative($nesting,"Input").$_init(canvas);return img},TMP_Window__init_14.$$arity=0);Opal.defs(self,"$_img",TMP_Window__img_15=function $$_img(){var $a,self=this;return($a=$Window.$$cvars["@@img"])==null?nil:$a},TMP_Window__img_15.$$arity=0);Opal.defs(self,"$fps",TMP_Window_fps_16=function $$fps(){var $a,self=this;return($a=$Window.$$cvars["@@fps"])==null?nil:$a},TMP_Window_fps_16.$$arity=0);Opal.defs(self,"$fps=",TMP_Window_fps$eq_17=function(w){var self=this;return Opal.class_variable_set($Window,"@@fps",w)},TMP_Window_fps$eq_17.$$arity=1);Opal.defs(self,"$real_fps",TMP_Window_real_fps_18=function $$real_fps(){var $a,self=this;return($a=$Window.$$cvars["@@real_fps"])==null?nil:$a},TMP_Window_real_fps_18.$$arity=0);Opal.defs(self,"$width",TMP_Window_width_19=function $$width(){var $a,self=this;return($a=$Window.$$cvars["@@width"])==null?nil:$a},TMP_Window_width_19.$$arity=0);Opal.defs(self,"$width=",TMP_Window_width$eq_20=function(w){var $a,self=this,canvas=nil;canvas=document.getElementById("dxopal-canvas");Opal.class_variable_set($Window,"@@width",$truthy($a=w)?$a:window.innerWidth);canvas.width=($a=$Window.$$cvars["@@width"])==null?nil:$a;return canvas.style.width=($a=$Window.$$cvars["@@width"])==null?nil:$a},TMP_Window_width$eq_20.$$arity=1);Opal.defs(self,"$height",TMP_Window_height_21=function $$height(){var $a,self=this;return($a=$Window.$$cvars["@@height"])==null?nil:$a},TMP_Window_height_21.$$arity=0);Opal.defs(self,"$height=",TMP_Window_height$eq_22=function(h){var $a,self=this,canvas=nil;canvas=document.getElementById("dxopal-canvas");Opal.class_variable_set($Window,"@@height",$truthy($a=h)?$a:window.innerHeight);canvas.height=($a=$Window.$$cvars["@@height"])==null?nil:$a;return canvas.style.height=($a=$Window.$$cvars["@@height"])==null?nil:$a},TMP_Window_height$eq_22.$$arity=1);Opal.class_variable_set($Window,"@@bgcolor",Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Constants"),"Colors"),"C_BLACK"));Opal.defs(self,"$bgcolor",TMP_Window_bgcolor_23=function $$bgcolor(){var $a,self=this;return($a=$Window.$$cvars["@@bgcolor"])==null?nil:$a},TMP_Window_bgcolor_23.$$arity=0);Opal.defs(self,"$bgcolor=",TMP_Window_bgcolor$eq_24=function(col){var self=this;return Opal.class_variable_set($Window,"@@bgcolor",col)},TMP_Window_bgcolor$eq_24.$$arity=1);Opal.defs(self,"$draw",TMP_Window_draw_25=function $$draw(x,y,image,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"image",x,y,image)},TMP_Window_draw_25.$$arity=-4);Opal.defs(self,"$draw_scale",TMP_Window_draw_scale_26=function $$draw_scale(x,y,image,scale_x,scale_y,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_scale",x,y,image,scale_x,scale_y,center_x,center_y)},TMP_Window_draw_scale_26.$$arity=-6);Opal.defs(self,"$draw_rot",TMP_Window_draw_rot_27=function $$draw_rot(x,y,image,angle,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_rot",x,y,image,angle,center_x,center_y)},TMP_Window_draw_rot_27.$$arity=-5);Opal.defs(self,"$draw_ex",TMP_Window_draw_ex_28=function $$draw_ex(x,y,image,options){var $a,self=this;if(options==null){options=$hash2([],{})}return self.$enqueue_draw($truthy($a=options["$[]"]("z"))?$a:0,"draw_ex",x,y,image,options)},TMP_Window_draw_ex_28.$$arity=-4);Opal.defs(self,"$draw_font",TMP_Window_draw_font_29=function $$draw_font(x,y,string,font,option){var $a,self=this,z=nil,color=nil;if(option==null){option=$hash2([],{})}z=$truthy($a=option["$[]"]("z"))?$a:0;color=$truthy($a=option["$[]"]("color"))?$a:[255,255,255];return self.$enqueue_draw(z,"font",x,y,string,font,color)},TMP_Window_draw_font_29.$$arity=-5);Opal.defs(self,"$draw_pixel",TMP_Window_draw_pixel_30=function $$draw_pixel(x,y,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"pixel",x,y,color)},TMP_Window_draw_pixel_30.$$arity=-4);Opal.defs(self,"$draw_line",TMP_Window_draw_line_31=function $$draw_line(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"line",x1,y1,x2,y2,color)},TMP_Window_draw_line_31.$$arity=-6);Opal.defs(self,"$draw_box",TMP_Window_draw_box_32=function $$draw_box(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box",x1,y1,x2,y2,color)},TMP_Window_draw_box_32.$$arity=-6);Opal.defs(self,"$draw_box_fill",TMP_Window_draw_box_fill_33=function $$draw_box_fill(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box_fill",x1,y1,x2,y2,color)},TMP_Window_draw_box_fill_33.$$arity=-6);Opal.defs(self,"$draw_circle",TMP_Window_draw_circle_34=function $$draw_circle(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle",x,y,r,color)},TMP_Window_draw_circle_34.$$arity=-5);Opal.defs(self,"$draw_circle_fill",TMP_Window_draw_circle_fill_35=function $$draw_circle_fill(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle_fill",x,y,r,color)},TMP_Window_draw_circle_fill_35.$$arity=-5);Opal.defs(self,"$draw_triangle",TMP_Window_draw_triangle_36=function $$draw_triangle(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle",x1,y1,x2,y2,x3,y3,color)},TMP_Window_draw_triangle_36.$$arity=-8);Opal.defs(self,"$draw_triangle_fill",TMP_Window_draw_triangle_fill_37=function $$draw_triangle_fill(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle_fill",x1,y1,x2,y2,x3,y3,color)},TMP_Window_draw_triangle_fill_37.$$arity=-8);Opal.defs(self,"$enqueue_draw",TMP_Window_enqueue_draw_38=function $$enqueue_draw(z,$a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}return(($b=$Window.$$cvars["@@draw_queue"])==null?nil:$b).$push([z,(($b=$Window.$$cvars["@@draw_queue"])==null?nil:$b).$length()].concat(Opal.to_a(args)))},TMP_Window_enqueue_draw_38.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","1.5.1")}($nesting[0],$nesting)};Opal.modules["set"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs"},TMP_Set_inspect_6.$$arity=0);Opal.defn(self,"$==",TMP_Set_$eq$eq_8=function(other){var $a,TMP_7,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$instance_of?"](self.$class()))){return self.hash["$=="](other.$instance_variable_get("@hash"))}else if($truthy($truthy($a=other["$is_a?"](Opal.const_get_relative($nesting,"Set")))?self.$size()["$=="](other.$size()):$a)){return $send(other,"all?",[],(TMP_7=function(o){var self=TMP_7.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash["$include?"](o)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))}else{return false}},TMP_Set_$eq$eq_8.$$arity=1);Opal.defn(self,"$add",TMP_Set_add_9=function $$add(o){var self=this,$writer=nil;$writer=[o,true];$send(self.hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self},TMP_Set_add_9.$$arity=1);Opal.alias(self,"<<","add");Opal.defn(self,"$classify",TMP_Set_classify_10=function $$classify(){var TMP_11,TMP_12,self=this,$iter=TMP_Set_classify_10.$$p,block=$iter||nil,result=nil;if($iter)TMP_Set_classify_10.$$p=null;if(block!==nil){}else{return self.$enum_for("classify")}result=$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_11=function(h,k){var self=TMP_11.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,self.$class().$new()];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11));$send(self,"each",[],(TMP_12=function(item){var self=TMP_12.$$s||this;if(item==null)item=nil;return result["$[]"](Opal.yield1(block,item)).$add(item)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));return result},TMP_Set_classify_10.$$arity=0);Opal.defn(self,"$collect!",TMP_Set_collect$B_13=function(){var TMP_14,self=this,$iter=TMP_Set_collect$B_13.$$p,block=$iter||nil,result=nil;if($iter)TMP_Set_collect$B_13.$$p=null;if(block!==nil){}else{return self.$enum_for("collect!")}result=self.$class().$new();$send(self,"each",[],(TMP_14=function(item){var self=TMP_14.$$s||this;if(item==null)item=nil;return result["$<<"](Opal.yield1(block,item))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));return self.$replace(result)},TMP_Set_collect$B_13.$$arity=0);Opal.alias(self,"map!","collect!");Opal.defn(self,"$delete",TMP_Set_delete_15=function(o){var self=this;self.hash.$delete(o);return self},TMP_Set_delete_15.$$arity=1);Opal.defn(self,"$delete?",TMP_Set_delete$q_16=function(o){var self=this;if($truthy(self["$include?"](o))){self.$delete(o);return self}else{return nil}},TMP_Set_delete$q_16.$$arity=1);Opal.defn(self,"$delete_if",TMP_Set_delete_if_17=function $$delete_if(){try{var $a,TMP_18,TMP_19,self=this,$iter=TMP_Set_delete_if_17.$$p,$yield=$iter||nil;if($iter)TMP_Set_delete_if_17.$$p=null;$truthy($a=$yield!==nil)?$a:Opal.ret(self.$enum_for("delete_if"));$send($send(self,"select",[],(TMP_18=function(o){var self=TMP_18.$$s||this;if(o==null)o=nil;return Opal.yield1($yield,o)},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18)),"each",[],(TMP_19=function(o){var self=TMP_19.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash.$delete(o)},TMP_19.$$s=self,TMP_19.$$arity=1,TMP_19));return self}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Set_delete_if_17.$$arity=0);Opal.defn(self,"$add?",TMP_Set_add$q_20=function(o){var self=this;if($truthy(self["$include?"](o))){return nil}else{return self.$add(o)}},TMP_Set_add$q_20.$$arity=1);Opal.defn(self,"$each",TMP_Set_each_21=function $$each(){var self=this,$iter=TMP_Set_each_21.$$p,block=$iter||nil;if($iter)TMP_Set_each_21.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}$send(self.hash,"each_key",[],block.$to_proc());return self},TMP_Set_each_21.$$arity=0);Opal.defn(self,"$empty?",TMP_Set_empty$q_22=function(){var self=this;return self.hash["$empty?"]()},TMP_Set_empty$q_22.$$arity=0);Opal.defn(self,"$eql?",TMP_Set_eql$q_24=function(other){var TMP_23,self=this;return self.hash["$eql?"]($send(other,"instance_eval",[],(TMP_23=function(){var self=TMP_23.$$s||this;if(self.hash==null)self.hash=nil;return self.hash},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23)))},TMP_Set_eql$q_24.$$arity=1);Opal.defn(self,"$clear",TMP_Set_clear_25=function $$clear(){var self=this;self.hash.$clear();return self},TMP_Set_clear_25.$$arity=0);Opal.defn(self,"$include?",TMP_Set_include$q_26=function(o){var self=this;return self.hash["$include?"](o)},TMP_Set_include$q_26.$$arity=1);Opal.alias(self,"member?","include?");Opal.defn(self,"$merge",TMP_Set_merge_28=function $$merge(enum$){var TMP_27,self=this;$send(enum$,"each",[],(TMP_27=function(item){var self=TMP_27.$$s||this;if(item==null)item=nil;return self.$add(item)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));return self},TMP_Set_merge_28.$$arity=1);Opal.defn(self,"$replace",TMP_Set_replace_29=function $$replace(enum$){var self=this;self.$clear();self.$merge(enum$);return self},TMP_Set_replace_29.$$arity=1);Opal.defn(self,"$size",TMP_Set_size_30=function $$size(){var self=this;return self.hash.$size()},TMP_Set_size_30.$$arity=0);Opal.alias(self,"length","size");Opal.defn(self,"$subtract",TMP_Set_subtract_32=function $$subtract(enum$){var TMP_31,self=this;$send(enum$,"each",[],(TMP_31=function(item){var self=TMP_31.$$s||this;if(item==null)item=nil;return self.$delete(item)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));return self},TMP_Set_subtract_32.$$arity=1);Opal.defn(self,"$|",TMP_Set_$_33=function(enum$){var self=this;if($truthy(enum$["$respond_to?"]("each"))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be enumerable")}return self.$dup().$merge(enum$)},TMP_Set_$_33.$$arity=1);Opal.defn(self,"$superset?",TMP_Set_superset$q_35=function(set){var $a,TMP_34,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(self.$size(),set.$size()))){return false}return $send(set,"all?",[],(TMP_34=function(o){var self=TMP_34.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34))},TMP_Set_superset$q_35.$$arity=1);Opal.alias(self,">=","superset?");Opal.defn(self,"$proper_superset?",TMP_Set_proper_superset$q_37=function(set){var $a,TMP_36,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(self.$size(),set.$size()))){return false}return $send(set,"all?",[],(TMP_36=function(o){var self=TMP_36.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_36.$$s=self,TMP_36.$$arity=1,TMP_36))},TMP_Set_proper_superset$q_37.$$arity=1);Opal.alias(self,">","proper_superset?");Opal.defn(self,"$subset?",TMP_Set_subset$q_39=function(set){var $a,TMP_38,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(set.$size(),self.$size()))){return false}return $send(self,"all?",[],(TMP_38=function(o){var self=TMP_38.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_38.$$s=self,TMP_38.$$arity=1,TMP_38))},TMP_Set_subset$q_39.$$arity=1);Opal.alias(self,"<=","subset?");Opal.defn(self,"$proper_subset?",TMP_Set_proper_subset$q_41=function(set){var $a,TMP_40,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(set.$size(),self.$size()))){return false}return $send(self,"all?",[],(TMP_40=function(o){var self=TMP_40.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_40.$$s=self,TMP_40.$$arity=1,TMP_40))},TMP_Set_proper_subset$q_41.$$arity=1);Opal.alias(self,"<","proper_subset?");Opal.alias(self,"+","|");Opal.alias(self,"union","|");return(Opal.defn(self,"$to_a",TMP_Set_to_a_42=function $$to_a(){var self=this;return self.hash.$keys()},TMP_Set_to_a_42.$$arity=0),nil)&&"to_a"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Enumerable_to_set_43;Opal.defn(self,"$to_set",TMP_Enumerable_to_set_43=function $$to_set(klass,$a_rest){var self=this,args,$iter=TMP_Enumerable_to_set_43.$$p,block=$iter||nil;if(klass==null){klass=Opal.const_get_relative($nesting,"Set")}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Enumerable_to_set_43.$$p=null;return $send(klass,"new",[self].concat(Opal.to_a(args)),block.$to_proc())},TMP_Enumerable_to_set_43.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["ast/node"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$to_sym","$freeze","$to_a","$assign_properties","$hash","$class","$eql?","$type","$children","$each","$instance_variable_set","$protected","$private","$==","$nil?","$send","$original_dup","$equal?","$respond_to?","$to_ast","$updated","$+","$*","$fancy_type","$is_a?","$to_sexp","$inspect","$map","$to_sexp_array","$gsub","$to_s"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_initialize_1,TMP_Node_eql$q_2,TMP_Node_assign_properties_4,TMP_Node_dup_5,TMP_Node_updated_6,TMP_Node_$eq$eq_7,TMP_Node_concat_8,TMP_Node_append_9,TMP_Node_to_sexp_11,TMP_Node_inspect_13,TMP_Node_to_ast_14,TMP_Node_to_sexp_array_16,TMP_Node_fancy_type_17;def.type=def.children=nil;self.$attr_reader("type");self.$attr_reader("children");Opal.alias(self,"to_a","children");self.$attr_reader("hash");Opal.defn(self,"$initialize",TMP_Node_initialize_1=function $$initialize(type,children,properties){var $a,self=this;if(children==null){children=[]}if(properties==null){properties=$hash2([],{})}$a=[type.$to_sym(),children.$to_a().$freeze()],self.type=$a[0],self.children=$a[1],$a;self.$assign_properties(properties);self.hash=[self.type,self.children,self.$class()].$hash();return self.$freeze()},TMP_Node_initialize_1.$$arity=-2);Opal.defn(self,"$eql?",TMP_Node_eql$q_2=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$class()["$eql?"](other.$class()))?self.type["$eql?"](other.$type()):$b)?self.children["$eql?"](other.$children()):$a},TMP_Node_eql$q_2.$$arity=1);Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_4=function $$assign_properties(properties){var TMP_3,self=this;$send(properties,"each",[],(TMP_3=function(name,value){var self=TMP_3.$$s||this;if(name==null)name=nil;if(value==null)value=nil;return self.$instance_variable_set(""+"@"+name,value)},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3));return nil},TMP_Node_assign_properties_4.$$arity=1);self.$protected("assign_properties");Opal.alias(self,"original_dup","dup");self.$private("original_dup");Opal.defn(self,"$dup",TMP_Node_dup_5=function $$dup(){var self=this;return self},TMP_Node_dup_5.$$arity=0);Opal.alias(self,"clone","dup");Opal.defn(self,"$updated",TMP_Node_updated_6=function $$updated(type,children,properties){var $a,$b,self=this,new_type=nil,new_children=nil,new_properties=nil;if(type==null){type=nil}if(children==null){children=nil}if(properties==null){properties=nil}new_type=$truthy($a=type)?$a:self.type;new_children=$truthy($a=children)?$a:self.children;new_properties=$truthy($a=properties)?$a:$hash2([],{});if($truthy($truthy($a=($b=self.type["$=="](new_type))?self.children["$=="](new_children):self.type["$=="](new_type))?properties["$nil?"]():$a)){return self}else{return self.$original_dup().$send("initialize",new_type,new_children,new_properties)}},TMP_Node_updated_6.$$arity=-1);Opal.defn(self,"$==",TMP_Node_$eq$eq_7=function(other){var $a,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$respond_to?"]("to_ast"))){other=other.$to_ast();return($a=other.$type()["$=="](self.$type()))?other.$children()["$=="](self.$children()):other.$type()["$=="](self.$type())}else{return false}},TMP_Node_$eq$eq_7.$$arity=1);Opal.defn(self,"$concat",TMP_Node_concat_8=function $$concat(array){var self=this;return self.$updated(nil,$rb_plus(self.children,array.$to_a()))},TMP_Node_concat_8.$$arity=1);Opal.alias(self,"+","concat");Opal.defn(self,"$append",TMP_Node_append_9=function $$append(element){var self=this;return self.$updated(nil,$rb_plus(self.children,[element]))},TMP_Node_append_9.$$arity=1);Opal.alias(self,"<<","append");Opal.defn(self,"$to_sexp",TMP_Node_to_sexp_11=function $$to_sexp(indent){var TMP_10,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"("+self.$fancy_type();$send(self.$children(),"each",[],(TMP_10=function(child){var self=TMP_10.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return sexp=$rb_plus(sexp,""+"\n"+child.$to_sexp($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+" "+child.$inspect())}},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10));sexp=$rb_plus(sexp,")");return sexp},TMP_Node_to_sexp_11.$$arity=-1);Opal.alias(self,"to_s","to_sexp");Opal.defn(self,"$inspect",TMP_Node_inspect_13=function $$inspect(indent){var TMP_12,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"s(:"+self.type;$send(self.$children(),"each",[],(TMP_12=function(child){var self=TMP_12.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return sexp=$rb_plus(sexp,""+",\n"+child.$inspect($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+", "+child.$inspect())}},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));sexp=$rb_plus(sexp,")");return sexp},TMP_Node_inspect_13.$$arity=-1);Opal.defn(self,"$to_ast",TMP_Node_to_ast_14=function $$to_ast(){var self=this;return self},TMP_Node_to_ast_14.$$arity=0);Opal.defn(self,"$to_sexp_array",TMP_Node_to_sexp_array_16=function $$to_sexp_array(){var TMP_15,self=this,children_sexp_arrs=nil;children_sexp_arrs=$send(self.$children(),"map",[],(TMP_15=function(child){var self=TMP_15.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return child.$to_sexp_array()}else{return child}},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));return[self.$type()].concat(Opal.to_a(children_sexp_arrs))},TMP_Node_to_sexp_array_16.$$arity=0);self.$protected();return(Opal.defn(self,"$fancy_type",TMP_Node_fancy_type_17=function $$fancy_type(){var self=this;return self.type.$to_s().$gsub("_","-")},TMP_Node_fancy_type_17.$$arity=0),nil)&&"fancy_type"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor/mixin"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$nil?","$to_ast","$type","$respond_to?","$send","$handler_missing","$map","$to_a","$process"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var $Mixin,self=$Mixin=$module($base,"Mixin");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Mixin_process_1,TMP_Mixin_process_all_3,TMP_Mixin_handler_missing_4;Opal.defn(self,"$process",TMP_Mixin_process_1=function $$process(node){var self=this,on_handler=nil,new_node=nil;if($truthy(node["$nil?"]())){return nil}node=node.$to_ast();on_handler=""+"on_"+node.$type();if($truthy(self["$respond_to?"](on_handler))){new_node=self.$send(on_handler,node)}else{new_node=self.$handler_missing(node)}if($truthy(new_node)){node=new_node}return node},TMP_Mixin_process_1.$$arity=1);Opal.defn(self,"$process_all",TMP_Mixin_process_all_3=function $$process_all(nodes){var TMP_2,self=this;return $send(nodes.$to_a(),"map",[],(TMP_2=function(node){var self=TMP_2.$$s||this;if(node==null)node=nil;return self.$process(node)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Mixin_process_all_3.$$arity=1);Opal.defn(self,"$handler_missing",TMP_Mixin_handler_missing_4=function $$handler_missing(node){var self=this;return nil},TMP_Mixin_handler_missing_4.$$arity=1)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$include"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$require("ast/processor/mixin");return self.$include(Opal.const_get_relative($nesting,"Mixin"))})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/sexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Sexp,self=$Sexp=$module($base,"Sexp");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Sexp_s_1;Opal.defn(self,"$s",TMP_Sexp_s_1=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Node").$new(type,children)},TMP_Sexp_s_1.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["ast"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$require"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$require("ast/node");self.$require("ast/processor");self.$require("ast/sexp")}($nesting[0],$nesting)};Opal.modules["parser/ast/node"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$[]","$frozen?","$dup","$node=","$-"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_assign_properties_1;self.$attr_reader("location");Opal.alias(self,"loc","location");return(Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_1=function $$assign_properties(properties){var self=this,location=nil,$writer=nil;if($truthy(location=properties["$[]"]("location"))){if($truthy(location["$frozen?"]())){location=location.$dup()}$writer=[self];$send(location,"node=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.location=location}else{return nil}},TMP_Node_assign_properties_1.$$arity=1),nil)&&"assign_properties"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified("::","AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$attr_reader","$[]","$frozen?","$dup","$merge!","$loc","$line","$column"]);self.$require("ast");self.$require("parser/ast/node");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_assign_properties_1,TMP_Node_line_2,TMP_Node_column_3;def.meta=nil;self.$attr_reader("meta");Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_1=function $$assign_properties(properties){var $a,self=this,$iter=TMP_Node_assign_properties_1.$$p,$yield=$iter||nil,meta=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Node_assign_properties_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(meta=properties["$[]"]("meta"))){if($truthy(meta["$frozen?"]())){meta=meta.$dup()}self.meta["$merge!"](meta)}else{self.meta=$truthy($a=self.meta)?$a:$hash2([],{})}return $send(self,Opal.find_super_dispatcher(self,"assign_properties",TMP_Node_assign_properties_1,false),$zuper,$iter)},TMP_Node_assign_properties_1.$$arity=1);Opal.defn(self,"$line",TMP_Node_line_2=function $$line(){var self=this;if($truthy(self.$loc())){return self.$loc().$line()}else{return nil}},TMP_Node_line_2.$$arity=0);return(Opal.defn(self,"$column",TMP_Node_column_3=function $$column(){var self=this;if($truthy(self.$loc())){return self.$loc().$column()}else{return nil}},TMP_Node_column_3.$$arity=0),nil)&&"column"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["racc/parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var $a,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$send=Opal.send;Opal.add_stubs(["$[]","$class","$<","$size","$[]=","$-","$__send__","$_racc_setup","$raise","$_racc_init_sysvars","$catch","$!=","$next_token","$racc_read_token","$+","$>=","$==","$_racc_evalact","$!","$>","$push","$racc_shift","$-@","$_racc_do_reduce","$===","$racc_accept","$throw","$on_error","$<=","$pop","$racc_e_pop","$inspect","$racc_next_state","$*","$racc_reduce","$sprintf","$token_to_str","$print","$racc_token2str","$puts","$racc_print_stacks","$empty?","$each","$racc_print_states","$each_index"]);(function($base,$parent_nesting){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ParseError(){}var self=$ParseError=$klass($base,$super,"ParseError",$ParseError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting)})($nesting[0],$nesting);if($truthy(($a=Opal.const_get_qualified("::","ParseError","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"ParseError",Opal.const_get_qualified(Opal.const_get_relative($nesting,"Racc"),"ParseError"))}return function($base,$parent_nesting){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$nesting=[self].concat($parent_nesting),$a;if($truthy(($a=Opal.const_get_relative($nesting,"Racc_No_Extensions","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"Racc_No_Extensions",false)}(function($base,$super,$parent_nesting){function $Parser(){}var self=$Parser=$klass($base,$super,"Parser",$Parser);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Parser_racc_runtime_type_1,TMP_Parser__racc_setup_2,TMP_Parser__racc_init_sysvars_3,TMP_Parser_do_parse_4,TMP_Parser_next_token_5,TMP_Parser__racc_do_parse_rb_7,TMP_Parser_yyparse_8,TMP_Parser__racc_yyparse_rb_11,TMP_Parser__racc_evalact_13,TMP_Parser__racc_do_reduce_14,TMP_Parser_on_error_15,TMP_Parser_yyerror_16,TMP_Parser_yyaccept_17,TMP_Parser_yyerrok_18,TMP_Parser_racc_read_token_19,TMP_Parser_racc_shift_20,TMP_Parser_racc_reduce_22,TMP_Parser_racc_accept_23,TMP_Parser_racc_e_pop_24,TMP_Parser_racc_next_state_25,TMP_Parser_racc_print_stacks_27,TMP_Parser_racc_print_states_29,TMP_Parser_racc_token2str_30,TMP_Parser_token_to_str_31;def.yydebug=def.racc_debug_out=def.racc_error_status=def.racc_t=def.racc_vstack=def.racc_val=def.racc_state=def.racc_tstack=nil;Opal.const_set($nesting[0],"Racc_Runtime_Version","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb");Opal.const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb");Opal.const_set($nesting[0],"Racc_Runtime_Core_Version",Opal.const_get_relative($nesting,"Racc_Runtime_Core_Version_R"));Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision",Opal.const_get_relative($nesting,"Racc_Runtime_Core_Revision_R"));Opal.const_set($nesting[0],"Racc_Runtime_Type","ruby");Opal.defs(Opal.const_get_relative($nesting,"Parser"),"$racc_runtime_type",TMP_Parser_racc_runtime_type_1=function $$racc_runtime_type(){var self=this;return Opal.const_get_relative($nesting,"Racc_Runtime_Type")},TMP_Parser_racc_runtime_type_1.$$arity=0);Opal.defn(self,"$_racc_setup",TMP_Parser__racc_setup_2=function $$_racc_setup(){var $a,$b,$c,self=this,arg=nil,$writer=nil;if($gvars.stderr==null)$gvars.stderr=nil;if($truthy(Opal.const_get_qualified(self.$class(),"Racc_debug_parser"))){}else{self.yydebug=false}if($truthy(($a=self["yydebug"],$a!=null&&$a!==nil)?"instance-variable":nil)){}else{self.yydebug=false}if($truthy(self.yydebug)){if($truthy(($b=self["racc_debug_out"],$b!=null&&$b!==nil)?"instance-variable":nil)){}else{self.racc_debug_out=$gvars.stderr}self.racc_debug_out=$truthy($c=self.racc_debug_out)?$c:$gvars.stderr}arg=Opal.const_get_qualified(self.$class(),"Racc_arg");if($truthy($rb_lt(arg.$size(),14))){$writer=[13,true];$send(arg,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return arg},TMP_Parser__racc_setup_2.$$arity=0);Opal.defn(self,"$_racc_init_sysvars",TMP_Parser__racc_init_sysvars_3=function $$_racc_init_sysvars(){var self=this;self.racc_state=[0];self.racc_tstack=[];self.racc_vstack=[];self.racc_t=nil;self.racc_val=nil;self.racc_read_next=true;self.racc_user_yyerror=false;return self.racc_error_status=0},TMP_Parser__racc_init_sysvars_3.$$arity=0);Opal.defn(self,"$do_parse",TMP_Parser_do_parse_4=function $$do_parse(){var self=this;return self.$__send__(Opal.const_get_relative($nesting,"Racc_Main_Parsing_Routine"),self.$_racc_setup(),false)},TMP_Parser_do_parse_4.$$arity=0);Opal.defn(self,"$next_token",TMP_Parser_next_token_5=function $$next_token(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"),""+self.$class()+"#next_token is not defined")},TMP_Parser_next_token_5.$$arity=0);Opal.defn(self,"$_racc_do_parse_rb",TMP_Parser__racc_do_parse_rb_7=function $$_racc_do_parse_rb(arg,in_debug){var $a,$b,TMP_6,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,tok=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();tok=act=i=nil;return $send(self,"catch",["racc_end_parse"],(TMP_6=function(){var self=TMP_6.$$s||this,$c,$d,$e;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(self.racc_t==null)self.racc_t=nil;if(self.yydebug==null)self.yydebug=nil;if(self.racc_val==null)self.racc_val=nil;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){if($truthy(self.racc_read_next)){if($truthy(self.racc_t["$!="](0))){$e=self.$next_token(),$d=Opal.to_ary($e),tok=$d[0]==null?nil:$d[0],self.racc_val=$d[1]==null?nil:$d[1],$e;if($truthy(tok)){self.racc_t=$truthy($d=token_table["$[]"](tok))?$d:1}else{self.racc_t=0}if($truthy(self.yydebug)){self.$racc_read_token(self.racc_t,tok,self.racc_val)}self.racc_read_next=false}}i=$rb_plus(i,self.racc_t);if($truthy($truthy($d=$truthy($e=$rb_ge(i,0))?act=action_table["$[]"](i):$e)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$d)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6))},TMP_Parser__racc_do_parse_rb_7.$$arity=2);Opal.defn(self,"$yyparse",TMP_Parser_yyparse_8=function $$yyparse(recv,mid){var self=this;return self.$__send__(Opal.const_get_relative($nesting,"Racc_YY_Parse_Method"),recv,mid,self.$_racc_setup(),true)},TMP_Parser_yyparse_8.$$arity=2);Opal.defn(self,"$_racc_yyparse_rb",TMP_Parser__racc_yyparse_rb_11=function $$_racc_yyparse_rb(recv,mid,arg,c_debug){var $a,$b,TMP_9,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();act=nil;i=nil;return $send(self,"catch",["racc_end_parse"],(TMP_9=function(){var self=TMP_9.$$s||this,$c,$d,TMP_10;if(self.racc_state==null)self.racc_state=nil;while(!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){while($truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg))){}}return $send(recv,"__send__",[mid],(TMP_10=function(tok,val){var self=TMP_10.$$s||this,$e,$f,$g,$h,$i;if(self.racc_t==null)self.racc_t=nil;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(tok==null)tok=nil;if(val==null)val=nil;if($truthy(tok)){self.racc_t=$truthy($e=token_table["$[]"](tok))?$e:1}else{self.racc_t=0}self.racc_val=val;self.racc_read_next=false;i=$rb_plus(i,self.racc_t);if($truthy($truthy($e=$truthy($f=$rb_ge(i,0))?act=action_table["$[]"](i):$f)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$e)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}while($truthy($truthy($f=$truthy($g=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$g:self.racc_read_next["$!"]())?$f:self.racc_t["$=="](0))){if($truthy($truthy($f=$truthy($g=$truthy($h=$truthy($i=i)?i=$rb_plus(i,self.racc_t):$i)?$rb_ge(i,0):$h)?act=action_table["$[]"](i):$g)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$f)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10))},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))},TMP_Parser__racc_yyparse_rb_11.$$arity=4);Opal.defn(self,"$_racc_evalact",TMP_Parser__racc_evalact_13=function $$_racc_evalact(act,arg){var $a,$b,TMP_12,$c,self=this,action_table=nil,action_check=nil,_=nil,action_pointer=nil,shift_n=nil,reduce_n=nil,code=nil,$case=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],shift_n=$a[11]==null?nil:$a[11],reduce_n=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],_=$a[14]==null?nil:$a[14],$b;if($truthy($truthy($a=$rb_gt(act,0))?$rb_lt(act,shift_n):$a)){if($truthy($rb_gt(self.racc_error_status,0))){if(self.racc_t["$=="](1)){}else{self.racc_error_status=$rb_minus(self.racc_error_status,1)}}self.racc_vstack.$push(self.racc_val);self.racc_state.$push(act);self.racc_read_next=true;if($truthy(self.yydebug)){self.racc_tstack.$push(self.racc_t);self.$racc_shift(self.racc_t,self.racc_tstack,self.racc_vstack)}}else if($truthy($truthy($a=$rb_lt(act,0))?$rb_gt(act,reduce_n["$-@"]()):$a)){code=$send(self,"catch",["racc_jump"],(TMP_12=function(){var self=TMP_12.$$s||this;if(self.racc_state==null)self.racc_state=nil;self.racc_state.$push(self.$_racc_do_reduce(arg,act));return false},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));if($truthy(code)){$case=code;if(1["$==="]($case)){self.racc_user_yyerror=true;return reduce_n["$-@"]()}else if(2["$==="]($case)){return shift_n}else{self.$raise("[Racc Bug] unknown jump code")}}}else if(act["$=="](shift_n)){if($truthy(self.yydebug)){self.$racc_accept()}self.$throw("racc_end_parse",self.racc_vstack["$[]"](0))}else if(act["$=="](reduce_n["$-@"]())){$case=self.racc_error_status;if((0)["$==="]($case)){if($truthy(arg["$[]"](21))){}else{self.$on_error(self.racc_t,self.racc_val,self.racc_vstack)}}else if(3["$==="]($case)){if(self.racc_t["$=="](0)){self.$throw("racc_end_parse",nil)}self.racc_read_next=true}self.racc_user_yyerror=false;self.racc_error_status=3;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){i=$rb_plus(i,1);if($truthy($truthy($b=$truthy($c=$rb_ge(i,0))?act=action_table["$[]"](i):$c)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$b)){break}}if($truthy($rb_le(self.racc_state.$size(),1))){self.$throw("racc_end_parse",nil)}self.racc_state.$pop();self.racc_vstack.$pop();if($truthy(self.yydebug)){self.racc_tstack.$pop();self.$racc_e_pop(self.racc_state,self.racc_tstack,self.racc_vstack)}}return act}else{self.$raise(""+"[Racc Bug] unknown action "+act.$inspect())}if($truthy(self.yydebug)){self.$racc_next_state(self.racc_state["$[]"](-1),self.racc_state)}return nil},TMP_Parser__racc_evalact_13.$$arity=2);Opal.defn(self,"$_racc_do_reduce",TMP_Parser__racc_do_reduce_14=function $$_racc_do_reduce(arg,act){var $a,$b,self=this,_=nil,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,nt_base=nil,reduce_table=nil,use_result=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,reduce_to=nil,method_id=nil,void_array=nil,tmp_t=nil,tmp_v=nil,$writer=nil,k1=nil,curstate=nil;$b=arg,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],goto_table=$a[4]==null?nil:$a[4],goto_check=$a[5]==null?nil:$a[5],goto_default=$a[6]==null?nil:$a[6],goto_pointer=$a[7]==null?nil:$a[7],nt_base=$a[8]==null?nil:$a[8],reduce_table=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],use_result=$a[13]==null?nil:$a[13],$b;state=self.racc_state;vstack=self.racc_vstack;tstack=self.racc_tstack;i=$rb_times(act,-3);len=reduce_table["$[]"](i);reduce_to=reduce_table["$[]"]($rb_plus(i,1));method_id=reduce_table["$[]"]($rb_plus(i,2));void_array=[];if($truthy(self.yydebug)){tmp_t=tstack["$[]"](len["$-@"](),len)}tmp_v=vstack["$[]"](len["$-@"](),len);if($truthy(self.yydebug)){$writer=[len["$-@"](),len,void_array];$send(tstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=[len["$-@"](),len,void_array];$send(vstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[len["$-@"](),len,void_array];$send(state,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(use_result)){vstack.$push(self.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0)))}else{vstack.$push(self.$__send__(method_id,tmp_v,vstack))}tstack.$push(reduce_to);if($truthy(self.yydebug)){self.$racc_reduce(tmp_t,reduce_to,tstack,vstack)}k1=$rb_minus(reduce_to,nt_base);if($truthy(i=goto_pointer["$[]"](k1))){i=$rb_plus(i,state["$[]"](-1));if($truthy($truthy($a=$truthy($b=$rb_ge(i,0))?curstate=goto_table["$[]"](i):$b)?goto_check["$[]"](i)["$=="](k1):$a)){return curstate}}return goto_default["$[]"](k1)},TMP_Parser__racc_do_reduce_14.$$arity=2);Opal.defn(self,"$on_error",TMP_Parser_on_error_15=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise(Opal.const_get_relative($nesting,"ParseError"),self.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($a=self.$token_to_str(t))?$a:"?"))},TMP_Parser_on_error_15.$$arity=3);Opal.defn(self,"$yyerror",TMP_Parser_yyerror_16=function $$yyerror(){var self=this;return self.$throw("racc_jump",1)},TMP_Parser_yyerror_16.$$arity=0);Opal.defn(self,"$yyaccept",TMP_Parser_yyaccept_17=function $$yyaccept(){var self=this;return self.$throw("racc_jump",2)},TMP_Parser_yyaccept_17.$$arity=0);Opal.defn(self,"$yyerrok",TMP_Parser_yyerrok_18=function $$yyerrok(){var self=this;return self.racc_error_status=0},TMP_Parser_yyerrok_18.$$arity=0);Opal.defn(self,"$racc_read_token",TMP_Parser_racc_read_token_19=function $$racc_read_token(t,tok,val){var self=this;self.racc_debug_out.$print("read ");self.racc_debug_out.$print(tok.$inspect(),"(",self.$racc_token2str(t),") ");self.racc_debug_out.$puts(val.$inspect());return self.racc_debug_out.$puts()},TMP_Parser_racc_read_token_19.$$arity=3);Opal.defn(self,"$racc_shift",TMP_Parser_racc_shift_20=function $$racc_shift(tok,tstack,vstack){var self=this;self.racc_debug_out.$puts(""+"shift "+self.$racc_token2str(tok));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_shift_20.$$arity=3);Opal.defn(self,"$racc_reduce",TMP_Parser_racc_reduce_22=function $$racc_reduce(toks,sim,tstack,vstack){var TMP_21,self=this,out=nil;out=self.racc_debug_out;out.$print("reduce ");if($truthy(toks["$empty?"]())){out.$print(" ")}else{$send(toks,"each",[],(TMP_21=function(t){var self=TMP_21.$$s||this;if(t==null)t=nil;return out.$print(" ",self.$racc_token2str(t))},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}out.$puts(""+" --\x3e "+self.$racc_token2str(sim));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_reduce_22.$$arity=4);Opal.defn(self,"$racc_accept",TMP_Parser_racc_accept_23=function $$racc_accept(){var self=this;self.racc_debug_out.$puts("accept");return self.racc_debug_out.$puts()},TMP_Parser_racc_accept_23.$$arity=0);Opal.defn(self,"$racc_e_pop",TMP_Parser_racc_e_pop_24=function $$racc_e_pop(state,tstack,vstack){var self=this;self.racc_debug_out.$puts("error recovering mode: pop token");self.$racc_print_states(state);self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_e_pop_24.$$arity=3);Opal.defn(self,"$racc_next_state",TMP_Parser_racc_next_state_25=function $$racc_next_state(curstate,state){var self=this;self.racc_debug_out.$puts(""+"goto "+curstate);self.$racc_print_states(state);return self.racc_debug_out.$puts()},TMP_Parser_racc_next_state_25.$$arity=2);Opal.defn(self,"$racc_print_stacks",TMP_Parser_racc_print_stacks_27=function $$racc_print_stacks(t,v){var TMP_26,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(t,"each_index",[],(TMP_26=function(i){var self=TMP_26.$$s||this;if(i==null)i=nil;return out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26));return out.$puts(" ]")},TMP_Parser_racc_print_stacks_27.$$arity=2);Opal.defn(self,"$racc_print_states",TMP_Parser_racc_print_states_29=function $$racc_print_states(s){var TMP_28,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(s,"each",[],(TMP_28=function(st){var self=TMP_28.$$s||this;if(st==null)st=nil;return out.$print(" ",st)},TMP_28.$$s=self,TMP_28.$$arity=1,TMP_28));return out.$puts(" ]")},TMP_Parser_racc_print_states_29.$$arity=1);Opal.defn(self,"$racc_token2str",TMP_Parser_racc_token2str_30=function $$racc_token2str(tok){var $a,self=this;return $truthy($a=Opal.const_get_qualified(self.$class(),"Racc_token_to_s_table")["$[]"](tok))?$a:self.$raise(""+"[Racc Bug] can't convert token "+tok+" to string")},TMP_Parser_racc_token2str_30.$$arity=1);return(Opal.defn(self,"$token_to_str",TMP_Parser_token_to_str_31=function $$token_to_str(t){var self=this;return Opal.const_get_qualified(self.$class(),"Racc_token_to_s_table")["$[]"](t)},TMP_Parser_token_to_str_31.$$arity=1),nil)&&"token_to_str"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/compatibility/ruby1_8"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$is_a?","$gsub","$[]","$to_sym","$original_percent"]);return function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_$_2;Opal.alias(self,"original_percent","%");return(Opal.defn(self,"$%",TMP_String_$_2=function(arg,$a_rest){var TMP_1,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($truthy(arg["$is_a?"](Opal.const_get_relative($nesting,"Hash")))){return $send(self,"gsub",[/%\{(\w+)\}/],(TMP_1=function(){var self=TMP_1.$$s||this,$a;return arg["$[]"]((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$to_sym())},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))}else{return $send(self,"original_percent",[arg].concat(Opal.to_a(args)))}},TMP_String_$_2.$$arity=-2),nil)&&"%"}($nesting[0],null,$nesting)};Opal.modules["parser/compatibility/ruby1_9"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",useless_else:"else without rescue is useless",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}"}).$freeze())}($nesting[0],$nesting)};Opal.modules["parser/ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$updated","$process_all","$on_var","$!","$nil?","$process","$on_vasgn","$on_argument","$warn"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Processor_process_regular_node_1,TMP_Processor_on_var_2,TMP_Processor_process_variable_node_3,TMP_Processor_on_vasgn_4,TMP_Processor_process_var_asgn_node_5,TMP_Processor_on_op_asgn_6,TMP_Processor_on_const_7,TMP_Processor_on_casgn_8,TMP_Processor_on_argument_9,TMP_Processor_process_argument_node_10,TMP_Processor_on_def_11,TMP_Processor_on_defs_12,TMP_Processor_on_send_13,TMP_Processor_process_variable_node_14,TMP_Processor_process_var_asgn_node_15,TMP_Processor_process_argument_node_16;Opal.defn(self,"$process_regular_node",TMP_Processor_process_regular_node_1=function $$process_regular_node(node){var self=this;return node.$updated(nil,self.$process_all(node))},TMP_Processor_process_regular_node_1.$$arity=1);Opal.alias(self,"on_dstr","process_regular_node");Opal.alias(self,"on_dsym","process_regular_node");Opal.alias(self,"on_regexp","process_regular_node");Opal.alias(self,"on_xstr","process_regular_node");Opal.alias(self,"on_splat","process_regular_node");Opal.alias(self,"on_array","process_regular_node");Opal.alias(self,"on_pair","process_regular_node");Opal.alias(self,"on_hash","process_regular_node");Opal.alias(self,"on_irange","process_regular_node");Opal.alias(self,"on_erange","process_regular_node");Opal.defn(self,"$on_var",TMP_Processor_on_var_2=function $$on_var(node){var self=this;return node},TMP_Processor_on_var_2.$$arity=1);Opal.defn(self,"$process_variable_node",TMP_Processor_process_variable_node_3=function $$process_variable_node(node){var self=this;return self.$on_var(node)},TMP_Processor_process_variable_node_3.$$arity=1);Opal.alias(self,"on_lvar","process_variable_node");Opal.alias(self,"on_ivar","process_variable_node");Opal.alias(self,"on_gvar","process_variable_node");Opal.alias(self,"on_cvar","process_variable_node");Opal.alias(self,"on_back_ref","process_variable_node");Opal.alias(self,"on_nth_ref","process_variable_node");Opal.defn(self,"$on_vasgn",TMP_Processor_on_vasgn_4=function $$on_vasgn(node){var $a,self=this,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[name,self.$process(value_node)])}else{return node}},TMP_Processor_on_vasgn_4.$$arity=1);Opal.defn(self,"$process_var_asgn_node",TMP_Processor_process_var_asgn_node_5=function $$process_var_asgn_node(node){var self=this;return self.$on_vasgn(node)},TMP_Processor_process_var_asgn_node_5.$$arity=1);Opal.alias(self,"on_lvasgn","process_var_asgn_node");Opal.alias(self,"on_ivasgn","process_var_asgn_node");Opal.alias(self,"on_gvasgn","process_var_asgn_node");Opal.alias(self,"on_cvasgn","process_var_asgn_node");Opal.alias(self,"on_and_asgn","process_regular_node");Opal.alias(self,"on_or_asgn","process_regular_node");Opal.defn(self,"$on_op_asgn",TMP_Processor_on_op_asgn_6=function $$on_op_asgn(node){var $a,self=this,var_node=nil,method_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),var_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[self.$process(var_node),method_name,self.$process(value_node)])},TMP_Processor_on_op_asgn_6.$$arity=1);Opal.alias(self,"on_mlhs","process_regular_node");Opal.alias(self,"on_masgn","process_regular_node");Opal.defn(self,"$on_const",TMP_Processor_on_const_7=function $$on_const(node){var $a,self=this,scope_node=nil,name=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$a;return node.$updated(nil,[self.$process(scope_node),name])},TMP_Processor_on_const_7.$$arity=1);Opal.defn(self,"$on_casgn",TMP_Processor_on_casgn_8=function $$on_casgn(node){var $a,self=this,scope_node=nil,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[self.$process(scope_node),name,self.$process(value_node)])}else{return node.$updated(nil,[self.$process(scope_node),name])}},TMP_Processor_on_casgn_8.$$arity=1);Opal.alias(self,"on_args","process_regular_node");Opal.defn(self,"$on_argument",TMP_Processor_on_argument_9=function $$on_argument(node){var $a,self=this,arg_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),arg_name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[arg_name,self.$process(value_node)])}else{return node}},TMP_Processor_on_argument_9.$$arity=1);Opal.defn(self,"$process_argument_node",TMP_Processor_process_argument_node_10=function $$process_argument_node(node){var self=this;return self.$on_argument(node)},TMP_Processor_process_argument_node_10.$$arity=1);Opal.alias(self,"on_arg","process_argument_node");Opal.alias(self,"on_optarg","process_argument_node");Opal.alias(self,"on_restarg","process_argument_node");Opal.alias(self,"on_blockarg","process_argument_node");Opal.alias(self,"on_shadowarg","process_argument_node");Opal.alias(self,"on_kwarg","process_argument_node");Opal.alias(self,"on_kwoptarg","process_argument_node");Opal.alias(self,"on_kwrestarg","process_argument_node");Opal.alias(self,"on_procarg0","process_argument_node");Opal.alias(self,"on_arg_expr","process_regular_node");Opal.alias(self,"on_restarg_expr","process_regular_node");Opal.alias(self,"on_blockarg_expr","process_regular_node");Opal.alias(self,"on_block_pass","process_regular_node");Opal.alias(self,"on_module","process_regular_node");Opal.alias(self,"on_class","process_regular_node");Opal.alias(self,"on_sclass","process_regular_node");Opal.defn(self,"$on_def",TMP_Processor_on_def_11=function $$on_def(node){var $a,self=this,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],args_node=$a[1]==null?nil:$a[1],body_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[name,self.$process(args_node),self.$process(body_node)])},TMP_Processor_on_def_11.$$arity=1);Opal.defn(self,"$on_defs",TMP_Processor_on_defs_12=function $$on_defs(node){var $a,self=this,definee_node=nil,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),definee_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],args_node=$a[2]==null?nil:$a[2],body_node=$a[3]==null?nil:$a[3],$a;return node.$updated(nil,[self.$process(definee_node),name,self.$process(args_node),self.$process(body_node)])},TMP_Processor_on_defs_12.$$arity=1);Opal.alias(self,"on_undef","process_regular_node");Opal.alias(self,"on_alias","process_regular_node");Opal.defn(self,"$on_send",TMP_Processor_on_send_13=function $$on_send(node){var $a,self=this,receiver_node=nil,method_name=nil,arg_nodes=nil;$a=[].concat(Opal.to_a(node)),receiver_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],arg_nodes=$slice.call($a,2),$a;if($truthy(receiver_node)){receiver_node=self.$process(receiver_node)}return node.$updated(nil,[receiver_node,method_name].concat(Opal.to_a(self.$process_all(arg_nodes))))},TMP_Processor_on_send_13.$$arity=1);Opal.alias(self,"on_csend","on_send");Opal.alias(self,"on_block","process_regular_node");Opal.alias(self,"on_while","process_regular_node");Opal.alias(self,"on_while_post","process_regular_node");Opal.alias(self,"on_until","process_regular_node");Opal.alias(self,"on_until_post","process_regular_node");Opal.alias(self,"on_for","process_regular_node");Opal.alias(self,"on_return","process_regular_node");Opal.alias(self,"on_break","process_regular_node");Opal.alias(self,"on_next","process_regular_node");Opal.alias(self,"on_redo","process_regular_node");Opal.alias(self,"on_retry","process_regular_node");Opal.alias(self,"on_super","process_regular_node");Opal.alias(self,"on_yield","process_regular_node");Opal.alias(self,"on_defined?","process_regular_node");Opal.alias(self,"on_not","process_regular_node");Opal.alias(self,"on_and","process_regular_node");Opal.alias(self,"on_or","process_regular_node");Opal.alias(self,"on_if","process_regular_node");Opal.alias(self,"on_when","process_regular_node");Opal.alias(self,"on_case","process_regular_node");Opal.alias(self,"on_iflipflop","process_regular_node");Opal.alias(self,"on_eflipflop","process_regular_node");Opal.alias(self,"on_match_current_line","process_regular_node");Opal.alias(self,"on_match_with_lvasgn","process_regular_node");Opal.alias(self,"on_resbody","process_regular_node");Opal.alias(self,"on_rescue","process_regular_node");Opal.alias(self,"on_ensure","process_regular_node");Opal.alias(self,"on_begin","process_regular_node");Opal.alias(self,"on_kwbegin","process_regular_node");Opal.alias(self,"on_preexe","process_regular_node");Opal.alias(self,"on_postexe","process_regular_node");Opal.defn(self,"$process_variable_node",TMP_Processor_process_variable_node_14=function $$process_variable_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_variable_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_var instead.");return self.$on_var(node)},TMP_Processor_process_variable_node_14.$$arity=1);Opal.defn(self,"$process_var_asgn_node",TMP_Processor_process_var_asgn_node_15=function $$process_var_asgn_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_var_asgn_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_vasgn instead.");return self.$on_vasgn(node)},TMP_Processor_process_var_asgn_node_15.$$arity=1);return(Opal.defn(self,"$process_argument_node",TMP_Processor_process_argument_node_16=function $$process_argument_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_argument_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_argument instead.");return self.$on_argument(node)},TMP_Processor_process_argument_node_16.$$arity=1),nil)&&"process_argument_node"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified("::","AST"),"Processor"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/meta"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send;Opal.add_stubs(["$freeze","$to_set","$map","$to_proc"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Meta,self=$Meta=$module($base,"Meta");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"NODE_TYPES",$send(["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","array","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","and_asgn","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","args","def","kwarg","kwoptarg","kwrestarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__"],"map",[],"to_sym".$to_proc()).$to_set().$freeze())})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/buffer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$attr_reader","$empty?","$=~","$==","$[]","$freeze","$match","$find","$encoding","$recognize_encoding","$force_encoding","$nil?","$encode","$open","$read","$source=","$-","$raise","$frozen?","$dup","$reencode_string","$class","$valid_encoding?","$name","$raw_source=","$gsub","$!","$ascii_only?","$!=","$line_for","$+","$[]=","$to_a","$lines","$end_with?","$<<","$each","$chomp!","$fetch","$source_lines","$<=","$>","$size","$line_begins","$new","$-@","$private","$index","$unshift","$length","$respond_to?","$bsearch"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Buffer(){}var self=$Buffer=$klass($base,$super,"Buffer",$Buffer);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Buffer_recognize_encoding_1,TMP_Buffer_reencode_string_2,TMP_Buffer_initialize_3,TMP_Buffer_read_5,TMP_Buffer_source_6,TMP_Buffer_source$eq_7,TMP_Buffer_raw_source$eq_8,TMP_Buffer_slice_9,TMP_Buffer_decompose_position_10,TMP_Buffer_line_for_position_11,TMP_Buffer_column_for_position_12,TMP_Buffer_source_lines_14,TMP_Buffer_source_line_15,TMP_Buffer_line_range_16,TMP_Buffer_last_line_17,TMP_Buffer_line_begins_18,TMP_Buffer_line_for_20,TMP_Buffer_line_for_22;def.name=def.source=def.slice_source=def.first_line=def.line_for_position=def.column_for_position=def.lines=def.line_begins=nil;self.$attr_reader("name","first_line");Opal.const_set($nesting[0],"ENCODING_RE",new RegExp(""+"\\#.*coding\\s*[:=]\\s*"+"("+""+"(utf8-mac)"+"|"+""+"([A-Za-z0-9_-]+?)(-unix|-dos|-mac)"+"|"+"([A-Za-z0-9_-]+)"+")"+""));Opal.defs(self,"$recognize_encoding",TMP_Buffer_recognize_encoding_1=function $$recognize_encoding(string){var $a,$b,self=this,first_line=nil,second_line=nil,encoding_line=nil,result=nil;if($truthy(string["$empty?"]())){return nil}string["$=~"](/^(.*)\n?(.*\n)?/);$a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)],first_line=$a[0],second_line=$a[1],$a;if($truthy(first_line["$=~"](/^\xef\xbb\xbf/))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")}else if(first_line["$[]"](0,2)["$=="]("#!".$force_encoding("ASCII-8BIT").$freeze())){encoding_line=second_line}else{encoding_line=first_line}if($truthy(result=Opal.const_get_relative($nesting,"ENCODING_RE").$match(encoding_line))){return Opal.const_get_relative($nesting,"Encoding").$find($truthy($a=$truthy($b=result["$[]"](2))?$b:result["$[]"](3))?$a:result["$[]"](5))}else{return nil}},TMP_Buffer_recognize_encoding_1.$$arity=1);Opal.defs(self,"$reencode_string",TMP_Buffer_reencode_string_2=function $$reencode_string(input){var self=this,original_encoding=nil,detected_encoding=nil;original_encoding=input.$encoding();detected_encoding=self.$recognize_encoding(input.$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY")));if($truthy(detected_encoding["$nil?"]())){return input.$force_encoding(original_encoding)}else if(detected_encoding["$=="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))){return input}else{return input.$force_encoding(detected_encoding).$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"))}},TMP_Buffer_reencode_string_2.$$arity=1);Opal.defn(self,"$initialize",TMP_Buffer_initialize_3=function $$initialize(name,first_line){var self=this;if(first_line==null){first_line=1}self.name=name;self.source=nil;self.first_line=first_line;self.lines=nil;self.line_begins=nil;self.slice_source=nil;self.line_for_position=$hash2([],{});return self.column_for_position=$hash2([],{})},TMP_Buffer_initialize_3.$$arity=-2);Opal.defn(self,"$read",TMP_Buffer_read_5=function $$read(){var TMP_4,self=this;$send(Opal.const_get_relative($nesting,"File"),"open",[self.name,"rb".$force_encoding("ASCII-8BIT")],(TMP_4=function(io){var self=TMP_4.$$s||this,$writer=nil;if(io==null)io=nil;$writer=[io.$read()];$send(self,"source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return self},TMP_Buffer_read_5.$$arity=0);Opal.defn(self,"$source",TMP_Buffer_source_6=function $$source(){var self=this;if($truthy(self.source["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"RuntimeError"),"Cannot extract source from uninitialized Source::Buffer".$force_encoding("ASCII-8BIT"))}return self.source},TMP_Buffer_source_6.$$arity=0);Opal.defn(self,"$source=",TMP_Buffer_source$eq_7=function(input){var $a,self=this,$writer=nil;if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){if($truthy(input["$frozen?"]())){input=input.$dup()}input=self.$class().$reencode_string(input);if($truthy(input["$valid_encoding?"]())){}else{self.$raise(Opal.const_get_relative($nesting,"EncodingError"),""+"invalid byte sequence in "+input.$encoding().$name())}}$writer=[input];$send(self,"raw_source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Buffer_source$eq_7.$$arity=1);Opal.defn(self,"$raw_source=",TMP_Buffer_raw_source$eq_8=function(input){var $a,$b,$c,$d,self=this;if($truthy(self.source)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Source::Buffer is immutable".$force_encoding("ASCII-8BIT"))}self.source=input.$gsub("\r\n".$force_encoding("ASCII-8BIT").$freeze(),"\n".$force_encoding("ASCII-8BIT").$freeze()).$freeze();if($truthy($truthy($a=$truthy($b=$truthy($c=($d=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)?self.source["$ascii_only?"]()["$!"]():$c)?self.source.$encoding()["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_32LE")):$b)?self.source.$encoding()["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY")):$a)){return self.slice_source=self.source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_32LE"))}else{return nil}},TMP_Buffer_raw_source$eq_8.$$arity=1);Opal.defn(self,"$slice",TMP_Buffer_slice_9=function $$slice(range){var self=this;if($truthy(self.slice_source["$nil?"]())){return self.source["$[]"](range)}else{return self.slice_source["$[]"](range).$encode(self.source.$encoding())}},TMP_Buffer_slice_9.$$arity=1);Opal.defn(self,"$decompose_position",TMP_Buffer_decompose_position_10=function $$decompose_position(position){var $a,$b,self=this,line_no=nil,line_begin=nil;$b=self.$line_for(position),$a=Opal.to_ary($b),line_no=$a[0]==null?nil:$a[0],line_begin=$a[1]==null?nil:$a[1],$b;return[$rb_plus(self.first_line,line_no),$rb_minus(position,line_begin)]},TMP_Buffer_decompose_position_10.$$arity=1);Opal.defn(self,"$line_for_position",TMP_Buffer_line_for_position_11=function $$line_for_position(position){var $a,$b,$c,self=this,$writer=nil,line_no=nil,_=nil;return $truthy($a=self.line_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),line_no=$b[0]==null?nil:$b[0],_=$b[1]==null?nil:$b[1],$c,$rb_plus(self.first_line,line_no))],$send(self.line_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},TMP_Buffer_line_for_position_11.$$arity=1);Opal.defn(self,"$column_for_position",TMP_Buffer_column_for_position_12=function $$column_for_position(position){var $a,$b,$c,self=this,$writer=nil,_=nil,line_begin=nil;return $truthy($a=self.column_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),_=$b[0]==null?nil:$b[0],line_begin=$b[1]==null?nil:$b[1],$c,$rb_minus(position,line_begin))],$send(self.column_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},TMP_Buffer_column_for_position_12.$$arity=1);Opal.defn(self,"$source_lines",TMP_Buffer_source_lines_14=function $$source_lines(){var $a,TMP_13,self=this,lines=nil;return self.lines=$truthy($a=self.lines)?$a:(lines=self.source.$lines().$to_a(),function(){if($truthy(self.source["$end_with?"]("\n".$force_encoding("ASCII-8BIT").$freeze()))){return lines["$<<"]("".$force_encoding("ASCII-8BIT"))}else{return nil}return nil}(),$send(lines,"each",[],(TMP_13=function(line){var self=TMP_13.$$s||this;if(line==null)line=nil;line["$chomp!"]("\n".$force_encoding("ASCII-8BIT").$freeze());return line.$freeze()},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13)),lines.$freeze())},TMP_Buffer_source_lines_14.$$arity=0);Opal.defn(self,"$source_line",TMP_Buffer_source_line_15=function $$source_line(lineno){var self=this;return self.$source_lines().$fetch($rb_minus(lineno,self.first_line)).$dup()},TMP_Buffer_source_line_15.$$arity=1);Opal.defn(self,"$line_range",TMP_Buffer_line_range_16=function $$line_range(lineno){var $a,self=this,index=nil;index=$rb_plus($rb_minus(lineno,self.first_line),1);if($truthy($truthy($a=$rb_le(index,0))?$a:$rb_gt(index,self.$line_begins().$size()))){return self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"Parser::Source::Buffer: range for line "+(""+lineno+" requested, valid line numbers are "+self.first_line+"..")+(""+$rb_minus($rb_plus(self.first_line,self.$line_begins().$size()),1)))}else if(index["$=="](self.$line_begins().$size())){return Opal.const_get_relative($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),self.source.$size())}else{return Opal.const_get_relative($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),$rb_minus(self.$line_begins()["$[]"]($rb_minus(index["$-@"](),1))["$[]"](1),1))}},TMP_Buffer_line_range_16.$$arity=1);Opal.defn(self,"$last_line",TMP_Buffer_last_line_17=function $$last_line(){var self=this;return $rb_minus($rb_plus(self.$line_begins().$size(),self.first_line),1)},TMP_Buffer_last_line_17.$$arity=0);self.$private();Opal.defn(self,"$line_begins",TMP_Buffer_line_begins_18=function $$line_begins(){var $a,self=this,index=nil;if($truthy(self.line_begins)){}else{$a=[[[0,0]],0],self.line_begins=$a[0],index=$a[1],$a;while($truthy(index=self.source.$index("\n".$force_encoding("ASCII-8BIT").$freeze(),index))){index=$rb_plus(index,1);self.line_begins.$unshift([self.line_begins.$length(),index])}}return self.line_begins},TMP_Buffer_line_begins_18.$$arity=0);if($truthy([]["$respond_to?"]("bsearch"))){return(Opal.defn(self,"$line_for",TMP_Buffer_line_for_20=function $$line_for(position){var TMP_19,self=this;return $send(self.$line_begins(),"bsearch",[],(TMP_19=function(line,line_begin){var self=TMP_19.$$s||this;if(line==null)line=nil;if(line_begin==null)line_begin=nil;return $rb_le(line_begin,position)},TMP_19.$$s=self,TMP_19.$$arity=2,TMP_19))},TMP_Buffer_line_for_20.$$arity=1),nil)&&"line_for"}else{return(Opal.defn(self,"$line_for",TMP_Buffer_line_for_22=function $$line_for(position){var TMP_21,self=this;return $send(self.$line_begins(),"find",[],(TMP_21=function(line,line_begin){var self=TMP_21.$$s||this;if(line==null)line=nil;if(line_begin==null)line_begin=nil;return $rb_le(line_begin,position)},TMP_21.$$s=self,TMP_21.$$arity=2,TMP_21))},TMP_Buffer_line_for_22.$$arity=1),nil)&&"line_for"}})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/range"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$<","$raise","$nil?","$freeze","$new","$-","$line_for_position","$alias_method","$column_for_position","$!=","$line","$begin","$end","$inspect","$column","$source_line","$slice","$begin_pos","$end_pos","$include?","$source","$to_a","$decompose_position","$join","$name","$+","$min","$max","$disjoint?","$>=","$==","$is_a?","$source_buffer"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Range_initialize_1,TMP_Range_begin_2,TMP_Range_end_3,TMP_Range_size_4,TMP_Range_line_5,TMP_Range_column_6,TMP_Range_last_line_7,TMP_Range_last_column_8,TMP_Range_column_range_9,TMP_Range_source_line_10,TMP_Range_source_11,TMP_Range_is$q_12,TMP_Range_to_a_13,TMP_Range_to_s_14,TMP_Range_resize_15,TMP_Range_join_16,TMP_Range_intersect_17,TMP_Range_disjoint$q_18,TMP_Range_overlaps$q_19,TMP_Range_empty$q_20,TMP_Range_$eq$eq_21,TMP_Range_inspect_22;def.source_buffer=def.begin_pos=def.end_pos=nil;self.$attr_reader("source_buffer");self.$attr_reader("begin_pos","end_pos");Opal.defn(self,"$initialize",TMP_Range_initialize_1=function $$initialize(source_buffer,begin_pos,end_pos){var $a,self=this;if($truthy($rb_lt(end_pos,begin_pos))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos")}if($truthy(source_buffer["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Parser::Source::Range: source_buffer must not be nil")}self.source_buffer=source_buffer;$a=[begin_pos,end_pos],self.begin_pos=$a[0],self.end_pos=$a[1],$a;return self.$freeze()},TMP_Range_initialize_1.$$arity=3);Opal.defn(self,"$begin",TMP_Range_begin_2=function $$begin(){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.begin_pos,self.begin_pos)},TMP_Range_begin_2.$$arity=0);Opal.defn(self,"$end",TMP_Range_end_3=function $$end(){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.end_pos,self.end_pos)},TMP_Range_end_3.$$arity=0);Opal.defn(self,"$size",TMP_Range_size_4=function $$size(){var self=this;return $rb_minus(self.end_pos,self.begin_pos)},TMP_Range_size_4.$$arity=0);Opal.alias(self,"length","size");Opal.defn(self,"$line",TMP_Range_line_5=function $$line(){var self=this;return self.source_buffer.$line_for_position(self.begin_pos)},TMP_Range_line_5.$$arity=0);self.$alias_method("first_line","line");Opal.defn(self,"$column",TMP_Range_column_6=function $$column(){var self=this;return self.source_buffer.$column_for_position(self.begin_pos)},TMP_Range_column_6.$$arity=0);Opal.defn(self,"$last_line",TMP_Range_last_line_7=function $$last_line(){var self=this;return self.source_buffer.$line_for_position(self.end_pos)},TMP_Range_last_line_7.$$arity=0);Opal.defn(self,"$last_column",TMP_Range_last_column_8=function $$last_column(){var self=this;return self.source_buffer.$column_for_position(self.end_pos)},TMP_Range_last_column_8.$$arity=0);Opal.defn(self,"$column_range",TMP_Range_column_range_9=function $$column_range(){var self=this;if($truthy(self.$begin().$line()["$!="](self.$end().$line()))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+self.$inspect()+" spans more than one line")}return Opal.Range.$new(self.$begin().$column(),self.$end().$column(),true)},TMP_Range_column_range_9.$$arity=0);Opal.defn(self,"$source_line",TMP_Range_source_line_10=function $$source_line(){var self=this;return self.source_buffer.$source_line(self.$line())},TMP_Range_source_line_10.$$arity=0);Opal.defn(self,"$source",TMP_Range_source_11=function $$source(){var self=this;return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(),true))},TMP_Range_source_11.$$arity=0);Opal.defn(self,"$is?",TMP_Range_is$q_12=function($a_rest){var self=this,what;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}what=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){what[$arg_idx-0]=arguments[$arg_idx]}return what["$include?"](self.$source())},TMP_Range_is$q_12.$$arity=-1);Opal.defn(self,"$to_a",TMP_Range_to_a_13=function $$to_a(){var self=this;return Opal.Range.$new(self.begin_pos,self.end_pos,true).$to_a()},TMP_Range_to_a_13.$$arity=0);Opal.defn(self,"$to_s",TMP_Range_to_s_14=function $$to_s(){var $a,$b,self=this,line=nil,column=nil;$b=self.source_buffer.$decompose_position(self.begin_pos),$a=Opal.to_ary($b),line=$a[0]==null?nil:$a[0],column=$a[1]==null?nil:$a[1],$b;return[self.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")},TMP_Range_to_s_14.$$arity=0);Opal.defn(self,"$resize",TMP_Range_resize_15=function $$resize(new_size){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.begin_pos,$rb_plus(self.begin_pos,new_size))},TMP_Range_resize_15.$$arity=1);Opal.defn(self,"$join",TMP_Range_join_16=function $$join(other){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$min(),[self.end_pos,other.$end_pos()].$max())},TMP_Range_join_16.$$arity=1);Opal.defn(self,"$intersect",TMP_Range_intersect_17=function $$intersect(other){var self=this;if($truthy(self["$disjoint?"](other))){return nil}else{return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$max(),[self.end_pos,other.$end_pos()].$min())}},TMP_Range_intersect_17.$$arity=1);Opal.defn(self,"$disjoint?",TMP_Range_disjoint$q_18=function(other){var $a,self=this;return $truthy($a=$rb_ge(self.begin_pos,other.$end_pos()))?$a:$rb_ge(other.$begin_pos(),self.end_pos)},TMP_Range_disjoint$q_18.$$arity=1);Opal.defn(self,"$overlaps?",TMP_Range_overlaps$q_19=function(other){var $a,self=this;return $truthy($a=$rb_lt(self.begin_pos,other.$end_pos()))?$rb_lt(other.$begin_pos(),self.end_pos):$a},TMP_Range_overlaps$q_19.$$arity=1);Opal.defn(self,"$empty?",TMP_Range_empty$q_20=function(){var self=this;return self.begin_pos["$=="](self.end_pos)},TMP_Range_empty$q_20.$$arity=0);Opal.defn(self,"$==",TMP_Range_$eq$eq_21=function(other){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=other["$is_a?"](Opal.const_get_relative($nesting,"Range")))?self.source_buffer["$=="](other.$source_buffer()):$c)?self.begin_pos["$=="](other.$begin_pos()):$b)?self.end_pos["$=="](other.$end_pos()):$a},TMP_Range_$eq$eq_21.$$arity=1);return(Opal.defn(self,"$inspect",TMP_Range_inspect_22=function $$inspect(){var self=this;return""+"#"},TMP_Range_inspect_22.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$alias_method","$new","$associate","$associate_locations","$freeze","$source","$text","$===","$==","$type","$is_a?","$location","$to_s","$expression","$inspect"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Comment(){}var self=$Comment=$klass($base,$super,"Comment",$Comment);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Comment_associate_1,TMP_Comment_associate_locations_2,TMP_Comment_initialize_3,TMP_Comment_type_4,TMP_Comment_inline$q_5,TMP_Comment_document$q_6,TMP_Comment_$eq$eq_7,TMP_Comment_inspect_8;def.location=nil;self.$attr_reader("text");self.$attr_reader("location");self.$alias_method("loc","location");Opal.defs(self,"$associate",TMP_Comment_associate_1=function $$associate(ast,comments){var self=this,associator=nil;associator=Opal.const_get_relative($nesting,"Associator").$new(ast,comments);return associator.$associate()},TMP_Comment_associate_1.$$arity=2);Opal.defs(self,"$associate_locations",TMP_Comment_associate_locations_2=function $$associate_locations(ast,comments){var self=this,associator=nil;associator=Opal.const_get_relative($nesting,"Associator").$new(ast,comments);return associator.$associate_locations()},TMP_Comment_associate_locations_2.$$arity=2);Opal.defn(self,"$initialize",TMP_Comment_initialize_3=function $$initialize(range){var self=this;self.location=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Map").$new(range);self.text=range.$source().$freeze();return self.$freeze()},TMP_Comment_initialize_3.$$arity=1);Opal.defn(self,"$type",TMP_Comment_type_4=function $$type(){var self=this,$case=nil;return function(){$case=self.$text();if(/^#/["$==="]($case)){return"inline"}else if(/^=begin/["$==="]($case)){return"document"}else{return nil}}()},TMP_Comment_type_4.$$arity=0);Opal.defn(self,"$inline?",TMP_Comment_inline$q_5=function(){var self=this;return self.$type()["$=="]("inline")},TMP_Comment_inline$q_5.$$arity=0);Opal.defn(self,"$document?",TMP_Comment_document$q_6=function(){var self=this;return self.$type()["$=="]("document")},TMP_Comment_document$q_6.$$arity=0);Opal.defn(self,"$==",TMP_Comment_$eq$eq_7=function(other){var $a,self=this;return $truthy($a=other["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Comment")))?self.location["$=="](other.$location()):$a},TMP_Comment_$eq$eq_7.$$arity=1);return(Opal.defn(self,"$inspect",TMP_Comment_inspect_8=function $$inspect(){var self=this;return""+"#"},TMP_Comment_inspect_8.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment/associator"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$do_associate","$private","$new","$[]=","$-","$advance_comment","$advance_through_directives","$visit","$process_leading_comments","$location","$<=","$line","$last_line","$is_a?","$each","$children","$loc","$expression","$process_trailing_comments","$==","$type","$current_comment_before?","$associate_and_advance_comment","$current_comment_before_end?","$current_comment_decorates?","$+","$[]","$!","$end_pos","$begin_pos","$<<","$=~","$text"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Associator(){}var self=$Associator=$klass($base,$super,"Associator",$Associator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Associator_initialize_1,TMP_Associator_associate_2,TMP_Associator_associate_locations_3,TMP_Associator_do_associate_5,TMP_Associator_visit_7,TMP_Associator_process_leading_comments_8,TMP_Associator_process_trailing_comments_9,TMP_Associator_advance_comment_10,TMP_Associator_current_comment_before$q_11,TMP_Associator_current_comment_before_end$q_12,TMP_Associator_current_comment_decorates$q_13,TMP_Associator_associate_and_advance_comment_14,TMP_Associator_advance_through_directives_15;def.skip_directives=def.ast=def.mapping=def.current_comment=def.comment_num=def.comments=def.map_using_locations=nil;self.$attr_accessor("skip_directives");Opal.defn(self,"$initialize",TMP_Associator_initialize_1=function $$initialize(ast,comments){var self=this;self.ast=ast;self.comments=comments;return self.skip_directives=true},TMP_Associator_initialize_1.$$arity=2);Opal.defn(self,"$associate",TMP_Associator_associate_2=function $$associate(){var self=this;self.map_using_locations=false;return self.$do_associate()},TMP_Associator_associate_2.$$arity=0);Opal.defn(self,"$associate_locations",TMP_Associator_associate_locations_3=function $$associate_locations(){var self=this;self.map_using_locations=true;return self.$do_associate()},TMP_Associator_associate_locations_3.$$arity=0);self.$private();Opal.defn(self,"$do_associate",TMP_Associator_do_associate_5=function $$do_associate(){var TMP_4,self=this;self.mapping=$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_4=function(h,k){var self=TMP_4.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,[]];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4));self.comment_num=-1;self.$advance_comment();if($truthy(self.skip_directives)){self.$advance_through_directives()}if($truthy(self.ast)){self.$visit(self.ast)}return self.mapping},TMP_Associator_do_associate_5.$$arity=0);Opal.defn(self,"$visit",TMP_Associator_visit_7=function $$visit(node){var $a,TMP_6,self=this,node_loc=nil;self.$process_leading_comments(node);if($truthy(self.current_comment)){}else{return nil}node_loc=node.$location();if($truthy($truthy($a=$rb_le(self.current_comment.$location().$line(),node_loc.$last_line()))?$a:node_loc["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Map"),"Heredoc")))){$send(node.$children(),"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this,$b,$c;if(child==null)child=nil;if($truthy($truthy($b=$truthy($c=child["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"AST"),"Node")))?child.$loc():$c)?child.$loc().$expression():$b)){}else{return nil}return self.$visit(child)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));return self.$process_trailing_comments(node)}else{return nil}},TMP_Associator_visit_7.$$arity=1);Opal.defn(self,"$process_leading_comments",TMP_Associator_process_leading_comments_8=function $$process_leading_comments(node){var $a,self=this;if(node.$type()["$=="]("begin")){return nil}while($truthy(self["$current_comment_before?"](node))){self.$associate_and_advance_comment(node)}},TMP_Associator_process_leading_comments_8.$$arity=1);Opal.defn(self,"$process_trailing_comments",TMP_Associator_process_trailing_comments_9=function $$process_trailing_comments(node){var $a,self=this;while($truthy(self["$current_comment_before_end?"](node))){self.$associate_and_advance_comment(node)}while($truthy(self["$current_comment_decorates?"](node))){self.$associate_and_advance_comment(node)}},TMP_Associator_process_trailing_comments_9.$$arity=1);Opal.defn(self,"$advance_comment",TMP_Associator_advance_comment_10=function $$advance_comment(){var self=this;self.comment_num=$rb_plus(self.comment_num,1);return self.current_comment=self.comments["$[]"](self.comment_num)},TMP_Associator_advance_comment_10.$$arity=0);Opal.defn(self,"$current_comment_before?",TMP_Associator_current_comment_before$q_11=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$begin_pos())},TMP_Associator_current_comment_before$q_11.$$arity=1);Opal.defn(self,"$current_comment_before_end?",TMP_Associator_current_comment_before_end$q_12=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$end_pos())},TMP_Associator_current_comment_before_end$q_12.$$arity=1);Opal.defn(self,"$current_comment_decorates?",TMP_Associator_current_comment_decorates$q_13=function(node){var self=this;if($truthy(self.current_comment["$!"]())){return false}return self.current_comment.$location().$line()["$=="](node.$location().$last_line())},TMP_Associator_current_comment_decorates$q_13.$$arity=1);Opal.defn(self,"$associate_and_advance_comment",TMP_Associator_associate_and_advance_comment_14=function $$associate_and_advance_comment(node){var self=this,key=nil;key=function(){if($truthy(self.map_using_locations)){return node.$location()}else{return node}return nil}();self.mapping["$[]"](key)["$<<"](self.current_comment);return self.$advance_comment()},TMP_Associator_associate_and_advance_comment_14.$$arity=1);return(Opal.defn(self,"$advance_through_directives",TMP_Associator_advance_through_directives_15=function $$advance_through_directives(){var $a,self=this;if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"](/^#!/):$a)){self.$advance_comment()}if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Buffer"),"ENCODING_RE")):$a)){return self.$advance_comment()}else{return nil}},TMP_Associator_advance_through_directives_15.$$arity=0),nil)&&"advance_through_directives"})(Opal.const_get_relative($nesting,"Comment"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=","$==","$[]","$all?","$intersect","$nil?","$max","$sort_by","$push","$join","$first","$max_by","$merge_replacements","$replace_actions","$disjoint?","$<","$process"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Rewriter(){}var self=$Rewriter=$klass($base,$super,"Rewriter",$Rewriter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rewriter_initialize_2,TMP_Rewriter_remove_3,TMP_Rewriter_insert_before_4,TMP_Rewriter_insert_before_multi_5,TMP_Rewriter_insert_after_6,TMP_Rewriter_insert_after_multi_7,TMP_Rewriter_replace_8,TMP_Rewriter_process_10,TMP_Rewriter_transaction_11,TMP_Rewriter_append_14,TMP_Rewriter_record_insertion_15,TMP_Rewriter_record_replace_16,TMP_Rewriter_clobbered_position_mask_17,TMP_Rewriter_adjacent_position_mask_18,TMP_Rewriter_adjacent_insertion_mask_19,TMP_Rewriter_clobbered_insertion$q_21,TMP_Rewriter_adjacent_insertions$q_23,TMP_Rewriter_adjacent_updates$q_25,TMP_Rewriter_replace_compatible_with_insertion$q_26,TMP_Rewriter_can_merge$q_28,TMP_Rewriter_merge_actions_31,TMP_Rewriter_merge_actions$B_32,TMP_Rewriter_merge_replacements_34,TMP_Rewriter_replace_actions_36,TMP_Rewriter_raise_clobber_error_37,TMP_Rewriter_in_transaction$q_38,TMP_Rewriter_active_queue_39,TMP_Rewriter_active_clobber_40,TMP_Rewriter_active_insertions_41,TMP_Rewriter_active_clobber$eq_42,TMP_Rewriter_active_insertions$eq_43,TMP_Rewriter_adjacent$q_44;def.diagnostics=def.insert_before_multi_order=def.insert_after_multi_order=def.source_buffer=def.queue=def.clobber=def.insertions=def.pending_queue=def.pending_clobber=def.pending_insertions=nil;self.$attr_reader("source_buffer");self.$attr_reader("diagnostics");Opal.defn(self,"$initialize",TMP_Rewriter_initialize_2=function $$initialize(source_buffer){var TMP_1,self=this,$writer=nil;self.diagnostics=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Diagnostic"),"Engine").$new();$writer=[$send(self,"lambda",[],(TMP_1=function(diag){var self=TMP_1.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diag==null)diag=nil;return $gvars.stderr.$puts(diag.$render())},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))];$send(self.diagnostics,"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;self.queue=[];self.clobber=0;self.insertions=0;self.insert_before_multi_order=0;return self.insert_after_multi_order=0},TMP_Rewriter_initialize_2.$$arity=1);Opal.defn(self,"$remove",TMP_Rewriter_remove_3=function $$remove(range){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,"".$freeze()))},TMP_Rewriter_remove_3.$$arity=1);Opal.defn(self,"$insert_before",TMP_Rewriter_insert_before_4=function $$insert_before(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$begin(),content))},TMP_Rewriter_insert_before_4.$$arity=2);Opal.defn(self,"$insert_before_multi",TMP_Rewriter_insert_before_multi_5=function $$insert_before_multi(range,content){var self=this;self.insert_before_multi_order=$rb_minus(self.insert_before_multi_order,1);return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$begin(),content,true,self.insert_before_multi_order))},TMP_Rewriter_insert_before_multi_5.$$arity=2);Opal.defn(self,"$insert_after",TMP_Rewriter_insert_after_6=function $$insert_after(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$end(),content))},TMP_Rewriter_insert_after_6.$$arity=2);Opal.defn(self,"$insert_after_multi",TMP_Rewriter_insert_after_multi_7=function $$insert_after_multi(range,content){var self=this;self.insert_after_multi_order=$rb_plus(self.insert_after_multi_order,1);return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$end(),content,true,self.insert_after_multi_order))},TMP_Rewriter_insert_after_multi_7.$$arity=2);Opal.defn(self,"$replace",TMP_Rewriter_replace_8=function $$replace(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,content))},TMP_Rewriter_replace_8.$$arity=2);Opal.defn(self,"$process",TMP_Rewriter_process_10=function $$process(){var TMP_9,self=this,adjustment=nil,source=nil;if($truthy(self["$in_transaction?"]())){self.$raise(""+"Do not call "+self.$class()+"#"+"process"+" inside a transaction")}adjustment=0;source=self.source_buffer.$source().$dup();$send(self.queue.$sort(),"each",[],(TMP_9=function(action){var self=TMP_9.$$s||this,begin_pos=nil,end_pos=nil,$writer=nil;if(action==null)action=nil;begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment);end_pos=$rb_plus(begin_pos,action.$range().$length());$writer=[Opal.Range.$new(begin_pos,end_pos,true),action.$replacement()];$send(source,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));return source},TMP_Rewriter_process_10.$$arity=0);Opal.defn(self,"$transaction",TMP_Rewriter_transaction_11=function $$transaction(){var self=this,$iter=TMP_Rewriter_transaction_11.$$p,$yield=$iter||nil;if($iter)TMP_Rewriter_transaction_11.$$p=null;return function(){try{if($yield!==nil){}else{self.$raise(""+self.$class()+"#"+"transaction"+" requires block")}if($truthy(self["$in_transaction?"]())){self.$raise("Nested transaction is not supported")}self.pending_queue=self.queue.$dup();self.pending_clobber=self.clobber;self.pending_insertions=self.insertions;Opal.yieldX($yield,[]);self.queue=self.pending_queue;self.clobber=self.pending_clobber;self.insertions=self.pending_insertions;return self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()},TMP_Rewriter_transaction_11.$$arity=0);self.$private();Opal.defn(self,"$append",TMP_Rewriter_append_14=function $$append(action){var $a,TMP_12,TMP_13,self=this,range=nil,conflicting=nil,adjacent=nil,insertions=nil;range=action.$range();if($truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]())){return self}if($truthy($truthy($a=action["$allow_multiple_insertions?"]()["$!"]())?conflicting=self["$clobbered_insertion?"](range):$a)){self.$raise_clobber_error(action,[conflicting])}self.$record_insertion(range);if($truthy(adjacent=self["$adjacent_updates?"](range))){conflicting=$send(adjacent,"find",[],(TMP_12=function(a){var self=TMP_12.$$s||this,$b;if(a==null)a=nil;return $truthy($b=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$b},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));if($truthy(conflicting)){self.$raise_clobber_error(action,[conflicting])}self["$merge_actions!"](action,adjacent)}else{self.$active_queue()["$<<"](action)}}else{if($truthy(insertions=self["$adjacent_insertions?"](range))){$send(insertions,"each",[],(TMP_13=function(insertion){var self=TMP_13.$$s||this,$b;if(insertion==null)insertion=nil;if($truthy($truthy($b=range["$overlaps?"](insertion.$range()))?self["$replace_compatible_with_insertion?"](action,insertion)["$!"]():$b)){return self.$raise_clobber_error(action,[insertion])}else{action=self.$merge_actions(action,[insertion]);return self.$active_queue().$delete(insertion)}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13))}if($truthy(adjacent=self["$adjacent_updates?"](range))){if($truthy(self["$can_merge?"](action,adjacent))){self.$record_replace(range);self["$merge_actions!"](action,adjacent)}else{self.$raise_clobber_error(action,adjacent)}}else{self.$record_replace(range);self.$active_queue()["$<<"](action)}}return self},TMP_Rewriter_append_14.$$arity=1);Opal.defn(self,"$record_insertion",TMP_Rewriter_record_insertion_15=function $$record_insertion(range){var self=this,$writer=nil;$writer=[self.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))];$send(self,"active_insertions=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Rewriter_record_insertion_15.$$arity=1);Opal.defn(self,"$record_replace",TMP_Rewriter_record_replace_16=function $$record_replace(range){var self=this,$writer=nil;$writer=[self.$active_clobber()["$|"](self.$clobbered_position_mask(range))];$send(self,"active_clobber=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Rewriter_record_replace_16.$$arity=1);Opal.defn(self,"$clobbered_position_mask",TMP_Rewriter_clobbered_position_mask_17=function $$clobbered_position_mask(range){var self=this;return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())},TMP_Rewriter_clobbered_position_mask_17.$$arity=1);Opal.defn(self,"$adjacent_position_mask",TMP_Rewriter_adjacent_position_mask_18=function $$adjacent_position_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))},TMP_Rewriter_adjacent_position_mask_18.$$arity=1);Opal.defn(self,"$adjacent_insertion_mask",TMP_Rewriter_adjacent_insertion_mask_19=function $$adjacent_insertion_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())},TMP_Rewriter_adjacent_insertion_mask_19.$$arity=1);Opal.defn(self,"$clobbered_insertion?",TMP_Rewriter_clobbered_insertion$q_21=function(insertion){var TMP_20,self=this,insertion_pos=nil;insertion_pos=insertion.$begin_pos();if($truthy(self.$active_insertions()["$&"](1["$<<"](insertion_pos))["$!="](0))){return $send(self.$active_queue(),"find",[],(TMP_20=function(a){var self=TMP_20.$$s||this,$a;if(a==null)a=nil;return $truthy($a=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$a},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20))}else{return nil}},TMP_Rewriter_clobbered_insertion$q_21.$$arity=1);Opal.defn(self,"$adjacent_insertions?",TMP_Rewriter_adjacent_insertions$q_23=function(range){var TMP_22,self=this,result=nil;if($truthy(self.$active_insertions()["$&"](self.$adjacent_insertion_mask(range))["$!="](0))){result=$send(self.$active_queue(),"select",[],(TMP_22=function(a){var self=TMP_22.$$s||this,$a;if(a==null)a=nil;return $truthy($a=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$a},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22));if($truthy(result["$empty?"]())){return nil}else{return result}}else{return nil}},TMP_Rewriter_adjacent_insertions$q_23.$$arity=1);Opal.defn(self,"$adjacent_updates?",TMP_Rewriter_adjacent_updates$q_25=function(range){var TMP_24,self=this;if($truthy(self.$active_clobber()["$&"](self.$adjacent_position_mask(range))["$!="](0))){return $send(self.$active_queue(),"select",[],(TMP_24=function(a){var self=TMP_24.$$s||this;if(a==null)a=nil;return self["$adjacent?"](range,a.$range())},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))}else{return nil}},TMP_Rewriter_adjacent_updates$q_25.$$arity=1);Opal.defn(self,"$replace_compatible_with_insertion?",TMP_Rewriter_replace_compatible_with_insertion$q_26=function(replace,insertion){var $a,$b,self=this,offset=nil;return $truthy($a=$truthy($b=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$b)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$a},TMP_Rewriter_replace_compatible_with_insertion$q_26.$$arity=2);Opal.defn(self,"$can_merge?",TMP_Rewriter_can_merge$q_28=function(action,existing){var TMP_27,self=this,range=nil;range=action.$range();return $send(existing,"all?",[],(TMP_27=function(other){var self=TMP_27.$$s||this,$a,overlap=nil,repl1_offset=nil,repl2_offset=nil,repl1_length=nil,repl2_length=nil,replacement1=nil,replacement2=nil;if(other==null)other=nil;overlap=range.$intersect(other.$range());if($truthy(overlap["$nil?"]())){return true}repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos());repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos());repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max();repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max();replacement1=$truthy($a=action.$replacement()["$[]"](repl1_offset,repl1_length))?$a:"".$freeze();replacement2=$truthy($a=other.$replacement()["$[]"](repl2_offset,repl2_length))?$a:"".$freeze();return replacement1["$=="](replacement2)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27))},TMP_Rewriter_can_merge$q_28.$$arity=2);Opal.defn(self,"$merge_actions",TMP_Rewriter_merge_actions_31=function $$merge_actions(action,existing){var TMP_29,TMP_30,self=this,actions=nil,range=nil;actions=$send(existing.$push(action),"sort_by",[],(TMP_29=function(a){var self=TMP_29.$$s||this;if(a==null)a=nil;return[a.$range().$begin_pos(),a.$range().$end_pos()]},TMP_29.$$s=self,TMP_29.$$arity=1,TMP_29));range=actions.$first().$range().$join($send(actions,"max_by",[],(TMP_30=function(a){var self=TMP_30.$$s||this;if(a==null)a=nil;return a.$range().$end_pos()},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30)).$range());return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,self.$merge_replacements(actions))},TMP_Rewriter_merge_actions_31.$$arity=2);Opal.defn(self,"$merge_actions!",TMP_Rewriter_merge_actions$B_32=function(action,existing){var self=this,new_action=nil;new_action=self.$merge_actions(action,existing);self.$active_queue().$delete(action);return self.$replace_actions(existing,new_action)},TMP_Rewriter_merge_actions$B_32.$$arity=2);Opal.defn(self,"$merge_replacements",TMP_Rewriter_merge_replacements_34=function $$merge_replacements(actions){var TMP_33,self=this,result=nil,prev_act=nil;result="";prev_act=nil;$send(actions,"each",[],(TMP_33=function(act){var self=TMP_33.$$s||this,$a,prev_end=nil,offset=nil;if(act==null)act=nil;if($truthy($truthy($a=prev_act["$!"]())?$a:act.$range()["$disjoint?"](prev_act.$range()))){result["$<<"](act.$replacement())}else{prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max();offset=$rb_minus(prev_end,act.$range().$begin_pos());if($truthy($rb_lt(offset,act.$replacement().$size()))){result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,false)))}}return prev_act=act},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));return result},TMP_Rewriter_merge_replacements_34.$$arity=1);Opal.defn(self,"$replace_actions",TMP_Rewriter_replace_actions_36=function $$replace_actions(old,updated){var TMP_35,self=this;$send(old,"each",[],(TMP_35=function(act){var self=TMP_35.$$s||this;if(act==null)act=nil;return self.$active_queue().$delete(act)},TMP_35.$$s=self,TMP_35.$$arity=1,TMP_35));return self.$active_queue()["$<<"](updated)},TMP_Rewriter_replace_actions_36.$$arity=2);Opal.defn(self,"$raise_clobber_error",TMP_Rewriter_raise_clobber_error_37=function $$raise_clobber_error(action,existing){var self=this,diagnostic=nil;diagnostic=Opal.const_get_relative($nesting,"Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range());self.diagnostics.$process(diagnostic);diagnostic=Opal.const_get_relative($nesting,"Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range());self.diagnostics.$process(diagnostic);return self.$raise(Opal.const_get_relative($nesting,"ClobberingError"),"Parser::Source::Rewriter detected clobbering")},TMP_Rewriter_raise_clobber_error_37.$$arity=2);Opal.defn(self,"$in_transaction?",TMP_Rewriter_in_transaction$q_38=function(){var self=this;return self.pending_queue["$nil?"]()["$!"]()},TMP_Rewriter_in_transaction$q_38.$$arity=0);Opal.defn(self,"$active_queue",TMP_Rewriter_active_queue_39=function $$active_queue(){var $a,self=this;return $truthy($a=self.pending_queue)?$a:self.queue},TMP_Rewriter_active_queue_39.$$arity=0);Opal.defn(self,"$active_clobber",TMP_Rewriter_active_clobber_40=function $$active_clobber(){var $a,self=this;return $truthy($a=self.pending_clobber)?$a:self.clobber},TMP_Rewriter_active_clobber_40.$$arity=0);Opal.defn(self,"$active_insertions",TMP_Rewriter_active_insertions_41=function $$active_insertions(){var $a,self=this;return $truthy($a=self.pending_insertions)?$a:self.insertions},TMP_Rewriter_active_insertions_41.$$arity=0);Opal.defn(self,"$active_clobber=",TMP_Rewriter_active_clobber$eq_42=function(value){var self=this;if($truthy(self.pending_clobber)){return self.pending_clobber=value}else{return self.clobber=value}},TMP_Rewriter_active_clobber$eq_42.$$arity=1);Opal.defn(self,"$active_insertions=",TMP_Rewriter_active_insertions$eq_43=function(value){var self=this;if($truthy(self.pending_insertions)){return self.pending_insertions=value}else{return self.insertions=value}},TMP_Rewriter_active_insertions$eq_43.$$arity=1);return(Opal.defn(self,"$adjacent?",TMP_Rewriter_adjacent$q_44=function(range1,range2){var $a,self=this;return $truthy($a=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$a},TMP_Rewriter_adjacent$q_44.$$arity=2),nil)&&"adjacent?"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter/action"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$include","$attr_reader","$alias_method","$freeze","$<=>","$begin_pos","$range","$zero?","$order","$==","$length","$empty?","$inspect"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Action(){}var self=$Action=$klass($base,$super,"Action",$Action);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Action_initialize_1,TMP_Action_$lt$eq$gt_2,TMP_Action_to_s_3;def.range=def.replacement=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));self.$attr_reader("range","replacement","allow_multiple_insertions","order");self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions");Opal.defn(self,"$initialize",TMP_Action_initialize_1=function $$initialize(range,replacement,allow_multiple_insertions,order){var self=this;if(replacement==null){replacement=""}if(allow_multiple_insertions==null){allow_multiple_insertions=false}if(order==null){order=0}self.range=range;self.replacement=replacement;self.allow_multiple_insertions=allow_multiple_insertions;self.order=order;return self.$freeze()},TMP_Action_initialize_1.$$arity=-2);Opal.defn(self,"$<=>",TMP_Action_$lt$eq$gt_2=function(other){var self=this,result=nil;result=self.$range().$begin_pos()["$<=>"](other.$range().$begin_pos());if($truthy(result["$zero?"]())){}else{return result}return self.$order()["$<=>"](other.$order())},TMP_Action_$lt$eq$gt_2.$$arity=1);return(Opal.defn(self,"$to_s",TMP_Action_to_s_3=function $$to_s(){var $a,self=this;if($truthy(($a=self.range.$length()["$=="](0))?self.replacement["$empty?"]():self.range.$length()["$=="](0))){return"do nothing"}else if(self.range.$length()["$=="](0)){return""+"insert "+self.replacement.$inspect()}else if($truthy(self.replacement["$empty?"]())){return""+"remove "+self.range.$length()+" character(s)"}else{return""+"replace "+self.range.$length()+" character(s) with "+self.replacement.$inspect()}},TMP_Action_to_s_3.$$arity=0),nil)&&"to_s"})(Opal.const_get_relative($nesting,"Rewriter"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$attr_reader","$freeze","$line","$alias_method","$column","$last_line","$last_column","$with","$update_expression","$==","$class","$reduce","$map","$instance_variables","$instance_variable_get","$send","$inject","$to_sym","$[]","$[]=","$-","$protected","$tap","$dup","$to_proc"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Map(){}var self=$Map=$klass($base,$super,"Map",$Map);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Map_initialize_1,TMP_Map_initialize_copy_2,TMP_Map_node$eq_3,TMP_Map_line_4,TMP_Map_column_5,TMP_Map_last_line_6,TMP_Map_last_column_7,TMP_Map_with_expression_9,TMP_Map_$eq$eq_11,TMP_Map_to_hash_13,TMP_Map_with_14,TMP_Map_update_expression_15;def.node=def.expression=nil;self.$attr_reader("node");self.$attr_reader("expression");Opal.defn(self,"$initialize",TMP_Map_initialize_1=function $$initialize(expression){var self=this;return self.expression=expression},TMP_Map_initialize_1.$$arity=1);Opal.defn(self,"$initialize_copy",TMP_Map_initialize_copy_2=function $$initialize_copy(other){var self=this,$iter=TMP_Map_initialize_copy_2.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Map_initialize_copy_2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize_copy",TMP_Map_initialize_copy_2,false),$zuper,$iter);return self.node=nil},TMP_Map_initialize_copy_2.$$arity=1);Opal.defn(self,"$node=",TMP_Map_node$eq_3=function(node){var self=this;self.node=node;self.$freeze();return self.node},TMP_Map_node$eq_3.$$arity=1);Opal.defn(self,"$line",TMP_Map_line_4=function $$line(){var self=this;return self.expression.$line()},TMP_Map_line_4.$$arity=0);self.$alias_method("first_line","line");Opal.defn(self,"$column",TMP_Map_column_5=function $$column(){var self=this;return self.expression.$column()},TMP_Map_column_5.$$arity=0);Opal.defn(self,"$last_line",TMP_Map_last_line_6=function $$last_line(){var self=this;return self.expression.$last_line()},TMP_Map_last_line_6.$$arity=0);Opal.defn(self,"$last_column",TMP_Map_last_column_7=function $$last_column(){var self=this;return self.expression.$last_column()},TMP_Map_last_column_7.$$arity=0);Opal.defn(self,"$with_expression",TMP_Map_with_expression_9=function $$with_expression(expression_l){var TMP_8,self=this;return $send(self,"with",[],(TMP_8=function(map){var self=TMP_8.$$s||this;if(map==null)map=nil;return map.$update_expression(expression_l)},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_Map_with_expression_9.$$arity=1);Opal.defn(self,"$==",TMP_Map_$eq$eq_11=function(other){var $a,TMP_10,self=this;return($a=other.$class()["$=="](self.$class()))?$send(self.$instance_variables(),"map",[],(TMP_10=function(ivar){var self=TMP_10.$$s||this;if(ivar==null)ivar=nil;return self.$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10)).$reduce("&"):other.$class()["$=="](self.$class())},TMP_Map_$eq$eq_11.$$arity=1);Opal.defn(self,"$to_hash",TMP_Map_to_hash_13=function $$to_hash(){var TMP_12,self=this;return $send(self.$instance_variables(),"inject",[$hash2([],{})],(TMP_12=function(hash,ivar){var self=TMP_12.$$s||this,$writer=nil;if(hash==null)hash=nil;if(ivar==null)ivar=nil;if(ivar.$to_sym()["$=="]("@node")){return hash}$writer=[ivar["$[]"]($range(1,-1,false)).$to_sym(),self.$instance_variable_get(ivar)];$send(hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return hash},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12))},TMP_Map_to_hash_13.$$arity=0);self.$protected();Opal.defn(self,"$with",TMP_Map_with_14=function(){var self=this,$iter=TMP_Map_with_14.$$p,block=$iter||nil;if($iter)TMP_Map_with_14.$$p=null;return $send(self.$dup(),"tap",[],block.$to_proc())},TMP_Map_with_14.$$arity=0);return(Opal.defn(self,"$update_expression",TMP_Map_update_expression_15=function $$update_expression(expression_l){var self=this;return self.expression=expression_l},TMP_Map_update_expression_15.$$arity=1),nil)&&"update_expression"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/operator"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Operator(){}var self=$Operator=$klass($base,$super,"Operator",$Operator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Operator_initialize_1;self.$attr_reader("operator");return(Opal.defn(self,"$initialize",TMP_Operator_initialize_1=function $$initialize(operator,expression){var self=this,$iter=TMP_Operator_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Operator_initialize_1.$$p=null;self.operator=operator;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Operator_initialize_1,false),[expression],null)},TMP_Operator_initialize_1.$$arity=2),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/collection"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Collection(){}var self=$Collection=$klass($base,$super,"Collection",$Collection);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Collection_initialize_1;self.$attr_reader("begin");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Collection_initialize_1=function $$initialize(begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Collection_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Collection_initialize_1.$$p=null;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Collection_initialize_1,false),[expression_l],null)},TMP_Collection_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/constant"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Constant(){}var self=$Constant=$klass($base,$super,"Constant",$Constant);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Constant_initialize_1,TMP_Constant_with_operator_3,TMP_Constant_update_operator_4;self.$attr_reader("double_colon");self.$attr_reader("name");self.$attr_reader("operator");Opal.defn(self,"$initialize",TMP_Constant_initialize_1=function $$initialize(double_colon,name,expression){var $a,self=this,$iter=TMP_Constant_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Constant_initialize_1.$$p=null;$a=[double_colon,name],self.double_colon=$a[0],self.name=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Constant_initialize_1,false),[expression],null)},TMP_Constant_initialize_1.$$arity=3);Opal.defn(self,"$with_operator",TMP_Constant_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Constant_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Constant_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Constant_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/variable"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Variable(){}var self=$Variable=$klass($base,$super,"Variable",$Variable);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Variable_initialize_1,TMP_Variable_with_operator_3,TMP_Variable_update_operator_4;self.$attr_reader("name");self.$attr_reader("operator");Opal.defn(self,"$initialize",TMP_Variable_initialize_1=function $$initialize(name_l,expression_l){var self=this,$iter=TMP_Variable_initialize_1.$$p,$yield=$iter||nil;if(expression_l==null){expression_l=name_l}if($iter)TMP_Variable_initialize_1.$$p=null;self.name=name_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Variable_initialize_1,false),[expression_l],null)},TMP_Variable_initialize_1.$$arity=-2);Opal.defn(self,"$with_operator",TMP_Variable_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Variable_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Variable_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Variable_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/keyword"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Keyword(){}var self=$Keyword=$klass($base,$super,"Keyword",$Keyword);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Keyword_initialize_1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Keyword_initialize_1=function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Keyword_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Keyword_initialize_1.$$p=null;self.keyword=keyword_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Keyword_initialize_1,false),[expression_l],null)},TMP_Keyword_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/definition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$join"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Definition(){}var self=$Definition=$klass($base,$super,"Definition",$Definition);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Definition_initialize_1;def.keyword=def.end=nil;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("name");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Definition_initialize_1=function $$initialize(keyword_l,operator_l,name_l,end_l){var self=this,$iter=TMP_Definition_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Definition_initialize_1.$$p=null;self.keyword=keyword_l;self.operator=operator_l;self.name=name_l;self.end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Definition_initialize_1,false),[self.keyword.$join(self.end)],null)},TMP_Definition_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/send"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Send(){}var self=$Send=$klass($base,$super,"Send",$Send);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Send_initialize_1,TMP_Send_with_operator_3,TMP_Send_update_operator_4;self.$attr_reader("dot");self.$attr_reader("selector");self.$attr_reader("operator");self.$attr_reader("begin");self.$attr_reader("end");Opal.defn(self,"$initialize",TMP_Send_initialize_1=function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Send_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Send_initialize_1.$$p=null;self.dot=dot_l;self.selector=selector_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Send_initialize_1,false),[expression_l],null)},TMP_Send_initialize_1.$$arity=5);Opal.defn(self,"$with_operator",TMP_Send_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Send_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Send_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Send_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/condition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Condition(){}var self=$Condition=$klass($base,$super,"Condition",$Condition);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Condition_initialize_1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("else");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Condition_initialize_1=function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a,self=this,$iter=TMP_Condition_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Condition_initialize_1.$$p=null;self.keyword=keyword_l;$a=[begin_l,else_l,end_l],self.begin=$a[0],self["else"]=$a[1],self.end=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Condition_initialize_1,false),[expression_l],null)},TMP_Condition_initialize_1.$$arity=5),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/ternary"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Ternary(){}var self=$Ternary=$klass($base,$super,"Ternary",$Ternary);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Ternary_initialize_1;self.$attr_reader("question");self.$attr_reader("colon");return(Opal.defn(self,"$initialize",TMP_Ternary_initialize_1=function $$initialize(question_l,colon_l,expression_l){var $a,self=this,$iter=TMP_Ternary_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Ternary_initialize_1.$$p=null;$a=[question_l,colon_l],self.question=$a[0],self.colon=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Ternary_initialize_1,false),[expression_l],null)},TMP_Ternary_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/for"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $For(){}var self=$For=$klass($base,$super,"For",$For);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_For_initialize_1;self.$attr_reader("keyword","in");self.$attr_reader("begin","end");return(Opal.defn(self,"$initialize",TMP_For_initialize_1=function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_For_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_For_initialize_1.$$p=null;$a=[keyword_l,in_l],self.keyword=$a[0],self["in"]=$a[1],$a;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_For_initialize_1,false),[expression_l],null)},TMP_For_initialize_1.$$arity=5),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/rescue_body"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RescueBody(){}var self=$RescueBody=$klass($base,$super,"RescueBody",$RescueBody);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RescueBody_initialize_1;self.$attr_reader("keyword");self.$attr_reader("assoc");self.$attr_reader("begin");return(Opal.defn(self,"$initialize",TMP_RescueBody_initialize_1=function $$initialize(keyword_l,assoc_l,begin_l,expression_l){var self=this,$iter=TMP_RescueBody_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_RescueBody_initialize_1.$$p=null;self.keyword=keyword_l;self.assoc=assoc_l;self.begin=begin_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_RescueBody_initialize_1,false),[expression_l],null)},TMP_RescueBody_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/heredoc"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Heredoc(){}var self=$Heredoc=$klass($base,$super,"Heredoc",$Heredoc);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Heredoc_initialize_1;self.$attr_reader("heredoc_body");self.$attr_reader("heredoc_end");return(Opal.defn(self,"$initialize",TMP_Heredoc_initialize_1=function $$initialize(begin_l,body_l,end_l){var self=this,$iter=TMP_Heredoc_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Heredoc_initialize_1.$$p=null;self.heredoc_body=body_l;self.heredoc_end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Heredoc_initialize_1,false),[begin_l],null)},TMP_Heredoc_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ObjcKwarg(){}var self=$ObjcKwarg=$klass($base,$super,"ObjcKwarg",$ObjcKwarg);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ObjcKwarg_initialize_1;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("argument");return(Opal.defn(self,"$initialize",TMP_ObjcKwarg_initialize_1=function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a,self=this,$iter=TMP_ObjcKwarg_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_ObjcKwarg_initialize_1.$$p=null;$a=[keyword_l,operator_l,argument_l],self.keyword=$a[0],self.operator=$a[1],self.argument=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ObjcKwarg_initialize_1,false),[expression_l],null)},TMP_ObjcKwarg_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/syntax_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$message"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SyntaxError_initialize_1;self.$attr_reader("diagnostic");return(Opal.defn(self,"$initialize",TMP_SyntaxError_initialize_1=function $$initialize(diagnostic){var self=this,$iter=TMP_SyntaxError_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_SyntaxError_initialize_1.$$p=null;self.diagnostic=diagnostic;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_SyntaxError_initialize_1,false),[diagnostic.$message()],null)},TMP_SyntaxError_initialize_1.$$arity=1),nil)&&"initialize"})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/clobbering_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ClobberingError(){}var self=$ClobberingError=$klass($base,$super,"ClobberingError",$ClobberingError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"RuntimeError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$freeze","$attr_reader","$include?","$raise","$join","$inspect","$dup","$%","$[]","$==","$line","$last_line","$is?","$+","$message","$render_line","$first_line_only","$last_line_only","$-","$source_buffer","$decompose_position","$end_pos","$>","$private","$source_line","$*","$length","$each","$line_range","$intersect","$column_range","$size","$[]=","$!","$>=","$map","$name","$!=","$resize","$=~","$source","$new","$begin_pos"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Diagnostic(){}var self=$Diagnostic=$klass($base,$super,"Diagnostic",$Diagnostic);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Diagnostic_initialize_1,TMP_Diagnostic_message_2,TMP_Diagnostic_render_3,TMP_Diagnostic_render_line_6,TMP_Diagnostic_first_line_only_7,TMP_Diagnostic_last_line_only_8;def.reason=def["arguments"]=def.location=def.level=def.highlights=nil;Opal.const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze());self.$attr_reader("level","reason","arguments");self.$attr_reader("location","highlights");Opal.defn(self,"$initialize",TMP_Diagnostic_initialize_1=function $$initialize(level,reason,arguments$,location,highlights){var $a,self=this;if(highlights==null){highlights=[]}if($truthy(Opal.const_get_relative($nesting,"LEVELS")["$include?"](level))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+(""+"Diagnostic#level must be one of "+Opal.const_get_relative($nesting,"LEVELS").$join(", ")+"; ")+(""+level.$inspect()+" provided."))}if($truthy(location)){}else{self.$raise("Expected a location")}self.level=level;self.reason=reason;self["arguments"]=($truthy($a=arguments$)?$a:$hash2([],{})).$dup().$freeze();self.location=location;self.highlights=highlights.$dup().$freeze();return self.$freeze()},TMP_Diagnostic_initialize_1.$$arity=-5);Opal.defn(self,"$message",TMP_Diagnostic_message_2=function $$message(){var self=this;return Opal.const_get_relative($nesting,"MESSAGES")["$[]"](self.reason)["$%"](self["arguments"])},TMP_Diagnostic_message_2.$$arity=0);Opal.defn(self,"$render",TMP_Diagnostic_render_3=function $$render(){var $a,$b,self=this,first_line=nil,last_line=nil,num_lines=nil,buffer=nil,last_lineno=nil,last_column=nil;if($truthy($truthy($a=self.location.$line()["$=="](self.location.$last_line()))?$a:self.location["$is?"]("\n"))){return $rb_plus([""+self.location+": "+self.level+": "+self.$message()],self.$render_line(self.location))}else{first_line=self.$first_line_only(self.location);last_line=self.$last_line_only(self.location);num_lines=$rb_plus($rb_minus(self.location.$last_line(),self.location.$line()),1);buffer=self.location.$source_buffer();$b=buffer.$decompose_position(self.location.$end_pos()),$a=Opal.to_ary($b),last_lineno=$a[0]==null?nil:$a[0],last_column=$a[1]==null?nil:$a[1],$b;return $rb_plus($rb_plus([""+self.location+"-"+last_lineno+":"+last_column+": "+self.level+": "+self.$message()],self.$render_line(first_line,$rb_gt(num_lines,2),false)),self.$render_line(last_line,false,true))}},TMP_Diagnostic_render_3.$$arity=0);self.$private();Opal.defn(self,"$render_line",TMP_Diagnostic_render_line_6=function $$render_line(range,ellipsis,range_end){var TMP_4,$a,TMP_5,self=this,source_line=nil,highlight_line=nil,$writer=nil;if(ellipsis==null){ellipsis=false}if(range_end==null){range_end=false}source_line=range.$source_line();highlight_line=$rb_times(" ",source_line.$length());$send(self.highlights,"each",[],(TMP_4=function(highlight){var self=TMP_4.$$s||this,line_range=nil,$writer=nil;if(highlight==null)highlight=nil;line_range=range.$source_buffer().$line_range(range.$line());if($truthy(highlight=highlight.$intersect(line_range))){$writer=[highlight.$column_range(),$rb_times("~",highlight.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));if($truthy(range["$is?"]("\n"))){highlight_line=$rb_plus(highlight_line,"^")}else if($truthy($truthy($a=range_end["$!"]())?$rb_ge(range.$size(),1):$a)){$writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[range.$column_range(),$rb_times("~",range.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(ellipsis)){highlight_line=$rb_plus(highlight_line,"...")}return $send([source_line,highlight_line],"map",[],(TMP_5=function(line){var self=TMP_5.$$s||this;if(line==null)line=nil;return""+range.$source_buffer().$name()+":"+range.$line()+": "+line},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_Diagnostic_render_line_6.$$arity=-2);Opal.defn(self,"$first_line_only",TMP_Diagnostic_first_line_only_7=function $$first_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return range.$resize(range.$source()["$=~"](/\n/))}else{return range}},TMP_Diagnostic_first_line_only_7.$$arity=1);return(Opal.defn(self,"$last_line_only",TMP_Diagnostic_last_line_only_8=function $$last_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(range.$source_buffer(),$rb_plus(range.$begin_pos(),range.$source()["$=~"](/[^\n]*$/)),range.$end_pos())}else{return range}},TMP_Diagnostic_last_line_only_8.$$arity=1),nil)&&"last_line_only"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic/engine"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$ignore?","$call","$raise?","$raise","$protected","$==","$level"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Engine(){}var self=$Engine=$klass($base,$super,"Engine",$Engine);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Engine_initialize_1,TMP_Engine_process_2,TMP_Engine_ignore$q_3,TMP_Engine_raise$q_4;def.consumer=def.ignore_warnings=def.all_errors_are_fatal=nil;self.$attr_accessor("consumer");self.$attr_accessor("all_errors_are_fatal");self.$attr_accessor("ignore_warnings");Opal.defn(self,"$initialize",TMP_Engine_initialize_1=function $$initialize(consumer){var self=this;if(consumer==null){consumer=nil}self.consumer=consumer;self.all_errors_are_fatal=false;return self.ignore_warnings=false},TMP_Engine_initialize_1.$$arity=-1);Opal.defn(self,"$process",TMP_Engine_process_2=function $$process(diagnostic){var self=this;if($truthy(self["$ignore?"](diagnostic))){}else if($truthy(self.consumer)){self.consumer.$call(diagnostic)}if($truthy(self["$raise?"](diagnostic))){self.$raise(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"SyntaxError"),diagnostic)}return self},TMP_Engine_process_2.$$arity=1);self.$protected();Opal.defn(self,"$ignore?",TMP_Engine_ignore$q_3=function(diagnostic){var $a,self=this;return $truthy($a=self.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$a},TMP_Engine_ignore$q_3.$$arity=1);return(Opal.defn(self,"$raise?",TMP_Engine_raise$q_4=function(diagnostic){var $a,$b,self=this;return $truthy($a=$truthy($b=self.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$b)?$a:diagnostic.$level()["$=="]("fatal")},TMP_Engine_raise$q_4.$$arity=1),nil)&&"raise?"})(Opal.const_get_relative($nesting,"Diagnostic"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/static_environment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$reset","$[]","$push","$dup","$pop","$add","$to_sym","$include?"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $StaticEnvironment(){}var self=$StaticEnvironment=$klass($base,$super,"StaticEnvironment",$StaticEnvironment);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StaticEnvironment_initialize_1,TMP_StaticEnvironment_reset_2,TMP_StaticEnvironment_extend_static_3,TMP_StaticEnvironment_extend_dynamic_4,TMP_StaticEnvironment_unextend_5,TMP_StaticEnvironment_declare_6,TMP_StaticEnvironment_declared$q_7;def.stack=def.variables=nil;Opal.defn(self,"$initialize",TMP_StaticEnvironment_initialize_1=function $$initialize(){var self=this;return self.$reset()},TMP_StaticEnvironment_initialize_1.$$arity=0);Opal.defn(self,"$reset",TMP_StaticEnvironment_reset_2=function $$reset(){var self=this;self.variables=Opal.const_get_relative($nesting,"Set")["$[]"]();return self.stack=[]},TMP_StaticEnvironment_reset_2.$$arity=0);Opal.defn(self,"$extend_static",TMP_StaticEnvironment_extend_static_3=function $$extend_static(){var self=this;self.stack.$push(self.variables);self.variables=Opal.const_get_relative($nesting,"Set")["$[]"]();return self},TMP_StaticEnvironment_extend_static_3.$$arity=0);Opal.defn(self,"$extend_dynamic",TMP_StaticEnvironment_extend_dynamic_4=function $$extend_dynamic(){var self=this;self.stack.$push(self.variables);self.variables=self.variables.$dup();return self},TMP_StaticEnvironment_extend_dynamic_4.$$arity=0);Opal.defn(self,"$unextend",TMP_StaticEnvironment_unextend_5=function $$unextend(){var self=this;self.variables=self.stack.$pop();return self},TMP_StaticEnvironment_unextend_5.$$arity=0);Opal.defn(self,"$declare",TMP_StaticEnvironment_declare_6=function $$declare(name){var self=this;self.variables.$add(name.$to_sym());return self},TMP_StaticEnvironment_declare_6.$$arity=1);return(Opal.defn(self,"$declared?",TMP_StaticEnvironment_declared$q_7=function(name){var self=this;return self.variables["$include?"](name.$to_sym())},TMP_StaticEnvironment_declared$q_7.$$arity=1),nil)&&"declared?"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$hash=Opal.hash,$truthy=Opal.truthy,$hash2=Opal.hash2,$range=Opal.range,$gvars=Opal.gvars;Opal.add_stubs(["$attr_accessor","$private","$_lex_trans_keys=","$-","$_lex_key_spans=","$_lex_index_offsets=","$_lex_indicies=","$_lex_trans_targs=","$_lex_trans_actions=","$_lex_to_state_actions=","$_lex_from_state_actions=","$_lex_eof_trans=","$lex_start=","$lex_error=","$lex_en_interp_words=","$lex_en_interp_string=","$lex_en_plain_words=","$lex_en_plain_string=","$lex_en_interp_backslash_delimited=","$lex_en_plain_backslash_delimited=","$lex_en_interp_backslash_delimited_words=","$lex_en_plain_backslash_delimited_words=","$lex_en_regexp_modifiers=","$lex_en_expr_variable=","$lex_en_expr_fname=","$lex_en_expr_endfn=","$lex_en_expr_dot=","$lex_en_expr_arg=","$lex_en_expr_cmdarg=","$lex_en_expr_endarg=","$lex_en_expr_mid=","$lex_en_expr_beg=","$lex_en_expr_labelarg=","$lex_en_expr_value=","$lex_en_expr_end=","$lex_en_leading_dot=","$lex_en_line_comment=","$lex_en_line_begin=","$freeze","$ord","$union","$chars","$attr_reader","$reset","$lex_en_line_begin","$class","$new","$source","$==","$encoding","$unpack","$[]","$lex_en_expr_dot","$lex_en_expr_fname","$lex_en_expr_value","$lex_en_expr_beg","$lex_en_expr_mid","$lex_en_expr_arg","$lex_en_expr_cmdarg","$lex_en_expr_end","$lex_en_expr_endarg","$lex_en_expr_endfn","$lex_en_expr_labelarg","$lex_en_interp_string","$lex_en_interp_words","$lex_en_plain_string","$fetch","$invert","$push","$count","$pop","$any?","$shift","$send","$+","$size","$<=","$===","$<<","$>","$!=","$emit_comment","$literal","$flush_string","$extend_content","$emit","$heredoc?","$saved_herebody_s=","$start_interp_brace","$[]=","$diagnostic","$range","$str_s","$gsub","$tok","$version?","$nest_and_try_closing","$heredoc_e","$pop_literal","$infer_indent_level","$words?","$!","$eof_codepoint?","$extend_space","$extend_string","$>=","$active?","$slice","$chr","$munge_escape?","$regexp?","$match","$scan","$join","$=~","$to_i","$stack_pop","$emit_table","$push_literal","$arg_or_cmdarg","$emit_do","$start_with?","$nil?","$declared?","$force_encoding","$dup","$lexpop","$include?","$inspect","$last","$end_with?","$empty?","$index","$call","$to_f","$Float","$length","$lambda","$Rational","$Complex","$each","$split","$encode_escape","$%","$end_interp_brace_and_try_closing","$saved_herebody_s","$&","$|","$lex_error","$protected","$process","$backslash_delimited?","$interpolate?","$lex_en_interp_backslash_delimited_words","$lex_en_plain_backslash_delimited_words","$lex_en_plain_words","$lex_en_interp_backslash_delimited","$lex_en_plain_backslash_delimited","$dedent_level","$type","$lex_en_regexp_modifiers","$upcase"]);return function($base,$super,$parent_nesting){function $Lexer(){}var self=$Lexer=$klass($base,$super,"Lexer",$Lexer);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Lexer_initialize_1,TMP_Lexer_reset_2,TMP_Lexer_source_buffer$eq_3,TMP_Lexer_encoding_4,TMP_Lexer_state_5,TMP_Lexer_state$eq_6,TMP_Lexer_push_cmdarg_7,TMP_Lexer_pop_cmdarg_8,TMP_Lexer_push_cond_9,TMP_Lexer_pop_cond_10,TMP_Lexer_dedent_level_11,TMP_Lexer_advance_36,TMP_Lexer_eof_codepoint$q_37,TMP_Lexer_version$q_38,TMP_Lexer_stack_pop_39,$a,TMP_Lexer_encode_escape_40,TMP_Lexer_encode_escape_41,TMP_Lexer_tok_42,TMP_Lexer_range_43,TMP_Lexer_emit_44,TMP_Lexer_emit_table_45,TMP_Lexer_emit_do_46,TMP_Lexer_arg_or_cmdarg_47,TMP_Lexer_emit_comment_48,TMP_Lexer_diagnostic_49,TMP_Lexer_push_literal_50,TMP_Lexer_literal_51,TMP_Lexer_pop_literal_52,TMP_Lexer_53,$writer=nil;def.source_buffer=def.source_pts=def.cs=def.cmdarg_stack=def.cmdarg=def.cond_stack=def.cond=def.dedent_level=def.token_queue=def.p=def.herebody_s=def.sharp_s=def.ts=def.top=def.stack=def.te=def.version=def.escape_s=def.escape=def.act=def.static_env=def.lambda_stack=def.paren_nest=def.num_digits_s=def.num_suffix_s=def.num_base=def.num_xfrm=def.newline_s=def.eq_begin_s=def.in_kwarg=def.tokens=def.command_state=def.comments=def.diagnostics=def.literal_stack=nil;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_keys");return self.$private("_lex_trans_keys","_lex_trans_keys=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,26,0,127,58,58,58,58,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,58,58,98,98,101,101,103,103,105,105,110,110,0,122,61,61,0,127,0,127,61,126,0,127,0,127,93,93,0,127,0,127,10,10,10,34,10,10,10,39,0,127,10,96,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,46,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,26,0,35,9,32,36,123,0,127,48,57,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,65,122,0,122,38,61,0,0,42,61,61,61,48,61,48,62,46,46,46,46,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,124,124,60,61,0,0,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,48,101,48,95,46,120,48,114,43,57,48,105,0,0,105,105,0,0,48,114,48,114,48,114,48,114,105,114,0,0,105,105,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,46,9,46,46,46,10,61,10,10,10,101,10,110,10,100,10,10,0]];$send(self,"_lex_trans_keys=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_key_spans");return self.$private("_lex_key_spans","_lex_key_spans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,1,1,1,1,1,1,123,1,128,128,66,128,128,1,128,128,1,25,1,30,128,87,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,128,1,84,84,84,84,84,84,1,1,38,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,0,126,0,55,0,93,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,0,126,0,55,0,93,24,27,93,27,36,88,128,10,27,36,24,88,128,10,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,58,123,24,0,20,1,14,15,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,1,2,0,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,54,48,75,67,15,58,0,1,0,67,67,67,67,10,0,1,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,38,38,1,52,1,92,101,91,1]];$send(self,"_lex_key_spans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_index_offsets");return self.$private("_lex_index_offsets","_lex_index_offsets=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,688,767,861,889,917,964,1065,1093,1127,1129,1223,1302,1406,1535,1664,1793,1922,1969,2048,2127,2221,2249,2277,2324,2425,2453,2487,2489,2583,2662,2766,2895,3024,3153,3282,3411,3540,3669,3798,3927,4056,4185,4314,4443,4471,4600,4602,4604,4733,4735,4737,4739,4741,4870,4999,5128,5257,5386,5515,5644,5773,5902,6031,6160,6289,6418,6547,6676,6805,6934,7063,7065,7067,7069,7071,7081,7083,7085,7087,7089,7091,7093,7095,7097,7226,7228,7357,7359,7361,7363,7365,7367,7369,7493,7495,7624,7753,7820,7949,8078,8080,8209,8338,8340,8366,8368,8399,8528,8616,8663,8742,8821,8915,8943,8971,9018,9119,9147,9181,9183,9277,9356,9460,9589,9718,9847,9976,10105,10234,10236,10238,10367,10383,10394,10405,10416,10427,10556,10558,10643,10728,10813,10898,10983,11068,11070,11072,11111,11113,11210,11235,11236,11238,11240,11242,11267,11269,11271,11365,11390,11479,11608,11619,11741,11742,11743,11752,11761,11762,11763,11857,11858,11859,11860,11954,11956,11957,11958,11959,12053,12100,12194,12288,12289,12290,12384,12431,12433,12527,12652,12680,12708,12736,12737,12841,12945,13049,13050,13177,13304,13431,13558,13685,13686,13813,13940,13941,14068,14096,14223,14350,14477,14604,14731,14858,14985,15112,15239,15240,15367,15368,15424,15425,15519,15608,15737,15748,15870,15871,15872,15881,15890,15891,15892,15986,15987,15988,15989,16083,16085,16086,16087,16088,16182,16229,16323,16417,16418,16419,16513,16560,16562,16656,16781,16809,16837,16865,16866,16970,17074,17178,17179,17306,17433,17560,17687,17814,17815,17942,18069,18070,18197,18225,18352,18479,18606,18733,18860,18987,19114,19241,19368,19369,19496,19497,19553,19554,19648,19673,19701,19795,19823,19860,19949,20078,20089,20117,20154,20179,20268,20397,20408,20442,20467,20526,20585,20615,20744,20755,20884,21013,21142,21271,21296,21297,21364,21366,21368,21497,21626,21637,21639,21641,21643,21645,21647,21650,21652,21719,21721,21724,21853,21982,22111,22240,22369,22498,22627,22629,22631,22760,22889,23018,23147,23276,23405,23534,23663,23792,23921,24050,24179,24308,24437,24566,24695,24824,24953,25082,25211,25340,25469,25598,25727,25856,25985,26114,26243,26372,26501,26630,26759,26888,27017,27146,27275,27404,27533,27662,27791,27920,28049,28178,28307,28436,28565,28694,28823,28952,29081,29210,29339,29468,29597,29726,29855,29984,30113,30242,30371,30500,30629,30758,30887,31016,31145,31274,31403,31532,31661,31790,31919,32048,32177,32306,32435,32564,32693,32822,32951,33080,33209,33338,33340,33469,33598,33623,33625,33627,33629,33630,33759,33888,33890,33891,33916,33917,33984,33986,33988,33990,33992,33994,33997,33999,34066,34068,34071,34200,34202,34204,34206,34334,34463,34526,34580,34634,34635,34689,34744,34746,34748,34750,34775,34776,34905,34906,35023,35024,35026,35028,35029,35083,35085,35087,35089,35114,35116,35245,35247,35249,35251,35253,35382,35511,35640,35641,35770,35772,35897,35922,35924,35926,35928,35929,35931,35932,36061,36190,36215,36216,36218,36220,36222,36223,36352,36481,36610,36739,36868,36997,37126,37255,37384,37513,37642,37771,37900,38029,38158,38287,38416,38545,38550,38551,38618,38620,38621,38622,38623,38648,38650,38675,38742,38744,38746,38805,38929,38954,38955,38976,38978,38993,39009,39011,39013,39041,39170,39299,39301,39302,39369,39372,39373,39374,39375,39376,39443,39572,39583,39585,39587,39589,39592,39594,39596,39599,39601,39604,39605,39607,39674,39677,39801,39802,39931,40060,40182,40183,40184,40193,40202,40203,40204,40298,40299,40300,40301,40395,40397,40398,40399,40400,40494,40541,40635,40729,40730,40731,40825,40872,40874,40968,41093,41121,41149,41177,41178,41282,41386,41490,41491,41618,41745,41872,41999,42126,42127,42254,42381,42382,42509,42537,42664,42791,42918,43045,43172,43299,43426,43553,43680,43807,43934,44061,44188,44315,44316,44317,44373,44374,44503,44632,44761,44762,44764,44765,44894,45023,45152,45281,45410,45539,45668,45797,45926,46055,46184,46313,46442,46571,46700,46829,46958,47087,47216,47345,47474,47603,47732,47861,47990,48119,48248,48377,48506,48635,48764,48893,49022,49151,49280,49409,49538,49667,49796,49925,50054,50183,50312,50441,50570,50699,50828,50957,51086,51215,51344,51473,51602,51731,51860,51989,52118,52247,52376,52505,52572,52701,52830,52959,53088,53217,53346,53475,53604,53733,53862,53991,54120,54249,54378,54507,54636,54765,54894,55023,55152,55281,55410,55539,55668,55797,55798,55863,55957,55982,55983,55985,55987,55989,55990,56119,56248,56273,56274,56276,56278,56280,56281,56410,56539,56541,56542,56567,56568,56635,56637,56639,56768,56897,56908,56910,56935,56936,56937,56958,56961,56974,56976,57031,57080,57156,57224,57240,57299,57300,57302,57303,57371,57439,57507,57575,57586,57587,57589,57590,57658,57726,57794,57862,57930,57998,58066,58134,58204,58272,58342,58410,58412,58415,58417,58484,58486,58489,58618,58747,58748,58877,59006,59135,59264,59393,59522,59523,59525,59526,59655,59784,59913,60042,60171,60300,60429,60558,60687,60816,60945,61074,61203,61332,61461,61590,61719,61848,61977,62106,62235,62364,62493,62622,62751,62880,63009,63138,63267,63396,63525,63654,63783,63912,64041,64170,64299,64384,64513,64642,64771,64900,65029,65158,65287,65416,65545,65674,65803,65932,66061,66190,66319,66448,66577,66706,66835,66964,67093,67222,67351,67480,67609,67738,67867,67996,68125,68254,68383,68512,68641,68770,68899,69028,69157,69286,69415,69544,69673,69802,69931,70060,70189,70318,70447,70576,70705,70834,70963,71092,71221,71350,71479,71608,71737,71866,71995,72124,72253,72382,72511,72640,72769,72770,72835,72836,72875,72914,72916,72969,72971,73064,73166,73258]];$send(self,"_lex_index_offsets=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_indicies");return self.$private("_lex_indicies","_lex_indicies=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,19,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,23,21,18,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,18,28,28,28,18,28,28,28,28,28,29,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,28,28,28,18,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,30,19,18,31,31,31,18,31,31,31,31,31,32,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,33,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,34,31,31,31,31,31,31,35,31,18,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,36,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,37,18,37,18,18,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,40,38,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,42,42,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,41,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,43,45,43,45,45,43,43,45,45,45,46,45,45,47,47,47,47,47,47,47,47,47,47,45,45,45,45,45,45,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,45,43,43,44,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,45,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,45,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,45,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,48,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,50,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,54,52,49,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,49,59,59,59,49,59,59,59,59,59,60,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,59,59,59,49,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,61,50,49,62,62,62,49,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,65,62,62,62,62,62,62,66,62,49,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,67,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,68,49,68,49,49,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,72,72,72,72,72,72,72,73,73,73,73,73,73,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,72,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,74,76,74,76,76,74,74,76,76,76,77,76,76,78,78,78,78,78,78,78,78,78,78,76,76,76,76,76,76,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,76,74,74,75,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,76,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,76,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,76,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,79,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,80,82,80,82,82,80,80,82,82,82,83,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,82,80,80,81,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,82,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,82,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,82,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,85,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,88,87,88,87,87,88,88,87,87,87,89,87,87,90,90,90,90,90,90,90,90,90,90,87,87,87,87,87,87,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,87,88,88,86,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,88,88,87,88,86,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,87,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,91,91,91,91,91,91,91,91,91,91,88,88,88,88,88,88,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,91,88,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,88,91,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,93,93,93,93,93,93,93,93,93,93,88,88,88,88,88,88,88,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,88,88,88,88,93,88,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,88,88,88,88,88,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,95,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,95,96,97,97,97,96,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,96,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,100,98,98,98,98,98,98,98,98,98,98,98,98,98,98,99,99,99,99,99,99,99,99,99,99,101,98,98,98,98,100,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,98,98,98,98,99,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,98,98,98,98,98,99,101,98,98,102,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,105,103,103,103,103,103,103,103,103,103,103,103,103,103,103,104,104,104,104,104,104,104,104,104,104,106,103,103,103,103,105,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,103,103,103,103,104,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,103,103,103,103,103,104,106,103,108,107,109,107,110,107,107,107,107,107,107,107,107,107,107,112,107,112,112,112,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,112,107,107,107,107,113,114,107,115,107,116,117,118,119,120,113,107,107,107,107,107,107,107,107,107,107,121,107,122,118,123,124,107,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,125,126,118,127,111,107,111,111,111,111,111,111,111,111,128,111,111,111,111,111,111,111,111,129,111,111,130,111,131,111,111,111,132,133,107,127,107,111,107,107,107,107,107,107,107,107,107,134,107,134,134,134,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,134,107,107,107,107,135,136,107,137,107,138,139,140,141,142,135,107,107,107,107,107,107,107,107,107,107,143,107,144,140,145,146,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,147,148,140,109,104,107,104,104,104,104,104,104,104,104,149,104,104,104,104,104,104,104,104,150,104,104,151,104,152,104,104,104,153,154,107,109,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,156,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,157,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,158,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,159,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,160,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,161,104,104,104,104,104,104,104,162,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,163,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,164,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,155,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,165,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,166,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,167,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,159,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,169,168,170,168,171,168,140,168,172,168,168,168,168,168,168,168,173,168,174,168,175,168,140,168,176,168,140,168,177,168,171,168,179,178,180,180,180,180,180,180,180,180,180,182,180,182,182,182,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,182,180,180,180,180,180,180,180,183,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,184,180,180,181,180,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,180,180,180,180,181,186,180,180,180,180,180,180,180,180,180,180,188,180,188,188,188,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,188,180,180,180,180,180,180,180,189,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,180,190,180,180,187,180,187,187,187,191,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,180,180,180,180,180,187,192,193,195,194,196,194,197,194,198,194,199,194,200,201,201,201,200,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,200,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,203,192,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,206,204,206,204,206,206,204,204,206,206,206,207,206,206,208,208,208,208,208,208,208,208,208,208,206,206,206,206,206,206,206,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,206,204,204,205,206,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,206,204,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,206,206,206,206,206,206,206,206,206,204,204,204,204,204,204,204,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,204,204,204,204,206,204,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,204,204,204,204,204,206,209,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,210,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,205,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,204,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,205,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,204,205,209,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,212,204,204,204,204,213,204,204,204,204,204,214,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,203,204,204,204,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,211,215,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,214,204,211,217,217,217,217,217,217,217,217,217,217,218,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,217,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,217,217,217,216,217,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,216,220,219,204,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,221,212,218,217,204,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,221,213,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,212,204,204,204,204,213,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,211,215,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,204,211,204,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,221,215,222,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,224,223,222,225,225,225,222,225,225,225,225,225,226,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,227,225,222,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,228,225,222,229,229,229,222,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,222,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,222,232,232,232,222,232,232,232,232,232,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,222,232,222,232,232,232,222,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,222,232,222,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,234,223,222,235,235,235,222,235,235,235,235,235,236,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,222,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,237,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,238,235,235,235,235,235,235,239,235,222,235,235,235,222,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,222,235,240,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,241,222,241,222,222,242,242,242,222,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,222,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,244,242,222,225,225,225,222,225,225,225,225,225,226,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,228,225,222,245,245,245,222,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,222,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246,246,246,246,246,246,246,245,245,245,245,245,245,245,246,246,246,246,246,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246,246,246,245,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,247,247,247,247,247,247,247,247,247,247,249,192,192,250,192,248,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,247,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,192,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,251,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,247,247,252,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,247,247,247,247,247,247,247,253,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,253,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,256,254,254,254,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,257,254,254,254,254,256,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,255,257,254,254,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,260,260,260,260,260,260,260,260,260,260,259,259,259,259,259,259,259,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,259,259,259,259,260,259,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,259,259,259,259,259,260,262,261,262,261,261,263,263,263,263,263,263,263,263,263,263,261,263,263,263,263,263,263,263,263,263,263,261,264,264,264,264,264,264,264,264,264,264,261,266,266,266,266,266,266,266,266,266,266,265,267,267,267,267,267,267,267,267,267,267,265,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,268,268,268,268,268,268,268,268,268,268,259,259,259,259,259,259,259,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,259,259,259,259,268,259,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,259,259,259,259,259,268,269,265,270,271,270,270,270,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,270,265,265,272,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,273,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,274,265,275,276,275,275,275,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,275,265,265,277,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,278,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,279,265,281,282,281,281,281,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,281,280,280,283,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,284,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,285,280,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,290,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,292,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,287,293,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,290,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,294,265,271,265,296,295,296,296,296,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,296,295,295,295,295,295,297,295,295,295,295,295,295,295,298,295,299,295,301,300,300,300,301,300,300,300,300,302,303,302,302,302,300,300,300,300,300,300,300,300,300,300,300,300,301,300,300,300,300,300,302,300,300,304,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,305,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,306,300,300,307,300,302,308,302,302,302,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,302,308,309,310,311,312,313,315,314,317,318,317,317,317,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,317,316,303,314,319,314,321,320,320,320,321,320,320,320,320,322,323,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,321,320,320,320,320,320,322,320,320,324,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,325,320,322,326,322,322,322,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,322,326,328,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,329,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,330,327,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,13,13,13,13,13,13,13,13,13,13,331,331,331,331,331,331,331,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,331,331,331,331,13,331,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,331,331,331,331,331,13,16,16,16,16,16,16,16,16,16,16,331,334,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,335,335,335,335,335,335,335,335,333,333,333,333,333,333,333,333,333,333,333,336,333,333,333,333,333,333,333,333,333,337,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,338,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,339,333,333,340,333,341,342,344,344,344,344,344,344,344,344,343,345,345,345,345,345,345,345,345,343,343,346,346,38,38,38,346,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,346,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,347,38,348,349,350,350,38,38,38,350,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,350,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,351,38,37,350,352,353,354,354,25,25,25,354,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,354,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,355,25,350,19,19,19,350,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,350,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,356,19,346,25,25,25,346,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,346,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,346,357,357,357,346,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,346,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,358,357,359,360,360,357,357,357,360,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,360,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,361,357,360,19,19,19,360,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,360,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,356,19,362,360,360,25,25,25,360,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,360,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,363,364,364,364,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,365,365,365,365,365,365,365,365,365,365,364,364,364,364,364,364,364,365,365,365,365,365,365,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,365,365,365,365,365,365,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,366,364,363,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,363,367,363,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,363,368,363,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,363,369,363,363,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,370,370,370,370,370,370,370,370,370,370,367,367,367,367,367,367,367,370,370,370,370,370,370,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,370,370,370,370,370,370,367,363,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,371,371,371,371,371,371,371,371,371,371,368,368,368,368,368,368,368,371,371,371,371,371,371,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,371,371,371,371,371,371,368,363,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,372,372,372,372,372,372,372,372,372,372,369,369,369,369,369,369,369,372,372,372,372,372,372,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,372,372,372,372,372,372,369,373,376,375,375,375,376,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,376,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,377,377,377,377,377,377,377,377,377,377,375,375,375,375,375,375,375,377,377,377,377,377,377,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,377,377,377,377,377,377,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,367,375,376,378,378,378,376,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,376,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379,379,379,379,379,379,379,379,378,378,378,378,378,378,378,379,379,379,379,379,379,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379,379,379,379,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,380,378,376,381,381,381,376,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,376,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,382,382,382,382,382,382,382,382,382,382,381,381,381,381,381,381,381,382,382,382,382,382,382,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,382,382,382,382,382,382,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,383,381,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,385,385,385,385,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,385,385,385,385,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,386,376,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,376,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,374,385,374,376,382,382,382,376,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,376,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,369,382,374,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,376,378,378,378,376,378,378,378,378,387,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,376,378,378,378,378,378,387,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,388,388,388,388,388,388,388,388,388,388,378,378,378,378,378,378,378,388,388,388,388,388,388,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,388,388,388,388,388,388,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,389,378,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,390,390,390,390,390,390,390,390,390,390,384,384,384,384,384,384,384,390,390,390,390,390,390,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,390,390,390,390,390,390,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,391,391,391,391,391,391,391,391,391,391,384,384,384,384,384,384,384,391,391,391,391,391,391,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,391,391,391,391,391,391,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,392,392,392,392,392,392,392,392,392,392,384,384,384,384,384,384,384,392,392,392,392,392,392,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,392,392,392,392,392,392,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,393,393,393,393,393,393,393,393,393,393,384,384,384,384,384,384,384,393,393,393,393,393,393,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,393,393,393,393,393,393,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,394,394,394,394,394,394,394,394,394,394,384,384,384,384,384,384,384,394,394,394,394,394,394,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,394,394,394,394,394,394,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,395,395,395,395,395,395,395,395,395,395,384,384,384,384,384,384,384,395,395,395,395,395,395,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,395,395,395,395,395,395,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,396,396,396,396,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,396,396,396,396,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,386,384,397,376,381,381,381,376,381,381,381,381,387,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,376,381,381,381,381,381,387,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,392,392,392,392,392,392,392,392,392,392,381,381,381,381,381,381,381,392,392,392,392,392,392,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,392,392,392,392,392,392,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,389,381,398,400,400,400,400,400,400,400,400,400,400,399,399,399,399,399,399,399,400,400,400,400,400,400,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,400,400,400,400,400,400,399,399,402,401,401,401,402,401,401,401,401,401,403,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,402,401,401,401,401,401,401,401,401,404,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,405,401,407,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,408,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,409,406,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,44,44,44,44,44,44,44,44,44,44,410,410,410,410,410,410,410,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,410,410,410,410,44,410,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,410,410,410,410,410,44,47,47,47,47,47,47,47,47,47,47,410,413,412,412,412,413,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,413,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,414,414,414,414,414,414,414,414,412,412,412,412,412,412,412,412,412,412,412,415,412,412,412,412,412,412,412,412,412,416,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,417,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,418,412,412,419,412,420,421,423,423,423,423,423,423,423,423,422,424,424,424,424,424,424,424,424,422,422,425,425,69,69,69,425,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,425,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,426,69,427,428,429,429,69,69,69,429,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,429,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,430,69,68,429,431,432,433,433,56,56,56,433,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,433,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,434,56,429,50,50,50,429,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,429,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,435,50,425,56,56,56,425,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,425,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,425,436,436,436,425,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,425,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,437,436,438,439,439,436,436,436,439,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,439,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,440,436,439,50,50,50,439,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,439,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,435,50,441,439,439,56,56,56,439,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,439,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,442,443,443,443,442,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,442,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,444,444,444,444,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,445,443,442,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,442,446,442,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,442,447,442,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,442,448,442,442,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,449,449,449,449,449,449,449,449,449,449,446,446,446,446,446,446,446,449,449,449,449,449,449,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,449,449,449,449,449,449,446,442,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,450,450,450,450,450,450,450,450,450,450,447,447,447,447,447,447,447,450,450,450,450,450,450,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,450,450,450,450,450,450,447,442,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,451,451,451,451,451,451,451,451,451,451,448,448,448,448,448,448,448,451,451,451,451,451,451,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,451,451,451,451,451,451,448,452,455,454,454,454,455,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,455,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,456,456,456,456,456,456,456,456,456,456,454,454,454,454,454,454,454,456,456,456,456,456,456,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,456,456,456,456,456,456,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,446,454,455,457,457,457,455,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,455,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458,458,458,458,458,458,458,458,457,457,457,457,457,457,457,458,458,458,458,458,458,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458,458,458,458,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,459,457,455,460,460,460,455,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,455,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,461,461,461,461,461,461,461,461,461,461,460,460,460,460,460,460,460,461,461,461,461,461,461,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,461,461,461,461,461,461,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,462,460,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,465,455,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,465,464,455,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,453,464,453,455,461,461,461,455,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,455,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,448,461,453,448,448,448,453,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,453,448,455,457,457,457,455,457,457,457,457,466,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,455,457,457,457,457,457,466,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,467,467,467,467,467,467,467,467,467,467,457,457,457,457,457,457,457,467,467,467,467,467,467,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,467,467,467,467,467,467,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,468,457,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,469,469,469,469,469,469,469,469,469,469,463,463,463,463,463,463,463,469,469,469,469,469,469,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,469,469,469,469,469,469,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,470,470,470,470,470,470,470,470,470,470,463,463,463,463,463,463,463,470,470,470,470,470,470,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,470,470,470,470,470,470,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,471,471,471,471,471,471,471,471,471,471,463,463,463,463,463,463,463,471,471,471,471,471,471,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,471,471,471,471,471,471,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,472,472,472,472,472,472,472,472,472,472,463,463,463,463,463,463,463,472,472,472,472,472,472,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,472,472,472,472,472,472,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,473,473,473,473,473,473,473,473,473,473,463,463,463,463,463,463,463,473,473,473,473,473,473,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,473,473,473,473,473,473,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,474,474,474,474,474,474,474,474,474,474,463,463,463,463,463,463,463,474,474,474,474,474,474,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,474,474,474,474,474,474,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,475,475,475,475,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,475,475,475,475,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,465,463,476,455,460,460,460,455,460,460,460,460,466,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,455,460,460,460,460,460,466,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,471,471,471,471,471,471,471,471,471,471,460,460,460,460,460,460,460,471,471,471,471,471,471,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,471,471,471,471,471,471,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,468,460,477,479,479,479,479,479,479,479,479,479,479,478,478,478,478,478,478,478,479,479,479,479,479,479,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,479,479,479,479,479,479,478,478,481,480,480,480,481,480,480,480,480,482,483,482,482,482,480,480,480,480,480,480,480,480,480,480,480,480,481,480,480,480,480,480,482,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,484,480,482,485,482,482,482,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,482,485,486,487,487,487,486,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,486,487,489,488,488,488,489,488,488,488,488,488,490,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,489,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,491,488,492,493,493,493,492,493,493,493,493,493,494,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,492,493,496,495,495,495,496,495,495,495,495,495,497,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,496,495,495,495,495,495,495,495,495,498,495,500,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,501,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,502,499,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,75,75,75,75,75,75,75,75,75,75,503,503,503,503,503,503,503,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,503,503,503,503,75,503,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,503,503,503,503,503,75,78,78,78,78,78,78,78,78,78,78,503,505,504,504,504,505,504,504,504,504,504,506,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,505,504,508,507,507,507,508,507,507,507,507,509,510,509,509,509,507,507,507,507,507,507,507,507,507,507,507,507,508,507,507,507,507,507,509,507,507,511,507,509,512,509,509,509,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,509,512,514,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,515,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,516,513,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,81,81,81,81,81,81,81,81,81,81,517,517,517,517,517,517,517,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,517,517,517,517,81,517,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,517,517,517,517,517,81,84,84,84,84,84,84,84,84,84,84,517,519,518,518,518,519,518,518,518,518,520,521,520,520,520,518,518,518,518,518,518,518,518,518,518,518,518,519,518,518,518,518,518,520,518,520,522,520,520,520,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,520,522,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,523,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,526,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,527,88,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,86,86,86,86,86,86,86,86,86,86,528,528,528,528,528,528,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,528,528,528,528,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,528,528,528,528,528,86,90,90,90,90,90,90,90,90,90,90,528,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,91,91,91,91,91,91,91,91,91,91,529,529,529,529,529,529,529,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,529,529,529,529,91,529,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,529,529,529,529,529,91,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,93,93,93,93,93,93,93,93,93,93,530,530,530,530,530,530,530,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,530,530,530,530,93,530,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,530,530,530,530,530,93,532,533,533,533,532,533,533,533,533,534,535,534,534,534,533,533,533,533,533,533,533,533,533,533,533,533,532,533,533,533,533,533,534,536,533,537,538,539,540,533,533,533,541,542,533,542,533,543,533,533,533,533,533,533,533,533,533,533,544,533,545,546,547,533,533,548,549,548,548,550,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,551,552,533,543,553,543,554,555,556,557,558,559,531,531,560,531,531,531,561,562,563,531,531,564,565,566,567,531,568,531,569,531,533,570,533,542,533,531,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,572,571,571,571,571,571,571,571,571,571,571,571,571,571,571,531,531,531,531,531,531,531,531,531,531,571,571,571,572,571,572,571,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,571,571,571,571,531,571,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,571,571,571,571,571,531,534,573,534,534,534,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,534,573,574,543,575,575,543,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,543,575,576,577,578,579,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,95,95,580,95,580,95,95,580,580,95,95,95,582,95,95,583,583,583,583,583,583,583,583,583,583,95,95,95,95,95,95,95,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,580,95,580,580,581,95,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,580,580,580,95,580,581,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,581,581,581,581,581,581,581,581,581,581,584,584,584,584,584,584,584,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,584,584,584,584,581,584,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,584,584,584,584,584,581,583,583,583,583,583,583,583,583,583,583,584,585,575,543,575,543,575,543,575,587,586,543,588,575,543,575,589,543,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,543,580,543,575,543,543,575,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,572,571,571,571,571,571,571,571,571,571,571,571,571,571,571,548,548,548,548,548,548,548,548,548,548,571,571,571,572,571,572,571,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,571,571,571,571,548,571,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,571,571,571,571,571,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,591,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,592,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,593,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,548,548,548,548,548,594,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,548,548,548,548,548,595,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,594,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,589,580,535,580,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,597,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,598,599,531,531,531,531,531,600,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,601,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,602,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,603,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,604,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,605,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,606,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,607,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,608,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,609,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,610,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,611,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,607,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,612,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,611,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,613,531,614,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,615,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,616,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,617,531,531,531,531,531,531,531,531,531,531,531,531,618,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,619,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,620,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,621,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,622,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,623,531,531,531,531,531,531,531,531,531,531,624,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,626,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,616,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,627,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,628,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,572,629,629,629,629,629,629,629,629,629,629,629,629,629,629,531,531,531,531,531,531,531,531,531,531,629,629,629,572,629,572,629,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,629,629,629,629,531,629,531,531,531,531,531,531,531,531,630,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,629,629,629,629,629,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,631,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,632,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,633,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,634,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,635,531,636,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,637,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,609,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,639,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,640,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,641,531,531,531,531,531,531,531,531,531,531,531,531,531,563,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,623,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,609,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,642,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,643,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,644,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,645,531,531,531,646,531,531,531,531,531,647,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,647,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,648,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,649,531,531,531,531,531,531,531,531,531,531,531,531,531,531,650,651,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,652,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,653,531,531,654,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,620,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,655,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,656,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,657,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,563,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,658,531,531,531,531,531,531,531,531,531,652,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,620,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,659,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,660,531,531,531,531,531,531,531,661,531,531,531,531,531,531,531,662,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,626,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,646,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,663,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,620,531,531,531,644,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,664,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,665,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,614,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,543,575,667,668,668,668,667,668,668,668,668,669,668,669,669,669,668,668,668,668,668,668,668,668,668,668,668,668,667,668,668,668,668,668,669,668,668,670,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,668,671,668,668,666,668,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,668,668,668,668,668,666,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,100,672,672,672,672,672,672,672,672,672,672,672,672,672,672,99,99,99,99,99,99,99,99,99,99,101,672,672,672,672,100,672,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,672,672,672,672,99,672,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,672,672,672,672,672,99,669,673,669,669,669,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,669,673,674,675,676,677,678,672,679,681,682,682,682,681,682,682,682,682,683,684,683,683,683,682,682,682,682,682,682,682,682,682,682,682,682,681,682,682,682,682,682,683,685,682,686,682,687,688,682,682,682,689,690,682,690,682,687,682,682,682,682,682,682,682,682,682,682,682,682,691,692,693,682,682,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,695,696,682,687,680,687,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,682,697,682,690,682,680,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,699,698,698,698,698,698,698,698,698,698,698,698,698,698,698,680,680,680,680,680,680,680,680,680,680,698,698,698,698,698,699,698,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,698,698,698,698,680,698,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,698,698,698,698,698,680,701,700,702,683,703,683,683,683,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,683,703,704,687,705,705,687,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,687,705,706,707,708,709,687,705,687,705,687,705,687,710,705,687,705,712,687,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,687,711,687,705,687,687,705,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,699,713,713,713,713,713,713,713,713,713,713,713,713,713,713,694,694,694,694,694,694,694,694,694,694,713,713,713,713,713,699,713,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,713,713,713,713,694,713,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,713,713,713,713,713,694,712,711,684,711,687,705,715,714,714,714,715,714,714,714,714,716,717,716,716,716,714,714,714,714,714,714,714,714,714,714,714,714,715,714,714,714,714,714,716,714,714,718,714,109,719,714,720,714,721,109,140,722,142,109,714,714,714,714,714,714,714,714,714,714,723,714,724,140,725,726,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,140,727,140,109,714,714,714,714,714,714,714,714,714,714,728,714,714,714,714,714,714,714,714,729,714,714,730,714,731,714,714,714,153,154,714,109,714,732,732,732,732,732,732,732,732,732,716,732,716,716,716,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,716,732,732,732,732,135,136,732,137,732,138,139,140,141,142,135,732,732,732,732,732,732,732,732,732,732,143,732,144,140,145,146,732,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,147,148,140,109,104,732,104,104,104,104,104,104,104,104,149,104,104,104,104,104,104,104,104,150,104,104,151,104,152,104,104,104,153,154,732,109,732,104,733,734,734,734,733,734,734,734,734,140,735,140,140,140,734,734,734,734,734,734,734,734,734,734,734,734,733,734,734,734,734,734,140,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,140,734,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,109,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,736,140,735,140,140,140,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,140,737,737,737,737,737,737,737,737,737,738,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,140,737,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,140,103,739,733,140,733,741,740,743,744,743,743,743,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,743,742,745,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,105,733,733,733,733,733,733,733,733,733,733,733,733,733,733,104,104,104,104,104,104,104,104,104,104,106,733,733,733,733,105,733,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,733,733,733,733,104,733,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,733,733,733,733,733,104,746,140,735,140,140,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,109,733,747,748,749,750,751,752,140,735,140,140,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,109,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,140,740,109,753,109,753,754,755,754,754,754,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,754,742,756,753,757,757,757,757,757,757,757,757,757,112,757,112,112,112,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,112,757,757,757,757,113,114,757,115,757,116,117,118,119,120,113,757,757,757,757,757,757,757,757,757,757,121,757,122,118,123,124,757,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,125,126,118,127,111,757,111,111,111,111,111,111,111,111,128,111,111,111,111,111,111,111,111,129,111,111,130,111,131,111,111,111,132,133,757,127,757,111,140,753,758,753,759,753,760,753,761,179,179,179,761,179,179,179,179,762,179,762,762,762,179,179,179,179,179,179,179,179,179,179,179,179,761,179,179,179,179,179,762,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,179,763,179,179,181,179,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,179,179,179,179,179,181,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,764,178,178,178,178,178,178,178,178,178,178,178,178,178,178,181,181,181,181,181,181,181,181,181,181,179,178,178,178,178,764,178,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,178,178,178,178,181,178,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,178,178,178,178,178,181,765,765,765,765,765,765,765,765,765,182,765,182,182,182,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,182,765,765,765,765,765,765,765,183,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,184,765,765,181,765,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,765,181,766,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,764,765,765,765,765,765,765,765,765,765,765,765,765,765,765,181,181,181,181,181,181,181,181,181,181,179,765,765,765,765,764,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,181,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,767,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,765,181,186,765,769,768,768,768,769,768,768,768,768,770,768,770,770,770,768,768,768,768,768,768,768,768,768,768,768,768,769,768,768,768,768,768,770,768,768,771,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,772,768,768,768,768,768,768,768,773,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,774,768,770,775,770,770,770,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,770,775,776,777,778,779,781,780,782,783,780,784,786,787,787,787,786,787,787,787,787,788,789,788,788,788,787,787,787,787,787,787,787,787,787,787,787,787,786,787,787,787,787,787,788,787,787,790,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,787,791,787,787,785,787,785,785,785,785,785,785,785,785,792,785,785,785,785,785,785,785,785,793,785,785,794,785,795,785,785,785,787,787,787,787,787,785,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,785,785,785,785,785,785,785,785,785,785,796,796,796,796,796,796,796,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,796,796,796,796,785,796,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,796,796,796,796,796,785,788,797,788,788,788,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,788,797,798,799,800,801,802,804,803,805,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,808,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,809,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,810,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,811,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,812,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,813,785,785,785,785,785,785,785,814,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,815,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,816,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,807,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,817,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,818,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,819,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,811,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,821,203,203,203,821,203,203,203,203,822,823,822,822,822,203,203,203,203,203,203,203,203,203,203,203,203,821,203,203,203,203,203,822,824,203,825,203,826,827,203,828,203,829,830,203,831,832,833,203,203,203,203,203,203,203,203,203,203,834,203,835,836,837,838,203,839,840,839,839,841,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,842,843,203,844,845,203,846,847,848,849,850,851,820,820,852,820,820,820,853,854,855,820,820,856,857,858,859,820,860,820,861,820,862,863,203,844,203,820,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,820,820,820,820,820,820,820,820,820,820,249,192,192,250,192,248,192,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,192,192,192,192,820,192,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,192,192,192,192,192,820,865,864,864,866,864,867,869,870,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,871,868,873,872,874,875,876,822,877,822,822,822,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,822,877,879,878,881,882,881,881,881,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,881,880,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,203,883,884,885,886,887,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,889,889,889,889,889,889,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,889,891,201,201,201,891,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,891,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,893,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,203,892,894,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,203,895,203,192,897,897,897,897,897,897,897,897,897,897,892,892,892,203,892,897,897,897,897,897,897,897,897,897,897,892,892,892,203,203,892,898,883,203,883,883,899,899,899,883,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,883,899,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,901,902,883,903,206,904,902,883,883,905,906,883,906,883,206,883,883,883,883,883,883,883,883,883,883,907,883,908,909,910,883,911,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,912,883,883,206,900,206,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,883,913,883,906,883,900,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,915,914,914,914,914,914,914,914,914,914,914,914,914,914,914,900,900,900,900,900,900,900,900,900,900,914,914,914,916,914,915,914,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,914,914,914,914,900,914,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,914,914,914,914,914,900,918,917,919,921,922,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,923,920,925,926,924,927,928,929,930,206,914,914,206,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,206,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,205,205,205,205,205,205,205,205,205,205,914,914,914,914,914,914,914,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,914,914,914,914,205,914,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,914,914,914,914,914,205,208,208,208,208,208,208,208,208,208,208,914,206,914,206,914,206,914,206,931,914,206,914,206,914,206,206,914,206,914,932,933,883,934,203,883,844,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,203,883,203,893,883,937,936,936,936,937,936,936,936,936,938,939,938,938,938,936,936,936,936,936,936,936,936,936,936,936,936,937,936,936,936,936,936,938,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,936,941,936,936,940,936,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,936,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,942,942,942,942,943,942,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,942,942,942,942,942,943,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,945,945,945,945,945,945,945,945,945,945,944,944,944,944,944,944,944,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,944,944,944,944,945,944,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,944,944,944,944,944,945,948,947,947,947,948,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,948,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,949,949,949,949,949,949,949,949,947,947,947,947,947,947,947,947,947,947,947,950,947,947,947,947,947,947,947,947,947,951,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,952,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,953,947,947,954,947,955,956,958,958,958,958,958,958,958,958,957,959,959,959,959,959,959,959,959,957,957,960,960,242,242,242,960,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,960,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,961,242,962,963,964,964,242,242,242,964,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,964,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,965,242,241,964,966,967,968,968,229,229,229,968,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,968,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,969,229,964,223,223,223,964,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,964,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,970,223,960,229,229,229,960,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,960,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,960,971,971,971,960,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,960,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,972,971,973,974,974,971,971,971,974,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,974,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,975,971,974,223,223,223,974,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,974,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,970,223,976,974,974,229,229,229,974,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,974,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,977,978,978,978,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,979,979,979,979,979,979,979,979,979,979,978,978,978,978,978,978,978,979,979,979,979,979,979,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,979,979,979,979,979,979,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,980,978,977,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,977,981,977,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,977,982,977,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,977,983,977,977,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,984,984,984,984,984,984,984,984,984,984,981,981,981,981,981,981,981,984,984,984,984,984,984,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,984,984,984,984,984,984,981,977,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,985,985,985,985,985,985,985,985,985,985,982,982,982,982,982,982,982,985,985,985,985,985,985,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,985,985,985,985,985,985,982,977,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,986,986,986,986,986,986,986,986,986,986,983,983,983,983,983,983,983,986,986,986,986,986,986,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,986,986,986,986,986,986,983,987,990,989,989,989,990,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,990,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,991,991,991,991,991,991,991,991,991,991,989,989,989,989,989,989,989,991,991,991,991,991,991,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,991,991,991,991,991,991,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,981,989,990,992,992,992,990,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,990,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,993,993,993,993,993,993,993,993,993,993,992,992,992,992,992,992,992,993,993,993,993,993,993,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,993,993,993,993,993,993,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,994,992,990,995,995,995,990,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,990,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,996,996,996,996,996,996,996,996,996,996,995,995,995,995,995,995,995,996,996,996,996,996,996,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,996,996,996,996,996,996,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,997,995,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,999,999,999,999,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,999,999,999,999,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,1e3,990,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,1e3,999,990,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,988,999,988,990,996,996,996,990,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,990,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,983,996,988,983,983,983,988,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,988,983,990,992,992,992,990,992,992,992,992,1001,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,990,992,992,992,992,992,1001,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1003,992,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,995,995,995,990,995,995,995,995,1001,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,990,995,995,995,995,995,1001,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1003,995,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,1015,1016,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1017,1017,1017,1017,1017,1017,1017,1018,1018,1018,1018,1018,1018,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1018,1018,1018,1018,1018,1018,1017,1017,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,247,247,247,247,247,247,247,247,247,247,249,192,192,250,192,248,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,247,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,192,247,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,248,883,883,883,883,883,883,883,883,883,883,883,883,883,883,247,247,247,247,247,247,247,247,247,247,249,883,883,250,883,248,883,247,247,247,247,1019,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,247,883,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,883,247,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,248,883,883,883,883,883,883,883,883,883,883,883,883,883,883,247,247,247,247,247,247,247,247,247,247,249,883,883,250,883,248,883,247,247,247,247,247,247,247,247,247,247,247,247,247,1020,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,247,883,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,883,247,1021,1022,883,878,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1024,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,1025,1026,820,820,820,820,820,1027,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1028,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,1029,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1030,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,1031,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1032,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1033,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,1034,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1035,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1036,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1037,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,1038,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,1034,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1039,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1038,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1040,820,1041,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1042,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1043,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1044,820,820,820,820,820,820,820,820,820,820,820,820,1045,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,1046,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1047,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1048,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1049,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1050,820,820,820,820,820,820,820,820,820,820,1051,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1053,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1043,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1055,820,1056,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1057,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1036,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1058,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1059,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1060,820,820,820,820,820,820,820,820,820,820,820,820,820,855,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1050,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,1061,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1062,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1063,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1064,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1065,820,820,820,1066,820,820,820,820,820,1067,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1067,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1068,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1069,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1070,1071,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,1072,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1073,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1074,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1077,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1075,1075,1079,1075,1077,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1075,1075,1075,1075,1076,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1075,1075,1075,1075,1075,1076,869,1080,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,871,868,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1081,820,820,1082,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1047,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1083,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1084,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1085,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,855,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,1086,820,820,820,820,820,820,820,820,820,1087,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1047,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1088,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1089,820,820,820,820,820,820,820,1090,820,820,820,820,820,820,820,1091,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1092,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1093,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1061,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1094,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1061,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,1095,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1047,820,820,820,1096,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1097,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1061,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1098,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1099,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1041,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1100,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,893,883,1102,1101,1101,1101,1102,1101,1101,1101,1101,1103,1104,1103,1103,1103,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1102,1101,1101,1101,1101,1101,1103,1101,1101,1105,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1106,1101,1103,1107,1103,1103,1103,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1103,1107,1108,1109,1110,1111,1112,1114,1113,1115,1117,1118,1118,1118,1117,1118,1118,1118,1118,1119,1120,1119,1119,1119,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1117,1118,1118,1118,1118,1118,1119,1118,1121,1122,1118,1118,1118,1121,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1118,1123,1118,1118,1116,1118,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1118,1118,1118,1118,1118,1116,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,256,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,255,255,255,255,255,255,255,255,255,255,257,1124,1124,1124,1124,256,1124,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,1124,1124,1124,1124,255,1124,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,1124,1124,1124,1124,1124,255,1119,1125,1119,1119,1119,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1119,1125,1126,1127,1128,1129,1130,1131,1124,1132,1134,1135,1135,1135,1134,1135,1135,1135,1135,1136,1137,1136,1136,1136,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1134,1135,1135,1135,1135,1135,1136,1138,1139,1140,1141,1142,1143,1139,1144,1145,1146,1142,1147,1148,1149,1142,1150,1151,1151,1151,1151,1151,1151,1151,1151,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1159,1159,1161,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1162,1163,1164,1142,1165,1139,1166,1167,1168,1169,1170,1171,1133,1133,1172,1133,1133,1133,1173,1174,1175,1133,1133,1176,1177,1178,1179,1133,1180,1133,1181,1133,1182,1183,1184,1142,1135,1133,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1185,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,265,1185,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,1133,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,265,1133,1187,1186,1188,1136,1189,1136,1136,1136,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1136,1189,1190,1192,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1192,1191,1193,1194,1195,1196,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,260,260,1197,260,1197,260,260,1197,1197,260,260,260,1198,260,260,1199,1199,1199,1199,1199,1199,1199,1199,1199,1199,260,260,260,260,260,260,260,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,260,1197,1197,268,260,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,260,1197,268,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,1200,1200,1200,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,268,1200,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,1200,268,1199,1199,1199,1199,1199,1199,1199,1199,1199,1199,1200,1201,1191,1142,1191,1191,1191,1191,1191,1191,1191,1202,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1201,1191,1203,1204,1142,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1201,1191,1201,1205,1191,1207,1206,264,264,264,264,264,264,264,264,264,264,1206,1147,1208,264,264,264,264,264,264,264,264,264,264,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1210,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1211,1209,1209,1209,1209,1209,1210,1209,263,263,263,263,263,263,263,263,263,263,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,262,1209,1213,1212,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1212,1212,1212,1212,1212,1212,1212,1212,1215,1212,1216,1217,1212,1212,1212,1212,1212,1212,1212,1212,1212,1218,1212,1212,1212,1212,1212,1212,1212,1212,1219,1212,1212,1212,1212,1212,1212,1220,1212,1212,1215,1212,1216,1217,1212,1212,1212,1221,1212,1212,1212,1212,1212,1218,1212,1212,1222,1212,1212,1212,1212,1212,1219,1212,266,266,266,266,266,266,266,266,266,266,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1224,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1223,1223,1223,1223,1223,1224,1223,1223,1223,1226,1223,1223,1223,1223,1223,1223,1223,1223,1227,1223,1228,265,1228,265,265,267,267,267,267,267,267,267,267,267,267,265,267,267,267,267,267,267,267,267,267,267,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1228,1229,1229,1229,1229,1229,1229,1229,1229,1229,1230,1229,1231,1233,1232,1234,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1220,1212,1212,1212,1212,1212,1212,1212,1212,1212,1221,1212,1212,1212,1212,1212,1212,1212,1212,1222,1212,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1236,1212,1212,1212,1212,1212,1212,1212,1212,1212,1221,1212,1212,1212,1212,1212,1212,1212,1212,1222,1212,1238,1238,1238,1238,1238,1238,1238,1238,1238,1238,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1239,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1238,1238,1238,1238,1238,1238,1238,1238,1238,1238,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1243,1245,1244,1246,1248,1248,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1249,1247,1247,1247,1247,1247,1247,1247,1247,1247,1250,1247,1247,1247,1247,1247,1247,1247,1247,1251,1247,1252,1252,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1253,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1252,1252,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1256,1254,1254,1254,1254,1254,1254,1254,1254,1254,1257,1254,1254,1254,1254,1254,1254,1254,1254,1258,1254,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1261,1259,1259,1259,1259,1259,1259,1259,1259,1259,1262,1259,1259,1259,1259,1259,1259,1259,1259,1263,1259,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1264,1264,1264,1264,1264,1264,1264,1265,1265,1265,1265,1265,1265,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1266,1264,1265,1265,1265,1265,1265,1265,1264,1264,1267,1264,1264,1264,1264,1264,1264,1264,1264,1268,1264,1269,1269,1269,1269,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1270,1237,1269,1269,1269,1269,1269,1269,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1269,1269,1269,1269,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1269,1269,1269,1269,1269,1269,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1272,1271,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1274,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1275,1271,1271,1271,1271,1271,1274,1271,1271,1271,1276,1271,1271,1271,1271,1271,1271,1271,1271,1277,1271,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1279,1271,1271,1271,1271,1271,1271,1271,1271,1271,1276,1271,1271,1271,1271,1271,1271,1271,1271,1277,1271,1280,1237,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1282,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1283,1237,1237,1237,1237,1237,1282,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1202,1208,1142,1284,1191,1192,1191,1285,1192,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1192,1208,1192,1191,1192,1142,1191,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,1197,1197,1286,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,268,1197,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,1197,268,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1185,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,265,265,265,265,1185,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,265,265,265,265,1159,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,265,265,265,265,265,1159,1288,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1290,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1291,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1292,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1293,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1294,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1293,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1295,1297,1296,1298,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1300,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1301,1302,1133,1133,1133,1133,1133,1303,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1304,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1305,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1306,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1307,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1308,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1309,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1310,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1311,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1312,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1313,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1314,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1315,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1316,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1317,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1318,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1314,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1319,1133,1320,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1321,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1322,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1323,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1325,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1326,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1327,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1328,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1329,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1330,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1332,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1333,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1335,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1336,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1337,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1338,1338,1338,1338,1338,1338,1338,1338,1338,270,271,270,270,270,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,270,1185,1338,272,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,1338,273,1338,1338,1185,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,274,1338,1338,1133,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,1338,1338,1338,1338,1133,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,292,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1340,1133,1133,1133,1133,1133,1133,1133,1133,1133,1341,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1342,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1185,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1343,1185,1343,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1133,1343,1133,1133,1133,1133,1133,1133,1133,1133,1344,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1343,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1345,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1346,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1347,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1348,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1349,1133,1350,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1351,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1324,1133,1133,1133,1352,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1353,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1354,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1355,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1175,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1356,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1357,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1359,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1360,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1361,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1362,1133,1133,1133,1363,1133,1133,1133,1133,1133,1364,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1365,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1367,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1368,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1369,1370,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1371,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1372,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1373,1133,1133,1374,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1375,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1376,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1377,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1378,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1379,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1380,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1381,1133,1133,1133,1133,1133,1133,1133,1133,1133,1382,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1328,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1357,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1383,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1384,1133,1133,1133,1133,1133,1133,1133,1385,1133,1133,1133,1133,1133,1133,1133,1386,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1387,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1323,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1388,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1389,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1390,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1391,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1328,1133,1133,1133,1392,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1393,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1394,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1395,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1396,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1397,1201,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1142,1191,1398,1400,1399,1400,1400,1400,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1400,1399,1399,1399,1399,1399,1401,1399,1399,1399,1399,1399,1399,1399,298,1399,296,1402,296,296,296,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,296,1402,1402,1402,1402,1402,297,1402,1402,1402,1402,1402,1402,1402,298,1402,299,1402,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1405,1403,1404,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1407,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1408,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1409,1403,1411,1409,0]];$send(self,"_lex_indicies=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_targs");return self.$private("_lex_trans_targs","_lex_trans_targs=")})(Opal.get_singleton_class(self),$nesting);$writer=[[165,2,3,4,171,6,7,8,9,10,165,165,174,177,174,12,178,14,174,185,186,189,190,196,191,192,193,19,194,195,198,200,201,202,203,204,25,18,187,188,27,236,237,239,241,239,30,242,32,239,249,250,253,254,260,255,256,257,37,258,259,262,264,265,266,267,268,43,36,251,252,45,300,301,308,310,308,48,311,50,313,316,313,52,317,54,323,322,0,56,324,325,58,326,327,327,327,327,440,61,62,63,440,468,64,65,468,468,472,472,69,64,70,470,471,473,474,472,468,475,476,478,66,67,479,480,68,472,71,72,77,84,482,483,70,470,471,473,474,472,468,475,476,478,66,67,479,480,68,71,72,77,84,482,483,481,73,74,75,76,78,79,82,80,81,83,85,86,468,88,89,90,92,95,93,94,96,98,499,499,499,500,100,502,101,503,102,500,100,502,101,503,537,537,537,105,106,107,108,548,537,537,553,537,537,574,537,112,575,581,115,118,120,122,123,124,118,119,585,119,585,121,537,599,600,603,604,610,605,606,607,129,608,609,612,614,615,616,617,618,135,128,601,602,137,654,655,139,539,103,541,141,142,657,758,144,145,146,758,766,766,766,149,787,786,766,789,791,776,823,155,156,157,161,162,155,156,157,161,162,158,158,156,157,159,160,158,158,156,157,159,160,870,156,766,939,163,164,939,939,165,165,166,167,168,170,172,173,165,165,165,169,165,169,165,1,165,165,165,5,174,174,175,174,176,179,174,174,11,13,174,174,174,180,181,182,15,21,26,205,28,174,174,174,183,184,174,16,174,174,174,17,174,174,174,20,197,199,22,174,174,23,24,174,206,210,214,207,208,209,211,212,213,174,174,215,219,225,216,223,224,217,221,222,218,220,174,226,235,234,227,228,229,230,231,232,233,174,174,174,238,239,239,239,240,243,239,29,31,239,239,239,244,245,246,33,39,44,269,46,239,239,239,247,248,239,34,239,239,239,35,239,239,239,38,261,263,40,239,239,41,42,239,270,274,278,271,272,273,275,276,277,239,239,279,283,289,280,287,288,281,285,286,282,284,239,290,299,298,291,292,293,294,295,296,297,239,239,239,302,303,303,304,303,305,303,303,303,306,306,306,307,306,306,306,308,308,308,309,308,47,49,308,308,312,312,312,313,313,314,313,315,313,313,51,53,313,313,318,318,319,318,318,320,321,320,55,57,322,322,322,328,327,327,329,330,331,332,334,337,338,339,340,327,341,342,344,346,347,348,352,354,355,356,372,377,384,389,396,403,406,407,411,405,415,423,427,429,434,436,439,327,327,327,327,327,327,333,327,333,327,335,59,336,327,60,327,327,343,345,327,349,350,351,347,353,327,357,358,367,370,359,360,361,362,363,364,365,366,328,368,369,371,373,376,374,375,378,381,379,380,382,383,385,387,386,388,390,391,327,392,393,394,395,327,397,400,398,399,401,402,404,408,409,410,412,414,413,416,417,418,420,419,421,422,424,425,426,428,430,431,432,433,435,437,438,441,440,440,442,443,445,440,440,440,444,440,444,446,440,448,447,447,451,452,453,454,447,456,457,458,459,461,463,464,465,466,467,447,449,447,450,447,447,447,447,447,455,447,455,460,447,462,447,468,468,469,484,485,471,487,488,475,489,490,491,492,493,495,496,497,498,468,468,468,468,468,468,472,477,468,468,468,468,468,468,468,468,468,486,468,486,468,468,468,468,494,468,87,91,97,499,501,504,99,499,499,500,505,505,506,507,509,511,512,505,505,508,505,508,505,510,505,505,505,514,513,513,515,516,517,519,521,522,527,534,513,513,513,513,518,513,518,513,520,513,513,514,523,524,525,526,528,529,532,530,531,533,535,536,538,537,546,547,549,550,552,554,555,556,558,559,560,562,563,584,587,588,589,657,658,659,660,661,557,663,679,684,691,696,698,704,707,708,712,706,716,727,731,734,742,746,749,750,537,103,540,537,537,542,544,545,537,543,537,537,537,537,537,104,537,537,537,537,537,551,537,551,537,537,109,537,537,110,537,537,557,537,561,537,564,573,537,111,576,577,578,537,579,113,582,114,116,583,537,565,567,537,566,537,537,568,571,572,537,569,570,537,537,537,537,580,117,586,537,537,590,537,537,537,591,593,537,592,537,592,537,594,595,596,125,131,136,619,138,537,537,537,597,598,537,126,537,537,537,127,537,537,537,130,611,613,132,537,537,133,134,537,620,624,628,621,622,623,625,626,627,537,537,629,633,639,630,637,638,631,635,636,632,634,537,640,648,653,641,642,643,644,645,646,647,649,650,651,652,537,537,537,656,140,143,537,662,537,664,665,674,677,666,667,668,669,670,671,672,673,538,675,676,678,680,683,681,682,685,688,686,687,689,690,692,694,693,695,697,699,701,700,702,703,705,538,709,710,711,713,715,714,717,718,719,724,720,721,722,537,538,539,103,723,544,725,726,728,729,730,732,733,735,736,737,740,738,739,741,743,744,745,747,748,537,751,751,752,753,754,756,751,751,751,755,751,755,751,757,751,759,758,758,760,761,758,762,764,758,758,758,758,763,758,763,765,758,767,766,766,770,771,772,766,773,775,778,779,780,781,782,766,783,784,788,811,815,766,816,818,820,766,821,822,824,828,830,831,766,833,851,856,863,871,878,885,890,891,895,889,900,910,916,919,928,932,936,937,938,768,766,769,766,766,766,766,766,766,774,766,774,766,147,777,766,766,766,766,766,766,766,785,766,766,148,150,766,151,795,803,806,790,807,808,796,800,801,766,790,151,792,793,152,766,792,766,766,794,766,797,799,766,797,798,800,801,799,766,766,802,766,766,804,799,800,801,804,805,766,797,799,800,801,766,797,799,800,801,766,809,799,800,801,809,810,766,151,811,790,812,800,801,813,799,151,813,790,814,817,819,153,154,766,766,825,826,827,822,829,766,766,832,766,766,834,835,844,849,836,837,838,839,840,841,842,843,767,845,846,847,848,767,850,852,855,853,854,767,767,857,860,858,859,861,862,767,864,866,865,867,868,869,766,766,872,767,873,766,874,875,876,877,768,879,882,880,881,883,884,886,887,888,767,892,893,894,896,898,899,897,767,901,902,903,906,904,905,907,908,909,911,913,912,914,915,917,918,920,921,923,926,922,924,925,927,929,930,931,933,934,935,766,766,939,940,941,939,943,942,944,942,945,946,947,942,942]];$send(self,"_lex_trans_targs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_actions");return self.$private("_lex_trans_actions","_lex_trans_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,6,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,9,0,10,0,0,0,11,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,12,0,13,0,0,0,14,0,15,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,0,0,24,25,26,27,28,29,29,30,31,29,32,31,33,31,29,29,30,29,34,29,29,35,29,29,29,29,29,29,0,36,37,0,38,37,39,37,0,0,36,0,40,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,42,43,44,45,0,0,0,45,28,46,29,29,29,46,47,48,49,0,0,0,0,0,50,51,0,52,53,0,54,0,0,0,0,0,0,0,0,0,55,55,56,0,28,0,57,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,0,58,0,0,0,0,58,59,0,0,0,60,61,62,63,0,7,7,64,65,65,0,0,0,28,0,0,0,29,66,29,29,29,67,68,69,68,68,68,0,70,71,70,70,70,72,73,74,75,0,76,77,78,81,82,0,28,0,7,0,7,83,84,85,67,86,0,87,0,88,89,90,0,91,92,0,93,7,7,94,95,0,0,96,97,98,99,99,99,99,99,99,99,99,100,101,102,0,0,103,0,104,105,106,0,107,108,109,0,7,0,0,110,111,0,28,112,0,0,0,0,0,0,0,0,0,113,114,0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,116,117,118,0,119,120,121,7,7,122,0,0,123,124,125,99,99,99,99,99,99,99,99,126,127,128,0,0,129,0,130,131,132,0,133,134,135,0,7,0,0,136,137,0,28,138,0,0,0,0,0,0,0,0,0,139,140,0,0,0,0,0,0,0,0,0,0,0,141,0,0,0,0,0,0,0,0,0,0,142,143,144,0,145,146,0,147,0,148,149,150,151,152,153,0,154,155,156,157,158,159,7,160,0,0,161,162,163,164,165,166,167,0,168,7,169,170,0,0,171,172,173,174,0,175,176,177,0,178,0,0,179,180,181,182,183,184,0,28,0,0,7,7,0,0,0,185,0,0,0,0,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,188,189,190,191,192,67,193,0,194,0,0,0,195,0,196,197,0,0,198,0,0,0,199,0,200,0,0,0,0,0,0,0,0,0,0,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,204,0,0,0,205,206,207,67,208,0,28,209,0,210,211,0,28,0,0,212,0,0,0,0,0,0,0,0,0,0,213,0,214,0,215,216,217,218,219,67,220,0,0,221,0,222,223,224,225,28,0,27,0,0,27,0,0,0,0,0,0,7,7,7,226,227,228,229,230,231,232,0,233,234,235,236,237,238,239,240,241,67,242,0,243,244,245,246,247,248,0,0,0,249,7,7,0,250,251,252,253,254,0,0,0,0,0,255,256,67,257,0,258,28,259,260,261,262,263,264,0,28,0,0,0,0,0,0,265,266,267,268,67,269,0,270,28,271,272,273,0,0,0,0,0,0,0,0,0,0,0,0,274,275,0,8,0,0,7,276,0,0,0,0,0,0,7,7,0,277,0,277,277,277,0,0,277,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,0,277,278,279,0,280,281,0,58,0,282,0,283,284,285,286,287,29,288,289,290,291,292,67,293,0,294,295,0,296,297,0,298,299,276,300,0,301,0,0,302,0,0,0,0,303,0,0,0,0,0,0,304,0,0,305,0,306,307,0,0,0,308,0,0,309,310,311,312,0,0,0,313,314,0,315,316,317,0,7,318,319,320,0,321,99,99,99,99,99,99,99,99,322,323,324,0,0,325,0,326,327,328,0,329,330,331,0,7,0,0,332,333,0,28,334,0,0,0,0,0,0,0,0,0,335,336,0,0,0,0,0,0,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,338,339,340,0,0,0,341,28,342,274,274,274,274,274,274,274,274,274,274,274,274,58,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,343,274,274,274,274,274,274,274,274,274,274,274,274,344,345,346,347,348,348,344,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,349,350,351,0,28,0,0,352,353,354,67,355,0,356,28,357,7,358,359,0,28,360,0,0,361,362,363,364,67,365,0,28,366,367,368,369,0,28,0,370,0,7,0,0,0,0,0,371,0,0,372,372,0,373,0,0,0,374,7,375,375,375,0,0,376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,377,378,0,379,380,381,382,383,384,67,385,0,386,0,0,387,388,389,390,391,392,393,0,394,395,0,0,396,397,398,0,0,399,0,0,398,400,400,401,402,0,403,403,0,404,405,406,407,0,408,398,398,409,0,0,410,410,0,411,412,0,413,414,415,415,416,416,0,0,417,418,418,419,419,420,421,421,422,422,423,424,424,425,425,0,0,426,427,428,429,430,431,431,428,430,432,372,433,0,0,0,0,0,434,435,375,375,375,436,375,437,438,28,439,440,0,0,0,0,0,0,0,0,0,0,0,0,441,0,0,0,0,436,0,0,0,0,0,442,443,0,0,0,0,0,0,444,0,0,0,0,0,443,445,446,0,447,0,448,0,0,0,0,449,0,0,0,0,0,0,0,0,0,450,0,0,0,0,0,0,0,449,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,451,452,453,7,76,454,0,455,0,456,0,0,0,457,458]];$send(self,"_lex_trans_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_to_state_actions");return self.$private("_lex_to_state_actions","_lex_to_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,79,0,79,0,0,0,79,79,0,0,0,0,79,0,79,0,79,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,79,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,79,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,79,0,0,0,0,0]];$send(self,"_lex_to_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_from_state_actions");return self.$private("_lex_from_state_actions","_lex_from_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,80,0,80,0,0,0,80,80,0,0,0,0,80,0,80,0,80,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,80,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,80,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,80,0,0,0,0,0]];$send(self,"_lex_from_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_eof_trans");return self.$private("_lex_eof_trans","_lex_eof_trans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,19,19,19,19,19,19,19,19,19,19,19,19,19,19,44,44,44,44,50,50,50,50,50,50,50,50,50,50,50,50,50,50,75,75,75,75,81,81,81,81,0,0,0,0,95,97,99,99,99,104,104,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,169,169,169,169,169,169,169,169,169,169,169,169,179,181,181,181,193,195,195,195,195,195,201,193,205,205,205,205,205,205,205,205,205,205,205,205,205,205,223,223,223,223,223,223,223,223,223,223,223,223,223,223,193,205,205,205,205,255,255,255,260,262,262,262,266,266,260,266,266,266,266,266,266,266,266,266,296,296,0,309,310,311,313,315,317,315,315,0,327,328,332,332,333,342,343,344,344,344,347,347,349,350,351,351,351,353,354,355,355,351,347,347,360,361,361,361,361,361,364,364,364,364,364,364,364,364,374,375,375,375,375,387,387,387,375,375,375,375,387,387,387,387,387,387,387,387,387,398,387,399,400,400,0,407,411,411,412,421,422,423,423,423,426,426,428,429,430,430,430,432,433,434,434,430,426,426,439,440,440,440,440,440,443,443,443,443,443,443,443,443,453,454,454,454,454,466,466,466,454,454,454,454,466,466,466,466,466,466,466,466,466,477,466,478,479,479,0,486,487,0,493,0,500,504,504,0,0,513,514,518,518,0,523,0,526,0,529,529,530,531,0,572,574,575,576,577,579,581,585,585,576,576,576,576,587,576,576,581,576,576,572,591,591,591,591,591,591,581,581,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,630,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,576,0,673,674,675,677,673,680,0,699,701,703,704,705,706,707,709,706,706,706,706,706,712,706,706,714,712,712,706,0,733,734,104,104,737,738,104,734,734,741,743,746,734,747,734,748,749,751,753,734,741,754,754,743,754,758,754,754,754,754,0,179,766,767,766,766,0,776,777,779,781,783,781,785,0,797,798,799,800,802,804,806,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,0,193,865,868,869,873,875,876,877,878,879,881,884,885,887,889,892,893,895,896,193,893,893,884,884,884,884,915,918,920,921,925,928,929,930,931,915,915,915,915,915,915,915,915,915,915,915,884,935,884,884,884,936,943,943,945,947,956,957,958,958,958,961,961,963,964,965,965,965,967,968,969,969,965,961,961,974,975,975,975,975,975,978,978,978,978,978,978,978,978,988,989,989,989,989,1001,1001,1001,989,989,989,989,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1016,1017,1018,1018,193,884,884,1022,884,879,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1076,869,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1101,884,0,1108,1109,1110,1112,1114,1116,0,1125,1126,1127,1128,1130,1125,1133,0,266,1187,1189,1190,1191,1192,1194,1196,1198,1201,1201,1192,1192,1204,1205,1192,1192,1207,1209,1210,1210,1213,1224,266,1230,1232,1233,1235,1213,1213,1238,1238,1238,1244,1245,1247,1248,1238,1238,1255,1260,1265,1238,1238,1272,1272,1238,1238,1209,1192,1192,1209,1192,1192,1198,266,1289,1290,1290,1290,1290,1290,1290,1296,1198,1299,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1339,1340,1300,1300,1344,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1398,1192,1399,0,1403,1403,0,1407,1407,1407,1407,1411]];$send(self,"_lex_eof_trans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_start")})(Opal.get_singleton_class(self),$nesting);$writer=[165];$send(self,"lex_start=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_error")})(Opal.get_singleton_class(self),$nesting);$writer=[0];$send(self,"lex_error=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_words")})(Opal.get_singleton_class(self),$nesting);$writer=[174];$send(self,"lex_en_interp_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_string")})(Opal.get_singleton_class(self),$nesting);$writer=[239];$send(self,"lex_en_interp_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_words")})(Opal.get_singleton_class(self),$nesting);$writer=[303];$send(self,"lex_en_plain_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_string")})(Opal.get_singleton_class(self),$nesting);$writer=[306];$send(self,"lex_en_plain_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[308];$send(self,"lex_en_interp_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[312];$send(self,"lex_en_plain_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[313];$send(self,"lex_en_interp_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[318];$send(self,"lex_en_plain_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_regexp_modifiers")})(Opal.get_singleton_class(self),$nesting);$writer=[320];$send(self,"lex_en_regexp_modifiers=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_variable")})(Opal.get_singleton_class(self),$nesting);$writer=[322];$send(self,"lex_en_expr_variable=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_fname")})(Opal.get_singleton_class(self),$nesting);$writer=[327];$send(self,"lex_en_expr_fname=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endfn")})(Opal.get_singleton_class(self),$nesting);$writer=[440];$send(self,"lex_en_expr_endfn=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[447];$send(self,"lex_en_expr_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_arg")})(Opal.get_singleton_class(self),$nesting);$writer=[468];$send(self,"lex_en_expr_arg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_cmdarg")})(Opal.get_singleton_class(self),$nesting);$writer=[499];$send(self,"lex_en_expr_cmdarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endarg")})(Opal.get_singleton_class(self),$nesting);$writer=[505];$send(self,"lex_en_expr_endarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_mid")})(Opal.get_singleton_class(self),$nesting);$writer=[513];$send(self,"lex_en_expr_mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_beg")})(Opal.get_singleton_class(self),$nesting);$writer=[537];$send(self,"lex_en_expr_beg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_labelarg")})(Opal.get_singleton_class(self),$nesting);$writer=[751];$send(self,"lex_en_expr_labelarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_value")})(Opal.get_singleton_class(self),$nesting);$writer=[758];$send(self,"lex_en_expr_value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_end")})(Opal.get_singleton_class(self),$nesting);$writer=[766];$send(self,"lex_en_expr_end=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_leading_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[939];$send(self,"lex_en_leading_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_comment")})(Opal.get_singleton_class(self),$nesting);$writer=[942];$send(self,"lex_en_line_comment=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_begin")})(Opal.get_singleton_class(self),$nesting);$writer=[165];$send(self,"lex_en_line_begin=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze());Opal.const_set($nesting[0],"REGEXP_META_CHARACTERS",$send(Opal.const_get_relative($nesting,"Regexp"),"union",Opal.to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze());Opal.const_set($nesting[0],"RBRACE_OR_RBRACK",["}","]"].$freeze());self.$attr_reader("source_buffer");self.$attr_accessor("diagnostics");self.$attr_accessor("static_env");self.$attr_accessor("force_utf32");self.$attr_accessor("cond","cmdarg","in_kwarg");self.$attr_accessor("tokens","comments");Opal.defn(self,"$initialize",TMP_Lexer_initialize_1=function $$initialize(version){var self=this;self.version=version;self.static_env=nil;self.tokens=nil;self.comments=nil;return self.$reset()},TMP_Lexer_initialize_1.$$arity=1);Opal.defn(self,"$reset",TMP_Lexer_reset_2=function $$reset(reset_state){var self=this;if(reset_state==null){reset_state=true}if($truthy(reset_state)){self.cs=self.$class().$lex_en_line_begin();self.cond=Opal.const_get_relative($nesting,"StackState").$new("cond");self.cmdarg=Opal.const_get_relative($nesting,"StackState").$new("cmdarg");self.cond_stack=[];self.cmdarg_stack=[]}self.force_utf32=false;self.source_pts=nil;self.p=0;self.ts=nil;self.te=nil;self.act=0;self.stack=[];self.top=0;self.token_queue=[];self.literal_stack=[];self.eq_begin_s=nil;self.sharp_s=nil;self.newline_s=nil;self.num_base=nil;self.num_digits_s=nil;self.num_suffix_s=nil;self.num_xfrm=nil;self.escape_s=nil;self.escape=nil;self.herebody_s=nil;self.paren_nest=0;self.lambda_stack=[];self.dedent_level=nil;self.command_state=false;return self.in_kwarg=false},TMP_Lexer_reset_2.$$arity=-1);Opal.defn(self,"$source_buffer=",TMP_Lexer_source_buffer$eq_3=function(source_buffer){var $a,$b,self=this,source=nil;self.source_buffer=source_buffer;if($truthy(self.source_buffer)){source=self.source_buffer.$source();if($truthy($truthy($a=($b=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)?source.$encoding()["$=="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")):$a)){self.source_pts=source.$unpack("U*")}else{self.source_pts=source.$unpack("C*")}if(self.source_pts["$[]"](0)["$=="](65279)){return self.p=1}else{return nil}}else{return self.source_pts=nil}},TMP_Lexer_source_buffer$eq_3.$$arity=1);Opal.defn(self,"$encoding",TMP_Lexer_encoding_4=function $$encoding(){var self=this;return self.source_buffer.$source().$encoding()},TMP_Lexer_encoding_4.$$arity=0);Opal.const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()}));Opal.defn(self,"$state",TMP_Lexer_state_5=function $$state(){var self=this;return Opal.const_get_relative($nesting,"LEX_STATES").$invert().$fetch(self.cs,self.cs)},TMP_Lexer_state_5.$$arity=0);Opal.defn(self,"$state=",TMP_Lexer_state$eq_6=function(state){var self=this;return self.cs=Opal.const_get_relative($nesting,"LEX_STATES").$fetch(state)},TMP_Lexer_state$eq_6.$$arity=1);Opal.defn(self,"$push_cmdarg",TMP_Lexer_push_cmdarg_7=function $$push_cmdarg(){var self=this;self.cmdarg_stack.$push(self.cmdarg);return self.cmdarg=Opal.const_get_relative($nesting,"StackState").$new(""+"cmdarg."+self.cmdarg_stack.$count())},TMP_Lexer_push_cmdarg_7.$$arity=0);Opal.defn(self,"$pop_cmdarg",TMP_Lexer_pop_cmdarg_8=function $$pop_cmdarg(){var self=this;return self.cmdarg=self.cmdarg_stack.$pop()},TMP_Lexer_pop_cmdarg_8.$$arity=0);Opal.defn(self,"$push_cond",TMP_Lexer_push_cond_9=function $$push_cond(){var self=this;self.cond_stack.$push(self.cond);return self.cond=Opal.const_get_relative($nesting,"StackState").$new(""+"cond."+self.cond_stack.$count())},TMP_Lexer_push_cond_9.$$arity=0);Opal.defn(self,"$pop_cond",TMP_Lexer_pop_cond_10=function $$pop_cond(){var self=this;return self.cond=self.cond_stack.$pop()},TMP_Lexer_pop_cond_10.$$arity=0);Opal.defn(self,"$dedent_level",TMP_Lexer_dedent_level_11=function $$dedent_level(){var $a,self=this,dedent_level=nil;$a=[self.dedent_level,nil],dedent_level=$a[0],self.dedent_level=$a[1],$a;return dedent_level},TMP_Lexer_dedent_level_11.$$arity=0);Opal.defn(self,"$advance",TMP_Lexer_advance_36=function $$advance(){var $a,$b,$c,$d,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,TMP_21,$p,$q,$r,$s,$t,$u,TMP_22,TMP_23,TMP_24,$v,$w,TMP_25,TMP_26,TMP_27,$x,$y,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,pe=nil,p=nil,eof=nil,testEof=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_acts=nil,_nacts=nil,_goto_level=nil,_resume=nil,_eof_trans=nil,_again=nil,_test_eof=nil,_out=nil,$case=nil,_wide=nil,tm=nil,heredoc_e=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,escaped_char=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}klass=self.$class();_lex_trans_keys=klass.$send("_lex_trans_keys");_lex_key_spans=klass.$send("_lex_key_spans");_lex_index_offsets=klass.$send("_lex_index_offsets");_lex_indicies=klass.$send("_lex_indicies");_lex_trans_targs=klass.$send("_lex_trans_targs");_lex_trans_actions=klass.$send("_lex_trans_actions");_lex_to_state_actions=klass.$send("_lex_to_state_actions");_lex_from_state_actions=klass.$send("_lex_from_state_actions");_lex_eof_trans=klass.$send("_lex_eof_trans");pe=$rb_plus(self.source_pts.$size(),2);$a=[self.p,pe],p=$a[0],eof=$a[1],$a;self.command_state=$truthy($a=self.cs["$=="](klass.$lex_en_expr_value()))?$a:self.cs["$=="](klass.$lex_en_line_begin());testEof=false;$b=nil,$a=Opal.to_ary($b),_slen=$a[0]==null?nil:$a[0],_trans=$a[1]==null?nil:$a[1],_keys=$a[2]==null?nil:$a[2],_inds=$a[3]==null?nil:$a[3],_acts=$a[4]==null?nil:$a[4],_nacts=$a[5]==null?nil:$a[5],$b;_goto_level=0;_resume=10;_eof_trans=15;_again=20;_test_eof=30;_out=40;while($truthy(true)){if($truthy($rb_le(_goto_level,0))){if(p["$=="](pe)){_goto_level=_test_eof;continue}if(self.cs["$=="](0)){_goto_level=_out;continue}}if($truthy($rb_le(_goto_level,_resume))){$case=_lex_from_state_actions["$[]"](self.cs);if(80["$==="]($case)){self.ts=p}_keys=self.cs["$<<"](1);_inds=_lex_index_offsets["$[]"](self.cs);_slen=_lex_key_spans["$[]"](self.cs);_wide=$truthy($b=self.source_pts["$[]"](p))?$b:0;_trans=function(){if($truthy($truthy($b=$truthy($c=$rb_gt(_slen,0))?$rb_le(_lex_trans_keys["$[]"](_keys),_wide):$c)?$rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))):$b)){return _lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys)))}else{return _lex_indicies["$[]"]($rb_plus(_inds,_slen))}return nil}()}if($truthy($rb_le(_goto_level,_eof_trans))){self.cs=_lex_trans_targs["$[]"](_trans);if($truthy(_lex_trans_actions["$[]"](_trans)["$!="](0))){$case=_lex_trans_actions["$[]"](_trans);if(28["$==="]($case)){self.newline_s=p}else if(99["$==="]($case)){self.escape_s=p;self.escape=nil}else if(29["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}}else if(67["$==="]($case)){self.sharp_s=$rb_minus(p,1)}else if(70["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(279["$==="]($case)){tm=p}else if(36["$==="]($case)){tm=p}else if(38["$==="]($case)){tm=p}else if(40["$==="]($case)){tm=p}else if(55["$==="]($case)){heredoc_e=p}else if(319["$==="]($case)){self.escape=nil}else if(348["$==="]($case)){tm=p}else if(424["$==="]($case)){self.num_base=16;self.num_digits_s=p}else if(418["$==="]($case)){self.num_base=10;self.num_digits_s=p}else if(421["$==="]($case)){self.num_base=8;self.num_digits_s=p}else if(415["$==="]($case)){self.num_base=2;self.num_digits_s=p}else if(430["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts}else if(398["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts}else if(410["$==="]($case)){self.num_suffix_s=p}else if(405["$==="]($case)){self.num_suffix_s=p}else if(403["$==="]($case)){self.num_suffix_s=p}else if(76["$==="]($case)){tm=p}else if(7["$==="]($case)){self.te=$rb_plus(p,1)}else if(96["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(5["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(92["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(91["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(97["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(94["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(95["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(6["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(4["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(123["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(10["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(120["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(119["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(124["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(122["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(11["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(9["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(146["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(145["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(148["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(149["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(152["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(151["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(154["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(161["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(13["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(158["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(157["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(162["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(160["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(12["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(164["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(163["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(171["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(15["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(167["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(166["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(172["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(169["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(170["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(14["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(174["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(173["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(176["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(177["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(178["$==="]($case)){self.te=p;p=$rb_minus(p,1);unknown_options=self.$tok().$scan(/[^imxouesn]/);if($truthy(unknown_options["$any?"]())){self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()}))}self.$emit("tREGEXP_OPT");self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(16["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(179["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(181["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@@[0-9]/))){self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tCVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(180["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@[0-9]/))){self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tIVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(202["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(188["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(18["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(185["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(197["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(20["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self["$version?"](23))){$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else{p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(184["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(183["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(201["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(198["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(200["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(195["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(191["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(196["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(189["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(194["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(19["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(17["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(187["$==="]($case)){$case=self.act;if(39["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(40["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(41["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(22["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=751;p=$rb_plus(p,1);_goto_level=_out;continue}else if(204["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(203["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(206["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(205["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(21["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(212["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(211["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(210["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(222["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(213["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(218["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(216["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(221["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(245["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(228["$==="]($case)){self.te=$rb_plus(p,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(234["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(24["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}else if(236["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(39["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(223["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(224["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(235["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(231["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(233["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(227["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(226["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(244["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(25["$==="]($case)){p=$rb_minus(self.te,1)}else if(41["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(23["$==="]($case)){$case=self.act;if(67["$==="]($case)){p=$rb_minus(self.te,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(68["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(73["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else{p=$rb_minus(self.te,1)}}else if(43["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(249["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(250["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(44["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(42["$==="]($case)){$case=self.act;if(80["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self.cond["$active?"]())){self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te)}else{self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te)}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(81["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}}else if(260["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_do(true);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(253["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(254["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(255["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(258["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(264["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(263["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(272["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}else if(266["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(270["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(265["$==="]($case)){$case=self.act;if(88["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(89["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}}else if(300["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);if($truthy(self.$tok()["$start_with?"]("-".$freeze()))){self.$emit("tUMINUS_NUM","-".$freeze(),self.ts,$rb_plus(self.ts,1));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(301["$==="]($case)){self.te=$rb_plus(p,1);type=delimiter=self.$tok()["$[]"](0).$chr();p=$rb_minus(p,1);self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(295["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(51["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(302["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(54["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(316["$==="]($case)){self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(315["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(303["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(48["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);if($truthy(self["$version?"](18))){ident=self.$tok(self.ts,$rb_minus(self.te,2));self.$emit(function(){if($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))){return"tCONSTANT"}else{return"tIDENTIFIER"}return nil}(),ident,self.ts,$rb_minus(self.te,2));p=$rb_minus(p,1);if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](ident):$b)){self.cs=766}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));self.cs=751}p=$rb_plus(p,1);_goto_level=_out;continue}else if(289["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(52["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(275["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(299["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSTAR","*".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(296["$==="]($case)){self.te=p;p=$rb_minus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(294["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(304["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(314["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(320["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(297["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(342["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(286["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(288["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(291["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(50["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(57["$==="]($case)){p=$rb_minus(self.te,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($b=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(49["$==="]($case)){p=$rb_minus(self.te,1)}else if(53["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(47["$==="]($case)){$case=self.act;if(111["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(119["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(350["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(351["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(352["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(356["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(60["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(360["$==="]($case)){self.te=$rb_plus(p,1);self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts);_goto_level=_again;continue}else if(359["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(358["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(362["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(361["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(59["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(392["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2));self.lambda_stack.$push(self.paren_nest);self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(74["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(370["$==="]($case)){self.te=$rb_plus(p,1);$c=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$c[0],delimiter=$c[1],$c;self.cs=self.$push_literal(type,delimiter,self.ts,nil,false,false,true);_goto_level=_again;continue}else if(62["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(389["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=447;p=$rb_plus(p,1);_goto_level=_out;continue}else if(383["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(376["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(388["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1)));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(374["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tEH","?".$freeze());self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(371["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(373["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSEMI",";".$freeze());self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(438["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1)));p=$rb_minus(p,1)}else if(369["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(368["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(448["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(446["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(445["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(395["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("error","no_dot_digit_literal")}else if(435["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(387["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(393["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=447;p=$rb_plus(p,1);_goto_level=_out;continue}else if(440["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(382["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(394["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(380["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(386["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(63["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","no_dot_digit_literal")}else if(61["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(64["$==="]($case)){$case=self.act;if(132["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(133["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(134["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(135["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(136["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(137["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(138["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));if($truthy($truthy($c=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$c)){self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(139["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(140["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(144["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(145["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(147["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(78["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(453["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(454["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(75["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(457["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=165;_goto_level=_again;continue}else if(456["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())))}else if(89["$==="]($case)){self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(2["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(81["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(82["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(83["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(88["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(87["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(1["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(73["$==="]($case)){self.newline_s=p;self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(93["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(121["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(147["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(153["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(159["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(165["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(168["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(175["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(246["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(237["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(229["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(317["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(290["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(458["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=165;_goto_level=_again;continue}else if(455["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1)}else if(90["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(3["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(412["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_12=function(chars){var self=TMP_12.$$s||this;if(chars==null)chars=nil;return self.$emit("tRATIONAL",self.$Rational(chars))},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(411["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_13=function(chars){var self=TMP_13.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,chars))},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(413["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_14=function(chars){var self=TMP_14.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(406["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_15=function(chars){var self=TMP_15.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(407["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_16=function(chars){var self=TMP_16.$$s||this;if(chars==null)chars=nil;return self.$emit("tRATIONAL",self.$Rational(chars))},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(408["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_17=function(chars){var self=TMP_17.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(116["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_18=function(codepoint_str){var self=TMP_18.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_18.$$s=self,TMP_18.$$brk=$brk,TMP_18.$$arity=1,TMP_18))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($c=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$c)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($c=self.escape)?$c:self.$tok(),self.ts,self.te)}}else if(142["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_19=function(codepoint_str){var self=TMP_19.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_19.$$s=self,TMP_19.$$brk=$brk,TMP_19.$$arity=1,TMP_19))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($c=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$c)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($c=self.escape)?$c:self.$tok(),self.ts,self.te)}}else if(338["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_20=function(codepoint_str){var self=TMP_20.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_20.$$s=self,TMP_20.$$brk=$brk,TMP_20.$$arity=1,TMP_20))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);value=$truthy($c=self.escape)?$c:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($c=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(100["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($d=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$d)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($d=self.escape)?$d:self.$tok(),self.ts,self.te)}}else if(126["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($d=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$d)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($d=self.escape)?$d:self.$tok(),self.ts,self.te)}}else if(322["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);value=$truthy($d=self.escape)?$d:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($d=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(103["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($e=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$e)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($e=self.escape)?$e:self.$tok(),self.ts,self.te)}}else if(129["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($e=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$e)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($e=self.escape)?$e:self.$tok(),self.ts,self.te)}}else if(325["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);value=$truthy($e=self.escape)?$e:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($e=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(105["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($f=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$f)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($f=self.escape)?$f:self.$tok(),self.ts,self.te)}}else if(131["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($f=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$f)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($f=self.escape)?$f:self.$tok(),self.ts,self.te)}}else if(327["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);value=$truthy($f=self.escape)?$f:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($f=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(102["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($g=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$g)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($g=self.escape)?$g:self.$tok(),self.ts,self.te)}}else if(128["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($g=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$g)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($g=self.escape)?$g:self.$tok(),self.ts,self.te)}}else if(324["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);value=$truthy($g=self.escape)?$g:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($g=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(118["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($h=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$h)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($h=self.escape)?$h:self.$tok(),self.ts,self.te)}}else if(144["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($h=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$h)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($h=self.escape)?$h:self.$tok(),self.ts,self.te)}}else if(340["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);value=$truthy($h=self.escape)?$h:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($h=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($i=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$i)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($i=self.escape)?$i:self.$tok(),self.ts,self.te)}}else if(139["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($i=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$i)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($i=self.escape)?$i:self.$tok(),self.ts,self.te)}}else if(335["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);value=$truthy($i=self.escape)?$i:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($i=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(117["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($j=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$j)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($j=self.escape)?$j:self.$tok(),self.ts,self.te)}}else if(143["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($j=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$j)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($j=self.escape)?$j:self.$tok(),self.ts,self.te)}}else if(339["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);value=$truthy($j=self.escape)?$j:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($j=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($k=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$k)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($k=self.escape)?$k:self.$tok(),self.ts,self.te)}}else if(138["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($k=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$k)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($k=self.escape)?$k:self.$tok(),self.ts,self.te)}}else if(334["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($k=self.escape)?$k:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($k=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($l=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$l)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($l=self.escape)?$l:self.$tok(),self.ts,self.te)}}else if(141["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($l=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$l)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($l=self.escape)?$l:self.$tok(),self.ts,self.te)}}else if(337["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($l=self.escape)?$l:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($l=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(101["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($m=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$m)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($m=self.escape)?$m:self.$tok(),self.ts,self.te)}}else if(127["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($m=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$m)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($m=self.escape)?$m:self.$tok(),self.ts,self.te)}}else if(323["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($m=self.escape)?$m:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($m=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(150["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($n=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$n)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($n=self.escape)?$n:self.$tok(),self.ts,self.te)}}else if(155["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($n=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$n)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($n=self.escape)?$n:self.$tok(),self.ts,self.te)}}else if(66["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.newline_s=p}else if(30["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(32["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(34["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(190["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(209["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(217["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(33["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(248["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(240["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(259["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(271["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(267["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(287["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(357["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(353["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);if($truthy(self.in_kwarg)){p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else{self.cs=165;_goto_level=_again;continue}}else if(366["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(363["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=165;_goto_level=_again;continue}else if(439["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(381["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=939;_goto_level=_again;continue}else if(84["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(239["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else{self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(261["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE_ARG","{".$freeze())}self.cs=758}else if(349["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE","{".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(451["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(452["$==="]($case)){current_literal=self.$literal();if($truthy(current_literal)){if($truthy(current_literal.$end_interp_brace_and_try_closing())){if($truthy(self["$version?"](18,19))){self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p)}else{self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p)}if($truthy(current_literal.$saved_herebody_s())){self.herebody_s=current_literal.$saved_herebody_s()}p=$rb_minus(p,1);self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}}self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(68["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(71["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(193["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(208["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(220["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(242["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(257["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(269["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(293["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(355["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(365["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(385["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(86["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(214["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg();p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(305["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(278["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(378["$==="]($case)){tm=p;$case=self.act;if(132["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(133["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(134["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(135["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(136["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(137["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(138["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));if($truthy($truthy($n=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$n)){self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(139["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(140["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($n=$truthy($o=digits["$empty?"]())?self.num_base["$=="](8):$o)?self["$version?"](18):$n)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($n=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(144["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(145["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(147["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(215["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg();p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(306["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(280["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(379["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(307["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(281["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(308["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(282["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(312["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(285["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(311["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(284["$==="]($case)){tm=$rb_minus(p,2);$case=self.act;if(111["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(119["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(309["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(283["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(310["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(434["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(238["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(341["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(437["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK2","[".$freeze());self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(230["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);if($truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(243["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN2","(".$freeze());self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(251["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);if($truthy(self["$version?"](18))){self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(298["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN","(".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(390["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(391["$==="]($case)){self.paren_nest=$rb_minus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(56["$==="]($case)){heredoc_e=p;self.newline_s=p}else if(313["$==="]($case)){new_herebody_s=p;self.te=p;p=$rb_minus(p,1);self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/);indent=$truthy($n=(($o=$gvars["~"])===nil?nil:$o["$[]"](1))["$empty?"]()["$!"]())?$n:(($o=$gvars["~"])===nil?nil:$o["$[]"](2))["$empty?"]()["$!"]();dedent_body=(($n=$gvars["~"])===nil?nil:$n["$[]"](2))["$empty?"]()["$!"]();type=function(){if($truthy((($n=$gvars["~"])===nil?nil:$n["$[]"](3))["$empty?"]())){return'<<"'.$freeze()}else{return $rb_plus("<<".$freeze(),($n=$gvars["~"])===nil?nil:$n["$[]"](3))}return nil}();delimiter=($n=$gvars["~"])===nil?nil:$n["$[]"](4);if($truthy($truthy($n=dedent_body)?self["$version?"](18,19,20,21,22):$n)){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2));p=$rb_plus(self.ts,1);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body);self.herebody_s=$truthy($n=self.herebody_s)?$n:new_herebody_s;p=$rb_minus(self.herebody_s,1)}}else if(318["$==="]($case)){self.escape=nil;self.te=p;p=$rb_minus(p,1);value=$truthy($n=self.escape)?$n:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($n=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(345["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(425["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p}else if(419["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p}else if(422["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p}else if(416["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p}else if(431["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(400["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(432["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_21=function(chars){var self=TMP_21.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}else if(77["$==="]($case)){tm=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(8["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p}else if(199["$==="]($case)){self.te=$rb_plus(p,1);self.act=39}else if(186["$==="]($case)){self.te=$rb_plus(p,1);self.act=40}else if(182["$==="]($case)){self.te=$rb_plus(p,1);self.act=41}else if(26["$==="]($case)){self.te=$rb_plus(p,1);self.act=67}else if(232["$==="]($case)){self.te=$rb_plus(p,1);self.act=68}else if(27["$==="]($case)){self.te=$rb_plus(p,1);self.act=73}else if(225["$==="]($case)){self.te=$rb_plus(p,1);self.act=74}else if(252["$==="]($case)){self.te=$rb_plus(p,1);self.act=80}else if(45["$==="]($case)){self.te=$rb_plus(p,1);self.act=81}else if(273["$==="]($case)){self.te=$rb_plus(p,1);self.act=88}else if(262["$==="]($case)){self.te=$rb_plus(p,1);self.act=89}else if(276["$==="]($case)){self.te=$rb_plus(p,1);self.act=111}else if(344["$==="]($case)){self.te=$rb_plus(p,1);self.act=112}else if(343["$==="]($case)){self.te=$rb_plus(p,1);self.act=113}else if(58["$==="]($case)){self.te=$rb_plus(p,1);self.act=115}else if(274["$==="]($case)){self.te=$rb_plus(p,1);self.act=116}else if(277["$==="]($case)){self.te=$rb_plus(p,1);self.act=119}else if(447["$==="]($case)){self.te=$rb_plus(p,1);self.act=132}else if(442["$==="]($case)){self.te=$rb_plus(p,1);self.act=133}else if(450["$==="]($case)){self.te=$rb_plus(p,1);self.act=135}else if(443["$==="]($case)){self.te=$rb_plus(p,1);self.act=136}else if(444["$==="]($case)){self.te=$rb_plus(p,1);self.act=137}else if(449["$==="]($case)){self.te=$rb_plus(p,1);self.act=138}else if(441["$==="]($case)){self.te=$rb_plus(p,1);self.act=139}else if(436["$==="]($case)){self.te=$rb_plus(p,1);self.act=140}else if(372["$==="]($case)){self.te=$rb_plus(p,1);self.act=141}else if(402["$==="]($case)){self.te=$rb_plus(p,1);self.act=144}else if(65["$==="]($case)){self.te=$rb_plus(p,1);self.act=145}else if(375["$==="]($case)){self.te=$rb_plus(p,1);self.act=147}else if(367["$==="]($case)){self.te=$rb_plus(p,1);self.act=151}else if(377["$==="]($case)){self.te=$rb_plus(p,1);self.act=152}else if(156["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($o=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$o)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}self.escape_s=p;self.escape=nil}else if(106["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($o=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$o)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($o=self.escape)?$o:self.$tok(),self.ts,self.te)}}else if(132["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($o=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$o)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($o=self.escape)?$o:self.$tok(),self.ts,self.te)}}else if(328["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($o=self.escape)?$o:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($o=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(111["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($p=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$p)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($p=self.escape)?$p:self.$tok(),self.ts,self.te)}}else if(137["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($p=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$p)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($p=self.escape)?$p:self.$tok(),self.ts,self.te)}}else if(333["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($p=self.escape)?$p:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($p=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(110["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($q=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$q)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($q=self.escape)?$q:self.$tok(),self.ts,self.te)}}else if(136["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($q=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$q)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($q=self.escape)?$q:self.$tok(),self.ts,self.te)}}else if(332["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($q=self.escape)?$q:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($q=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(108["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($r=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$r)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($r=self.escape)?$r:self.$tok(),self.ts,self.te)}}else if(134["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($r=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$r)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($r=self.escape)?$r:self.$tok(),self.ts,self.te)}}else if(330["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($r=self.escape)?$r:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($r=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(104["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($s=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$s)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($s=self.escape)?$s:self.$tok(),self.ts,self.te)}}else if(130["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($s=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$s)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($s=self.escape)?$s:self.$tok(),self.ts,self.te)}}else if(326["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($s=self.escape)?$s:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($s=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(114["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($t=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$t)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($t=self.escape)?$t:self.$tok(),self.ts,self.te)}}else if(140["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($t=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$t)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($t=self.escape)?$t:self.$tok(),self.ts,self.te)}}else if(336["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($t=self.escape)?$t:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($t=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(98["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($u=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$u)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($u=self.escape)?$u:self.$tok(),self.ts,self.te)}}else if(125["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($u=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$u)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($u=self.escape)?$u:self.$tok(),self.ts,self.te)}}else if(321["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($u=self.escape)?$u:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($u=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(69["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(192["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(207["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(219["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(241["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(256["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(268["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(292["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(354["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(364["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(384["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(85["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(427["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_22=function(chars){var self=TMP_22.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}else if(397["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_23=function(chars){var self=TMP_23.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_23.$$s=self,TMP_23.$$arity=1,TMP_23))}else if(409["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_24=function(chars){var self=TMP_24.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($v=$truthy($w=digits["$empty?"]())?self.num_base["$=="](8):$w)?self["$version?"](18):$v)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($v=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(404["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_25=function(chars){var self=TMP_25.$$s||this;if(chars==null)chars=nil;return self.$emit("tFLOAT",self.$Float(chars))},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(401["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_26=function(chars){var self=TMP_26.$$s||this;if(chars==null)chars=nil;return self.$emit("tFLOAT",self.$Float(chars))},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(247["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p;self.act=74}else if(35["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=73}else if(46["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=81}else if(72["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.act=134}else if(37["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=68}else if(347["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=115}else if(346["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=116}else if(428["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.act=141}else if(109["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($v=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$v)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($v=self.escape)?$v:self.$tok(),self.ts,self.te)}}else if(135["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($v=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$v)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($v=self.escape)?$v:self.$tok(),self.ts,self.te)}}else if(331["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($v=self.escape)?$v:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($v=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(107["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($w=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$w)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($w=self.escape)?$w:self.$tok(),self.ts,self.te)}}else if(133["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($w=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$w)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($w=self.escape)?$w:self.$tok(),self.ts,self.te)}}else if(329["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($w=self.escape)?$w:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($w=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(423["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_27=function(chars){var self=TMP_27.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(417["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_28=function(chars){var self=TMP_28.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_28.$$s=self,TMP_28.$$arity=1,TMP_28));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(420["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_29=function(chars){var self=TMP_29.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_29.$$s=self,TMP_29.$$arity=1,TMP_29));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(414["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_30=function(chars){var self=TMP_30.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(426["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_31=function(chars){var self=TMP_31.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(396["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_32=function(chars){var self=TMP_32.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_32.$$s=self,TMP_32.$$arity=1,TMP_32));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(31["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p;self.act=68}else if(433["$==="]($case)){self.te=$rb_plus(p,1);self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_33=function(chars){var self=TMP_33.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));self.act=143}else if(429["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_34=function(chars){var self=TMP_34.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34));self.act=143}else if(399["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_35=function(chars){var self=TMP_35.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_35.$$s=self,TMP_35.$$arity=1,TMP_35));self.act=143}}}if($truthy($rb_le(_goto_level,_again))){$case=_lex_to_state_actions["$[]"](self.cs);if(79["$==="]($case)){self.ts=nil}if(self.cs["$=="](0)){_goto_level=_out;continue}p=$rb_plus(p,1);if($truthy(p["$!="](pe))){_goto_level=_resume;continue}}if($truthy($rb_le(_goto_level,_test_eof))){if(p["$=="](eof)){if($truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0))){_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1);_goto_level=_eof_trans;continue}}}if($truthy($rb_le(_goto_level,_out))){break}}self.p=p;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}else if(self.cs["$=="](klass.$lex_error())){return[false,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]}else{eof=self.source_pts.$size();return[false,["$eof".$freeze(),self.$range(eof,eof)]]}},TMP_Lexer_advance_36.$$arity=0);self.$protected();Opal.defn(self,"$eof_codepoint?",TMP_Lexer_eof_codepoint$q_37=function(point){var self=this;return[4,26,0]["$include?"](point)},TMP_Lexer_eof_codepoint$q_37.$$arity=1);Opal.defn(self,"$version?",TMP_Lexer_version$q_38=function($a_rest){var self=this,versions;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}versions=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){versions[$arg_idx-0]=arguments[$arg_idx]}return versions["$include?"](self.version)},TMP_Lexer_version$q_38.$$arity=-1);Opal.defn(self,"$stack_pop",TMP_Lexer_stack_pop_39=function $$stack_pop(){var self=this;self.top=$rb_minus(self.top,1);return self.stack["$[]"](self.top)},TMP_Lexer_stack_pop_39.$$arity=0);if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){Opal.defn(self,"$encode_escape",TMP_Lexer_encode_escape_40=function $$encode_escape(ord){var self=this;return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding())},TMP_Lexer_encode_escape_40.$$arity=1)}else{Opal.defn(self,"$encode_escape",TMP_Lexer_encode_escape_41=function $$encode_escape(ord){var self=this;return ord.$chr()},TMP_Lexer_encode_escape_41.$$arity=1)}Opal.defn(self,"$tok",TMP_Lexer_tok_42=function $$tok(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return self.source_buffer.$slice(Opal.Range.$new(s,e,true))},TMP_Lexer_tok_42.$$arity=-1);Opal.defn(self,"$range",TMP_Lexer_range_43=function $$range(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Range").$new(self.source_buffer,s,e)},TMP_Lexer_range_43.$$arity=-1);Opal.defn(self,"$emit",TMP_Lexer_emit_44=function $$emit(type,value,s,e){var self=this,token=nil;if(value==null){value=self.$tok()}if(s==null){s=self.ts}if(e==null){e=self.te}token=[type,[value,self.$range(s,e)]];self.token_queue.$push(token);if($truthy(self.tokens)){self.tokens.$push(token)}return token},TMP_Lexer_emit_44.$$arity=-2);Opal.defn(self,"$emit_table",TMP_Lexer_emit_table_45=function $$emit_table(table,s,e){var self=this,value=nil;if(s==null){s=self.ts}if(e==null){e=self.te}value=self.$tok(s,e);return self.$emit(table["$[]"](value),value,s,e)},TMP_Lexer_emit_table_45.$$arity=-2);Opal.defn(self,"$emit_do",TMP_Lexer_emit_do_46=function $$emit_do(do_block){var $a,self=this;if(do_block==null){do_block=false}if($truthy(self.cond["$active?"]())){return self.$emit("kDO_COND","do".$freeze())}else if($truthy($truthy($a=self.cmdarg["$active?"]())?$a:do_block)){return self.$emit("kDO_BLOCK","do".$freeze())}else{return self.$emit("kDO","do".$freeze())}},TMP_Lexer_emit_do_46.$$arity=-1);Opal.defn(self,"$arg_or_cmdarg",TMP_Lexer_arg_or_cmdarg_47=function $$arg_or_cmdarg(){var self=this;if($truthy(self.command_state)){return self.$class().$lex_en_expr_cmdarg()}else{return self.$class().$lex_en_expr_arg()}},TMP_Lexer_arg_or_cmdarg_47.$$arity=0);Opal.defn(self,"$emit_comment",TMP_Lexer_emit_comment_48=function $$emit_comment(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}if($truthy(self.comments)){self.comments.$push(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Comment").$new(self.$range(s,e)))}if($truthy(self.tokens)){self.tokens.$push(["tCOMMENT",[self.$tok(s,e),self.$range(s,e)]])}return nil},TMP_Lexer_emit_comment_48.$$arity=-1);Opal.defn(self,"$diagnostic",TMP_Lexer_diagnostic_49=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(arguments$==null){arguments$=nil}if(location==null){location=self.$range()}if(highlights==null){highlights=[]}return self.diagnostics.$process(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))},TMP_Lexer_diagnostic_49.$$arity=-3);Opal.defn(self,"$push_literal",TMP_Lexer_push_literal_50=function $$push_literal($a_rest){var $b,self=this,args,new_literal=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}new_literal=$send(Opal.const_get_relative($nesting,"Literal"),"new",[self].concat(Opal.to_a(args)));self.literal_stack.$push(new_literal);if($truthy($truthy($b=new_literal["$words?"]())?new_literal["$backslash_delimited?"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited_words()}else{return self.$class().$lex_en_plain_backslash_delimited_words()}}else if($truthy($truthy($b=new_literal["$words?"]())?new_literal["$backslash_delimited?"]()["$!"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_words()}else{return self.$class().$lex_en_plain_words()}}else if($truthy($truthy($b=new_literal["$words?"]()["$!"]())?new_literal["$backslash_delimited?"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited()}else{return self.$class().$lex_en_plain_backslash_delimited()}}else if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_string()}else{return self.$class().$lex_en_plain_string()}},TMP_Lexer_push_literal_50.$$arity=-1);Opal.defn(self,"$literal",TMP_Lexer_literal_51=function $$literal(){var self=this;return self.literal_stack.$last()},TMP_Lexer_literal_51.$$arity=0);Opal.defn(self,"$pop_literal",TMP_Lexer_pop_literal_52=function $$pop_literal(){var self=this,old_literal=nil;old_literal=self.literal_stack.$pop();self.dedent_level=old_literal.$dedent_level();if(old_literal.$type()["$=="]("tREGEXP_BEG")){return self.$class().$lex_en_regexp_modifiers()}else{return self.$class().$lex_en_expr_end()}},TMP_Lexer_pop_literal_52.$$arity=0);Opal.const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"}));Opal.const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"}));Opal.const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"}));Opal.const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED"}));return $send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(TMP_Lexer_53=function(keyword){var self=TMP_Lexer_53.$$s||this;if(keyword==null)keyword=nil;$writer=[keyword,($writer=[keyword,""+"k"+keyword.$upcase()],$send(Opal.const_get_relative($nesting,"KEYWORDS"),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])];$send(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Lexer_53.$$s=self,TMP_Lexer_53.$$arity=1,TMP_Lexer_53))}(Opal.const_get_relative($nesting,"Parser"),null,$nesting)};Opal.modules["parser/lexer/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$attr_accessor","$coerce_encoding","$include?","$send","$+","$[]","$fetch","$==","$!","$heredoc?","$start_with?","$freeze","$clear_buffer","$emit_start_tok","$type","$words?","$=~","$delimiter?","$-","$extend_space","$!=","$flush_string","$emit","$each_char","$===","$%","$nil?","$>","$empty?","$extend_content","$protected","$lstrip","$force_encoding","$dup","$encoding","$source","$source_buffer","$length"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Literal(){}var self=$Literal=$klass($base,$super,"Literal",$Literal);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Literal_initialize_1,TMP_Literal_interpolate$q_2,TMP_Literal_words$q_3,TMP_Literal_regexp$q_4,TMP_Literal_heredoc$q_5,TMP_Literal_backslash_delimited$q_6,TMP_Literal_type_7,TMP_Literal_munge_escape$q_8,TMP_Literal_nest_and_try_closing_9,TMP_Literal_infer_indent_level_11,TMP_Literal_start_interp_brace_12,TMP_Literal_end_interp_brace_and_try_closing_13,TMP_Literal_extend_string_14,TMP_Literal_flush_string_15,TMP_Literal_extend_content_16,TMP_Literal_extend_space_17,TMP_Literal_delimiter$q_18,TMP_Literal_coerce_encoding_19,TMP_Literal_clear_buffer_20,TMP_Literal_emit_start_tok_21,TMP_Literal_emit_22;def.lexer=def.start_tok=def.str_type=def.monolithic=def.interpolate=def.heredoc_e=def.end_delim=def.start_delim=def.nesting=def.label_allowed=def.buffer=def.str_s=def.dedent_body=def.interp_braces=def.buffer_s=def.buffer_e=def.space_emitted=def.indent=nil;Opal.const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":")".$force_encoding("ASCII-8BIT"),"[":"]".$force_encoding("ASCII-8BIT"),"{":"}".$force_encoding("ASCII-8BIT"),"<":">".$force_encoding("ASCII-8BIT")}));Opal.const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",false],"<<'":["tSTRING_BEG",false],"%q":["tSTRING_BEG",false],'"':["tSTRING_BEG",true],'<<"':["tSTRING_BEG",true],"%":["tSTRING_BEG",true],"%Q":["tSTRING_BEG",true],"%w":["tQWORDS_BEG",false],"%W":["tWORDS_BEG",true],"%i":["tQSYMBOLS_BEG",false],"%I":["tSYMBOLS_BEG",true],":'":["tSYMBEG",false],"%s":["tSYMBEG",false],':"':["tSYMBEG",true],"/":["tREGEXP_BEG",true],"%r":["tREGEXP_BEG",true],"%x":["tXSTRING_BEG",true],"`":["tXSTRING_BEG",true],"<<`":["tXSTRING_BEG",true]}));self.$attr_reader("heredoc_e","str_s","dedent_level");self.$attr_accessor("saved_herebody_s");Opal.defn(self,"$initialize",TMP_Literal_initialize_1=function $$initialize(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,self=this;if(heredoc_e==null){heredoc_e=nil}if(indent==null){indent=false}if(dedent_body==null){dedent_body=false}if(label_allowed==null){label_allowed=false}self.lexer=lexer;self.nesting=1;str_type=self.$coerce_encoding(str_type);delimiter=self.$coerce_encoding(delimiter);if($truthy(Opal.const_get_relative($nesting,"TYPES")["$include?"](str_type))){}else{lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),self.lexer.$send("range",str_s,$rb_plus(str_s,2)))}self.str_type=str_type;self.str_s=str_s;$b=Opal.const_get_relative($nesting,"TYPES")["$[]"](str_type),$a=Opal.to_ary($b),self.start_tok=$a[0]==null?nil:$a[0],self.interpolate=$a[1]==null?nil:$a[1],$b;self.start_delim=function(){if($truthy(Opal.const_get_relative($nesting,"DELIMITERS")["$include?"](delimiter))){return delimiter}else{return nil}return nil}();self.end_delim=Opal.const_get_relative($nesting,"DELIMITERS").$fetch(delimiter,delimiter);self.heredoc_e=heredoc_e;self.indent=indent;self.label_allowed=label_allowed;self.dedent_body=dedent_body;self.dedent_level=nil;self.interp_braces=0;self.space_emitted=true;self.monolithic=$truthy($a=($b=self.start_tok["$=="]("tSTRING_BEG"))?["'".$force_encoding("ASCII-8BIT"),'"'.$force_encoding("ASCII-8BIT")]["$include?"](str_type):self.start_tok["$=="]("tSTRING_BEG"))?self["$heredoc?"]()["$!"]():$a;if($truthy(self.str_type["$start_with?"]("%".$force_encoding("ASCII-8BIT").$freeze()))){self.str_type=$rb_plus(self.str_type,delimiter)}self.$clear_buffer();if($truthy(self.monolithic)){return nil}else{return self.$emit_start_tok()}},TMP_Literal_initialize_1.$$arity=-5);Opal.defn(self,"$interpolate?",TMP_Literal_interpolate$q_2=function(){var self=this;return self.interpolate},TMP_Literal_interpolate$q_2.$$arity=0);Opal.defn(self,"$words?",TMP_Literal_words$q_3=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.$type()["$=="]("tWORDS_BEG"))?$c:self.$type()["$=="]("tQWORDS_BEG"))?$b:self.$type()["$=="]("tSYMBOLS_BEG"))?$a:self.$type()["$=="]("tQSYMBOLS_BEG")},TMP_Literal_words$q_3.$$arity=0);Opal.defn(self,"$regexp?",TMP_Literal_regexp$q_4=function(){var self=this;return self.$type()["$=="]("tREGEXP_BEG")},TMP_Literal_regexp$q_4.$$arity=0);Opal.defn(self,"$heredoc?",TMP_Literal_heredoc$q_5=function(){var self=this;return self.heredoc_e["$!"]()["$!"]()},TMP_Literal_heredoc$q_5.$$arity=0);Opal.defn(self,"$backslash_delimited?",TMP_Literal_backslash_delimited$q_6=function(){var self=this;return self.end_delim["$=="]("\\".$force_encoding("ASCII-8BIT").$freeze())},TMP_Literal_backslash_delimited$q_6.$$arity=0);Opal.defn(self,"$type",TMP_Literal_type_7=function $$type(){var self=this;return self.start_tok},TMP_Literal_type_7.$$arity=0);Opal.defn(self,"$munge_escape?",TMP_Literal_munge_escape$q_8=function(character){var $a,self=this;character=self.$coerce_encoding(character);if($truthy($truthy($a=self["$words?"]())?character["$=~"](/[ \t\v\r\f\n]/):$a)){return true}else{return["\\".$force_encoding("ASCII-8BIT").$freeze(),self.start_delim,self.end_delim]["$include?"](character)}},TMP_Literal_munge_escape$q_8.$$arity=1);Opal.defn(self,"$nest_and_try_closing",TMP_Literal_nest_and_try_closing_9=function $$nest_and_try_closing(delimiter,ts,te,lookahead){var $a,$b,$c,$d,self=this;if(lookahead==null){lookahead=nil}delimiter=self.$coerce_encoding(delimiter);if($truthy($truthy($a=self.start_delim)?self.start_delim["$=="](delimiter):$a)){self.nesting=$rb_plus(self.nesting,1)}else if($truthy(self["$delimiter?"](delimiter))){self.nesting=$rb_minus(self.nesting,1)}if(self.nesting["$=="](0)){if($truthy(self["$words?"]())){self.$extend_space(ts,ts)}if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=lookahead)?self.label_allowed:$d)?lookahead["$[]"](0)["$=="](":".$force_encoding("ASCII-8BIT")):$c)?lookahead["$[]"](1)["$!="](":".$force_encoding("ASCII-8BIT")):$b)?self.start_tok["$=="]("tSTRING_BEG"):$a)){self.$flush_string();return self.$emit("tLABEL_END",self.end_delim,ts,$rb_plus(te,1))}else if($truthy(self.monolithic)){return self.$emit("tSTRING",self.buffer,self.str_s,te)}else{if($truthy(self["$heredoc?"]())){}else{self.$flush_string()}return self.$emit("tSTRING_END",self.end_delim,ts,te)}}else{return nil}},TMP_Literal_nest_and_try_closing_9.$$arity=-4);Opal.defn(self,"$infer_indent_level",TMP_Literal_infer_indent_level_11=function $$infer_indent_level(line){var TMP_10,self=this,indent_level=nil;if($truthy(self.dedent_body["$!"]())){return nil}indent_level=0;return function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(TMP_10=function(char$){var self=TMP_10.$$s||this,$a,$case=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null)char$=nil;return function(){$case=char$;if(" "["$==="]($case)){return indent_level=$rb_plus(indent_level,1)}else if("\t"["$==="]($case)){return indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8)))}else{if($truthy($truthy($a=self.dedent_level["$nil?"]())?$a:$rb_gt(self.dedent_level,indent_level))){self.dedent_level=indent_level}Opal.brk(nil,$brk)}}()},TMP_10.$$s=self,TMP_10.$$brk=$brk,TMP_10.$$arity=1,TMP_10))}catch(err){if(err===$brk){return err.$v}else{throw err}}}()},TMP_Literal_infer_indent_level_11.$$arity=1);Opal.defn(self,"$start_interp_brace",TMP_Literal_start_interp_brace_12=function $$start_interp_brace(){var self=this;return self.interp_braces=$rb_plus(self.interp_braces,1)},TMP_Literal_start_interp_brace_12.$$arity=0);Opal.defn(self,"$end_interp_brace_and_try_closing",TMP_Literal_end_interp_brace_and_try_closing_13=function $$end_interp_brace_and_try_closing(){var self=this;self.interp_braces=$rb_minus(self.interp_braces,1);return self.interp_braces["$=="](0)},TMP_Literal_end_interp_brace_and_try_closing_13.$$arity=0);Opal.defn(self,"$extend_string",TMP_Literal_extend_string_14=function $$extend_string(string,ts,te){var $a,self=this;self.buffer_s=$truthy($a=self.buffer_s)?$a:ts;self.buffer_e=te;return self.buffer=$rb_plus(self.buffer,string)},TMP_Literal_extend_string_14.$$arity=3);Opal.defn(self,"$flush_string",TMP_Literal_flush_string_15=function $$flush_string(){var self=this;if($truthy(self.monolithic)){self.$emit_start_tok();self.monolithic=false}if($truthy(self.buffer["$empty?"]())){return nil}else{self.$emit("tSTRING_CONTENT",self.buffer,self.buffer_s,self.buffer_e);self.$clear_buffer();return self.$extend_content()}},TMP_Literal_flush_string_15.$$arity=0);Opal.defn(self,"$extend_content",TMP_Literal_extend_content_16=function $$extend_content(){var self=this;return self.space_emitted=false},TMP_Literal_extend_content_16.$$arity=0);Opal.defn(self,"$extend_space",TMP_Literal_extend_space_17=function $$extend_space(ts,te){var self=this;self.$flush_string();if($truthy(self.space_emitted)){return nil}else{self.$emit("tSPACE",nil,ts,te);return self.space_emitted=true}},TMP_Literal_extend_space_17.$$arity=2);self.$protected();Opal.defn(self,"$delimiter?",TMP_Literal_delimiter$q_18=function(delimiter){var self=this;if($truthy(self.indent)){return self.end_delim["$=="](delimiter.$lstrip())}else{return self.end_delim["$=="](delimiter)}},TMP_Literal_delimiter$q_18.$$arity=1);Opal.defn(self,"$coerce_encoding",TMP_Literal_coerce_encoding_19=function $$coerce_encoding(string){var $a,self=this;if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){return string.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))}else{return string}},TMP_Literal_coerce_encoding_19.$$arity=1);Opal.defn(self,"$clear_buffer",TMP_Literal_clear_buffer_20=function $$clear_buffer(){var $a,self=this;self.buffer="".$force_encoding("ASCII-8BIT");if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding())}self.buffer_s=nil;return self.buffer_e=nil},TMP_Literal_clear_buffer_20.$$arity=0);Opal.defn(self,"$emit_start_tok",TMP_Literal_emit_start_tok_21=function $$emit_start_tok(){var $a,self=this,str_e=nil;str_e=$truthy($a=self.heredoc_e)?$a:$rb_plus(self.str_s,self.str_type.$length());return self.$emit(self.start_tok,self.str_type,self.str_s,str_e)},TMP_Literal_emit_start_tok_21.$$arity=0);return(Opal.defn(self,"$emit",TMP_Literal_emit_22=function $$emit(token,type,s,e){var self=this;return self.lexer.$send("emit",token,type,s,e)},TMP_Literal_emit_22.$$arity=4),nil)&&"emit"})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/stack_state"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$freeze","$clear","$|","$<<","$&","$>>","$==","$push","$pop","$[]","$to_s"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $StackState(){}var self=$StackState=$klass($base,$super,"StackState",$StackState);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StackState_initialize_1,TMP_StackState_clear_2,TMP_StackState_push_3,TMP_StackState_pop_4,TMP_StackState_lexpop_5,TMP_StackState_active$q_6,TMP_StackState_to_s_7;def.stack=def.name=nil;Opal.defn(self,"$initialize",TMP_StackState_initialize_1=function $$initialize(name){var self=this;self.name=name.$freeze();return self.$clear()},TMP_StackState_initialize_1.$$arity=1);Opal.defn(self,"$clear",TMP_StackState_clear_2=function $$clear(){var self=this;return self.stack=0},TMP_StackState_clear_2.$$arity=0);Opal.defn(self,"$push",TMP_StackState_push_3=function $$push(bit){var self=this,bit_value=nil;bit_value=function(){if($truthy(bit)){return 1}else{return 0}return nil}();self.stack=self.stack["$<<"](1)["$|"](bit_value);return bit},TMP_StackState_push_3.$$arity=1);Opal.defn(self,"$pop",TMP_StackState_pop_4=function $$pop(){var self=this,bit_value=nil;bit_value=self.stack["$&"](1);self.stack=self.stack["$>>"](1);return bit_value["$=="](1)},TMP_StackState_pop_4.$$arity=0);Opal.defn(self,"$lexpop",TMP_StackState_lexpop_5=function $$lexpop(){var $a,self=this;return self.$push($truthy($a=self.$pop())?$a:self.$pop())},TMP_StackState_lexpop_5.$$arity=0);Opal.defn(self,"$active?",TMP_StackState_active$q_6=function(){var self=this;return self.stack["$[]"](0)["$=="](1)},TMP_StackState_active$q_6.$$arity=0);Opal.defn(self,"$to_s",TMP_StackState_to_s_7=function $$to_s(){var self=this;return""+"["+self.stack.$to_s(2)+" <= "+self.name+"]"},TMP_StackState_to_s_7.$$arity=0);return Opal.alias(self,"inspect","to_s")})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/dedenter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$-","$length","$each_with_index","$chars","$==","$>=","$slice!","$+","$===","$%"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Dedenter(){}var self=$Dedenter=$klass($base,$super,"Dedenter",$Dedenter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Dedenter_initialize_1,TMP_Dedenter_dedent_3,TMP_Dedenter_interrupt_4;def.at_line_begin=nil;Opal.defn(self,"$initialize",TMP_Dedenter_initialize_1=function $$initialize(dedent_level){var self=this;self.dedent_level=dedent_level;self.at_line_begin=true;return self.indent_level=0},TMP_Dedenter_initialize_1.$$arity=1);Opal.defn(self,"$dedent",TMP_Dedenter_dedent_3=function $$dedent(string){var TMP_2,self=this,space_begin=nil,space_end=nil,offset=nil,last_index=nil;space_begin=space_end=offset=0;last_index=$rb_minus(string.$length(),1);$send(string.$chars(),"each_with_index",[],(TMP_2=function(char$,index){var self=TMP_2.$$s||this,$a,$case=nil;if(self.at_line_begin==null)self.at_line_begin=nil;if(self.indent_level==null)self.indent_level=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null)char$=nil;if(index==null)index=nil;if($truthy(self.at_line_begin)){if($truthy($truthy($a=char$["$=="]("\n"))?$a:$rb_ge(self.indent_level,self.dedent_level))){string["$slice!"](Opal.Range.$new(space_begin,space_end,true));offset=$rb_plus(offset,$rb_minus($rb_minus(space_end,space_begin),1));self.at_line_begin=false;if(char$["$=="]("\n")){return TMP_2.apply(null,$slice.call(arguments))}}return function(){$case=char$;if(" "["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,1);return space_end=$rb_plus(space_end,1)}else if("\t"["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,$rb_minus(8,self.indent_level["$%"](8)));return space_end=$rb_plus(space_end,1)}else{return nil}}()}else if($truthy(($a=char$["$=="]("\n"))?index["$=="](last_index):char$["$=="]("\n"))){self.at_line_begin=true;self.indent_level=0;return space_begin=space_end=$rb_plus($rb_minus(index,offset),1)}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2));if($truthy(self.at_line_begin)){string["$slice!"](Opal.Range.$new(space_begin,space_end,false))}return nil},TMP_Dedenter_dedent_3.$$arity=1);return(Opal.defn(self,"$interrupt",TMP_Dedenter_interrupt_4=function $$interrupt(){var self=this;return self.at_line_begin=false},TMP_Dedenter_interrupt_4.$$arity=0),nil)&&"interrupt"})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/builders/default"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$attr_accessor","$n0","$token_map","$numeric","$n","$value","$new","$loc","$private","$updated","$-@","$join","$expression","$string_value","$delimited_string_map","$unquoted_map","$collapse_string_parts?","$nil?","$first","$children","$string_map","$prefix_string_map","$to_sym","$collection_map","$==","$version","$empty?","$diagnostic","$!","$type","$dedent","$each","$interrupt","$map","$uniq","$sort","$each_char","$to_proc","$static_regexp","$message","$<<","$regexp_map","$unary_op_map","$===","$binary_op_map","$!=","$%","$size","$last","$each_slice","$pair_keyword_map","$pair_quoted_map","$symbol_compose","$variable_map","$name","$source_buffer","$dup","$line","$declared?","$static_env","$var_send_map","$constant_map","$in_def?","$declare","$with_expression","$with_operator","$join_exprs","$[]","$module_definition_map","$definition_map","$keyword_map","$check_duplicate_args","$arg_prefix_map","$kwarg_map","$emit_procarg0","$class","$resize","$-","$end","$call_type_for_dot","$send_map","$emit_lambda","$expr_map","$keyword","$include?","$block_map","$array","$+","$send_index_map","$send_binary_op_map","$static_regexp_node","$names","$send_unary_op_map","$check_condition","$condition_map","$keyword_mod_map","$ternary_map","$for_map","$>","$count","$rescue_body_map","$any?","$eh_keyword_map","$push","$none?","$one?","$begin","$<=","$[]=","$arg_name_collides?","$begin_pos","$end_pos","$start_with?","$static_string","$encode","$valid_encoding?","$process","$diagnostics","$send"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Default(){}var self=$Default=$klass($base,$super,"Default",$Default);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Default_initialize_2,TMP_Default_nil_3,TMP_Default_true_4,TMP_Default_false_5,TMP_Default_integer_6,TMP_Default_float_7,TMP_Default_rational_8,TMP_Default_complex_9,TMP_Default_numeric_10,TMP_Default_negate_11,TMP_Default___LINE___12,TMP_Default_string_13,TMP_Default_string_internal_14,TMP_Default_string_compose_15,TMP_Default_character_16,TMP_Default___FILE___17,TMP_Default_symbol_18,TMP_Default_symbol_internal_19,TMP_Default_symbol_compose_20,TMP_Default_xstring_compose_21,TMP_Default_dedent_string_23,TMP_Default_regexp_options_24,TMP_Default_regexp_compose_25,TMP_Default_array_26,TMP_Default_splat_27,TMP_Default_word_28,TMP_Default_words_compose_29,TMP_Default_symbols_compose_31,TMP_Default_pair_32,TMP_Default_pair_list_18_34,TMP_Default_pair_keyword_35,TMP_Default_pair_quoted_36,TMP_Default_kwsplat_37,TMP_Default_associate_38,TMP_Default_range_inclusive_39,TMP_Default_range_exclusive_40,TMP_Default_self_41,TMP_Default_ident_42,TMP_Default_ivar_43,TMP_Default_gvar_44,TMP_Default_cvar_45,TMP_Default_back_ref_46,TMP_Default_nth_ref_47,TMP_Default_accessible_48,TMP_Default_const_49,TMP_Default_const_global_50,TMP_Default_const_fetch_51,TMP_Default___ENCODING___52,TMP_Default_assignable_53,TMP_Default_const_op_assignable_54,TMP_Default_assign_55,TMP_Default_op_assign_56,TMP_Default_multi_lhs_57,TMP_Default_multi_assign_58,TMP_Default_def_class_59,TMP_Default_def_sclass_60,TMP_Default_def_module_61,TMP_Default_def_method_62,TMP_Default_def_singleton_63,TMP_Default_undef_method_64,TMP_Default_alias_65,TMP_Default_args_66,TMP_Default_arg_67,TMP_Default_optarg_68,TMP_Default_restarg_69,TMP_Default_kwarg_70,TMP_Default_kwoptarg_71,TMP_Default_kwrestarg_72,TMP_Default_shadowarg_73,TMP_Default_blockarg_74,TMP_Default_procarg0_75,TMP_Default_arg_expr_76,TMP_Default_restarg_expr_77,TMP_Default_blockarg_expr_78,TMP_Default_objc_kwarg_79,TMP_Default_objc_restarg_80,TMP_Default_call_type_for_dot_81,TMP_Default_call_method_82,TMP_Default_call_lambda_83,TMP_Default_block_84,TMP_Default_block_pass_85,TMP_Default_objc_varargs_86,TMP_Default_attr_asgn_87,TMP_Default_index_88,TMP_Default_index_asgn_89,TMP_Default_binary_op_90,TMP_Default_match_op_92,TMP_Default_unary_op_93,TMP_Default_not_op_94,TMP_Default_logical_op_95,TMP_Default_condition_96,TMP_Default_condition_mod_97,TMP_Default_ternary_98,TMP_Default_when_99,TMP_Default_case_100,TMP_Default_loop_101,TMP_Default_loop_mod_102,TMP_Default_for_103,TMP_Default_keyword_cmd_104,TMP_Default_preexe_105,TMP_Default_postexe_106,TMP_Default_rescue_body_107,TMP_Default_begin_body_108,TMP_Default_compstmt_109,TMP_Default_begin_110,TMP_Default_begin_keyword_111,TMP_Default_check_condition_112,TMP_Default_check_duplicate_args_114,TMP_Default_arg_name_collides$q_115,TMP_Default_n_116,TMP_Default_n0_117,TMP_Default_join_exprs_118,TMP_Default_token_map_119,TMP_Default_delimited_string_map_120,TMP_Default_prefix_string_map_121,TMP_Default_unquoted_map_122,TMP_Default_pair_keyword_map_123,TMP_Default_pair_quoted_map_124,TMP_Default_expr_map_125,TMP_Default_collection_map_126,TMP_Default_string_map_127,TMP_Default_regexp_map_128,TMP_Default_constant_map_129,TMP_Default_variable_map_130,TMP_Default_binary_op_map_131,TMP_Default_unary_op_map_132,TMP_Default_arg_prefix_map_133,TMP_Default_kwarg_map_134,TMP_Default_module_definition_map_135,TMP_Default_definition_map_136,TMP_Default_send_map_137,TMP_Default_var_send_map_138,TMP_Default_send_binary_op_map_139,TMP_Default_send_unary_op_map_140,TMP_Default_send_index_map_141,TMP_Default_block_map_142,TMP_Default_keyword_map_143,TMP_Default_keyword_mod_map_144,TMP_Default_condition_map_145,TMP_Default_ternary_map_146,TMP_Default_for_map_147,TMP_Default_rescue_body_map_148,TMP_Default_eh_keyword_map_149,TMP_Default_static_string_151,TMP_Default_static_regexp_152,TMP_Default_static_regexp_node_153,TMP_Default_collapse_string_parts$q_154,TMP_Default_value_155,$a,TMP_Default_string_value_156,TMP_Default_loc_157,TMP_Default_diagnostic_158;def.parser=def.emit_file_line_as_literals=nil;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_lambda")})(Opal.get_singleton_class(self),$nesting);self.emit_lambda=false;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_procarg0")})(Opal.get_singleton_class(self),$nesting);self.emit_procarg0=false;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_modernize_1;return(Opal.defn(self,"$modernize",TMP_modernize_1=function $$modernize(){var self=this;self.emit_lambda=true;return self.emit_procarg0=true},TMP_modernize_1.$$arity=0),nil)&&"modernize"})(Opal.get_singleton_class(self),$nesting);self.$attr_accessor("parser");self.$attr_accessor("emit_file_line_as_literals");Opal.defn(self,"$initialize",TMP_Default_initialize_2=function $$initialize(){var self=this;return self.emit_file_line_as_literals=true},TMP_Default_initialize_2.$$arity=0);Opal.defn(self,"$nil",TMP_Default_nil_3=function $$nil(nil_t){var self=this;return self.$n0("nil",self.$token_map(nil_t))},TMP_Default_nil_3.$$arity=1);Opal.defn(self,"$true",TMP_Default_true_4=function(true_t){var self=this;return self.$n0("true",self.$token_map(true_t))},TMP_Default_true_4.$$arity=1);Opal.defn(self,"$false",TMP_Default_false_5=function(false_t){var self=this;return self.$n0("false",self.$token_map(false_t))},TMP_Default_false_5.$$arity=1);Opal.defn(self,"$integer",TMP_Default_integer_6=function $$integer(integer_t){var self=this;return self.$numeric("int",integer_t)},TMP_Default_integer_6.$$arity=1);Opal.defn(self,"$float",TMP_Default_float_7=function(float_t){var self=this;return self.$numeric("float",float_t)},TMP_Default_float_7.$$arity=1);Opal.defn(self,"$rational",TMP_Default_rational_8=function $$rational(rational_t){var self=this;return self.$numeric("rational",rational_t)},TMP_Default_rational_8.$$arity=1);Opal.defn(self,"$complex",TMP_Default_complex_9=function $$complex(complex_t){var self=this;return self.$numeric("complex",complex_t)},TMP_Default_complex_9.$$arity=1);Opal.defn(self,"$numeric",TMP_Default_numeric_10=function $$numeric(kind,token){var self=this;return self.$n(kind,[self.$value(token)],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(nil,self.$loc(token)))},TMP_Default_numeric_10.$$arity=2);self.$private("numeric");Opal.defn(self,"$negate",TMP_Default_negate_11=function $$negate(uminus_t,numeric){var $a,self=this,value=nil,operator_loc=nil;$a=[].concat(Opal.to_a(numeric)),value=$a[0]==null?nil:$a[0],$a;operator_loc=self.$loc(uminus_t);return numeric.$updated(nil,[value["$-@"]()],$hash2(["location"],{location:Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))},TMP_Default_negate_11.$$arity=2);Opal.defn(self,"$__LINE__",TMP_Default___LINE___12=function $$__LINE__(__LINE__t){var self=this;return self.$n0("__LINE__",self.$token_map(__LINE__t))},TMP_Default___LINE___12.$$arity=1);Opal.defn(self,"$string",TMP_Default_string_13=function $$string(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$delimited_string_map(string_t))},TMP_Default_string_13.$$arity=1);Opal.defn(self,"$string_internal",TMP_Default_string_internal_14=function $$string_internal(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$unquoted_map(string_t))},TMP_Default_string_internal_14.$$arity=1);Opal.defn(self,"$string_compose",TMP_Default_string_compose_15=function $$string_compose(begin_t,parts,end_t){var $a,self=this;if($truthy(self["$collapse_string_parts?"](parts))){if($truthy($truthy($a=begin_t["$nil?"]())?end_t["$nil?"]():$a)){return parts.$first()}else{return self.$n("str",parts.$first().$children(),self.$string_map(begin_t,parts,end_t))}}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))}},TMP_Default_string_compose_15.$$arity=3);Opal.defn(self,"$character",TMP_Default_character_16=function $$character(char_t){var self=this;return self.$n("str",[self.$string_value(char_t)],self.$prefix_string_map(char_t))},TMP_Default_character_16.$$arity=1);Opal.defn(self,"$__FILE__",TMP_Default___FILE___17=function $$__FILE__(__FILE__t){var self=this;return self.$n0("__FILE__",self.$token_map(__FILE__t))},TMP_Default___FILE___17.$$arity=1);Opal.defn(self,"$symbol",TMP_Default_symbol_18=function $$symbol(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$prefix_string_map(symbol_t))},TMP_Default_symbol_18.$$arity=1);Opal.defn(self,"$symbol_internal",TMP_Default_symbol_internal_19=function $$symbol_internal(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$unquoted_map(symbol_t))},TMP_Default_symbol_internal_19.$$arity=1);Opal.defn(self,"$symbol_compose",TMP_Default_symbol_compose_20=function $$symbol_compose(begin_t,parts,end_t){var $a,self=this,str=nil;if($truthy(self["$collapse_string_parts?"](parts))){str=parts.$first();return self.$n("sym",[str.$children().$first().$to_sym()],self.$collection_map(begin_t,str.$loc().$expression(),end_t))}else if($truthy(($a=self.parser.$version()["$=="](18))?parts["$empty?"]():self.parser.$version()["$=="](18))){return self.$diagnostic("error","empty_symbol",nil,self.$loc(begin_t).$join(self.$loc(end_t)))}else{return self.$n("dsym",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))}},TMP_Default_symbol_compose_20.$$arity=3);Opal.defn(self,"$xstring_compose",TMP_Default_xstring_compose_21=function $$xstring_compose(begin_t,parts,end_t){var self=this;return self.$n("xstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))},TMP_Default_xstring_compose_21.$$arity=3);Opal.defn(self,"$dedent_string",TMP_Default_dedent_string_23=function $$dedent_string(node,dedent_level){var $a,TMP_22,self=this,dedenter=nil,str=nil;if($truthy(dedent_level["$nil?"]()["$!"]())){dedenter=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Lexer"),"Dedenter").$new(dedent_level);if(node.$type()["$=="]("str")){str=node.$children().$first();dedenter.$dedent(str)}else if($truthy($truthy($a=node.$type()["$=="]("dstr"))?$a:node.$type()["$=="]("xstr"))){$send(node.$children(),"each",[],(TMP_22=function(str_node){var self=TMP_22.$$s||this;if(str_node==null)str_node=nil;if(str_node.$type()["$=="]("str")){str=str_node.$children().$first();return dedenter.$dedent(str)}else{return dedenter.$interrupt()}},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}}return node},TMP_Default_dedent_string_23.$$arity=2);Opal.defn(self,"$regexp_options",TMP_Default_regexp_options_24=function $$regexp_options(regopt_t){var self=this,options=nil;options=$send(self.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc());return self.$n("regopt",options,self.$token_map(regopt_t))},TMP_Default_regexp_options_24.$$arity=1);Opal.defn(self,"$regexp_compose",TMP_Default_regexp_compose_25=function $$regexp_compose(begin_t,parts,end_t,options){var self=this,e=nil;try{self.$static_regexp(parts,options)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"RegexpError")])){e=$err;try{self.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),self.$loc(begin_t).$join(self.$loc(end_t)))}finally{Opal.pop_exception()}}else{throw $err}}return self.$n("regexp",parts["$<<"](options),self.$regexp_map(begin_t,end_t,options))},TMP_Default_regexp_compose_25.$$arity=4);Opal.defn(self,"$array",TMP_Default_array_26=function $$array(begin_t,elements,end_t){var self=this;return self.$n("array",elements,self.$collection_map(begin_t,elements,end_t))},TMP_Default_array_26.$$arity=3);Opal.defn(self,"$splat",TMP_Default_splat_27=function $$splat(star_t,arg){var self=this;if(arg==null){arg=nil}if($truthy(arg["$nil?"]())){return self.$n0("splat",self.$unary_op_map(star_t))}else{return self.$n("splat",[arg],self.$unary_op_map(star_t,arg))}},TMP_Default_splat_27.$$arity=-2);Opal.defn(self,"$word",TMP_Default_word_28=function $$word(parts){var self=this;if($truthy(self["$collapse_string_parts?"](parts))){return parts.$first()}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$collection_map(nil,parts,nil))}},TMP_Default_word_28.$$arity=1);Opal.defn(self,"$words_compose",TMP_Default_words_compose_29=function $$words_compose(begin_t,parts,end_t){var self=this;return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},TMP_Default_words_compose_29.$$arity=3);Opal.defn(self,"$symbols_compose",TMP_Default_symbols_compose_31=function $$symbols_compose(begin_t,parts,end_t){var TMP_30,self=this;parts=$send(parts,"map",[],(TMP_30=function(part){var self=TMP_30.$$s||this,$a,$case=nil,value=nil;if(part==null)part=nil;return function(){$case=part.$type();if("str"["$==="]($case)){$a=[].concat(Opal.to_a(part)),value=$a[0]==null?nil:$a[0],$a;return part.$updated("sym",[value.$to_sym()])}else if("dstr"["$==="]($case)){return part.$updated("dsym")}else{return part}}()},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30));return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},TMP_Default_symbols_compose_31.$$arity=3);Opal.defn(self,"$pair",TMP_Default_pair_32=function $$pair(key,assoc_t,value){var self=this;return self.$n("pair",[key,value],self.$binary_op_map(key,assoc_t,value))},TMP_Default_pair_32.$$arity=3);Opal.defn(self,"$pair_list_18",TMP_Default_pair_list_18_34=function $$pair_list_18(list){var TMP_33,self=this;if($truthy(list.$size()["$%"](2)["$!="](0))){return self.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression())}else{return $send(list.$each_slice(2),"map",[],(TMP_33=function(key,value){var self=TMP_33.$$s||this;if(key==null)key=nil;if(value==null)value=nil;return self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))},TMP_33.$$s=self,TMP_33.$$arity=2,TMP_33))}},TMP_Default_pair_list_18_34.$$arity=1);Opal.defn(self,"$pair_keyword",TMP_Default_pair_keyword_35=function $$pair_keyword(key_t,value){var $a,$b,self=this,key_map=nil,pair_map=nil,key=nil;$b=self.$pair_keyword_map(key_t,value),$a=Opal.to_ary($b),key_map=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$n("sym",[self.$value(key_t).$to_sym()],key_map);return self.$n("pair",[key,value],pair_map)},TMP_Default_pair_keyword_35.$$arity=2);Opal.defn(self,"$pair_quoted",TMP_Default_pair_quoted_36=function $$pair_quoted(begin_t,parts,end_t,value){var $a,$b,self=this,pair_map=nil,key=nil;$b=self.$pair_quoted_map(begin_t,end_t,value),$a=Opal.to_ary($b),end_t=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$symbol_compose(begin_t,parts,end_t);return self.$n("pair",[key,value],pair_map)},TMP_Default_pair_quoted_36.$$arity=4);Opal.defn(self,"$kwsplat",TMP_Default_kwsplat_37=function $$kwsplat(dstar_t,arg){var self=this;return self.$n("kwsplat",[arg],self.$unary_op_map(dstar_t,arg))},TMP_Default_kwsplat_37.$$arity=2);Opal.defn(self,"$associate",TMP_Default_associate_38=function $$associate(begin_t,pairs,end_t){var self=this;return self.$n("hash",[].concat(Opal.to_a(pairs)),self.$collection_map(begin_t,pairs,end_t))},TMP_Default_associate_38.$$arity=3);Opal.defn(self,"$range_inclusive",TMP_Default_range_inclusive_39=function $$range_inclusive(lhs,dot2_t,rhs){var self=this;return self.$n("irange",[lhs,rhs],self.$binary_op_map(lhs,dot2_t,rhs))},TMP_Default_range_inclusive_39.$$arity=3);Opal.defn(self,"$range_exclusive",TMP_Default_range_exclusive_40=function $$range_exclusive(lhs,dot3_t,rhs){var self=this;return self.$n("erange",[lhs,rhs],self.$binary_op_map(lhs,dot3_t,rhs))},TMP_Default_range_exclusive_40.$$arity=3);Opal.defn(self,"$self",TMP_Default_self_41=function $$self(token){var self=this;return self.$n0("self",self.$token_map(token))},TMP_Default_self_41.$$arity=1);Opal.defn(self,"$ident",TMP_Default_ident_42=function $$ident(token){var self=this;return self.$n("ident",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_ident_42.$$arity=1);Opal.defn(self,"$ivar",TMP_Default_ivar_43=function $$ivar(token){var self=this;return self.$n("ivar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_ivar_43.$$arity=1);Opal.defn(self,"$gvar",TMP_Default_gvar_44=function $$gvar(token){var self=this;return self.$n("gvar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_gvar_44.$$arity=1);Opal.defn(self,"$cvar",TMP_Default_cvar_45=function $$cvar(token){var self=this;return self.$n("cvar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_cvar_45.$$arity=1);Opal.defn(self,"$back_ref",TMP_Default_back_ref_46=function $$back_ref(token){var self=this;return self.$n("back_ref",[self.$value(token).$to_sym()],self.$token_map(token))},TMP_Default_back_ref_46.$$arity=1);Opal.defn(self,"$nth_ref",TMP_Default_nth_ref_47=function $$nth_ref(token){var self=this;return self.$n("nth_ref",[self.$value(token)],self.$token_map(token))},TMP_Default_nth_ref_47.$$arity=1);Opal.defn(self,"$accessible",TMP_Default_accessible_48=function $$accessible(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("__FILE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup())}else{return node}}else if("__LINE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup())}else{return node}}else if("__ENCODING__"["$==="]($case)){return self.$n("const",[self.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup())}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;if($truthy(self.parser.$static_env()["$declared?"](name))){return node.$updated("lvar")}else{$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;return self.$n("send",[nil,name],self.$var_send_map(node))}}else{return node}}()},TMP_Default_accessible_48.$$arity=1);Opal.defn(self,"$const",TMP_Default_const_49=function(name_t){var self=this;return self.$n("const",[nil,self.$value(name_t).$to_sym()],self.$constant_map(nil,nil,name_t))},TMP_Default_const_49.$$arity=1);Opal.defn(self,"$const_global",TMP_Default_const_global_50=function $$const_global(t_colon3,name_t){var self=this,cbase=nil;cbase=self.$n0("cbase",self.$token_map(t_colon3));return self.$n("const",[cbase,self.$value(name_t).$to_sym()],self.$constant_map(cbase,t_colon3,name_t))},TMP_Default_const_global_50.$$arity=2);Opal.defn(self,"$const_fetch",TMP_Default_const_fetch_51=function $$const_fetch(scope,t_colon2,name_t){var self=this;return self.$n("const",[scope,self.$value(name_t).$to_sym()],self.$constant_map(scope,t_colon2,name_t))},TMP_Default_const_fetch_51.$$arity=3);Opal.defn(self,"$__ENCODING__",TMP_Default___ENCODING___52=function $$__ENCODING__(__ENCODING__t){var self=this;return self.$n0("__ENCODING__",self.$token_map(__ENCODING__t))},TMP_Default___ENCODING___52.$$arity=1);Opal.defn(self,"$assignable",TMP_Default_assignable_53=function $$assignable(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("cvar"["$==="]($case)){return node.$updated("cvasgn")}else if("ivar"["$==="]($case)){return node.$updated("ivasgn")}else if("gvar"["$==="]($case)){return node.$updated("gvasgn")}else if("const"["$==="]($case)){if($truthy(self.parser["$in_def?"]())){self.$diagnostic("error","dynamic_const",nil,node.$loc().$expression())}return node.$updated("casgn")}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;self.parser.$static_env().$declare(name);return node.$updated("lvasgn")}else if("nil"["$==="]($case)||"self"["$==="]($case)||"true"["$==="]($case)||"false"["$==="]($case)||"__FILE__"["$==="]($case)||"__LINE__"["$==="]($case)||"__ENCODING__"["$==="]($case)){return self.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression())}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,node.$loc().$expression())}else{return nil}}()},TMP_Default_assignable_53.$$arity=1);Opal.defn(self,"$const_op_assignable",TMP_Default_const_op_assignable_54=function $$const_op_assignable(node){var self=this;return node.$updated("casgn")},TMP_Default_const_op_assignable_54.$$arity=1);Opal.defn(self,"$assign",TMP_Default_assign_55=function $$assign(lhs,eql_t,rhs){var self=this;return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs,rhs))}))},TMP_Default_assign_55.$$arity=3);Opal.defn(self,"$op_assign",TMP_Default_op_assign_56=function $$op_assign(lhs,op_t,rhs){var self=this,$case=nil,operator=nil,source_map=nil;return function(){$case=lhs.$type();if("gvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"lvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"send"["$==="]($case)||"csend"["$==="]($case)){operator=self.$value(op_t)["$[]"]($range(0,-1,false)).$to_sym();source_map=lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs,rhs));return function(){$case=operator;if("&&"["$==="]($case)){return self.$n("and_asgn",[lhs,rhs],source_map)}else if("||"["$==="]($case)){return self.$n("or_asgn",[lhs,rhs],source_map)}else{return self.$n("op_asgn",[lhs,operator,rhs],source_map)}}()}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression())}else{return nil}}()},TMP_Default_op_assign_56.$$arity=3);Opal.defn(self,"$multi_lhs",TMP_Default_multi_lhs_57=function $$multi_lhs(begin_t,items,end_t){var self=this;return self.$n("mlhs",[].concat(Opal.to_a(items)),self.$collection_map(begin_t,items,end_t))},TMP_Default_multi_lhs_57.$$arity=3);Opal.defn(self,"$multi_assign",TMP_Default_multi_assign_58=function $$multi_assign(lhs,eql_t,rhs){var self=this;return self.$n("masgn",[lhs,rhs],self.$binary_op_map(lhs,eql_t,rhs))},TMP_Default_multi_assign_58.$$arity=3);Opal.defn(self,"$def_class",TMP_Default_def_class_59=function $$def_class(class_t,name,lt_t,superclass,body,end_t){var self=this;return self.$n("class",[name,superclass,body],self.$module_definition_map(class_t,name,lt_t,end_t))},TMP_Default_def_class_59.$$arity=6);Opal.defn(self,"$def_sclass",TMP_Default_def_sclass_60=function $$def_sclass(class_t,lshft_t,expr,body,end_t){var self=this;return self.$n("sclass",[expr,body],self.$module_definition_map(class_t,nil,lshft_t,end_t))},TMP_Default_def_sclass_60.$$arity=5);Opal.defn(self,"$def_module",TMP_Default_def_module_61=function $$def_module(module_t,name,body,end_t){var self=this;return self.$n("module",[name,body],self.$module_definition_map(module_t,name,nil,end_t))},TMP_Default_def_module_61.$$arity=4);Opal.defn(self,"$def_method",TMP_Default_def_method_62=function $$def_method(def_t,name_t,args,body,end_t){var self=this;return self.$n("def",[self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,nil,name_t,end_t))},TMP_Default_def_method_62.$$arity=5);Opal.defn(self,"$def_singleton",TMP_Default_def_singleton_63=function $$def_singleton(def_t,definee,dot_t,name_t,args,body,end_t){var self=this,$case=nil;return function(){$case=definee.$type();if("int"["$==="]($case)||"str"["$==="]($case)||"dstr"["$==="]($case)||"sym"["$==="]($case)||"dsym"["$==="]($case)||"regexp"["$==="]($case)||"array"["$==="]($case)||"hash"["$==="]($case)){return self.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression())}else{return self.$n("defs",[definee,self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,dot_t,name_t,end_t))}}()},TMP_Default_def_singleton_63.$$arity=7);Opal.defn(self,"$undef_method",TMP_Default_undef_method_64=function $$undef_method(undef_t,names){var self=this;return self.$n("undef",[].concat(Opal.to_a(names)),self.$keyword_map(undef_t,nil,names,nil))},TMP_Default_undef_method_64.$$arity=2);Opal.defn(self,"$alias",TMP_Default_alias_65=function $$alias(alias_t,to,from){var self=this;return self.$n("alias",[to,from],self.$keyword_map(alias_t,nil,[to,from],nil))},TMP_Default_alias_65.$$arity=3);Opal.defn(self,"$args",TMP_Default_args_66=function $$args(begin_t,args,end_t,check_args){var self=this;if(check_args==null){check_args=true}if($truthy(check_args)){args=self.$check_duplicate_args(args)}return self.$n("args",args,self.$collection_map(begin_t,args,end_t))},TMP_Default_args_66.$$arity=-4);Opal.defn(self,"$arg",TMP_Default_arg_67=function $$arg(name_t){var self=this;return self.$n("arg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},TMP_Default_arg_67.$$arity=1);Opal.defn(self,"$optarg",TMP_Default_optarg_68=function $$optarg(name_t,eql_t,value){var self=this;return self.$n("optarg",[self.$value(name_t).$to_sym(),value],self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression())))},TMP_Default_optarg_68.$$arity=3);Opal.defn(self,"$restarg",TMP_Default_restarg_69=function $$restarg(star_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("restarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(star_t,name_t))}else{return self.$n0("restarg",self.$arg_prefix_map(star_t))}},TMP_Default_restarg_69.$$arity=-2);Opal.defn(self,"$kwarg",TMP_Default_kwarg_70=function $$kwarg(name_t){var self=this;return self.$n("kwarg",[self.$value(name_t).$to_sym()],self.$kwarg_map(name_t))},TMP_Default_kwarg_70.$$arity=1);Opal.defn(self,"$kwoptarg",TMP_Default_kwoptarg_71=function $$kwoptarg(name_t,value){var self=this;return self.$n("kwoptarg",[self.$value(name_t).$to_sym(),value],self.$kwarg_map(name_t,value))},TMP_Default_kwoptarg_71.$$arity=2);Opal.defn(self,"$kwrestarg",TMP_Default_kwrestarg_72=function $$kwrestarg(dstar_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("kwrestarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(dstar_t,name_t))}else{return self.$n0("kwrestarg",self.$arg_prefix_map(dstar_t))}},TMP_Default_kwrestarg_72.$$arity=-2);Opal.defn(self,"$shadowarg",TMP_Default_shadowarg_73=function $$shadowarg(name_t){var self=this;return self.$n("shadowarg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},TMP_Default_shadowarg_73.$$arity=1);Opal.defn(self,"$blockarg",TMP_Default_blockarg_74=function $$blockarg(amper_t,name_t){var self=this;return self.$n("blockarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(amper_t,name_t))},TMP_Default_blockarg_74.$$arity=2);Opal.defn(self,"$procarg0",TMP_Default_procarg0_75=function $$procarg0(arg){var self=this;if($truthy(self.$class().$emit_procarg0())){return arg.$updated("procarg0")}else{return arg}},TMP_Default_procarg0_75.$$arity=1);Opal.defn(self,"$arg_expr",TMP_Default_arg_expr_76=function $$arg_expr(expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("arg")}else{return self.$n("arg_expr",[expr],expr.$loc().$dup())}},TMP_Default_arg_expr_76.$$arity=1);Opal.defn(self,"$restarg_expr",TMP_Default_restarg_expr_77=function $$restarg_expr(star_t,expr){var self=this;if(expr==null){expr=nil}if($truthy(expr["$nil?"]())){return self.$n0("restarg",self.$token_map(star_t))}else if(expr.$type()["$=="]("lvasgn")){return expr.$updated("restarg")}else{return self.$n("restarg_expr",[expr],expr.$loc().$dup())}},TMP_Default_restarg_expr_77.$$arity=-2);Opal.defn(self,"$blockarg_expr",TMP_Default_blockarg_expr_78=function $$blockarg_expr(amper_t,expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("blockarg")}else{return self.$n("blockarg_expr",[expr],expr.$loc().$dup())}},TMP_Default_blockarg_expr_78.$$arity=2);Opal.defn(self,"$objc_kwarg",TMP_Default_objc_kwarg_79=function $$objc_kwarg(kwname_t,assoc_t,name_t){var self=this,kwname_l=nil,operator_l=nil;kwname_l=self.$loc(kwname_t);if($truthy(assoc_t["$nil?"]())){kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1));operator_l=kwname_l.$end().$resize(1)}else{operator_l=self.$loc(assoc_t)}return self.$n("objc_kwarg",[self.$value(kwname_t).$to_sym(),self.$value(name_t).$to_sym()],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,self.$loc(name_t),kwname_l.$join(self.$loc(name_t))))},TMP_Default_objc_kwarg_79.$$arity=3);Opal.defn(self,"$objc_restarg",TMP_Default_objc_restarg_80=function $$objc_restarg(star_t,name){var self=this;if(name==null){name=nil}if($truthy(name["$nil?"]())){return self.$n0("restarg",self.$arg_prefix_map(star_t))}else if(name.$type()["$=="]("arg")){return name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(self.$loc(star_t))}))}else{return self.$n("objc_restarg",[name],self.$unary_op_map(star_t,name))}},TMP_Default_objc_restarg_80.$$arity=-2);Opal.defn(self,"$call_type_for_dot",TMP_Default_call_type_for_dot_81=function $$call_type_for_dot(dot_t){var $a,self=this;if($truthy($truthy($a=dot_t["$nil?"]()["$!"]())?self.$value(dot_t)["$=="]("anddot"):$a)){return"csend"}else{return"send"}},TMP_Default_call_type_for_dot_81.$$arity=1);Opal.defn(self,"$call_method",TMP_Default_call_method_82=function $$call_method(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var self=this,type=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}type=self.$call_type_for_dot(dot_t);if($truthy(selector_t["$nil?"]())){return self.$n(type,[receiver,"call"].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t))}else{return self.$n(type,[receiver,self.$value(selector_t).$to_sym()].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}},TMP_Default_call_method_82.$$arity=-4);Opal.defn(self,"$call_lambda",TMP_Default_call_lambda_83=function $$call_lambda(lambda_t){var self=this;if($truthy(self.$class().$emit_lambda())){return self.$n0("lambda",self.$expr_map(self.$loc(lambda_t)))}else{return self.$n("send",[nil,"lambda"],self.$send_map(nil,nil,lambda_t))}},TMP_Default_call_lambda_83.$$arity=1);Opal.defn(self,"$block",TMP_Default_block_84=function $$block(method_call,begin_t,args,body,end_t){var $a,self=this,_receiver=nil,_selector=nil,call_args=nil,last_arg=nil,actual_send=nil,block=nil;$a=[].concat(Opal.to_a(method_call)),_receiver=$a[0]==null?nil:$a[0],_selector=$a[1]==null?nil:$a[1],call_args=$slice.call($a,2),$a;if(method_call.$type()["$=="]("yield")){self.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[self.$loc(begin_t)])}last_arg=call_args.$last();if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("block_pass"):$a)){self.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[self.$loc(begin_t)])}if($truthy(["send","csend","super","zsuper","lambda"]["$include?"](method_call.$type()))){return self.$n("block",[method_call,args,body],self.$block_map(method_call.$loc().$expression(),begin_t,end_t))}else{$a=[].concat(Opal.to_a(method_call)),actual_send=$a[0]==null?nil:$a[0],$a;block=self.$n("block",[actual_send,args,body],self.$block_map(actual_send.$loc().$expression(),begin_t,end_t));return self.$n(method_call.$type(),[block],method_call.$loc().$with_expression(self.$join_exprs(method_call,block)))}},TMP_Default_block_84.$$arity=5);Opal.defn(self,"$block_pass",TMP_Default_block_pass_85=function $$block_pass(amper_t,arg){var self=this;return self.$n("block_pass",[arg],self.$unary_op_map(amper_t,arg))},TMP_Default_block_pass_85.$$arity=2);Opal.defn(self,"$objc_varargs",TMP_Default_objc_varargs_86=function $$objc_varargs(pair,rest_of_varargs){var $a,self=this,value=nil,first_vararg=nil,vararg_array=nil;$a=[].concat(Opal.to_a(pair)),value=$a[0]==null?nil:$a[0],first_vararg=$a[1]==null?nil:$a[1],$a;vararg_array=self.$array(nil,[first_vararg].concat(Opal.to_a(rest_of_varargs)),nil).$updated("objc_varargs");return pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))},TMP_Default_objc_varargs_86.$$arity=2);Opal.defn(self,"$attr_asgn",TMP_Default_attr_asgn_87=function $$attr_asgn(receiver,dot_t,selector_t){var self=this,method_name=nil,type=nil;method_name=$rb_plus(self.$value(selector_t),"=").$to_sym();type=self.$call_type_for_dot(dot_t);return self.$n(type,[receiver,method_name],self.$send_map(receiver,dot_t,selector_t))},TMP_Default_attr_asgn_87.$$arity=3);Opal.defn(self,"$index",TMP_Default_index_88=function $$index(receiver,lbrack_t,indexes,rbrack_t){var self=this;return self.$n("send",[receiver,"[]"].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))},TMP_Default_index_88.$$arity=4);Opal.defn(self,"$index_asgn",TMP_Default_index_asgn_89=function $$index_asgn(receiver,lbrack_t,indexes,rbrack_t){var self=this;return self.$n("send",[receiver,"[]="].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))},TMP_Default_index_asgn_89.$$arity=4);Opal.defn(self,"$binary_op",TMP_Default_binary_op_90=function $$binary_op(receiver,operator_t,arg){var self=this,source_map=nil,operator=nil,method_call=nil;source_map=self.$send_binary_op_map(receiver,operator_t,arg);if(self.parser.$version()["$=="](18)){operator=self.$value(operator_t);if(operator["$=="]("!=")){method_call=self.$n("send",[receiver,"==",arg],source_map)}else if(operator["$=="]("!~")){method_call=self.$n("send",[receiver,"=~",arg],source_map)}if($truthy(["!=","!~"]["$include?"](operator))){return self.$n("not",[method_call],self.$expr_map(source_map.$expression()))}}return self.$n("send",[receiver,self.$value(operator_t).$to_sym(),arg],source_map)},TMP_Default_binary_op_90.$$arity=3);Opal.defn(self,"$match_op",TMP_Default_match_op_92=function $$match_op(receiver,match_t,arg){var TMP_91,self=this,source_map=nil,regexp=nil;source_map=self.$send_binary_op_map(receiver,match_t,arg);if($truthy(regexp=self.$static_regexp_node(receiver))){$send(regexp.$names(),"each",[],(TMP_91=function(name){var self=TMP_91.$$s||this;if(self.parser==null)self.parser=nil;if(name==null)name=nil;return self.parser.$static_env().$declare(name)},TMP_91.$$s=self,TMP_91.$$arity=1,TMP_91));return self.$n("match_with_lvasgn",[receiver,arg],source_map)}else{return self.$n("send",[receiver,"=~",arg],source_map)}},TMP_Default_match_op_92.$$arity=3);Opal.defn(self,"$unary_op",TMP_Default_unary_op_93=function $$unary_op(op_t,receiver){var self=this,$case=nil,method=nil;$case=self.$value(op_t);if("+"["$==="]($case)||"-"["$==="]($case)){method=$rb_plus(self.$value(op_t),"@")}else{method=self.$value(op_t)}return self.$n("send",[receiver,method.$to_sym()],self.$send_unary_op_map(op_t,receiver))},TMP_Default_unary_op_93.$$arity=2);Opal.defn(self,"$not_op",TMP_Default_not_op_94=function $$not_op(not_t,begin_t,receiver,end_t){var self=this,nil_node=nil;if(begin_t==null){begin_t=nil}if(receiver==null){receiver=nil}if(end_t==null){end_t=nil}if(self.parser.$version()["$=="](18)){return self.$n("not",[receiver],self.$unary_op_map(not_t,receiver))}else if($truthy(receiver["$nil?"]())){nil_node=self.$n0("begin",self.$collection_map(begin_t,nil,end_t));return self.$n("send",[nil_node,"!"],self.$send_unary_op_map(not_t,nil_node))}else{return self.$n("send",[receiver,"!"],self.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}},TMP_Default_not_op_94.$$arity=-2);Opal.defn(self,"$logical_op",TMP_Default_logical_op_95=function $$logical_op(type,lhs,op_t,rhs){var self=this;return self.$n(type,[lhs,rhs],self.$binary_op_map(lhs,op_t,rhs))},TMP_Default_logical_op_95.$$arity=4);Opal.defn(self,"$condition",TMP_Default_condition_96=function $$condition(cond_t,cond,then_t,if_true,else_t,if_false,end_t){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))},TMP_Default_condition_96.$$arity=7);Opal.defn(self,"$condition_mod",TMP_Default_condition_mod_97=function $$condition_mod(if_true,if_false,cond_t,cond){var $a,self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$keyword_mod_map($truthy($a=if_true)?$a:if_false,cond_t,cond))},TMP_Default_condition_mod_97.$$arity=4);Opal.defn(self,"$ternary",TMP_Default_ternary_98=function $$ternary(cond,question_t,if_true,colon_t,if_false){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$ternary_map(cond,question_t,if_true,colon_t,if_false))},TMP_Default_ternary_98.$$arity=5);Opal.defn(self,"$when",TMP_Default_when_99=function $$when(when_t,patterns,then_t,body){var self=this,children=nil;children=patterns["$<<"](body);return self.$n("when",children,self.$keyword_map(when_t,then_t,children,nil))},TMP_Default_when_99.$$arity=4);Opal.defn(self,"$case",TMP_Default_case_100=function(case_t,expr,when_bodies,else_t,else_body,end_t){var self=this;return self.$n("case",[expr].concat(Opal.to_a(when_bodies["$<<"](else_body))),self.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))},TMP_Default_case_100.$$arity=6);Opal.defn(self,"$loop",TMP_Default_loop_101=function $$loop(type,keyword_t,cond,do_t,body,end_t){var self=this;return self.$n(type,[self.$check_condition(cond),body],self.$keyword_map(keyword_t,do_t,nil,end_t))},TMP_Default_loop_101.$$arity=6);Opal.defn(self,"$loop_mod",TMP_Default_loop_mod_102=function $$loop_mod(type,body,keyword_t,cond){var self=this;if(body.$type()["$=="]("kwbegin")){type=""+type+"_post"}return self.$n(type,[self.$check_condition(cond),body],self.$keyword_mod_map(body,keyword_t,cond))},TMP_Default_loop_mod_102.$$arity=4);Opal.defn(self,"$for",TMP_Default_for_103=function(for_t,iterator,in_t,iteratee,do_t,body,end_t){var self=this;return self.$n("for",[iterator,iteratee,body],self.$for_map(for_t,in_t,do_t,end_t))},TMP_Default_for_103.$$arity=7);Opal.defn(self,"$keyword_cmd",TMP_Default_keyword_cmd_104=function $$keyword_cmd(type,keyword_t,lparen_t,args,rparen_t){var $a,self=this,last_arg=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}if($truthy(($a=type["$=="]("yield"))?$rb_gt(args.$count(),0):type["$=="]("yield"))){last_arg=args.$last();if(last_arg.$type()["$=="]("block_pass")){self.$diagnostic("error","block_given_to_yield",nil,self.$loc(keyword_t),[last_arg.$loc().$expression()])}}return self.$n(type,args,self.$keyword_map(keyword_t,lparen_t,args,rparen_t))},TMP_Default_keyword_cmd_104.$$arity=-3);Opal.defn(self,"$preexe",TMP_Default_preexe_105=function $$preexe(preexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("preexe",[compstmt],self.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))},TMP_Default_preexe_105.$$arity=4);Opal.defn(self,"$postexe",TMP_Default_postexe_106=function $$postexe(postexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("postexe",[compstmt],self.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))},TMP_Default_postexe_106.$$arity=4);Opal.defn(self,"$rescue_body",TMP_Default_rescue_body_107=function $$rescue_body(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){var self=this;return self.$n("resbody",[exc_list,exc_var,compound_stmt],self.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))},TMP_Default_rescue_body_107.$$arity=6);Opal.defn(self,"$begin_body",TMP_Default_begin_body_108=function $$begin_body(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var self=this,statements=nil;if(rescue_bodies==null){rescue_bodies=[]}if(else_t==null){else_t=nil}if(else_==null){else_=nil}if(ensure_t==null){ensure_t=nil}if(ensure_==null){ensure_=nil}if($truthy(rescue_bodies["$any?"]())){if($truthy(else_t)){compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[else_]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_))}else{compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[nil]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil))}}else if($truthy(else_t)){statements=[];if($truthy(compound_stmt["$nil?"]()["$!"]())){if(compound_stmt.$type()["$=="]("begin")){statements=$rb_plus(statements,compound_stmt.$children())}else{statements.$push(compound_stmt)}}statements.$push(self.$n("begin",[else_],self.$collection_map(else_t,[else_],nil)));compound_stmt=self.$n("begin",statements,self.$collection_map(nil,statements,nil))}if($truthy(ensure_t)){compound_stmt=self.$n("ensure",[compound_stmt,ensure_],self.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))}return compound_stmt},TMP_Default_begin_body_108.$$arity=-2);Opal.defn(self,"$compstmt",TMP_Default_compstmt_109=function $$compstmt(statements){var self=this;return function(){if($truthy(statements["$none?"]())){return nil}else if($truthy(statements["$one?"]())){return statements.$first()}else{return self.$n("begin",statements,self.$collection_map(nil,statements,nil))}}()},TMP_Default_compstmt_109.$$arity=1);Opal.defn(self,"$begin",TMP_Default_begin_110=function $$begin(begin_t,body,end_t){var $a,$b,$c,self=this;if($truthy(body["$nil?"]())){return self.$n0("begin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=body.$type()["$=="]("mlhs"))?$a:$truthy($b=($c=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$b)){return self.$n(body.$type(),body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("begin",[body],self.$collection_map(begin_t,[body],end_t))}},TMP_Default_begin_110.$$arity=3);Opal.defn(self,"$begin_keyword",TMP_Default_begin_keyword_111=function $$begin_keyword(begin_t,body,end_t){var $a,$b,self=this;if($truthy(body["$nil?"]())){return self.$n0("kwbegin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=($b=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$a)){return self.$n("kwbegin",body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("kwbegin",[body],self.$collection_map(begin_t,[body],end_t))}},TMP_Default_begin_keyword_111.$$arity=3);self.$private();Opal.defn(self,"$check_condition",TMP_Default_check_condition_112=function $$check_condition(cond){var $a,self=this,$case=nil,lhs=nil,rhs=nil,type=nil;return function(){$case=cond.$type();if("masgn"["$==="]($case)){if($truthy($rb_le(self.parser.$version(),23))){return self.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression())}else{return nil}}else if("begin"["$==="]($case)){if(cond.$children().$count()["$=="](1)){return cond.$updated(nil,[self.$check_condition(cond.$children().$last())])}else{return cond}}else if("and"["$==="]($case)||"or"["$==="]($case)||"irange"["$==="]($case)||"erange"["$==="]($case)){$a=[].concat(Opal.to_a(cond)),lhs=$a[0]==null?nil:$a[0],rhs=$a[1]==null?nil:$a[1],$a;type=function(){$case=cond.$type();if("irange"["$==="]($case)){return"iflipflop"}else if("erange"["$==="]($case)){return"eflipflop"}else{return nil}}();if($truthy($truthy($a=["and","or"]["$include?"](cond.$type()))?self.parser.$version()["$=="](18):$a)){return cond}else{return cond.$updated(type,[self.$check_condition(lhs),self.$check_condition(rhs)])}}else if("regexp"["$==="]($case)){return self.$n("match_current_line",[cond],self.$expr_map(cond.$loc().$expression()))}else{return cond}}()},TMP_Default_check_condition_112.$$arity=1);Opal.defn(self,"$check_duplicate_args",TMP_Default_check_duplicate_args_114=function $$check_duplicate_args(args,map){var TMP_113,self=this;if(map==null){map=$hash2([],{})}return $send(args,"each",[],(TMP_113=function(this_arg){var self=TMP_113.$$s||this,$a,$case=nil,this_name=nil,that_arg=nil,that_name=nil,$writer=nil;if(this_arg==null)this_arg=nil;return function(){$case=this_arg.$type();if("arg"["$==="]($case)||"optarg"["$==="]($case)||"restarg"["$==="]($case)||"blockarg"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)||"shadowarg"["$==="]($case)||"procarg0"["$==="]($case)){$a=[].concat(Opal.to_a(this_arg)),this_name=$a[0]==null?nil:$a[0],$a;that_arg=map["$[]"](this_name);$a=[].concat(Opal.to_a(that_arg)),that_name=$a[0]==null?nil:$a[0],$a;if($truthy(that_arg["$nil?"]())){$writer=[this_name,this_arg];$send(map,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if($truthy(self["$arg_name_collides?"](this_name,that_name))){return self.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()])}else{return nil}}else if("mlhs"["$==="]($case)){return self.$check_duplicate_args(this_arg.$children(),map)}else{return nil}}()},TMP_113.$$s=self,TMP_113.$$arity=1,TMP_113))},TMP_Default_check_duplicate_args_114.$$arity=-2);Opal.defn(self,"$arg_name_collides?",TMP_Default_arg_name_collides$q_115=function(this_name,that_name){var $a,$b,self=this,$case=nil;return function(){$case=self.parser.$version();if(18["$==="]($case)){return this_name["$=="](that_name)}else if(19["$==="]($case)){return $truthy($a=this_name["$!="]("_"))?this_name["$=="](that_name):$a}else{return $truthy($a=$truthy($b=this_name)?this_name["$[]"](0)["$!="]("_"):$b)?this_name["$=="](that_name):$a}}()},TMP_Default_arg_name_collides$q_115.$$arity=2);Opal.defn(self,"$n",TMP_Default_n_116=function $$n(type,children,source_map){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))},TMP_Default_n_116.$$arity=3);Opal.defn(self,"$n0",TMP_Default_n0_117=function $$n0(type,source_map){var self=this;return self.$n(type,[],source_map)},TMP_Default_n0_117.$$arity=2);Opal.defn(self,"$join_exprs",TMP_Default_join_exprs_118=function $$join_exprs(left_expr,right_expr){var self=this;return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())},TMP_Default_join_exprs_118.$$arity=2);Opal.defn(self,"$token_map",TMP_Default_token_map_119=function $$token_map(token){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map").$new(self.$loc(token))},TMP_Default_token_map_119.$$arity=1);Opal.defn(self,"$delimited_string_map",TMP_Default_delimited_string_map_120=function $$delimited_string_map(string_t){var self=this,str_range=nil,begin_l=nil,end_l=nil;str_range=self.$loc(string_t);begin_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),str_range.$begin_pos(),$rb_plus(str_range.$begin_pos(),1));end_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),$rb_minus(str_range.$end_pos(),1),str_range.$end_pos());return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(begin_l,end_l,self.$loc(string_t))},TMP_Default_delimited_string_map_120.$$arity=1);Opal.defn(self,"$prefix_string_map",TMP_Default_prefix_string_map_121=function $$prefix_string_map(symbol){var self=this,str_range=nil,begin_l=nil;str_range=self.$loc(symbol);begin_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),str_range.$begin_pos(),$rb_plus(str_range.$begin_pos(),1));return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(begin_l,nil,self.$loc(symbol))},TMP_Default_prefix_string_map_121.$$arity=1);Opal.defn(self,"$unquoted_map",TMP_Default_unquoted_map_122=function $$unquoted_map(token){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(nil,nil,self.$loc(token))},TMP_Default_unquoted_map_122.$$arity=1);Opal.defn(self,"$pair_keyword_map",TMP_Default_pair_keyword_map_123=function $$pair_keyword_map(key_t,value_e){var self=this,key_range=nil,key_l=nil,colon_l=nil;key_range=self.$loc(key_t);key_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(key_range.$source_buffer(),key_range.$begin_pos(),$rb_minus(key_range.$end_pos(),1));colon_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(key_range.$source_buffer(),$rb_minus(key_range.$end_pos(),1),key_range.$end_pos());return[Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(nil,nil,key_l),Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]},TMP_Default_pair_keyword_map_123.$$arity=2);Opal.defn(self,"$pair_quoted_map",TMP_Default_pair_quoted_map_124=function $$pair_quoted_map(begin_t,end_t,value_e){var self=this,end_l=nil,quote_l=nil,colon_l=nil;end_l=self.$loc(end_t);quote_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(end_l.$source_buffer(),$rb_minus(end_l.$end_pos(),2),$rb_minus(end_l.$end_pos(),1));colon_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(end_l.$source_buffer(),$rb_minus(end_l.$end_pos(),1),end_l.$end_pos());return[[self.$value(end_t),quote_l],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(colon_l,self.$loc(begin_t).$join(value_e.$loc().$expression()))]},TMP_Default_pair_quoted_map_124.$$arity=3);Opal.defn(self,"$expr_map",TMP_Default_expr_map_125=function $$expr_map(loc){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map").$new(loc)},TMP_Default_expr_map_125.$$arity=1);Opal.defn(self,"$collection_map",TMP_Default_collection_map_126=function $$collection_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t["$nil?"]())?$a:end_t["$nil?"]())){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}}else{expr_l=self.$loc(begin_t).$join(self.$loc(end_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),expr_l)},TMP_Default_collection_map_126.$$arity=3);Opal.defn(self,"$string_map",TMP_Default_string_map_127=function $$string_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t)?self.$value(begin_t)["$start_with?"]("<<"):$a)){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}else{expr_l=self.$loc(end_t).$begin()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Heredoc").$new(self.$loc(begin_t),expr_l,self.$loc(end_t))}else{return self.$collection_map(begin_t,parts,end_t)}},TMP_Default_string_map_127.$$arity=3);Opal.defn(self,"$regexp_map",TMP_Default_regexp_map_128=function $$regexp_map(begin_t,end_t,options_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),self.$loc(begin_t).$join(options_e.$loc().$expression()))},TMP_Default_regexp_map_128.$$arity=3);Opal.defn(self,"$constant_map",TMP_Default_constant_map_129=function $$constant_map(scope,colon2_t,name_t){var self=this,expr_l=nil;if($truthy(scope["$nil?"]())){expr_l=self.$loc(name_t)}else{expr_l=scope.$loc().$expression().$join(self.$loc(name_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Constant").$new(self.$loc(colon2_t),self.$loc(name_t),expr_l)},TMP_Default_constant_map_129.$$arity=3);Opal.defn(self,"$variable_map",TMP_Default_variable_map_130=function $$variable_map(name_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t))},TMP_Default_variable_map_130.$$arity=1);Opal.defn(self,"$binary_op_map",TMP_Default_binary_op_map_131=function $$binary_op_map(left_e,op_t,right_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),self.$join_exprs(left_e,right_e))},TMP_Default_binary_op_map_131.$$arity=3);Opal.defn(self,"$unary_op_map",TMP_Default_unary_op_map_132=function $$unary_op_map(op_t,arg_e){var self=this,expr_l=nil;if(arg_e==null){arg_e=nil}if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(arg_e.$loc().$expression())}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),expr_l)},TMP_Default_unary_op_map_132.$$arity=-2);Opal.defn(self,"$arg_prefix_map",TMP_Default_arg_prefix_map_133=function $$arg_prefix_map(op_t,name_t){var self=this,expr_l=nil;if(name_t==null){name_t=nil}if($truthy(name_t["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(self.$loc(name_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t),expr_l)},TMP_Default_arg_prefix_map_133.$$arity=-2);Opal.defn(self,"$kwarg_map",TMP_Default_kwarg_map_134=function $$kwarg_map(name_t,value_e){var self=this,label_range=nil,name_range=nil,expr_l=nil;if(value_e==null){value_e=nil}label_range=self.$loc(name_t);name_range=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(label_range.$source_buffer(),label_range.$begin_pos(),$rb_minus(label_range.$end_pos(),1));if($truthy(value_e)){expr_l=self.$loc(name_t).$join(value_e.$loc().$expression())}else{expr_l=self.$loc(name_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(name_range,expr_l)},TMP_Default_kwarg_map_134.$$arity=-2);Opal.defn(self,"$module_definition_map",TMP_Default_module_definition_map_135=function $$module_definition_map(keyword_t,name_e,operator_t,end_t){var self=this,name_l=nil;if($truthy(name_e)){name_l=name_e.$loc().$expression()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),name_l,self.$loc(end_t))},TMP_Default_module_definition_map_135.$$arity=4);Opal.defn(self,"$definition_map",TMP_Default_definition_map_136=function $$definition_map(keyword_t,operator_t,name_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),self.$loc(name_t),self.$loc(end_t))},TMP_Default_definition_map_136.$$arity=4);Opal.defn(self,"$send_map",TMP_Default_send_map_137=function $$send_map(receiver_e,dot_t,selector_t,begin_t,args,end_t){var self=this,begin_l=nil,end_l=nil;if(begin_t==null){begin_t=nil}if(args==null){args=[]}if(end_t==null){end_t=nil}if($truthy(receiver_e)){begin_l=receiver_e.$loc().$expression()}else if($truthy(selector_t)){begin_l=self.$loc(selector_t)}if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy(args["$any?"]())){end_l=args.$last().$loc().$expression()}else if($truthy(selector_t)){end_l=self.$loc(selector_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(self.$loc(dot_t),self.$loc(selector_t),self.$loc(begin_t),self.$loc(end_t),begin_l.$join(end_l))},TMP_Default_send_map_137.$$arity=-4);Opal.defn(self,"$var_send_map",TMP_Default_var_send_map_138=function $$var_send_map(variable_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())},TMP_Default_var_send_map_138.$$arity=1);Opal.defn(self,"$send_binary_op_map",TMP_Default_send_binary_op_map_139=function $$send_binary_op_map(lhs_e,selector_t,rhs_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,self.$join_exprs(lhs_e,rhs_e))},TMP_Default_send_binary_op_map_139.$$arity=3);Opal.defn(self,"$send_unary_op_map",TMP_Default_send_unary_op_map_140=function $$send_unary_op_map(selector_t,arg_e){var self=this,expr_l=nil;if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(selector_t)}else{expr_l=self.$loc(selector_t).$join(arg_e.$loc().$expression())}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,expr_l)},TMP_Default_send_unary_op_map_140.$$arity=2);Opal.defn(self,"$send_index_map",TMP_Default_send_index_map_141=function $$send_index_map(receiver_e,lbrack_t,rbrack_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(lbrack_t).$join(self.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(self.$loc(rbrack_t)))},TMP_Default_send_index_map_141.$$arity=3);Opal.defn(self,"$block_map",TMP_Default_block_map_142=function $$block_map(receiver_l,begin_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),receiver_l.$join(self.$loc(end_t)))},TMP_Default_block_map_142.$$arity=3);Opal.defn(self,"$keyword_map",TMP_Default_keyword_map_143=function $$keyword_map(keyword_t,begin_t,args,end_t){var $a,self=this,end_l=nil;args=$truthy($a=args)?$a:[];if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=args["$any?"]())?args.$last()["$nil?"]()["$!"]():$a)){end_l=args.$last().$loc().$expression()}else if($truthy($truthy($a=args["$any?"]())?$rb_gt(args.$count(),1):$a)){end_l=args["$[]"](-2).$loc().$expression()}else{end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_keyword_map_143.$$arity=4);Opal.defn(self,"$keyword_mod_map",TMP_Default_keyword_mod_map_144=function $$keyword_mod_map(pre_e,keyword_t,post_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),nil,nil,self.$join_exprs(pre_e,post_e))},TMP_Default_keyword_mod_map_144.$$arity=3);Opal.defn(self,"$condition_map",TMP_Default_condition_map_145=function $$condition_map(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var $a,self=this,end_l=nil;if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=else_e)?else_e.$loc().$expression():$a)){end_l=else_e.$loc().$expression()}else if($truthy(self.$loc(else_t))){end_l=self.$loc(else_t)}else if($truthy($truthy($a=body_e)?body_e.$loc().$expression():$a)){end_l=body_e.$loc().$expression()}else if($truthy(self.$loc(begin_t))){end_l=self.$loc(begin_t)}else{end_l=cond_e.$loc().$expression()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(else_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_condition_map_145.$$arity=7);Opal.defn(self,"$ternary_map",TMP_Default_ternary_map_146=function $$ternary_map(begin_e,question_t,mid_e,colon_t,end_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Ternary").$new(self.$loc(question_t),self.$loc(colon_t),self.$join_exprs(begin_e,end_e))},TMP_Default_ternary_map_146.$$arity=5);Opal.defn(self,"$for_map",TMP_Default_for_map_147=function $$for_map(keyword_t,in_t,begin_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"For").$new(self.$loc(keyword_t),self.$loc(in_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(self.$loc(end_t)))},TMP_Default_for_map_147.$$arity=4);Opal.defn(self,"$rescue_body_map",TMP_Default_rescue_body_map_148=function $$rescue_body_map(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var $a,self=this,end_l=nil;if($truthy(compstmt_e)){end_l=compstmt_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?then_t:$a)){end_l=self.$loc(then_t)}if($truthy($truthy($a=end_l["$nil?"]())?exc_var_e:$a)){end_l=exc_var_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?exc_list_e:$a)){end_l=exc_list_e.$loc().$expression()}if($truthy(end_l["$nil?"]())){end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"RescueBody").$new(self.$loc(keyword_t),self.$loc(assoc_t),self.$loc(then_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_rescue_body_map_148.$$arity=6);Opal.defn(self,"$eh_keyword_map",TMP_Default_eh_keyword_map_149=function $$eh_keyword_map(compstmt_e,keyword_t,body_es,else_t,else_e){var self=this,begin_l=nil,end_l=nil;if($truthy(compstmt_e["$nil?"]())){if($truthy(keyword_t["$nil?"]())){begin_l=body_es.$first().$loc().$expression()}else{begin_l=self.$loc(keyword_t)}}else{begin_l=compstmt_e.$loc().$expression()}if($truthy(else_t)){if($truthy(else_e["$nil?"]())){end_l=self.$loc(else_t)}else{end_l=else_e.$loc().$expression()}}else if($truthy(body_es.$last()["$nil?"]()["$!"]())){end_l=body_es.$last().$loc().$expression()}else{end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),nil,self.$loc(else_t),nil,begin_l.$join(end_l))},TMP_Default_eh_keyword_map_149.$$arity=5);Opal.defn(self,"$static_string",TMP_Default_static_string_151=function $$static_string(nodes){try{var TMP_150,self=this;return $send(nodes,"map",[],(TMP_150=function(node){var self=TMP_150.$$s||this,$case=nil,string=nil;if(node==null)node=nil;return function(){$case=node.$type();if("str"["$==="]($case)){return node.$children()["$[]"](0)}else if("begin"["$==="]($case)){if($truthy(string=self.$static_string(node.$children()))){return string}else{Opal.ret(nil)}}else{Opal.ret(nil)}}()},TMP_150.$$s=self,TMP_150.$$arity=1,TMP_150)).$join()}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Default_static_string_151.$$arity=1);Opal.defn(self,"$static_regexp",TMP_Default_static_regexp_152=function $$static_regexp(parts,options){var $a,self=this,source=nil;source=self.$static_string(parts);if($truthy(source["$nil?"]())){return nil}if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){source=function(){if($truthy(options.$children()["$include?"]("u"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"))}else if($truthy(options.$children()["$include?"]("e"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"EUC_JP"))}else if($truthy(options.$children()["$include?"]("s"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"WINDOWS_31J"))}else if($truthy(options.$children()["$include?"]("n"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))}else{return source}}()}return Opal.const_get_relative($nesting,"Regexp").$new(source,function(){if($truthy(options.$children()["$include?"]("x"))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Regexp"),"EXTENDED")}else{return nil}return nil}())},TMP_Default_static_regexp_152.$$arity=2);Opal.defn(self,"$static_regexp_node",TMP_Default_static_regexp_node_153=function $$static_regexp_node(node){var $a,self=this,parts=nil,options=nil;if(node.$type()["$=="]("regexp")){$a=[node.$children()["$[]"]($range(0,-2,false)),node.$children()["$[]"](-1)],parts=$a[0],options=$a[1],$a;return self.$static_regexp(parts,options)}else{return nil}},TMP_Default_static_regexp_node_153.$$arity=1);Opal.defn(self,"$collapse_string_parts?",TMP_Default_collapse_string_parts$q_154=function(parts){var $a,self=this;return $truthy($a=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$a},TMP_Default_collapse_string_parts$q_154.$$arity=1);Opal.defn(self,"$value",TMP_Default_value_155=function $$value(token){var self=this;return token["$[]"](0)},TMP_Default_value_155.$$arity=1);if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){Opal.defn(self,"$string_value",TMP_Default_string_value_156=function $$string_value(token){var self=this;if($truthy(token["$[]"](0)["$valid_encoding?"]())){}else{self.$diagnostic("error","invalid_encoding",nil,token["$[]"](1))}return token["$[]"](0)},TMP_Default_string_value_156.$$arity=1)}else{Opal.alias(self,"string_value","value")}Opal.defn(self,"$loc",TMP_Default_loc_157=function $$loc(token){var $a,self=this;if($truthy($truthy($a=token)?token["$[]"](0):$a)){return token["$[]"](1)}else{return nil}},TMP_Default_loc_157.$$arity=1);return(Opal.defn(self,"$diagnostic",TMP_Default_diagnostic_158=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(highlights==null){highlights=[]}self.parser.$diagnostics().$process(Opal.const_get_relative($nesting,"Diagnostic").$new(type,reason,arguments$,location,highlights));if(type["$=="]("error")){return self.parser.$send("yyerror")}else{return nil}},TMP_Default_diagnostic_158.$$arity=-5),nil)&&"diagnostic"})(Opal.const_get_relative($nesting,"Builders"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$default_parser","$setup_source_buffer","$default_encoding","$parse","$parse_with_comments","$read","$new","$all_errors_are_fatal=","$diagnostics","$-","$ignore_warnings=","$lambda","$puts","$render","$consumer=","$respond_to?","$force_encoding","$dup","$==","$name","$raw_source=","$source=","$private_class_method","$attr_reader","$version","$diagnostics=","$static_env=","$parser=","$class","$[]","$reset","$source_buffer=","$do_parse","$comments=","$comments","$tokens=","$!","$raise","$tokens","$>","$private","$advance","$===","$diagnostic","$map","$process","$yyerror","$token_to_str"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Base_parse_1,TMP_Base_parse_with_comments_2,TMP_Base_parse_file_3,TMP_Base_parse_file_with_comments_4,TMP_Base_default_parser_6,TMP_Base_setup_source_buffer_7,TMP_Base_initialize_8,TMP_Base_reset_9,TMP_Base_parse_10,TMP_Base_parse_with_comments_11,TMP_Base_tokenize_12,TMP_Base_in_def$q_13,TMP_Base_next_token_14,TMP_Base_check_kwarg_name_15,TMP_Base_diagnostic_17,TMP_Base_on_error_18;def.diagnostics=def.lexer=def.static_env=def.builder=def.def_level=nil;Opal.defs(self,"$parse",TMP_Base_parse_1=function $$parse(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse(source_buffer)},TMP_Base_parse_1.$$arity=-2);Opal.defs(self,"$parse_with_comments",TMP_Base_parse_with_comments_2=function $$parse_with_comments(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse_with_comments(source_buffer)},TMP_Base_parse_with_comments_2.$$arity=-2);Opal.defs(self,"$parse_file",TMP_Base_parse_file_3=function $$parse_file(filename){var self=this;return self.$parse(Opal.const_get_relative($nesting,"File").$read(filename),filename)},TMP_Base_parse_file_3.$$arity=1);Opal.defs(self,"$parse_file_with_comments",TMP_Base_parse_file_with_comments_4=function $$parse_file_with_comments(filename){var self=this;return self.$parse_with_comments(Opal.const_get_relative($nesting,"File").$read(filename),filename)},TMP_Base_parse_file_with_comments_4.$$arity=1);Opal.defs(self,"$default_parser",TMP_Base_default_parser_6=function $$default_parser(){var TMP_5,self=this,parser=nil,$writer=nil;parser=self.$new();$writer=[true];$send(parser.$diagnostics(),"all_errors_are_fatal=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[true];$send(parser.$diagnostics(),"ignore_warnings=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[$send(self,"lambda",[],(TMP_5=function(diagnostic){var self=TMP_5.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diagnostic==null)diagnostic=nil;return $gvars.stderr.$puts(diagnostic.$render())},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))];$send(parser.$diagnostics(),"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return parser},TMP_Base_default_parser_6.$$arity=0);Opal.defs(self,"$setup_source_buffer",TMP_Base_setup_source_buffer_7=function $$setup_source_buffer(file,line,string,encoding){var self=this,source_buffer=nil,$writer=nil;if($truthy(string["$respond_to?"]("force_encoding"))){string=string.$dup().$force_encoding(encoding)}source_buffer=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Buffer").$new(file,line);if(self.$name()["$=="]("Parser::Ruby18")){$writer=[string];$send(source_buffer,"raw_source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[string];$send(source_buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return source_buffer},TMP_Base_setup_source_buffer_7.$$arity=4);self.$private_class_method("setup_source_buffer");self.$attr_reader("diagnostics");self.$attr_reader("builder");self.$attr_reader("static_env");self.$attr_reader("source_buffer");Opal.defn(self,"$initialize",TMP_Base_initialize_8=function $$initialize(builder){var $a,self=this,$writer=nil;if(builder==null){builder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Builders"),"Default").$new()}self.diagnostics=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Diagnostic"),"Engine").$new();self.static_env=Opal.const_get_relative($nesting,"StaticEnvironment").$new();self.lexer=Opal.const_get_relative($nesting,"Lexer").$new(self.$version());$writer=[self.diagnostics];$send(self.lexer,"diagnostics=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[self.static_env];$send(self.lexer,"static_env=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.builder=builder;$writer=[self];$send(self.builder,"parser=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy($truthy($a=Opal.const_get_qualified(self.$class(),"Racc_debug_parser"))?Opal.const_get_relative($nesting,"ENV")["$[]"]("RACC_DEBUG"):$a)){self.yydebug=true}return self.$reset()},TMP_Base_initialize_8.$$arity=-1);Opal.defn(self,"$reset",TMP_Base_reset_9=function $$reset(){var self=this;self.source_buffer=nil;self.def_level=0;self.lexer.$reset();self.static_env.$reset();return self},TMP_Base_reset_9.$$arity=0);Opal.defn(self,"$parse",TMP_Base_parse_10=function $$parse(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[source_buffer];$send(self.lexer,"source_buffer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;return self.$do_parse()}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_parse_10.$$arity=1);Opal.defn(self,"$parse_with_comments",TMP_Base_parse_with_comments_11=function $$parse_with_comments(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_parse_with_comments_11.$$arity=1);Opal.defn(self,"$tokenize",TMP_Base_tokenize_12=function $$tokenize(source_buffer,recover){var self=this,$writer=nil,ast=nil;if(recover==null){recover=false}return function(){try{$writer=[[]];$send(self.lexer,"tokens=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];try{ast=self.$parse(source_buffer)}catch($err){if(Opal.rescue($err,[Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"SyntaxError")])){try{if($truthy(recover["$!"]())){self.$raise()}}finally{Opal.pop_exception()}}else{throw $err}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)],$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_tokenize_12.$$arity=-2);Opal.defn(self,"$in_def?",TMP_Base_in_def$q_13=function(){var self=this;return $rb_gt(self.def_level,0)},TMP_Base_in_def$q_13.$$arity=0);self.$private();Opal.defn(self,"$next_token",TMP_Base_next_token_14=function $$next_token(){var self=this;return self.lexer.$advance()},TMP_Base_next_token_14.$$arity=0);Opal.defn(self,"$check_kwarg_name",TMP_Base_check_kwarg_name_15=function $$check_kwarg_name(name_t){var self=this,$case=nil;return function(){$case=name_t["$[]"](0);if(/^[a-z_]/["$==="]($case)){return nil}else if(/^[A-Z]/["$==="]($case)){return self.$diagnostic("error","argument_const",nil,name_t)}else{return nil}}()},TMP_Base_check_kwarg_name_15.$$arity=1);Opal.defn(self,"$diagnostic",TMP_Base_diagnostic_17=function $$diagnostic(level,reason,arguments$,location_t,highlights_ts){var $a,$b,TMP_16,self=this,_=nil,location=nil,highlights=nil;if(highlights_ts==null){highlights_ts=[]}$b=location_t,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;highlights=$send(highlights_ts,"map",[],(TMP_16=function(token){var self=TMP_16.$$s||this,$c,$d,range=nil;if(token==null)token=nil;$d=token,$c=Opal.to_ary($d),_=$c[0]==null?nil:$c[0],range=$c[1]==null?nil:$c[1],$d;return range},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16));self.diagnostics.$process(Opal.const_get_relative($nesting,"Diagnostic").$new(level,reason,arguments$,location,highlights));if(level["$=="]("error")){return self.$yyerror()}else{return nil}},TMP_Base_diagnostic_17.$$arity=-5);return(Opal.defn(self,"$on_error",TMP_Base_on_error_18=function $$on_error(error_token_id,error_value,value_stack){var $a,$b,self=this,token_name=nil,_=nil,location=nil;token_name=self.$token_to_str(error_token_id);$b=error_value,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;return self.diagnostics.$process(Opal.const_get_relative($nesting,"Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))},TMP_Base_on_error_18.$$arity=3),nil)&&"on_error"})($nesting[0],Opal.const_get_qualified(Opal.const_get_relative($nesting,"Racc"),"Parser"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$new","$process","$include?","$type","$remove","$insert_before","$insert_after","$replace"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Rewriter(){}var self=$Rewriter=$klass($base,$super,"Rewriter",$Rewriter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rewriter_rewrite_1,TMP_Rewriter_assignment$q_2,TMP_Rewriter_remove_3,TMP_Rewriter_insert_before_4,TMP_Rewriter_insert_after_5,TMP_Rewriter_replace_6;def.source_rewriter=nil;Opal.defn(self,"$rewrite",TMP_Rewriter_rewrite_1=function $$rewrite(source_buffer,ast){var self=this;self.source_rewriter=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Rewriter").$new(source_buffer);self.$process(ast);return self.source_rewriter.$process()},TMP_Rewriter_rewrite_1.$$arity=2);Opal.defn(self,"$assignment?",TMP_Rewriter_assignment$q_2=function(node){var self=this;return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())},TMP_Rewriter_assignment$q_2.$$arity=1);Opal.defn(self,"$remove",TMP_Rewriter_remove_3=function $$remove(range){var self=this;return self.source_rewriter.$remove(range)},TMP_Rewriter_remove_3.$$arity=1);Opal.defn(self,"$insert_before",TMP_Rewriter_insert_before_4=function $$insert_before(range,content){var self=this;return self.source_rewriter.$insert_before(range,content)},TMP_Rewriter_insert_before_4.$$arity=2);Opal.defn(self,"$insert_after",TMP_Rewriter_insert_after_5=function $$insert_after(range,content){var self=this;return self.source_rewriter.$insert_after(range,content)},TMP_Rewriter_insert_after_5.$$arity=2);return(Opal.defn(self,"$replace",TMP_Rewriter_replace_6=function $$replace(range,content){var self=this;return self.source_rewriter.$replace(range,content)},TMP_Rewriter_replace_6.$$arity=2),nil)&&"replace"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs|\&|\||\^|\%|\~|\[/["$=~"](mid.$to_s()))){return""+"['$"+mid+"']"}else{return $rb_plus(".$",mid)}},TMP_Helpers_mid_to_jsid_3.$$arity=1);Opal.defn(self,"$indent",TMP_Helpers_indent_4=function $$indent(){var self=this,$iter=TMP_Helpers_indent_4.$$p,block=$iter||nil;if($iter)TMP_Helpers_indent_4.$$p=null;return $send(self.$compiler(),"indent",[],block.$to_proc())},TMP_Helpers_indent_4.$$arity=0);Opal.defn(self,"$current_indent",TMP_Helpers_current_indent_5=function $$current_indent(){var self=this;return self.$compiler().$parser_indent()},TMP_Helpers_current_indent_5.$$arity=0);Opal.defn(self,"$line",TMP_Helpers_line_6=function $$line($a_rest){var self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}self.$push(""+"\n"+self.$current_indent());return $send(self,"push",Opal.to_a(strs))},TMP_Helpers_line_6.$$arity=-1);Opal.defn(self,"$empty_line",TMP_Helpers_empty_line_7=function $$empty_line(){var self=this;return self.$push("\n")},TMP_Helpers_empty_line_7.$$arity=0);Opal.defn(self,"$js_truthy",TMP_Helpers_js_truthy_8=function $$js_truthy(sexp){var self=this,optimize=nil;if($truthy(optimize=self.$js_truthy_optimize(sexp))){return optimize}self.$helper("truthy");return[self.$fragment("$truthy("),self.$expr(sexp),self.$fragment(")")]},TMP_Helpers_js_truthy_8.$$arity=1);Opal.defn(self,"$js_falsy",TMP_Helpers_js_falsy_9=function $$js_falsy(sexp){var self=this,mid=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);if(mid["$=="]("block_given?")){self.$scope()["$uses_block!"]();return""+self.$scope().$block_name()+" === nil"}}self.$helper("falsy");return[self.$fragment("$falsy("),self.$expr(sexp),self.$fragment(")")]},TMP_Helpers_js_falsy_9.$$arity=1);Opal.defn(self,"$js_truthy_optimize",TMP_Helpers_js_truthy_optimize_10=function $$js_truthy_optimize(sexp){var $a,$b,self=this,mid=nil,receiver_handler_class=nil,receiver=nil,allow_optimization_on_type=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);receiver_handler_class=$truthy($a=receiver=sexp.$children()["$[]"](0))?self.$compiler().$handlers()["$[]"](receiver.$type()):$a;allow_optimization_on_type=$truthy($a=$truthy($b=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$b)?receiver_handler_class["$truthy_optimize?"]():$a;if($truthy($truthy($a=$truthy($b=allow_optimization_on_type)?$b:mid["$=="]("block_given?"))?$a:mid["$=="]("=="))){return self.$expr(sexp)}else{return nil}}else{return nil}},TMP_Helpers_js_truthy_optimize_10.$$arity=1);Opal.defn(self,"$conditional_send",TMP_Helpers_conditional_send_11=function $$conditional_send(recvr){var self=this,$iter=TMP_Helpers_conditional_send_11.$$p,$yield=$iter||nil,receiver_temp=nil;if($iter)TMP_Helpers_conditional_send_11.$$p=null;receiver_temp=self.$scope().$new_temp();self.$push(""+receiver_temp+" = ",recvr);self.$push(""+", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : ");Opal.yield1($yield,receiver_temp);return self.$wrap("(",")")},TMP_Helpers_conditional_send_11.$$arity=1)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$include","$each","$[]=","$handlers","$-","$each_with_index","$define_method","$[]","$children","$attr_reader","$type","$compile","$raise","$is_a?","$fragment","$<<","$reverse","$unshift","$push","$new","$scope","$error","$s","$==","$process","$expr","$add_scope_local","$to_sym","$add_scope_ivar","$add_scope_gvar","$add_scope_temp","$helper","$with_temp","$to_proc","$in_while?","$instance_variable_get","$has_rescue_else?","$in_ensure","$in_ensure?","$!","$class_scope?","$parent","$closest_module_node","$name","$comments","$compiler","$loc"]);self.$require("opal/nodes/helpers");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Base_handlers_1,TMP_Base_handle_3,TMP_Base_children_6,TMP_Base_truthy_optimize$q_7,TMP_Base_initialize_8,TMP_Base_children_9,TMP_Base_compile_to_fragments_10,TMP_Base_compile_11,TMP_Base_push_13,TMP_Base_unshift_15,TMP_Base_wrap_16,TMP_Base_fragment_17,TMP_Base_error_18,TMP_Base_scope_19,TMP_Base_s_20,TMP_Base_expr$q_21,TMP_Base_recv$q_22,TMP_Base_stmt$q_23,TMP_Base_process_24,TMP_Base_expr_25,TMP_Base_recv_26,TMP_Base_stmt_27,TMP_Base_expr_or_nil_28,TMP_Base_add_local_29,TMP_Base_add_ivar_30,TMP_Base_add_gvar_31,TMP_Base_add_temp_32,TMP_Base_helper_33,TMP_Base_with_temp_34,TMP_Base_in_while$q_35,TMP_Base_while_loop_36,TMP_Base_has_rescue_else$q_37,TMP_Base_in_ensure_38,TMP_Base_in_ensure$q_39,TMP_Base_closest_module_node_40,TMP_Base_class_variable_owner_41,TMP_Base_comments_42;def.sexp=def.fragments=def.compiler=def.level=nil;self.$include(Opal.const_get_relative($nesting,"Helpers"));Opal.defs(self,"$handlers",TMP_Base_handlers_1=function $$handlers(){var $a,self=this;if(self.handlers==null)self.handlers=nil;return self.handlers=$truthy($a=self.handlers)?$a:$hash2([],{})},TMP_Base_handlers_1.$$arity=0);Opal.defs(self,"$handle",TMP_Base_handle_3=function $$handle($a_rest){var TMP_2,self=this,types;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}types=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){types[$arg_idx-0]=arguments[$arg_idx]}return $send(types,"each",[],(TMP_2=function(type){var self=TMP_2.$$s||this,$writer=nil;if(type==null)type=nil;$writer=[type,self];$send(Opal.const_get_relative($nesting,"Base").$handlers(),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Base_handle_3.$$arity=-1);Opal.defs(self,"$children",TMP_Base_children_6=function $$children($a_rest){var TMP_4,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}return $send(names,"each_with_index",[],(TMP_4=function(name,idx){var self=TMP_4.$$s||this,TMP_5;if(name==null)name=nil;if(idx==null)idx=nil;return $send(self,"define_method",[name],(TMP_5=function(){var self=TMP_5.$$s||this;if(self.sexp==null)self.sexp=nil;return self.sexp.$children()["$[]"](idx)},TMP_5.$$s=self,TMP_5.$$arity=0,TMP_5))},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4))},TMP_Base_children_6.$$arity=-1);Opal.defs(self,"$truthy_optimize?",TMP_Base_truthy_optimize$q_7=function(){var self=this;return false},TMP_Base_truthy_optimize$q_7.$$arity=0);self.$attr_reader("compiler","type");Opal.defn(self,"$initialize",TMP_Base_initialize_8=function $$initialize(sexp,level,compiler){var self=this;self.sexp=sexp;self.type=sexp.$type();self.level=level;return self.compiler=compiler},TMP_Base_initialize_8.$$arity=3);Opal.defn(self,"$children",TMP_Base_children_9=function $$children(){var self=this;return self.sexp.$children()},TMP_Base_children_9.$$arity=0);Opal.defn(self,"$compile_to_fragments",TMP_Base_compile_to_fragments_10=function $$compile_to_fragments(){var $a,self=this;if($truthy(($a=self["fragments"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.fragments}self.fragments=[];self.$compile();return self.fragments},TMP_Base_compile_to_fragments_10.$$arity=0);Opal.defn(self,"$compile",TMP_Base_compile_11=function $$compile(){var self=this;return self.$raise("Not Implemented")},TMP_Base_compile_11.$$arity=0);Opal.defn(self,"$push",TMP_Base_push_13=function $$push($a_rest){var TMP_12,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send(strs,"each",[],(TMP_12=function(str){var self=TMP_12.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if($truthy(str["$is_a?"](Opal.const_get_relative($nesting,"String")))){str=self.$fragment(str)}return self.fragments["$<<"](str)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12))},TMP_Base_push_13.$$arity=-1);Opal.defn(self,"$unshift",TMP_Base_unshift_15=function $$unshift($a_rest){var TMP_14,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send(strs.$reverse(),"each",[],(TMP_14=function(str){var self=TMP_14.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if($truthy(str["$is_a?"](Opal.const_get_relative($nesting,"String")))){str=self.$fragment(str)}return self.fragments.$unshift(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_Base_unshift_15.$$arity=-1);Opal.defn(self,"$wrap",TMP_Base_wrap_16=function $$wrap(pre,post){var self=this;self.$unshift(pre);return self.$push(post)},TMP_Base_wrap_16.$$arity=2);Opal.defn(self,"$fragment",TMP_Base_fragment_17=function $$fragment(str){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Fragment").$new(str,self.$scope(),self.sexp)},TMP_Base_fragment_17.$$arity=1);Opal.defn(self,"$error",TMP_Base_error_18=function $$error(msg){var self=this;return self.compiler.$error(msg)},TMP_Base_error_18.$$arity=1);Opal.defn(self,"$scope",TMP_Base_scope_19=function $$scope(){var self=this;return self.compiler.$scope()},TMP_Base_scope_19.$$arity=0);Opal.defn(self,"$s",TMP_Base_s_20=function $$s($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self.compiler,"s",Opal.to_a(args))},TMP_Base_s_20.$$arity=-1);Opal.defn(self,"$expr?",TMP_Base_expr$q_21=function(){var self=this;return self.level["$=="]("expr")},TMP_Base_expr$q_21.$$arity=0);Opal.defn(self,"$recv?",TMP_Base_recv$q_22=function(){var self=this;return self.level["$=="]("recv")},TMP_Base_recv$q_22.$$arity=0);Opal.defn(self,"$stmt?",TMP_Base_stmt$q_23=function(){var self=this;return self.level["$=="]("stmt")},TMP_Base_stmt$q_23.$$arity=0);Opal.defn(self,"$process",TMP_Base_process_24=function $$process(sexp,level){var self=this;if(level==null){level="expr"}return self.compiler.$process(sexp,level)},TMP_Base_process_24.$$arity=-2);Opal.defn(self,"$expr",TMP_Base_expr_25=function $$expr(sexp){var self=this;return self.compiler.$process(sexp,"expr")},TMP_Base_expr_25.$$arity=1);Opal.defn(self,"$recv",TMP_Base_recv_26=function $$recv(sexp){var self=this;return self.compiler.$process(sexp,"recv")},TMP_Base_recv_26.$$arity=1);Opal.defn(self,"$stmt",TMP_Base_stmt_27=function $$stmt(sexp){var self=this;return self.compiler.$process(sexp,"stmt")},TMP_Base_stmt_27.$$arity=1);Opal.defn(self,"$expr_or_nil",TMP_Base_expr_or_nil_28=function $$expr_or_nil(sexp){var self=this;if($truthy(sexp)){return self.$expr(sexp)}else{return"nil"}},TMP_Base_expr_or_nil_28.$$arity=1);Opal.defn(self,"$add_local",TMP_Base_add_local_29=function $$add_local(name){var self=this;return self.$scope().$add_scope_local(name.$to_sym())},TMP_Base_add_local_29.$$arity=1);Opal.defn(self,"$add_ivar",TMP_Base_add_ivar_30=function $$add_ivar(name){var self=this;return self.$scope().$add_scope_ivar(name)},TMP_Base_add_ivar_30.$$arity=1);Opal.defn(self,"$add_gvar",TMP_Base_add_gvar_31=function $$add_gvar(name){var self=this;return self.$scope().$add_scope_gvar(name)},TMP_Base_add_gvar_31.$$arity=1);Opal.defn(self,"$add_temp",TMP_Base_add_temp_32=function $$add_temp(temp){var self=this;return self.$scope().$add_scope_temp(temp)},TMP_Base_add_temp_32.$$arity=1);Opal.defn(self,"$helper",TMP_Base_helper_33=function $$helper(name){var self=this;return self.compiler.$helper(name)},TMP_Base_helper_33.$$arity=1);Opal.defn(self,"$with_temp",TMP_Base_with_temp_34=function $$with_temp(){var self=this,$iter=TMP_Base_with_temp_34.$$p,block=$iter||nil;if($iter)TMP_Base_with_temp_34.$$p=null;return $send(self.compiler,"with_temp",[],block.$to_proc())},TMP_Base_with_temp_34.$$arity=0);Opal.defn(self,"$in_while?",TMP_Base_in_while$q_35=function(){var self=this;return self.compiler["$in_while?"]()},TMP_Base_in_while$q_35.$$arity=0);Opal.defn(self,"$while_loop",TMP_Base_while_loop_36=function $$while_loop(){var self=this;return self.compiler.$instance_variable_get("@while_loop")},TMP_Base_while_loop_36.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_Base_has_rescue_else$q_37=function(){var self=this;return self.$scope()["$has_rescue_else?"]()},TMP_Base_has_rescue_else$q_37.$$arity=0);Opal.defn(self,"$in_ensure",TMP_Base_in_ensure_38=function $$in_ensure(){var self=this,$iter=TMP_Base_in_ensure_38.$$p,block=$iter||nil;if($iter)TMP_Base_in_ensure_38.$$p=null;return $send(self.$scope(),"in_ensure",[],block.$to_proc())},TMP_Base_in_ensure_38.$$arity=0);Opal.defn(self,"$in_ensure?",TMP_Base_in_ensure$q_39=function(){var self=this;return self.$scope()["$in_ensure?"]()},TMP_Base_in_ensure$q_39.$$arity=0);Opal.defn(self,"$closest_module_node",TMP_Base_closest_module_node_40=function $$closest_module_node(){var $a,$b,self=this,current=nil;current=self.$scope();while($truthy($truthy($b=current)?current["$class_scope?"]()["$!"]():$b)){current=current.$parent()}return current},TMP_Base_closest_module_node_40.$$arity=0);Opal.defn(self,"$class_variable_owner",TMP_Base_class_variable_owner_41=function $$class_variable_owner(){var self=this;if($truthy(self.$closest_module_node())){return""+"$"+self.$closest_module_node().$name()}else{return"Opal.Object"}},TMP_Base_class_variable_owner_41.$$arity=0);return(Opal.defn(self,"$comments",TMP_Base_comments_42=function $$comments(){var self=this;return self.$compiler().$comments()["$[]"](self.sexp.$loc())},TMP_Base_comments_42.$$arity=0),nil)&&"comments"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$require","$handle","$push","$to_s","$type","$children","$value","$recv?","$wrap","$join","$keys","$gsub","$even?","$length","$+","$chop","$[]","$encoding","$!=","$force_encoding","$inspect","$to_i","$to_utf16","$translate_escape_chars","$name","$lambda","$upcase","$<=","$call","$-","$>>","$&","$attr_accessor","$extract_flags_and_value","$select!","$flags","$=~","$warning","$compiler","$===","$compile_dynamic_regexp","$compile_static_regexp","$any?","$expr","$new","$map","$to_proc","$flags=","$s","$value=","$include?","$is_a?","$==","$updated","$delete","$source","$expression","$loc","$regexp","$each","$first","$raise","$each_with_index","$compile_inline?","$helper","$compile_inline","$compile_range_initialize","$start","$finish","$numerator","$denominator","$real","$imag"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ValueNode(){}var self=$ValueNode=$klass($base,$super,"ValueNode",$ValueNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ValueNode_compile_1,TMP_ValueNode_truthy_optimize$q_2;self.$handle("true","false","self","nil");Opal.defn(self,"$compile",TMP_ValueNode_compile_1=function $$compile(){var self=this;return self.$push(self.$type().$to_s())},TMP_ValueNode_compile_1.$$arity=0);return Opal.defs(self,"$truthy_optimize?",TMP_ValueNode_truthy_optimize$q_2=function(){var self=this;return true},TMP_ValueNode_truthy_optimize$q_2.$$arity=0)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $NumericNode(){}var self=$NumericNode=$klass($base,$super,"NumericNode",$NumericNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NumericNode_compile_3,TMP_NumericNode_truthy_optimize$q_4;self.$handle("int","float");self.$children("value");Opal.defn(self,"$compile",TMP_NumericNode_compile_3=function $$compile(){var self=this;self.$push(self.$value().$to_s());if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_NumericNode_compile_3.$$arity=0);return Opal.defs(self,"$truthy_optimize?",TMP_NumericNode_truthy_optimize$q_4=function(){var self=this;return true},TMP_NumericNode_truthy_optimize$q_4.$$arity=0)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $StringNode(){}var self=$StringNode=$klass($base,$super,"StringNode",$StringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StringNode_translate_escape_chars_6,TMP_StringNode_compile_8,TMP_StringNode_to_utf16_10;self.$handle("str");self.$children("value");Opal.const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}));Opal.const_set($nesting[0],"ESCAPE_REGEX",new RegExp(""+"(\\\\+)(["+Opal.const_get_relative($nesting,"ESCAPE_CHARS").$keys().$join("")+"])"));Opal.defn(self,"$translate_escape_chars",TMP_StringNode_translate_escape_chars_6=function $$translate_escape_chars(inspect_string){var TMP_5,self=this;return $send(inspect_string,"gsub",[Opal.const_get_relative($nesting,"ESCAPE_REGEX")],(TMP_5=function(original){var self=TMP_5.$$s||this,$a;if(original==null)original=nil;if($truthy((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$length()["$even?"]())){return original}else{return $rb_plus((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$chop(),Opal.const_get_relative($nesting,"ESCAPE_CHARS")["$[]"](($a=$gvars["~"])===nil?nil:$a["$[]"](2)))}},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_StringNode_translate_escape_chars_6.$$arity=1);Opal.defn(self,"$compile",TMP_StringNode_compile_8=function $$compile(){var TMP_7,$a,self=this,string_value=nil,encoding=nil,should_encode=nil,sanitized_value=nil;string_value=self.$value();encoding=string_value.$encoding();should_encode=encoding["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));if($truthy(should_encode)){string_value=string_value.$force_encoding("UTF-8")}sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(TMP_7=function(match){var self=TMP_7.$$s||this,$a,code_point=nil;if(match==null)match=nil;code_point=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$to_i(16);return self.$to_utf16(code_point)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7));self.$push(self.$translate_escape_chars(sanitized_value));if($truthy($truthy($a=should_encode)?Opal.const_get_relative($nesting,"RUBY_ENGINE")["$!="]("opal"):$a)){return self.$push('.$force_encoding("',encoding.$name(),'")')}else{return nil}},TMP_StringNode_compile_8.$$arity=0);return(Opal.defn(self,"$to_utf16",TMP_StringNode_to_utf16_10=function $$to_utf16(code_point){var TMP_9,self=this,ten_bits=nil,u=nil,lead_surrogate=nil,tail_surrogate=nil;ten_bits=1023;u=$send(self,"lambda",[],(TMP_9=function(code_unit){var self=TMP_9.$$s||this;if(code_unit==null)code_unit=nil;return $rb_plus("\\u",code_unit.$to_s(16).$upcase())},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));if($truthy($rb_le(code_point,65535))){return u.$call(code_point)}code_point=$rb_minus(code_point,65536);lead_surrogate=$rb_plus(55296,code_point["$>>"](10));tail_surrogate=$rb_plus(56320,code_point["$&"](ten_bits));return $rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate))},TMP_StringNode_to_utf16_10.$$arity=1),nil)&&"to_utf16"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $SymbolNode(){}var self=$SymbolNode=$klass($base,$super,"SymbolNode",$SymbolNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SymbolNode_compile_11;self.$handle("sym");self.$children("value");return(Opal.defn(self,"$compile",TMP_SymbolNode_compile_11=function $$compile(){var self=this;return self.$push(self.$value().$to_s().$inspect())},TMP_SymbolNode_compile_11.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RegexpNode(){}var self=$RegexpNode=$klass($base,$super,"RegexpNode",$RegexpNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RegexpNode_initialize_12,TMP_RegexpNode_compile_14,TMP_RegexpNode_compile_dynamic_regexp_15,TMP_RegexpNode_compile_static_regexp_16,TMP_RegexpNode_extract_flags_and_value_18,TMP_RegexpNode_raw_value_19;def.sexp=nil;self.$handle("regexp");self.$attr_accessor("value","flags");Opal.const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/);Opal.defn(self,"$initialize",TMP_RegexpNode_initialize_12=function $$initialize($a_rest){var self=this,$iter=TMP_RegexpNode_initialize_12.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_RegexpNode_initialize_12.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_RegexpNode_initialize_12,false),$zuper,$iter);return self.$extract_flags_and_value()},TMP_RegexpNode_initialize_12.$$arity=-1);Opal.defn(self,"$compile",TMP_RegexpNode_compile_14=function $$compile(){var TMP_13,self=this,$case=nil;$send(self.$flags(),"select!",[],(TMP_13=function(flag){var self=TMP_13.$$s||this;if(flag==null)flag=nil;if($truthy(Opal.const_get_relative($nesting,"SUPPORTED_FLAGS")["$=~"](flag))){return true}else{self.$compiler().$warning(""+"Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors.");return false}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));return function(){$case=self.$value().$type();if("dstr"["$==="]($case)||"begin"["$==="]($case)){return self.$compile_dynamic_regexp()}else if("str"["$==="]($case)){return self.$compile_static_regexp()}else{return nil}}()},TMP_RegexpNode_compile_14.$$arity=0);Opal.defn(self,"$compile_dynamic_regexp",TMP_RegexpNode_compile_dynamic_regexp_15=function $$compile_dynamic_regexp(){var self=this;if($truthy(self.$flags()["$any?"]())){return self.$push("new RegExp(",self.$expr(self.$value()),""+", '"+self.$flags().$join()+"')")}else{return self.$push("new RegExp(",self.$expr(self.$value()),")")}},TMP_RegexpNode_compile_dynamic_regexp_15.$$arity=0);Opal.defn(self,"$compile_static_regexp",TMP_RegexpNode_compile_static_regexp_16=function $$compile_static_regexp(){var self=this,value=nil,$case=nil,message=nil;value=self.$value().$children()["$[]"](0);return function(){$case=value;if(""["$==="]($case)){return self.$push("/(?:)/")}else if(/\?<\w+\>/["$==="]($case)){message=""+"named captures are not supported in javascript: "+value.$inspect();return self.$push(""+"self.$raise(new SyntaxError('"+message+"'))")}else{return self.$push(""+Opal.const_get_relative($nesting,"Regexp").$new(value).$inspect()+self.$flags().$join())}}()},TMP_RegexpNode_compile_static_regexp_16.$$arity=0);Opal.defn(self,"$extract_flags_and_value",TMP_RegexpNode_extract_flags_and_value_18=function $$extract_flags_and_value(){var $a,$b,TMP_17,self=this,values=nil,flags_sexp=nil,$writer=nil,$case=nil,parts=nil;$a=[].concat(Opal.to_a(self.$children())),$b=$a.length-1,$b=$b<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=$a[$b]==null?nil:$a[$b],$a;$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())];$send(self,"flags=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$case=values.$length();if((0)["$==="]($case)){$writer=[self.$s("str","")];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else if(1["$==="]($case)){$writer=[values["$[]"](0)];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[$send(self,"s",["dstr"].concat(Opal.to_a(values)))];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(self.$flags()["$include?"]("x"))){parts=$send(self.$value().$children(),"map",[],(TMP_17=function(part){var self=TMP_17.$$s||this,$c,trimmed_value=nil;if(part==null)part=nil;if($truthy($truthy($c=part["$is_a?"](Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node")))?part.$type()["$=="]("str"):$c)){trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,"");return self.$s("str",trimmed_value)}else{return part}},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17));$writer=[self.$value().$updated(nil,parts)];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$flags().$delete("x")}if(self.$value().$type()["$=="]("str")){$writer=[self.$s("str",self.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_RegexpNode_extract_flags_and_value_18.$$arity=0);return(Opal.defn(self,"$raw_value",TMP_RegexpNode_raw_value_19=function $$raw_value(){var self=this,$writer=nil;$writer=[self.sexp.$loc().$expression().$source()];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RegexpNode_raw_value_19.$$arity=0),nil)&&"raw_value"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $MatchCurrentLineNode(){}var self=$MatchCurrentLineNode=$klass($base,$super,"MatchCurrentLineNode",$MatchCurrentLineNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MatchCurrentLineNode_compile_20;self.$handle("match_current_line");self.$children("regexp");return(Opal.defn(self,"$compile",TMP_MatchCurrentLineNode_compile_20=function $$compile(){var self=this,gvar_sexp=nil,send_node=nil;gvar_sexp=self.$s("gvar","$_");send_node=self.$s("send",gvar_sexp,"=~",self.$regexp());return self.$push(self.$expr(send_node))},TMP_MatchCurrentLineNode_compile_20.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $XStringNode(){}var self=$XStringNode=$klass($base,$super,"XStringNode",$XStringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_XStringNode_compile_22;self.$handle("xstr");return(Opal.defn(self,"$compile",TMP_XStringNode_compile_22=function $$compile(){var TMP_21,self=this;$send(self.$children(),"each",[],(TMP_21=function(child){var self=TMP_21.$$s||this,$case=nil,value=nil,str=nil;if(child==null)child=nil;return function(){$case=child.$type();if("str"["$==="]($case)){value=child.$loc().$expression().$source();return self.$push(Opal.const_get_relative($nesting,"Fragment").$new(value,nil))}else if("begin"["$==="]($case)){return self.$push(self.$expr(child))}else if("gvar"["$==="]($case)||"ivar"["$==="]($case)){return self.$push(self.$expr(child))}else if("js_return"["$==="]($case)){self.$push("return ");str=child.$children().$first();value=str.$loc().$expression().$source();return self.$push(Opal.const_get_relative($nesting,"Fragment").$new(value,nil))}else{return self.$raise(""+"Unsupported xstr part: "+child.$type())}}()},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21));if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_XStringNode_compile_22.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $DynamicStringNode(){}var self=$DynamicStringNode=$klass($base,$super,"DynamicStringNode",$DynamicStringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DynamicStringNode_compile_24;self.$handle("dstr");return(Opal.defn(self,"$compile",TMP_DynamicStringNode_compile_24=function $$compile(){var TMP_23,self=this;self.$push('""');return $send(self.$children(),"each_with_index",[],(TMP_23=function(part,idx){var self=TMP_23.$$s||this;if(part==null)part=nil;if(idx==null)idx=nil;self.$push(" + ");if(part.$type()["$=="]("str")){self.$push(part.$children()["$[]"](0).$inspect())}else{self.$push("(",self.$expr(part),")")}if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_23.$$s=self,TMP_23.$$arity=2,TMP_23))},TMP_DynamicStringNode_compile_24.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $DynamicSymbolNode(){}var self=$DynamicSymbolNode=$klass($base,$super,"DynamicSymbolNode",$DynamicSymbolNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("dsym")})($nesting[0],Opal.const_get_relative($nesting,"DynamicStringNode"),$nesting);(function($base,$super,$parent_nesting){function $RangeNode(){}var self=$RangeNode=$klass($base,$super,"RangeNode",$RangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RangeNode_compile_25,TMP_RangeNode_compile_inline$q_26,TMP_RangeNode_compile_inline_27,TMP_RangeNode_compile_range_initialize_28;self.$children("start","finish");Opal.const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"]);Opal.defn(self,"$compile",TMP_RangeNode_compile_25=function $$compile(){var self=this;if($truthy(self["$compile_inline?"]())){self.$helper("range");return self.$compile_inline()}else{return self.$compile_range_initialize()}},TMP_RangeNode_compile_25.$$arity=0);Opal.defn(self,"$compile_inline?",TMP_RangeNode_compile_inline$q_26=function(){var $a,$b,self=this;return $truthy($a=($b=self.$start().$type()["$=="](self.$finish().$type()))?Opal.const_get_relative($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$start().$type()):self.$start().$type()["$=="](self.$finish().$type()))?Opal.const_get_relative($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$finish().$type()):$a},TMP_RangeNode_compile_inline$q_26.$$arity=0);Opal.defn(self,"$compile_inline",TMP_RangeNode_compile_inline_27=function $$compile_inline(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_RangeNode_compile_inline_27.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_RangeNode_compile_range_initialize_28=function $$compile_range_initialize(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_RangeNode_compile_range_initialize_28.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InclusiveRangeNode(){}var self=$InclusiveRangeNode=$klass($base,$super,"InclusiveRangeNode",$InclusiveRangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InclusiveRangeNode_compile_inline_29,TMP_InclusiveRangeNode_compile_range_initialize_30;self.$handle("irange");Opal.defn(self,"$compile_inline",TMP_InclusiveRangeNode_compile_inline_29=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},TMP_InclusiveRangeNode_compile_inline_29.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_InclusiveRangeNode_compile_range_initialize_30=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},TMP_InclusiveRangeNode_compile_range_initialize_30.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){function $ExclusiveRangeNode(){}var self=$ExclusiveRangeNode=$klass($base,$super,"ExclusiveRangeNode",$ExclusiveRangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ExclusiveRangeNode_compile_inline_31,TMP_ExclusiveRangeNode_compile_range_initialize_32;self.$handle("erange");Opal.defn(self,"$compile_inline",TMP_ExclusiveRangeNode_compile_inline_31=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", true)")},TMP_ExclusiveRangeNode_compile_inline_31.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_ExclusiveRangeNode_compile_range_initialize_32=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),",",self.$expr(self.$finish()),", true)")},TMP_ExclusiveRangeNode_compile_range_initialize_32.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){function $RationalNode(){}var self=$RationalNode=$klass($base,$super,"RationalNode",$RationalNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RationalNode_compile_33;self.$handle("rational");self.$children("value");return(Opal.defn(self,"$compile",TMP_RationalNode_compile_33=function $$compile(){var self=this;return self.$push(""+"Opal.Rational.$new("+self.$value().$numerator()+", "+self.$value().$denominator()+")")},TMP_RationalNode_compile_33.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ComplexNode(){}var self=$ComplexNode=$klass($base,$super,"ComplexNode",$ComplexNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ComplexNode_compile_34;self.$handle("complex");self.$children("value");return(Opal.defn(self,"$compile",TMP_ComplexNode_compile_34=function $$compile(){var self=this;return self.$push(""+"Opal.Complex.$new("+self.$value().$real()+", "+self.$value().$imag()+")")},TMP_ComplexNode_compile_34.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$irb?","$compiler","$top?","$scope","$using_irb?","$push","$to_s","$var_name","$with_temp","$property","$wrap","$add_local","$expr","$value","$recv?","$expr?","$[]","$name","$add_ivar","$helper","$add_gvar","$===","$handle_global_match","$handle_post_match","$handle_pre_match","$raise","$index","$class_variable_owner"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $LocalVariableNode(){}var self=$LocalVariableNode=$klass($base,$super,"LocalVariableNode",$LocalVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalVariableNode_using_irb$q_1,TMP_LocalVariableNode_compile_3;self.$handle("lvar");self.$children("var_name");Opal.defn(self,"$using_irb?",TMP_LocalVariableNode_using_irb$q_1=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},TMP_LocalVariableNode_using_irb$q_1.$$arity=0);return(Opal.defn(self,"$compile",TMP_LocalVariableNode_compile_3=function $$compile(){var TMP_2,self=this;if($truthy(self["$using_irb?"]())){}else{return self.$push(self.$var_name().$to_s())}return $send(self,"with_temp",[],(TMP_2=function(tmp){var self=TMP_2.$$s||this;if(tmp==null)tmp=nil;self.$push(self.$property(self.$var_name().$to_s()));return self.$wrap(""+"(("+tmp+" = Opal.irb_vars",""+") == null ? nil : "+tmp+")")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_LocalVariableNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $LocalAssignNode(){}var self=$LocalAssignNode=$klass($base,$super,"LocalAssignNode",$LocalAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalAssignNode_using_irb$q_4,TMP_LocalAssignNode_compile_5;self.$handle("lvasgn");self.$children("var_name","value");Opal.defn(self,"$using_irb?",TMP_LocalAssignNode_using_irb$q_4=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},TMP_LocalAssignNode_using_irb$q_4.$$arity=0);return(Opal.defn(self,"$compile",TMP_LocalAssignNode_compile_5=function $$compile(){var $a,$b,self=this;if($truthy(self["$using_irb?"]())){self.$push(""+"Opal.irb_vars"+self.$property(self.$var_name().$to_s())+" = ")}else{self.$add_local(self.$var_name().$to_s());self.$push(""+self.$var_name()+" = ")}self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_LocalAssignNode_compile_5.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $LocalDeclareNode(){}var self=$LocalDeclareNode=$klass($base,$super,"LocalDeclareNode",$LocalDeclareNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalDeclareNode_compile_6;self.$handle("lvdeclare");self.$children("var_name");return(Opal.defn(self,"$compile",TMP_LocalDeclareNode_compile_6=function $$compile(){var self=this;self.$add_local(self.$var_name().$to_s());return nil},TMP_LocalDeclareNode_compile_6.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InstanceVariableNode(){}var self=$InstanceVariableNode=$klass($base,$super,"InstanceVariableNode",$InstanceVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InstanceVariableNode_var_name_7,TMP_InstanceVariableNode_compile_8;self.$handle("ivar");self.$children("name");Opal.defn(self,"$var_name",TMP_InstanceVariableNode_var_name_7=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_InstanceVariableNode_var_name_7.$$arity=0);return(Opal.defn(self,"$compile",TMP_InstanceVariableNode_compile_8=function $$compile(){var self=this,name=nil;name=self.$property(self.$var_name());self.$add_ivar(name);return self.$push(""+"self"+name)},TMP_InstanceVariableNode_compile_8.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InstanceAssignNode(){}var self=$InstanceAssignNode=$klass($base,$super,"InstanceAssignNode",$InstanceAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InstanceAssignNode_var_name_9,TMP_InstanceAssignNode_compile_10;self.$handle("ivasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_InstanceAssignNode_var_name_9=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_InstanceAssignNode_var_name_9.$$arity=0);return(Opal.defn(self,"$compile",TMP_InstanceAssignNode_compile_10=function $$compile(){var $a,$b,self=this,name=nil;name=self.$property(self.$var_name());self.$push(""+"self"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_InstanceAssignNode_compile_10.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $GlobalVariableNode(){}var self=$GlobalVariableNode=$klass($base,$super,"GlobalVariableNode",$GlobalVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_GlobalVariableNode_var_name_11,TMP_GlobalVariableNode_compile_12;self.$handle("gvar");self.$children("name");Opal.defn(self,"$var_name",TMP_GlobalVariableNode_var_name_11=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_GlobalVariableNode_var_name_11.$$arity=0);return(Opal.defn(self,"$compile",TMP_GlobalVariableNode_compile_12=function $$compile(){var self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$add_gvar(name);return self.$push(""+"$gvars"+name)},TMP_GlobalVariableNode_compile_12.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BackRefNode(){}var self=$BackRefNode=$klass($base,$super,"BackRefNode",$BackRefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BackRefNode_compile_13,TMP_BackRefNode_handle_global_match_15,TMP_BackRefNode_handle_pre_match_17,TMP_BackRefNode_handle_post_match_19;self.$handle("back_ref");Opal.defn(self,"$compile",TMP_BackRefNode_compile_13=function $$compile(){var self=this,$iter=TMP_BackRefNode_compile_13.$$p,$yield=$iter||nil,$case=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_BackRefNode_compile_13.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}self.$helper("gvars");return function(){$case=self.$var_name();if("&"["$==="]($case)){return self.$handle_global_match()}else if("'"["$==="]($case)){return self.$handle_post_match()}else if("`"["$==="]($case)){return self.$handle_pre_match()}else if("+"["$==="]($case)){return $send(self,Opal.find_super_dispatcher(self,"compile",TMP_BackRefNode_compile_13,false),$zuper,$iter)}else{return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))}}()},TMP_BackRefNode_compile_13.$$arity=0);Opal.defn(self,"$handle_global_match",TMP_BackRefNode_handle_global_match_15=function $$handle_global_match(){var TMP_14,self=this;return $send(self,"with_temp",[],(TMP_14=function(tmp){var self=TMP_14.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_BackRefNode_handle_global_match_15.$$arity=0);Opal.defn(self,"$handle_pre_match",TMP_BackRefNode_handle_pre_match_17=function $$handle_pre_match(){var TMP_16,self=this;return $send(self,"with_temp",[],(TMP_16=function(tmp){var self=TMP_16.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16))},TMP_BackRefNode_handle_pre_match_17.$$arity=0);return(Opal.defn(self,"$handle_post_match",TMP_BackRefNode_handle_post_match_19=function $$handle_post_match(){var TMP_18,self=this;return $send(self,"with_temp",[],(TMP_18=function(tmp){var self=TMP_18.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18))},TMP_BackRefNode_handle_post_match_19.$$arity=0),nil)&&"handle_post_match"})($nesting[0],Opal.const_get_relative($nesting,"GlobalVariableNode"),$nesting);(function($base,$super,$parent_nesting){function $GlobalAssignNode(){}var self=$GlobalAssignNode=$klass($base,$super,"GlobalAssignNode",$GlobalAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_GlobalAssignNode_var_name_20,TMP_GlobalAssignNode_compile_21;self.$handle("gvasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_GlobalAssignNode_var_name_20=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_GlobalAssignNode_var_name_20.$$arity=0);return(Opal.defn(self,"$compile",TMP_GlobalAssignNode_compile_21=function $$compile(){var $a,$b,self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$push(""+"$gvars"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_GlobalAssignNode_compile_21.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $NthrefNode(){}var self=$NthrefNode=$klass($base,$super,"NthrefNode",$NthrefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NthrefNode_compile_23;self.$handle("nth_ref");self.$children("index");return(Opal.defn(self,"$compile",TMP_NthrefNode_compile_23=function $$compile(){var TMP_22,self=this;self.$helper("gvars");return $send(self,"with_temp",[],(TMP_22=function(tmp){var self=TMP_22.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))},TMP_NthrefNode_compile_23.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ClassVariableNode(){}var self=$ClassVariableNode=$klass($base,$super,"ClassVariableNode",$ClassVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassVariableNode_compile_25;self.$handle("cvar");self.$children("name");return(Opal.defn(self,"$compile",TMP_ClassVariableNode_compile_25=function $$compile(){var TMP_24,self=this;return $send(self,"with_temp",[],(TMP_24=function(tmp){var self=TMP_24.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = "+self.$class_variable_owner()+".$$cvars['"+self.$name()+"']) == null ? nil : "+tmp+")")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))},TMP_ClassVariableNode_compile_25.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ClassVarAssignNode(){}var self=$ClassVarAssignNode=$klass($base,$super,"ClassVarAssignNode",$ClassVarAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassVarAssignNode_compile_26;self.$handle("cvasgn");self.$children("name","value");return(Opal.defn(self,"$compile",TMP_ClassVarAssignNode_compile_26=function $$compile(){var self=this;return self.$push(""+"(Opal.class_variable_set("+self.$class_variable_owner()+", '"+self.$name()+"', ",self.$expr(self.$value()),"))")},TMP_ClassVarAssignNode_compile_26.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$magical_data_const?","$push","$const_scope","$recv","$name","$eval?","$compiler","$nil?","$==","$eof_content","$base","$expr","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ConstNode(){}var self=$ConstNode=$klass($base,$super,"ConstNode",$ConstNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ConstNode_compile_1,TMP_ConstNode_magical_data_const$q_2;self.$handle("const");self.$children("const_scope","name");Opal.defn(self,"$compile",TMP_ConstNode_compile_1=function $$compile(){var self=this;if($truthy(self["$magical_data_const?"]())){return self.$push("$__END__")}else if($truthy(self.$const_scope())){return self.$push("Opal.const_get_qualified(",self.$recv(self.$const_scope()),""+", '"+self.$name()+"')")}else if($truthy(self.$compiler()["$eval?"]())){return self.$push(""+"Opal.const_get_relative($nesting, '"+self.$name()+"')")}else{return self.$push(""+"Opal.const_get_relative($nesting, '"+self.$name()+"')")}},TMP_ConstNode_compile_1.$$arity=0);return(Opal.defn(self,"$magical_data_const?",TMP_ConstNode_magical_data_const$q_2=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$const_scope()["$nil?"]())?self.$name()["$=="]("DATA"):$b)?self.$compiler().$eof_content():$a},TMP_ConstNode_magical_data_const$q_2.$$arity=0),nil)&&"magical_data_const?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $CbaseNode(){}var self=$CbaseNode=$klass($base,$super,"CbaseNode",$CbaseNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CbaseNode_compile_3;self.$handle("cbase");return(Opal.defn(self,"$compile",TMP_CbaseNode_compile_3=function $$compile(){var self=this;return self.$push("'::'")},TMP_CbaseNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ConstAssignNode(){}var self=$ConstAssignNode=$klass($base,$super,"ConstAssignNode",$ConstAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ConstAssignNode_compile_4;self.$handle("casgn");self.$children("base","name","value");return(Opal.defn(self,"$compile",TMP_ConstAssignNode_compile_4=function $$compile(){var self=this;if($truthy(self.$base())){return self.$push("Opal.const_set(",self.$expr(self.$base()),""+", '"+self.$name()+"', ",self.$expr(self.$value()),")")}else{return self.$push(""+"Opal.const_set($nesting[0], '"+self.$name()+"', ",self.$expr(self.$value()),")")}},TMP_ConstAssignNode_compile_4.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["pathname"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$module=Opal.module;Opal.add_stubs(["$require","$include","$quote","$===","$to_s","$path","$respond_to?","$to_path","$is_a?","$nil?","$raise","$class","$==","$attr_reader","$!","$relative?","$chop_basename","$basename","$=~","$new","$source","$[]","$rindex","$sub","$absolute?","$expand_path","$plus","$unshift","$length","$!=","$empty?","$first","$shift","$+","$join","$dirname","$pop","$reverse_each","$directory?","$extname","$<=>","$nonzero?","$proc","$casecmp","$cleanpath","$inspect","$include?","$fill","$map","$entries"]);self.$require("corelib/comparable");(function($base,$super,$parent_nesting){function $Pathname(){}var self=$Pathname=$klass($base,$super,"Pathname",$Pathname);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Pathname_initialize_1,TMP_Pathname_$eq$eq_2,TMP_Pathname_absolute$q_3,TMP_Pathname_relative$q_4,TMP_Pathname_chop_basename_5,TMP_Pathname_root$q_6,TMP_Pathname_parent_7,TMP_Pathname_sub_8,TMP_Pathname_cleanpath_9,TMP_Pathname_to_path_10,TMP_Pathname_hash_11,TMP_Pathname_expand_path_12,TMP_Pathname_$_13,TMP_Pathname_plus_14,TMP_Pathname_join_16,TMP_Pathname_split_17,TMP_Pathname_dirname_18,TMP_Pathname_basename_19,TMP_Pathname_directory$q_20,TMP_Pathname_extname_21,TMP_Pathname_$lt$eq$gt_22,TMP_Pathname_23,TMP_Pathname_24,TMP_Pathname_relative_path_from_25,TMP_Pathname_entries_27;def.path=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));Opal.const_set($nesting[0],"SEPARATOR_PAT",new RegExp(Opal.const_get_relative($nesting,"Regexp").$quote(Opal.const_get_qualified(Opal.const_get_relative($nesting,"File"),"SEPARATOR"))));Opal.defn(self,"$initialize",TMP_Pathname_initialize_1=function $$initialize(path){var self=this;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](path))){self.path=path.$path().$to_s()}else if($truthy(path["$respond_to?"]("to_path"))){self.path=path.$to_path()}else if($truthy(path["$is_a?"](Opal.const_get_relative($nesting,"String")))){self.path=path}else if($truthy(path["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"no implicit conversion of nil into String")}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+path.$class()+" into String")}if(self.path["$=="]("\0")){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"))}else{return nil}},TMP_Pathname_initialize_1.$$arity=1);self.$attr_reader("path");Opal.defn(self,"$==",TMP_Pathname_$eq$eq_2=function(other){var self=this;return other.$path()["$=="](self.path)},TMP_Pathname_$eq$eq_2.$$arity=1);Opal.defn(self,"$absolute?",TMP_Pathname_absolute$q_3=function(){var self=this;return self["$relative?"]()["$!"]()},TMP_Pathname_absolute$q_3.$$arity=0);Opal.defn(self,"$relative?",TMP_Pathname_relative$q_4=function(){var $a,$b,$c,self=this,path=nil,r=nil;path=self.path;while($truthy(r=self.$chop_basename(path))){$c=r,$b=Opal.to_ary($c),path=$b[0]==null?nil:$b[0],$c}return path["$=="]("")},TMP_Pathname_relative$q_4.$$arity=0);Opal.defn(self,"$chop_basename",TMP_Pathname_chop_basename_5=function $$chop_basename(path){var self=this,base=nil;base=Opal.const_get_relative($nesting,"File").$basename(path);if($truthy(Opal.const_get_relative($nesting,"Regexp").$new(""+"^"+Opal.const_get_qualified(Opal.const_get_relative($nesting,"Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))){return nil}else{return[path["$[]"](0,path.$rindex(base)),base]}},TMP_Pathname_chop_basename_5.$$arity=1);Opal.defn(self,"$root?",TMP_Pathname_root$q_6=function(){var self=this;return self.path["$=="]("/")},TMP_Pathname_root$q_6.$$arity=0);Opal.defn(self,"$parent",TMP_Pathname_parent_7=function $$parent(){var self=this,new_path=nil;new_path=self.path.$sub(/\/([^\/]+\/?$)/,"");if(new_path["$=="]("")){new_path=function(){if($truthy(self["$absolute?"]())){return"/"}else{return"."}return nil}()}return Opal.const_get_relative($nesting,"Pathname").$new(new_path)},TMP_Pathname_parent_7.$$arity=0);Opal.defn(self,"$sub",TMP_Pathname_sub_8=function $$sub($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Pathname").$new($send(self.path,"sub",Opal.to_a(args)))},TMP_Pathname_sub_8.$$arity=-1);Opal.defn(self,"$cleanpath",TMP_Pathname_cleanpath_9=function $$cleanpath(){var self=this;return Opal.normalize(self.path)},TMP_Pathname_cleanpath_9.$$arity=0);Opal.defn(self,"$to_path",TMP_Pathname_to_path_10=function $$to_path(){var self=this;return self.path},TMP_Pathname_to_path_10.$$arity=0);Opal.defn(self,"$hash",TMP_Pathname_hash_11=function $$hash(){var self=this;return self.path},TMP_Pathname_hash_11.$$arity=0);Opal.defn(self,"$expand_path",TMP_Pathname_expand_path_12=function $$expand_path(){var self=this;return Opal.const_get_relative($nesting,"File").$expand_path(self.path)},TMP_Pathname_expand_path_12.$$arity=0);Opal.defn(self,"$+",TMP_Pathname_$_13=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](other))){}else{other=Opal.const_get_relative($nesting,"Pathname").$new(other)}return Opal.const_get_relative($nesting,"Pathname").$new(self.$plus(self.path,other.$to_s()))},TMP_Pathname_$_13.$$arity=1);Opal.defn(self,"$plus",TMP_Pathname_plus_14=function $$plus(path1,path2){var $a,$b,$c,self=this,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,r1=nil,basename1=nil,suffix2=nil;prefix2=path2;index_list2=[];basename_list2=[];while($truthy(r2=self.$chop_basename(prefix2))){$c=r2,$b=Opal.to_ary($c),prefix2=$b[0]==null?nil:$b[0],basename2=$b[1]==null?nil:$b[1],$c;index_list2.$unshift(prefix2.$length());basename_list2.$unshift(basename2)}if($truthy(prefix2["$!="](""))){return path2}prefix1=path1;while($truthy(true)){while($truthy($truthy($c=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$c)){index_list2.$shift();basename_list2.$shift()}if($truthy(r1=self.$chop_basename(prefix1))){}else{break}$c=r1,$b=Opal.to_ary($c),prefix1=$b[0]==null?nil:$b[0],basename1=$b[1]==null?nil:$b[1],$c;if(basename1["$=="](".")){continue}if($truthy($truthy($b=$truthy($c=basename1["$=="](".."))?$c:basename_list2["$empty?"]())?$b:basename_list2.$first()["$!="](".."))){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift();basename_list2.$shift()}r1=self.$chop_basename(prefix1);if($truthy($truthy($a=r1["$!"]())?new RegExp(Opal.const_get_relative($nesting,"SEPARATOR_PAT"))["$=~"](Opal.const_get_relative($nesting,"File").$basename(prefix1)):$a)){while($truthy($truthy($b=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$b)){index_list2.$shift();basename_list2.$shift()}}if($truthy(basename_list2["$empty?"]()["$!"]())){suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,false));if($truthy(r1)){return Opal.const_get_relative($nesting,"File").$join(prefix1,suffix2)}else{return $rb_plus(prefix1,suffix2)}}else if($truthy(r1)){return prefix1}else{return Opal.const_get_relative($nesting,"File").$dirname(prefix1)}},TMP_Pathname_plus_14.$$arity=2);Opal.defn(self,"$join",TMP_Pathname_join_16=function $$join($a_rest){try{var TMP_15,self=this,args,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy(args["$empty?"]())){return self}result=args.$pop();if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](result))){}else{result=Opal.const_get_relative($nesting,"Pathname").$new(result)}if($truthy(result["$absolute?"]())){return result}$send(args,"reverse_each",[],(TMP_15=function(arg){var self=TMP_15.$$s||this;if(arg==null)arg=nil;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](arg))){}else{arg=Opal.const_get_relative($nesting,"Pathname").$new(arg)}result=$rb_plus(arg,result);if($truthy(result["$absolute?"]())){Opal.ret(result)}else{return nil}},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));return $rb_plus(self,result)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Pathname_join_16.$$arity=-1);Opal.defn(self,"$split",TMP_Pathname_split_17=function $$split(){var self=this;return[self.$dirname(),self.$basename()]},TMP_Pathname_split_17.$$arity=0);Opal.defn(self,"$dirname",TMP_Pathname_dirname_18=function $$dirname(){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(Opal.const_get_relative($nesting,"File").$dirname(self.path))},TMP_Pathname_dirname_18.$$arity=0);Opal.defn(self,"$basename",TMP_Pathname_basename_19=function $$basename(){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(Opal.const_get_relative($nesting,"File").$basename(self.path))},TMP_Pathname_basename_19.$$arity=0);Opal.defn(self,"$directory?",TMP_Pathname_directory$q_20=function(){var self=this;return Opal.const_get_relative($nesting,"File")["$directory?"](self.path)},TMP_Pathname_directory$q_20.$$arity=0);Opal.defn(self,"$extname",TMP_Pathname_extname_21=function $$extname(){var self=this;return Opal.const_get_relative($nesting,"File").$extname(self.path)},TMP_Pathname_extname_21.$$arity=0);Opal.defn(self,"$<=>",TMP_Pathname_$lt$eq$gt_22=function(other){var self=this;return self.$path()["$<=>"](other.$path())},TMP_Pathname_$lt$eq$gt_22.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.alias(self,"to_str","to_path");Opal.alias(self,"to_s","to_path");Opal.const_set($nesting[0],"SAME_PATHS",function(){if($truthy(Opal.const_get_qualified(Opal.const_get_relative($nesting,"File"),"FNM_SYSCASE")["$nonzero?"]())){return $send(self,"proc",[],(TMP_Pathname_23=function(a,b){var self=TMP_Pathname_23.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a.$casecmp(b)["$=="](0)},TMP_Pathname_23.$$s=self,TMP_Pathname_23.$$arity=2,TMP_Pathname_23))}else{return $send(self,"proc",[],(TMP_Pathname_24=function(a,b){var self=TMP_Pathname_24.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$=="](b)},TMP_Pathname_24.$$s=self,TMP_Pathname_24.$$arity=2,TMP_Pathname_24))}return nil}());Opal.defn(self,"$relative_path_from",TMP_Pathname_relative_path_from_25=function $$relative_path_from(base_directory){var $a,$b,$c,self=this,dest_directory=nil,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,relpath_names=nil;dest_directory=self.$cleanpath().$to_s();base_directory=base_directory.$cleanpath().$to_s();dest_prefix=dest_directory;dest_names=[];while($truthy(r=self.$chop_basename(dest_prefix))){$c=r,$b=Opal.to_ary($c),dest_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){dest_names.$unshift(basename)}}base_prefix=base_directory;base_names=[];while($truthy(r=self.$chop_basename(base_prefix))){$c=r,$b=Opal.to_ary($c),base_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){base_names.$unshift(basename)}}if($truthy(Opal.const_get_relative($nesting,"SAME_PATHS")["$[]"](dest_prefix,base_prefix))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect())}while($truthy($truthy($b=$truthy($c=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$c)?Opal.const_get_relative($nesting,"SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$b)){dest_names.$shift();base_names.$shift()}if($truthy(base_names["$include?"](".."))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"base_directory has ..: "+base_directory.$inspect())}base_names.$fill("..");relpath_names=$rb_plus(base_names,dest_names);if($truthy(relpath_names["$empty?"]())){return Opal.const_get_relative($nesting,"Pathname").$new(".")}else{return Opal.const_get_relative($nesting,"Pathname").$new($send(Opal.const_get_relative($nesting,"File"),"join",Opal.to_a(relpath_names)))}},TMP_Pathname_relative_path_from_25.$$arity=1);return(Opal.defn(self,"$entries",TMP_Pathname_entries_27=function $$entries(){var TMP_26,self=this;return $send(Opal.const_get_relative($nesting,"Dir").$entries(self.path),"map",[],(TMP_26=function(f){var self=TMP_26.$$s||this;if(f==null)f=nil;return self.$class().$new(f)},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26))},TMP_Pathname_entries_27.$$arity=0),nil)&&"entries"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Pathname_28;Opal.defn(self,"$Pathname",TMP_Kernel_Pathname_28=function $$Pathname(path){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(path)},TMP_Kernel_Pathname_28.$$arity=1)}($nesting[0],$nesting)};Opal.modules["opal/nodes/runtime_helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$new","$children","$==","$s","$include?","$to_sym","$<<","$define_method","$to_proc","$meth","$__send__","$raise","$helper","$[]","$arglist","$js_truthy","$js_falsy"]);self.$require("set");self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RuntimeHelpers(){}var self=$RuntimeHelpers=$klass($base,$super,"RuntimeHelpers",$RuntimeHelpers);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RuntimeHelpers_s_1,TMP_RuntimeHelpers_compatible$q_2,TMP_RuntimeHelpers_helper_3,TMP_RuntimeHelpers_compile_4,TMP_RuntimeHelpers_5,TMP_RuntimeHelpers_6;Opal.const_set($nesting[0],"HELPERS",Opal.const_get_relative($nesting,"Set").$new());self.$children("recvr","meth","arglist");Opal.defs(self,"$s",TMP_RuntimeHelpers_s_1=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node").$new(type,children)},TMP_RuntimeHelpers_s_1.$$arity=-2);Opal.defs(self,"$compatible?",TMP_RuntimeHelpers_compatible$q_2=function(recvr,meth,arglist){var $a,self=this;return($a=recvr["$=="](self.$s("const",nil,"Opal")))?Opal.const_get_relative($nesting,"HELPERS")["$include?"](meth.$to_sym()):recvr["$=="](self.$s("const",nil,"Opal"))},TMP_RuntimeHelpers_compatible$q_2.$$arity=3);Opal.defs(self,"$helper",TMP_RuntimeHelpers_helper_3=function $$helper(name){var self=this,$iter=TMP_RuntimeHelpers_helper_3.$$p,block=$iter||nil;if($iter)TMP_RuntimeHelpers_helper_3.$$p=null;Opal.const_get_relative($nesting,"HELPERS")["$<<"](name);return $send(self,"define_method",[""+"compile_"+name],block.$to_proc())},TMP_RuntimeHelpers_helper_3.$$arity=1);Opal.defn(self,"$compile",TMP_RuntimeHelpers_compile_4=function $$compile(){var self=this;if($truthy(Opal.const_get_relative($nesting,"HELPERS")["$include?"](self.$meth().$to_sym()))){return self.$__send__(""+"compile_"+self.$meth())}else{return self.$raise(""+"Helper not supported: "+self.$meth())}},TMP_RuntimeHelpers_compile_4.$$arity=0);$send(self,"helper",["truthy?"],(TMP_RuntimeHelpers_5=function(){var self=TMP_RuntimeHelpers_5.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("truthy? requires an object")}return self.$js_truthy(sexp)},TMP_RuntimeHelpers_5.$$s=self,TMP_RuntimeHelpers_5.$$arity=0,TMP_RuntimeHelpers_5));return $send(self,"helper",["falsy?"],(TMP_RuntimeHelpers_6=function(){var self=TMP_RuntimeHelpers_6.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("falsy? requires an object")}return self.$js_falsy(sexp)},TMP_RuntimeHelpers_6.$$s=self,TMP_RuntimeHelpers_6.$$arity=0,TMP_RuntimeHelpers_6))})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require"]);self.$require("opal/rewriter");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Rewriters,self=$Rewriters=$module($base,"Rewriters");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BreakFinder(){}var self=$BreakFinder=$klass($base,$super,"BreakFinder",$BreakFinder);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BreakFinder_initialize_1,TMP_BreakFinder_found_break$q_2,TMP_BreakFinder_on_break_3,TMP_BreakFinder_stop_lookup_4;def.found_break=nil;Opal.defn(self,"$initialize",TMP_BreakFinder_initialize_1=function $$initialize(){var self=this;return self.found_break=false},TMP_BreakFinder_initialize_1.$$arity=0);Opal.defn(self,"$found_break?",TMP_BreakFinder_found_break$q_2=function(){var self=this;return self.found_break},TMP_BreakFinder_found_break$q_2.$$arity=0);Opal.defn(self,"$on_break",TMP_BreakFinder_on_break_3=function $$on_break(node){var self=this;self.found_break=true;return node},TMP_BreakFinder_on_break_3.$$arity=1);Opal.defn(self,"$stop_lookup",TMP_BreakFinder_stop_lookup_4=function $$stop_lookup(node){var self=this;return nil},TMP_BreakFinder_stop_lookup_4.$$arity=1);Opal.alias(self,"on_for","stop_lookup");Opal.alias(self,"on_while","stop_lookup");Opal.alias(self,"on_while_post","stop_lookup");Opal.alias(self,"on_until","stop_lookup");Opal.alias(self,"on_until_post","stop_lookup");return Opal.alias(self,"on_block","stop_lookup")})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$attr_reader","$[]=","$-","$define_method","$to_proc","$include?","$type","$s","$handle_special","$record_method?","$<<","$method_calls","$compiler","$to_sym","$meth","$using_irb?","$compile_irb_var","$default_compile","$private","$iter","$new","$process","$found_break?","$splat?","$invoke_using_send?","$compile_using_send","$compile_simple_call_chain","$compile_break_catcher","$helper","$push","$compile_receiver","$compile_method_name","$compile_arguments","$compile_block_pass","$recv","$receiver_sexp","$expr","$arglist","$empty?","$children","$iter_has_break?","$unshift","$line","$method_jsid","$any?","$==","$recvr","$mid_to_jsid","$to_s","$with_temp","$intern","$irb?","$top?","$scope","$nil?","$updated","$method","$arity","$[]","$compatible?","$compile","$sexp_with_arglist","$call","$each","$add_special","$inline_operators?","$operator_helpers","$fragment","$resolve","$requires","$file","$dirname","$cleanpath","$join","$Pathname","$inspect","$class_scope?","$required_trees","$force_encoding","$encoding","$+","$handle_block_given_call","$def?","$mid","$arity_check?","$push_nesting?","$first","$size","$last","$handle_part","$map","$===","$expand_path","$split","$dynamic_require_severity","$error","$warning","$inject","$pop"]);self.$require("set");self.$require("pathname");self.$require("opal/nodes/base");self.$require("opal/nodes/runtime_helpers");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CallNode(){}var self=$CallNode=$klass($base,$super,"CallNode",$CallNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CallNode_add_special_1,TMP_CallNode_initialize_2,TMP_CallNode_compile_4,TMP_CallNode_iter_has_break$q_5,TMP_CallNode_invoke_using_send$q_6,TMP_CallNode_default_compile_7,TMP_CallNode_compile_using_send_8,TMP_CallNode_compile_receiver_9,TMP_CallNode_compile_method_name_10,TMP_CallNode_compile_arguments_11,TMP_CallNode_compile_block_pass_12,TMP_CallNode_compile_break_catcher_13,TMP_CallNode_compile_simple_call_chain_14,TMP_CallNode_splat$q_16,TMP_CallNode_receiver_sexp_17,TMP_CallNode_method_jsid_18,TMP_CallNode_record_method$q_19,TMP_CallNode_compile_irb_var_21,TMP_CallNode_using_irb$q_22,TMP_CallNode_sexp_with_arglist_23,TMP_CallNode_handle_special_24,TMP_CallNode_25,TMP_CallNode_27,TMP_CallNode_28,TMP_CallNode_29,TMP_CallNode_30,TMP_CallNode_31,TMP_CallNode_32,TMP_CallNode_33,TMP_CallNode_34,TMP_CallNode_35,TMP_CallNode_36,TMP_CallNode_37,TMP_CallNode_push_nesting$q_38;def.sexp=def.compiler=def.level=nil;self.$handle("send");self.$attr_reader("recvr","meth","arglist","iter");Opal.const_set($nesting[0],"SPECIALS",$hash2([],{}));Opal.const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}));Opal.defs(self,"$add_special",TMP_CallNode_add_special_1=function $$add_special(name,options){var self=this,$iter=TMP_CallNode_add_special_1.$$p,handler=$iter||nil,$writer=nil;if(options==null){options=$hash2([],{})}if($iter)TMP_CallNode_add_special_1.$$p=null;$writer=[name,options];$send(Opal.const_get_relative($nesting,"SPECIALS"),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return $send(self,"define_method",[""+"handle_"+name],handler.$to_proc())},TMP_CallNode_add_special_1.$$arity=-2);Opal.defn(self,"$initialize",TMP_CallNode_initialize_2=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_CallNode_initialize_2.$$p,$yield=$iter||nil,args=nil,rest=nil,last_arg=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_CallNode_initialize_2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_CallNode_initialize_2,false),$zuper,$iter);$b=[].concat(Opal.to_a(self.sexp)),self.recvr=$b[0]==null?nil:$b[0],self.meth=$b[1]==null?nil:$b[1],args=$slice.call($b,2),$b;$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_arg=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_arg)?["iter","block_pass"]["$include?"](last_arg.$type()):$b)){self.iter=last_arg;args=rest}else{self.iter=nil}return self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)))},TMP_CallNode_initialize_2.$$arity=-1);Opal.defn(self,"$compile",TMP_CallNode_compile_4=function $$compile(){try{var TMP_3,self=this;return $send(self,"handle_special",[],(TMP_3=function(){var self=TMP_3.$$s||this;if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym())}if($truthy(self["$using_irb?"]())){Opal.ret(self.$compile_irb_var())}return self.$default_compile()},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_CallNode_compile_4.$$arity=0);self.$private();Opal.defn(self,"$iter_has_break?",TMP_CallNode_iter_has_break$q_5=function(){var self=this,finder=nil;if($truthy(self.$iter())){}else{return false}finder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.$iter());return finder["$found_break?"]()},TMP_CallNode_iter_has_break$q_5.$$arity=0);Opal.defn(self,"$invoke_using_send?",TMP_CallNode_invoke_using_send$q_6=function(){var $a,self=this;return $truthy($a=self.$iter())?$a:self["$splat?"]()},TMP_CallNode_invoke_using_send$q_6.$$arity=0);Opal.defn(self,"$default_compile",TMP_CallNode_default_compile_7=function $$default_compile(){var self=this;if($truthy(self["$invoke_using_send?"]())){self.$compile_using_send()}else{self.$compile_simple_call_chain()}return self.$compile_break_catcher()},TMP_CallNode_default_compile_7.$$arity=0);Opal.defn(self,"$compile_using_send",TMP_CallNode_compile_using_send_8=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_CallNode_compile_using_send_8.$$arity=0);Opal.defn(self,"$compile_receiver",TMP_CallNode_compile_receiver_9=function $$compile_receiver(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()))},TMP_CallNode_compile_receiver_9.$$arity=0);Opal.defn(self,"$compile_method_name",TMP_CallNode_compile_method_name_10=function $$compile_method_name(){var self=this;return self.$push(""+", '"+self.$meth()+"'")},TMP_CallNode_compile_method_name_10.$$arity=0);Opal.defn(self,"$compile_arguments",TMP_CallNode_compile_arguments_11=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self["$splat?"]())){return self.$push(self.$expr(self.$arglist()))}else if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push("[",self.$expr(self.$arglist()),"]")}},TMP_CallNode_compile_arguments_11.$$arity=0);Opal.defn(self,"$compile_block_pass",TMP_CallNode_compile_block_pass_12=function $$compile_block_pass(){var self=this;if($truthy(self.$iter())){return self.$push(", ",self.$expr(self.$iter()))}else{return nil}},TMP_CallNode_compile_block_pass_12.$$arity=0);Opal.defn(self,"$compile_break_catcher",TMP_CallNode_compile_break_catcher_13=function $$compile_break_catcher(){var self=this;if($truthy(self["$iter_has_break?"]())){self.$unshift("return ");self.$unshift("(function(){var $brk = Opal.new_brk(); try {");return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")}else{return nil}},TMP_CallNode_compile_break_catcher_13.$$arity=0);Opal.defn(self,"$compile_simple_call_chain",TMP_CallNode_compile_simple_call_chain_14=function $$compile_simple_call_chain(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),"(",self.$expr(self.$arglist()),")")},TMP_CallNode_compile_simple_call_chain_14.$$arity=0);Opal.defn(self,"$splat?",TMP_CallNode_splat$q_16=function(){var TMP_15,self=this;return $send(self.$arglist().$children(),"any?",[],(TMP_15=function(a){var self=TMP_15.$$s||this;if(a==null)a=nil;return a.$type()["$=="]("splat")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15))},TMP_CallNode_splat$q_16.$$arity=0);Opal.defn(self,"$receiver_sexp",TMP_CallNode_receiver_sexp_17=function $$receiver_sexp(){var $a,self=this;return $truthy($a=self.$recvr())?$a:self.$s("self")},TMP_CallNode_receiver_sexp_17.$$arity=0);Opal.defn(self,"$method_jsid",TMP_CallNode_method_jsid_18=function $$method_jsid(){var self=this;return self.$mid_to_jsid(self.$meth().$to_s())},TMP_CallNode_method_jsid_18.$$arity=0);Opal.defn(self,"$record_method?",TMP_CallNode_record_method$q_19=function(){var self=this;return true},TMP_CallNode_record_method$q_19.$$arity=0);Opal.defn(self,"$compile_irb_var",TMP_CallNode_compile_irb_var_21=function $$compile_irb_var(){var TMP_20,self=this;return $send(self,"with_temp",[],(TMP_20=function(tmp){var self=TMP_20.$$s||this,lvar=nil,call=nil;if(tmp==null)tmp=nil;lvar=self.$meth();call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist"));return self.$push(""+"(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call),""+" : "+tmp+")")},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20))},TMP_CallNode_compile_irb_var_21.$$arity=0);Opal.defn(self,"$using_irb?",TMP_CallNode_using_irb$q_22=function(){var $a,$b,$c,$d,self=this;return $truthy($a=$truthy($b=$truthy($c=$truthy($d=self.compiler["$irb?"]())?self.$scope()["$top?"]():$d)?self.$arglist()["$=="](self.$s("arglist")):$c)?self.$recvr()["$nil?"]():$b)?self.$iter()["$nil?"]():$a},TMP_CallNode_using_irb$q_22.$$arity=0);Opal.defn(self,"$sexp_with_arglist",TMP_CallNode_sexp_with_arglist_23=function $$sexp_with_arglist(){var self=this;return self.sexp.$updated(nil,[self.$recvr(),self.$meth(),self.$arglist()])},TMP_CallNode_sexp_with_arglist_23.$$arity=0);Opal.defn(self,"$handle_special",TMP_CallNode_handle_special_24=function $$handle_special(){var self=this,$iter=TMP_CallNode_handle_special_24.$$p,compile_default=$iter||nil,method=nil;if($iter)TMP_CallNode_handle_special_24.$$p=null;if($truthy(Opal.const_get_relative($nesting,"SPECIALS")["$include?"](self.$meth()))){method=self.$method(""+"handle_"+self.$meth());if(method.$arity()["$=="](1)){return method["$[]"](compile_default)}else{return method["$[]"]()}}else if($truthy(Opal.const_get_relative($nesting,"RuntimeHelpers")["$compatible?"](self.$recvr(),self.$meth(),self.$arglist()))){return self.$push(Opal.const_get_relative($nesting,"RuntimeHelpers").$new(self.$sexp_with_arglist(),self.level,self.compiler).$compile())}else{return compile_default.$call()}},TMP_CallNode_handle_special_24.$$arity=0);$send(Opal.const_get_relative($nesting,"OPERATORS"),"each",[],(TMP_CallNode_25=function(operator,name){var self=TMP_CallNode_25.$$s||this,TMP_26;if(operator==null)operator=nil;if(name==null)name=nil;return $send(self,"add_special",[operator.$to_sym()],(TMP_26=function(compile_default){var self=TMP_26.$$s||this,$a,lhs=nil,rhs=nil;if(compile_default==null)compile_default=nil;if($truthy(self.$compiler()["$inline_operators?"]())){if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](operator.$to_sym())}self.$compiler().$operator_helpers()["$<<"](operator.$to_sym());$a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())],lhs=$a[0],rhs=$a[1],$a;self.$push(self.$fragment(""+"$rb_"+name+"("));self.$push(lhs);self.$push(self.$fragment(", "));self.$push(rhs);return self.$push(self.$fragment(")"))}else{return compile_default.$call()}},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26))},TMP_CallNode_25.$$s=self,TMP_CallNode_25.$$arity=2,TMP_CallNode_25));$send(self,"add_special",["require"],(TMP_CallNode_27=function(compile_default){var self=TMP_CallNode_27.$$s||this,str=nil;if(compile_default==null)compile_default=nil;str=Opal.const_get_relative($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()},TMP_CallNode_27.$$s=self,TMP_CallNode_27.$$arity=1,TMP_CallNode_27));$send(self,"add_special",["require_relative"],(TMP_CallNode_28=function(_compile_default){var self=TMP_CallNode_28.$$s||this,arg=nil,file=nil,dir=nil;if(_compile_default==null)_compile_default=nil;arg=self.$arglist().$children()["$[]"](0);file=self.$compiler().$file();if(arg.$type()["$=="]("str")){dir=Opal.const_get_relative($nesting,"File").$dirname(file);self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())}self.$push(self.$fragment(""+"self.$require("+file.$inspect()+"+ '/../' + "));self.$push(self.$process(self.$arglist()));return self.$push(self.$fragment(")"))},TMP_CallNode_28.$$s=self,TMP_CallNode_28.$$arity=1,TMP_CallNode_28));$send(self,"add_special",["autoload"],(TMP_CallNode_29=function(compile_default){var self=TMP_CallNode_29.$$s||this,str=nil;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$class_scope?"]())){str=Opal.const_get_relative($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](1)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()}else{return nil}},TMP_CallNode_29.$$s=self,TMP_CallNode_29.$$arity=1,TMP_CallNode_29));$send(self,"add_special",["require_tree"],(TMP_CallNode_30=function(compile_default){var self=TMP_CallNode_30.$$s||this,$a,first_arg=nil,rest=nil,relative_path=nil,dir=nil,full_path=nil;if(compile_default==null)compile_default=nil;$a=[].concat(Opal.to_a(self.$arglist().$children())),first_arg=$a[0]==null?nil:$a[0],rest=$slice.call($a,1),$a;if(first_arg.$type()["$=="]("str")){relative_path=first_arg.$children()["$[]"](0);self.$compiler().$required_trees()["$<<"](relative_path);dir=Opal.const_get_relative($nesting,"File").$dirname(self.$compiler().$file());full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s();full_path.$force_encoding(relative_path.$encoding());first_arg=first_arg.$updated(nil,[full_path])}self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest));return compile_default.$call()},TMP_CallNode_30.$$s=self,TMP_CallNode_30.$$arity=1,TMP_CallNode_30));$send(self,"add_special",["block_given?"],(TMP_CallNode_31=function(compile_default){var self=TMP_CallNode_31.$$s||this;if(self.sexp==null)self.sexp=nil;if(compile_default==null)compile_default=nil;return self.$push(self.$compiler().$handle_block_given_call(self.sexp))},TMP_CallNode_31.$$s=self,TMP_CallNode_31.$$arity=1,TMP_CallNode_31));$send(self,"add_special",["__callee__"],(TMP_CallNode_32=function(compile_default){var self=TMP_CallNode_32.$$s||this;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_CallNode_32.$$s=self,TMP_CallNode_32.$$arity=1,TMP_CallNode_32));$send(self,"add_special",["__method__"],(TMP_CallNode_33=function(compile_default){var self=TMP_CallNode_33.$$s||this;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_CallNode_33.$$s=self,TMP_CallNode_33.$$arity=1,TMP_CallNode_33));$send(self,"add_special",["debugger"],(TMP_CallNode_34=function(compile_default){var self=TMP_CallNode_34.$$s||this;if(compile_default==null)compile_default=nil;return self.$push(self.$fragment("debugger"))},TMP_CallNode_34.$$s=self,TMP_CallNode_34.$$arity=1,TMP_CallNode_34));$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(TMP_CallNode_35=function(compile_default){var self=TMP_CallNode_35.$$s||this;if(compile_default==null)compile_default=nil;return self.$push(self.$fragment(""+"Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))},TMP_CallNode_35.$$s=self,TMP_CallNode_35.$$arity=1,TMP_CallNode_35));$send(self,"add_special",["nesting"],(TMP_CallNode_36=function(compile_default){var self=TMP_CallNode_36.$$s||this,push_nesting=nil;if(compile_default==null)compile_default=nil;push_nesting=self["$push_nesting?"](self.$children());if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},TMP_CallNode_36.$$s=self,TMP_CallNode_36.$$arity=1,TMP_CallNode_36));$send(self,"add_special",["constants"],(TMP_CallNode_37=function(compile_default){var self=TMP_CallNode_37.$$s||this,push_nesting=nil;if(compile_default==null)compile_default=nil;push_nesting=self["$push_nesting?"](self.$children());if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},TMP_CallNode_37.$$s=self,TMP_CallNode_37.$$arity=1,TMP_CallNode_37));Opal.defn(self,"$push_nesting?",TMP_CallNode_push_nesting$q_38=function(recv){var $a,$b,$c,self=this;recv=self.$children().$first();return($a=self.$children().$size()["$=="](2))?$truthy($b=recv["$nil?"]())?$b:($c=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):recv.$type()["$=="]("const"):self.$children().$size()["$=="](2)},TMP_CallNode_push_nesting$q_38.$$arity=1);return function($base,$super,$parent_nesting){function $DependencyResolver(){}var self=$DependencyResolver=$klass($base,$super,"DependencyResolver",$DependencyResolver);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DependencyResolver_initialize_39,TMP_DependencyResolver_resolve_40,TMP_DependencyResolver_handle_part_42,TMP_DependencyResolver_expand_path_44;def.sexp=def.compiler=nil;Opal.defn(self,"$initialize",TMP_DependencyResolver_initialize_39=function $$initialize(compiler,sexp){var self=this;self.compiler=compiler;return self.sexp=sexp},TMP_DependencyResolver_initialize_39.$$arity=2);Opal.defn(self,"$resolve",TMP_DependencyResolver_resolve_40=function $$resolve(){var self=this;return self.$handle_part(self.sexp)},TMP_DependencyResolver_resolve_40.$$arity=0);Opal.defn(self,"$handle_part",TMP_DependencyResolver_handle_part_42=function $$handle_part(sexp){var $a,$b,TMP_41,self=this,type=nil,recv=nil,meth=nil,args=nil,parts=nil,msg=nil,$case=nil;type=sexp.$type();if(type["$=="]("str")){return sexp.$children()["$[]"](0)}else if(type["$=="]("send")){$b=sexp.$children(),$a=Opal.to_ary($b),recv=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$b;parts=$send(args,"map",[],(TMP_41=function(s){var self=TMP_41.$$s||this;if(s==null)s=nil;return self.$handle_part(s)},TMP_41.$$s=self,TMP_41.$$arity=1,TMP_41));if($truthy($truthy($a=$truthy($b=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node")["$==="](recv))?recv.$type()["$=="]("const"):$b)?recv.$children().$last()["$=="]("File"):$a)){if(meth["$=="]("expand_path")){return $send(self,"expand_path",Opal.to_a(parts))}else if(meth["$=="]("join")){return self.$expand_path(parts.$join("/"))}else if(meth["$=="]("dirname")){return self.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,true)).$join("/"))}}}msg="Cannot handle dynamic require";return function(){$case=self.compiler.$dynamic_require_severity();if("error"["$==="]($case)){return self.compiler.$error(msg,self.sexp.$line())}else if("warning"["$==="]($case)){return self.compiler.$warning(msg,self.sexp.$line())}else{return nil}}()},TMP_DependencyResolver_handle_part_42.$$arity=1);return(Opal.defn(self,"$expand_path",TMP_DependencyResolver_expand_path_44=function $$expand_path(path,base){var TMP_43,self=this;if(base==null){base=""}return $send((""+base+"/"+path).$split("/"),"inject",[[]],(TMP_43=function(p,part){var self=TMP_43.$$s||this;if(p==null)p=nil;if(part==null)part=nil;if(part["$=="]("")){}else if(part["$=="]("..")){p.$pop()}else{p["$<<"](part)}return p},TMP_43.$$s=self,TMP_43.$$arity=2,TMP_43)).$join("/")},TMP_DependencyResolver_expand_path_44.$$arity=-2),nil)&&"expand_path"}($nesting[0],null,$nesting)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$helper","$conditional_send","$recv","$receiver_sexp","$push","$compile_method_name","$compile_arguments","$compile_block_pass"]);self.$require("opal/nodes/call");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CSendNode(){}var self=$CSendNode=$klass($base,$super,"CSendNode",$CSendNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CSendNode_default_compile_2;self.$handle("csend");return(Opal.defn(self,"$default_compile",TMP_CSendNode_default_compile_2=function $$default_compile(){var TMP_1,self=this;self.$helper("send");return $send(self,"conditional_send",[self.$recv(self.$receiver_sexp())],(TMP_1=function(receiver_temp){var self=TMP_1.$$s||this;if(receiver_temp==null)receiver_temp=nil;self.$push("$send(",receiver_temp);self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_CSendNode_default_compile_2.$$arity=0),nil)&&"default_compile"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$recv","$recvr","$expr","$property","$value","$<<","$default_compile","$meth","$receiver_sexp","$method_jsid","$compile_arguments","$iter","$s","$lhs","$rhs","$process"]);self.$require("opal/nodes/base");self.$require("opal/nodes/call");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $JsAttrNode(){}var self=$JsAttrNode=$klass($base,$super,"JsAttrNode",$JsAttrNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsAttrNode_compile_1;self.$handle("jsattr");self.$children("recvr","property");return(Opal.defn(self,"$compile",TMP_JsAttrNode_compile_1=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"]")},TMP_JsAttrNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JsAttrAsgnNode(){}var self=$JsAttrAsgnNode=$klass($base,$super,"JsAttrAsgnNode",$JsAttrAsgnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsAttrAsgnNode_compile_2;self.$handle("jsattrasgn");self.$children("recvr","property","value");return(Opal.defn(self,"$compile",TMP_JsAttrAsgnNode_compile_2=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"] = ",self.$expr(self.$value()))},TMP_JsAttrAsgnNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JsCallNode(){}var self=$JsCallNode=$klass($base,$super,"JsCallNode",$JsCallNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsCallNode_initialize_3,TMP_JsCallNode_compile_4,TMP_JsCallNode_method_jsid_5,TMP_JsCallNode_compile_using_send_6;def.iter=def.arglist=nil;self.$handle("jscall");Opal.defn(self,"$initialize",TMP_JsCallNode_initialize_3=function $$initialize($a_rest){var self=this,$iter=TMP_JsCallNode_initialize_3.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_JsCallNode_initialize_3.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_JsCallNode_initialize_3,false),$zuper,$iter);if($truthy(self.iter)){self.arglist=self.arglist["$<<"](self.iter)}return self.iter=nil},TMP_JsCallNode_initialize_3.$$arity=-1);Opal.defn(self,"$compile",TMP_JsCallNode_compile_4=function $$compile(){var self=this;return self.$default_compile()},TMP_JsCallNode_compile_4.$$arity=0);Opal.defn(self,"$method_jsid",TMP_JsCallNode_method_jsid_5=function $$method_jsid(){var self=this;return""+"."+self.$meth()},TMP_JsCallNode_method_jsid_5.$$arity=0);return(Opal.defn(self,"$compile_using_send",TMP_JsCallNode_compile_using_send_6=function $$compile_using_send(){var self=this;self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),".apply(null");self.$compile_arguments();if($truthy(self.$iter())){self.$push(".concat(",self.$expr(self.$iter()),")")}return self.$push(")")},TMP_JsCallNode_compile_using_send_6.$$arity=0),nil)&&"compile_using_send"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){function $Match3Node(){}var self=$Match3Node=$klass($base,$super,"Match3Node",$Match3Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Match3Node_compile_7;def.level=nil;self.$handle("match_with_lvasgn");self.$children("lhs","rhs");return(Opal.defn(self,"$compile",TMP_Match3Node_compile_7=function $$compile(){var self=this,sexp=nil;sexp=self.$s("send",self.$lhs(),"=~",self.$rhs());return self.$push(self.$process(sexp,self.level))},TMP_Match3Node_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/scope"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$attr_accessor","$attr_reader","$indent","$scope","$compiler","$scope=","$-","$call","$==","$!","$class?","$dup","$push","$map","$ivars","$gvars","$parser_indent","$empty?","$join","$+","$proto","$%","$fragment","$def_in_class?","$add_proto_ivar","$include?","$<<","$has_local?","$has_temp?","$pop","$next_temp","$succ","$uses_block!","$identify!","$compact","$parent","$name","$scope_name","$mid","$unique_temp","$add_scope_temp","$def?","$type","$rescue_else_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ScopeNode(){}var self=$ScopeNode=$klass($base,$super,"ScopeNode",$ScopeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ScopeNode_initialize_1,TMP_ScopeNode_in_scope_2,TMP_ScopeNode_class_scope$q_4,TMP_ScopeNode_class$q_5,TMP_ScopeNode_module$q_6,TMP_ScopeNode_sclass$q_7,TMP_ScopeNode_top$q_8,TMP_ScopeNode_iter$q_9,TMP_ScopeNode_def$q_10,TMP_ScopeNode_def_in_class$q_11,TMP_ScopeNode_proto_12,TMP_ScopeNode_to_vars_17,TMP_ScopeNode_add_scope_ivar_18,TMP_ScopeNode_add_scope_gvar_19,TMP_ScopeNode_add_proto_ivar_20,TMP_ScopeNode_add_arg_21,TMP_ScopeNode_add_scope_local_22,TMP_ScopeNode_has_local$q_23,TMP_ScopeNode_add_scope_temp_24,TMP_ScopeNode_has_temp$q_25,TMP_ScopeNode_new_temp_26,TMP_ScopeNode_next_temp_27,TMP_ScopeNode_queue_temp_28,TMP_ScopeNode_push_while_29,TMP_ScopeNode_pop_while_30,TMP_ScopeNode_in_while$q_31,TMP_ScopeNode_uses_block$B_32,TMP_ScopeNode_identify$B_33,TMP_ScopeNode_identity_34,TMP_ScopeNode_find_parent_def_35,TMP_ScopeNode_get_super_chain_36,TMP_ScopeNode_uses_block$q_37,TMP_ScopeNode_has_rescue_else$q_38,TMP_ScopeNode_in_ensure_39,TMP_ScopeNode_in_ensure$q_40;def.type=def.defs=def.parent=def.temps=def.locals=def.compiler=def.proto_ivars=def.ivars=def.gvars=def.args=def.queue=def.unique=def.while_stack=def.identity=def.uses_block=def.in_ensure=nil;self.$attr_accessor("parent");self.$attr_accessor("name");self.$attr_accessor("block_name");self.$attr_reader("scope_name");self.$attr_reader("locals");self.$attr_reader("ivars");self.$attr_reader("gvars");self.$attr_accessor("mid");self.$attr_accessor("defs");self.$attr_reader("methods");self.$attr_accessor("uses_super");self.$attr_accessor("uses_zuper");self.$attr_accessor("catch_return","has_break");self.$attr_accessor("rescue_else_sexp");Opal.defn(self,"$initialize",TMP_ScopeNode_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_ScopeNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_ScopeNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ScopeNode_initialize_1,false),$zuper,$iter);self.locals=[];self.temps=[];self.args=[];self.ivars=[];self.gvars=[];self.parent=nil;self.queue=[];self.unique="a";self.while_stack=[];self.identity=nil;self.defs=nil;self.methods=[];self.uses_block=false;self.in_ensure=false;return self.proto_ivars=[]},TMP_ScopeNode_initialize_1.$$arity=-1);Opal.defn(self,"$in_scope",TMP_ScopeNode_in_scope_2=function $$in_scope(){var TMP_3,self=this,$iter=TMP_ScopeNode_in_scope_2.$$p,block=$iter||nil;if($iter)TMP_ScopeNode_in_scope_2.$$p=null;return $send(self,"indent",[],(TMP_3=function(){var self=TMP_3.$$s||this,$writer=nil;if(self.parent==null)self.parent=nil;self.parent=self.$compiler().$scope();$writer=[self];$send(self.$compiler(),"scope=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];block.$call(self);$writer=[self.parent];$send(self.$compiler(),"scope=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))},TMP_ScopeNode_in_scope_2.$$arity=0);Opal.defn(self,"$class_scope?",TMP_ScopeNode_class_scope$q_4=function(){var $a,self=this;return $truthy($a=self.type["$=="]("class"))?$a:self.type["$=="]("module")},TMP_ScopeNode_class_scope$q_4.$$arity=0);Opal.defn(self,"$class?",TMP_ScopeNode_class$q_5=function(){var self=this;return self.type["$=="]("class")},TMP_ScopeNode_class$q_5.$$arity=0);Opal.defn(self,"$module?",TMP_ScopeNode_module$q_6=function(){var self=this;return self.type["$=="]("module")},TMP_ScopeNode_module$q_6.$$arity=0);Opal.defn(self,"$sclass?",TMP_ScopeNode_sclass$q_7=function(){var self=this;return self.type["$=="]("sclass")},TMP_ScopeNode_sclass$q_7.$$arity=0);Opal.defn(self,"$top?",TMP_ScopeNode_top$q_8=function(){var self=this;return self.type["$=="]("top")},TMP_ScopeNode_top$q_8.$$arity=0);Opal.defn(self,"$iter?",TMP_ScopeNode_iter$q_9=function(){var self=this;return self.type["$=="]("iter")},TMP_ScopeNode_iter$q_9.$$arity=0);Opal.defn(self,"$def?",TMP_ScopeNode_def$q_10=function(){var $a,self=this;return $truthy($a=self.type["$=="]("def"))?$a:self.type["$=="]("defs")},TMP_ScopeNode_def$q_10.$$arity=0);Opal.defn(self,"$def_in_class?",TMP_ScopeNode_def_in_class$q_11=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.defs["$!"]())?self.type["$=="]("def"):$c)?self.parent:$b)?self.parent["$class?"]():$a},TMP_ScopeNode_def_in_class$q_11.$$arity=0);Opal.defn(self,"$proto",TMP_ScopeNode_proto_12=function $$proto(){var self=this;return"def"},TMP_ScopeNode_proto_12.$$arity=0);Opal.defn(self,"$to_vars",TMP_ScopeNode_to_vars_17=function $$to_vars(){var TMP_13,TMP_14,TMP_15,$a,TMP_16,self=this,vars=nil,iv=nil,gv=nil,indent=nil,str=nil,pvars=nil,result=nil;vars=self.temps.$dup();$send(vars,"push",Opal.to_a($send(self.locals,"map",[],(TMP_13=function(l){var self=TMP_13.$$s||this;if(l==null)l=nil;return""+l+" = nil"},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13))));iv=$send(self.$ivars(),"map",[],(TMP_14=function(ivar){var self=TMP_14.$$s||this;if(ivar==null)ivar=nil;return""+"if (self"+ivar+" == null) self"+ivar+" = nil;\n"},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));gv=$send(self.$gvars(),"map",[],(TMP_15=function(gvar){var self=TMP_15.$$s||this;if(gvar==null)gvar=nil;return""+"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));indent=self.compiler.$parser_indent();str=function(){if($truthy(vars["$empty?"]())){return""}else{return""+"var "+vars.$join(", ")+";\n"}return nil}();if($truthy(self.$ivars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+iv.$join(indent))}if($truthy(self.$gvars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+gv.$join(indent))}if($truthy($truthy($a=self["$class?"]())?self.proto_ivars["$empty?"]()["$!"]():$a)){pvars=$send(self.proto_ivars,"map",[],(TMP_16=function(i){var self=TMP_16.$$s||this;if(i==null)i=nil;return""+self.$proto()+i},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16)).$join(" = ");result="%s\n%s%s = nil;"["$%"]([str,indent,pvars])}else{result=str}return self.$fragment(result)},TMP_ScopeNode_to_vars_17.$$arity=0);Opal.defn(self,"$add_scope_ivar",TMP_ScopeNode_add_scope_ivar_18=function $$add_scope_ivar(ivar){var self=this;if($truthy(self["$def_in_class?"]())){return self.parent.$add_proto_ivar(ivar)}else if($truthy(self.ivars["$include?"](ivar))){return nil}else{return self.ivars["$<<"](ivar)}},TMP_ScopeNode_add_scope_ivar_18.$$arity=1);Opal.defn(self,"$add_scope_gvar",TMP_ScopeNode_add_scope_gvar_19=function $$add_scope_gvar(gvar){var self=this;if($truthy(self.gvars["$include?"](gvar))){return nil}else{return self.gvars["$<<"](gvar)}},TMP_ScopeNode_add_scope_gvar_19.$$arity=1);Opal.defn(self,"$add_proto_ivar",TMP_ScopeNode_add_proto_ivar_20=function $$add_proto_ivar(ivar){var self=this;if($truthy(self.proto_ivars["$include?"](ivar))){return nil}else{return self.proto_ivars["$<<"](ivar)}},TMP_ScopeNode_add_proto_ivar_20.$$arity=1);Opal.defn(self,"$add_arg",TMP_ScopeNode_add_arg_21=function $$add_arg(arg){var self=this;if($truthy(self.args["$include?"](arg))){}else{self.args["$<<"](arg)}return arg},TMP_ScopeNode_add_arg_21.$$arity=1);Opal.defn(self,"$add_scope_local",TMP_ScopeNode_add_scope_local_22=function $$add_scope_local(local){var self=this;if($truthy(self["$has_local?"](local))){return nil}return self.locals["$<<"](local)},TMP_ScopeNode_add_scope_local_22.$$arity=1);Opal.defn(self,"$has_local?",TMP_ScopeNode_has_local$q_23=function(local){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.locals["$include?"](local))?$b:self.args["$include?"](local))?$a:self.temps["$include?"](local))){return true}if($truthy($truthy($a=self.parent)?self.type["$=="]("iter"):$a)){return self.parent["$has_local?"](local)}return false},TMP_ScopeNode_has_local$q_23.$$arity=1);Opal.defn(self,"$add_scope_temp",TMP_ScopeNode_add_scope_temp_24=function $$add_scope_temp(tmp){var self=this;if($truthy(self["$has_temp?"](tmp))){return nil}return self.temps.$push(tmp)},TMP_ScopeNode_add_scope_temp_24.$$arity=1);Opal.defn(self,"$has_temp?",TMP_ScopeNode_has_temp$q_25=function(tmp){var self=this;return self.temps["$include?"](tmp)},TMP_ScopeNode_has_temp$q_25.$$arity=1);Opal.defn(self,"$new_temp",TMP_ScopeNode_new_temp_26=function $$new_temp(){var self=this,tmp=nil;if($truthy(self.queue["$empty?"]())){}else{return self.queue.$pop()}tmp=self.$next_temp();self.temps["$<<"](tmp);return tmp},TMP_ScopeNode_new_temp_26.$$arity=0);Opal.defn(self,"$next_temp",TMP_ScopeNode_next_temp_27=function $$next_temp(){var $a,self=this,tmp=nil;while($truthy(true)){tmp=""+"$"+self.unique;self.unique=self.unique.$succ();if($truthy(self["$has_local?"](tmp))){}else{break}}return tmp},TMP_ScopeNode_next_temp_27.$$arity=0);Opal.defn(self,"$queue_temp",TMP_ScopeNode_queue_temp_28=function $$queue_temp(name){var self=this;return self.queue["$<<"](name)},TMP_ScopeNode_queue_temp_28.$$arity=1);Opal.defn(self,"$push_while",TMP_ScopeNode_push_while_29=function $$push_while(){var self=this,info=nil;info=$hash2([],{});self.while_stack.$push(info);return info},TMP_ScopeNode_push_while_29.$$arity=0);Opal.defn(self,"$pop_while",TMP_ScopeNode_pop_while_30=function $$pop_while(){var self=this;return self.while_stack.$pop()},TMP_ScopeNode_pop_while_30.$$arity=0);Opal.defn(self,"$in_while?",TMP_ScopeNode_in_while$q_31=function(){var self=this;return self.while_stack["$empty?"]()["$!"]()},TMP_ScopeNode_in_while$q_31.$$arity=0);Opal.defn(self,"$uses_block!",TMP_ScopeNode_uses_block$B_32=function(){var $a,self=this;if($truthy(($a=self.type["$=="]("iter"))?self.parent:self.type["$=="]("iter"))){return self.parent["$uses_block!"]()}else{self.uses_block=true;return self["$identify!"]()}},TMP_ScopeNode_uses_block$B_32.$$arity=0);Opal.defn(self,"$identify!",TMP_ScopeNode_identify$B_33=function(name){var $a,$b,$c,self=this;if(name==null){name=nil}if($truthy(self.identity)){return self.identity}name=$truthy($a=name)?$a:[$truthy($b=self.$parent())?$truthy($c=self.$parent().$name())?$c:self.$parent().$scope_name():$b,self.$mid()].$compact().$join("_");self.identity=self.compiler.$unique_temp(name);if($truthy(self.parent)){self.parent.$add_scope_temp(self.identity)}return self.identity},TMP_ScopeNode_identify$B_33.$$arity=-1);Opal.defn(self,"$identity",TMP_ScopeNode_identity_34=function $$identity(){var self=this;return self.identity},TMP_ScopeNode_identity_34.$$arity=0);Opal.defn(self,"$find_parent_def",TMP_ScopeNode_find_parent_def_35=function $$find_parent_def(){var $a,self=this,scope=nil;scope=self;while($truthy(scope=scope.$parent())){if($truthy(scope["$def?"]())){return scope}}return nil},TMP_ScopeNode_find_parent_def_35.$$arity=0);Opal.defn(self,"$get_super_chain",TMP_ScopeNode_get_super_chain_36=function $$get_super_chain(){var $a,self=this,chain=nil,scope=nil,defn=nil,mid=nil;$a=[[],self,"null","null"],chain=$a[0],scope=$a[1],defn=$a[2],mid=$a[3],$a;while($truthy(scope)){if(scope.$type()["$=="]("iter")){chain["$<<"](scope["$identify!"]());if($truthy(scope.$parent())){scope=scope.$parent()}}else if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"]();mid=""+"'"+scope.$mid()+"'";break}else{break}}return[chain,defn,mid]},TMP_ScopeNode_get_super_chain_36.$$arity=0);Opal.defn(self,"$uses_block?",TMP_ScopeNode_uses_block$q_37=function(){var self=this;return self.uses_block},TMP_ScopeNode_uses_block$q_37.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_ScopeNode_has_rescue_else$q_38=function(){var self=this;return self.$rescue_else_sexp()["$!"]()["$!"]()},TMP_ScopeNode_has_rescue_else$q_38.$$arity=0);Opal.defn(self,"$in_ensure",TMP_ScopeNode_in_ensure_39=function $$in_ensure(){var self=this,$iter=TMP_ScopeNode_in_ensure_39.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_ScopeNode_in_ensure_39.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},TMP_ScopeNode_in_ensure_39.$$arity=0);return(Opal.defn(self,"$in_ensure?",TMP_ScopeNode_in_ensure$q_40=function(){var self=this;return self.in_ensure["$!"]()["$!"]()},TMP_ScopeNode_in_ensure$q_40.$$arity=0),nil)&&"in_ensure?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/module"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$proto","$stmt","$body","$s","$empty_line","$to_vars","$cid","$nil?","$expr"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ModuleNode(){}var self=$ModuleNode=$klass($base,$super,"ModuleNode",$ModuleNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ModuleNode_compile_2,TMP_ModuleNode_name_and_base_3;self.$handle("module");self.$children("cid","body");Opal.defn(self,"$compile",TMP_ModuleNode_compile_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("module");self.$push("(function($base, $parent_nesting) {");self.$line(""+" var $"+name+", self = $"+name+" = $module($base, '"+name+"');");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,$c,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$stmt($truthy($c=self.$body())?$c:self.$s("nil"));self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(",base,", $nesting)")},TMP_ModuleNode_compile_2.$$arity=0);return(Opal.defn(self,"$name_and_base",TMP_ModuleNode_name_and_base_3=function $$name_and_base(){var $a,$b,self=this,base=nil,name=nil;$b=self.$cid().$children(),$a=Opal.to_ary($b),base=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$b;if($truthy(base["$nil?"]())){return[name,"$nesting[0]"]}else{return[name,self.$expr(base)]}},TMP_ModuleNode_name_and_base_3.$$arity=0),nil)&&"name_and_base"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/class"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$proto","$body_code","$empty_line","$to_vars","$super_code","$sup","$expr","$stmt","$returns","$compiler","$body","$s"]);self.$require("opal/nodes/module");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ClassNode(){}var self=$ClassNode=$klass($base,$super,"ClassNode",$ClassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassNode_compile_2,TMP_ClassNode_super_code_3,TMP_ClassNode_body_code_4;self.$handle("class");self.$children("cid","sup","body");Opal.defn(self,"$compile",TMP_ClassNode_compile_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("klass");self.$push("(function($base, $super, $parent_nesting) {");self.$line(""+" function $"+name+"(){};");self.$line(""+" var self = $"+name+" = $klass($base, $super, '"+name+"', $"+name+");");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$body_code();self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(",base,", ",self.$super_code(),", $nesting)")},TMP_ClassNode_compile_2.$$arity=0);Opal.defn(self,"$super_code",TMP_ClassNode_super_code_3=function $$super_code(){var self=this;if($truthy(self.$sup())){return self.$expr(self.$sup())}else{return"null"}},TMP_ClassNode_super_code_3.$$arity=0);return(Opal.defn(self,"$body_code",TMP_ClassNode_body_code_4=function $$body_code(){var $a,self=this;return self.$stmt(self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil")))},TMP_ClassNode_body_code_4.$$arity=0),nil)&&"body_code"})($nesting[0],Opal.const_get_relative($nesting,"ModuleNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$push","$in_scope","$add_temp","$stmt","$returns","$compiler","$body","$line","$to_vars","$scope","$recv","$object"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $SingletonClassNode(){}var self=$SingletonClassNode=$klass($base,$super,"SingletonClassNode",$SingletonClassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SingletonClassNode_compile_2;self.$handle("sclass");self.$children("object","body");return(Opal.defn(self,"$compile",TMP_SingletonClassNode_compile_2=function $$compile(){var TMP_1,self=this;self.$push("(function(self, $parent_nesting) {");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,body_stmt=nil;self.$add_temp("def = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_stmt=self.$stmt(self.$compiler().$returns(self.$body()));self.$line(self.$scope().$to_vars());return self.$line(body_stmt)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(Opal.get_singleton_class(",self.$recv(self.$object()),"), $nesting)")},TMP_SingletonClassNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/inline_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$push","$join","$arg_names","$inject","$children","$type","$===","$<<","$add_arg","$next_temp","$scope","$[]=","$mlhs_mapping","$-","$!","$[]","$meta","$!=","$+","$raise","$inspect"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $InlineArgs(){}var self=$InlineArgs=$klass($base,$super,"InlineArgs",$InlineArgs);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InlineArgs_compile_1,TMP_InlineArgs_arg_names_3,TMP_InlineArgs_add_arg_4;self.$handle("inline_args");Opal.defn(self,"$compile",TMP_InlineArgs_compile_1=function $$compile(){var self=this;return self.$push(self.$arg_names().$join(", "))},TMP_InlineArgs_compile_1.$$arity=0);Opal.defn(self,"$arg_names",TMP_InlineArgs_arg_names_3=function $$arg_names(){var TMP_2,self=this,done_kwargs=nil;done_kwargs=false;return $send(self.$children(),"inject",[[]],(TMP_2=function(result,arg){var self=TMP_2.$$s||this,$a,$case=nil,tmp=nil,$writer=nil,arg_name=nil,_=nil,tmp_arg_name=nil;if(result==null)result=nil;if(arg==null)arg=nil;$case=arg.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if($truthy(done_kwargs)){}else{done_kwargs=true;result["$<<"]("$kwargs")}self.$add_arg(arg)}else if("mlhs"["$==="]($case)){tmp=self.$scope().$next_temp();result["$<<"](tmp);$writer=[arg,tmp];$send(self.$scope().$mlhs_mapping(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else if("arg"["$==="]($case)||"optarg"["$==="]($case)){$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy($truthy($a=arg.$meta()["$[]"]("inline")["$!"]())?arg_name["$[]"](0)["$!="]("$"):$a)){arg_name=""+"$"+arg_name}result["$<<"](arg_name);self.$add_arg(arg)}else if("restarg"["$==="]($case)){tmp_arg_name=$rb_plus(self.$scope().$next_temp(),"_rest");result["$<<"](tmp_arg_name);self.$add_arg(arg)}else{self.$raise(""+"Unknown argument type "+arg.$inspect())}return result},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2))},TMP_InlineArgs_arg_names_3.$$arity=0);return(Opal.defn(self,"$add_arg",TMP_InlineArgs_add_arg_4=function $$add_arg(arg){var $a,self=this,arg_name=nil,_=nil;$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(arg_name)){return self.$scope().$add_arg(arg_name)}else{return nil}},TMP_InlineArgs_add_arg_4.$$arity=1),nil)&&"add_arg"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/normarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$add_temp","$name","$line","$working_arguments","$scope","$in_mlhs?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NormargNode(){}var self=$NormargNode=$klass($base,$super,"NormargNode",$NormargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NormargNode_compile_1;def.sexp=nil;self.$handle("arg");self.$children("name");return(Opal.defn(self,"$compile",TMP_NormargNode_compile_1=function $$compile(){var self=this;if($truthy(self.sexp.$meta()["$[]"]("post"))){self.$add_temp(self.$name());self.$line(""+self.$name()+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")}if($truthy(self.$scope()["$in_mlhs?"]())){self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = nil;");return self.$line("}")}else{return nil}},TMP_NormargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$==","$[]","$default_value","$line","$name","$expr","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $OptargNode(){}var self=$OptargNode=$klass($base,$super,"OptargNode",$OptargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_OptargNode_compile_1;self.$handle("optarg");self.$children("name","default_value");return(Opal.defn(self,"$compile",TMP_OptargNode_compile_1=function $$compile(){var self=this;if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = ",self.$expr(self.$default_value()));self.$push(";");return self.$line("}")},TMP_OptargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/mlhsarg"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$s","$children","$[]","$meta","$mlhs_name","$[]=","$-","$with_inline_args","$scope","$push","$process","$mlhs_mapping","$line","$in_mlhs","$each","$type","$===","$<<","$join","$to_s","$take_while","$!="]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $MlhsArgNode(){}var self=$MlhsArgNode=$klass($base,$super,"MlhsArgNode",$MlhsArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MlhsArgNode_compile_4,TMP_MlhsArgNode_mlhs_name_6,TMP_MlhsArgNode_inline_args_8;def.sexp=def.mlhs_name=def.inline_args=nil;self.$handle("mlhs");Opal.defn(self,"$compile",TMP_MlhsArgNode_compile_4=function $$compile(){var TMP_1,TMP_2,self=this,args_sexp=nil,mlhs_sexp=nil,$writer=nil,var_name=nil;args_sexp=$send(self,"s",["post_args"].concat(Opal.to_a(self.$children())));if($truthy(self.sexp.$meta()["$[]"]("post"))){mlhs_sexp=self.$s("arg",self.$mlhs_name());$writer=["post",true];$send(mlhs_sexp.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$send(self.$scope(),"with_inline_args",[[]],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$push(self.$process(mlhs_sexp))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));var_name=($writer=["js_source",self.$mlhs_name()],$send(args_sexp.$meta(),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])}else{var_name=($writer=["js_source",self.$scope().$mlhs_mapping()["$[]"](self.sexp)],$send(args_sexp.$meta(),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])}self.$line(""+"if ("+var_name+" == null) {");self.$line(""+" "+var_name+" = nil;");self.$line("}");self.$line(""+var_name+" = Opal.to_ary("+var_name+");");return $send(self.$scope(),"with_inline_args",[[]],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3;return $send(self.$scope(),"in_mlhs",[],(TMP_3=function(){var self=TMP_3.$$s||this;return self.$push(self.$process(args_sexp))},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_MlhsArgNode_compile_4.$$arity=0);Opal.defn(self,"$mlhs_name",TMP_MlhsArgNode_mlhs_name_6=function $$mlhs_name(){var $a,TMP_5,self=this,result=nil;return self.mlhs_name=$truthy($a=self.mlhs_name)?$a:function(){if($truthy(self.sexp.$meta()["$[]"]("post"))){result=["$mlhs_of"];$send(self.$children(),"each",[],(TMP_5=function(child){var self=TMP_5.$$s||this,$case=nil;if(child==null)child=nil;return function(){$case=child.$type();if("arg"["$==="]($case)){return result["$<<"](child.$children()["$[]"](0))}else if("mlhs"["$==="]($case)){return result["$<<"]("mlhs")}else{return nil}}()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));return result.$join("_")}else{return self.sexp.$children()["$[]"](0).$to_s()}return nil}()},TMP_MlhsArgNode_mlhs_name_6.$$arity=0);return(Opal.defn(self,"$inline_args",TMP_MlhsArgNode_inline_args_8=function $$inline_args(){var $a,TMP_7,self=this;return self.inline_args=$truthy($a=self.inline_args)?$a:$send(self.$children(),"take_while",[],(TMP_7=function(arg){var self=TMP_7.$$s||this,$b;if(arg==null)arg=nil;return $truthy($b=arg.$type()["$!="]("restarg"))?arg.$type()["$!="]("optarg"):$b},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_MlhsArgNode_inline_args_8.$$arity=0),nil)&&"inline_args"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/restarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name","$add_temp","$[]","$meta","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RestargNode(){}var self=$RestargNode=$klass($base,$super,"RestargNode",$RestargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RestargNode_compile_1;def.sexp=nil;self.$handle("restarg");self.$children("name");return(Opal.defn(self,"$compile",TMP_RestargNode_compile_1=function $$compile(){var self=this,offset=nil;if($truthy(self.$name())){}else{return nil}self.$add_temp(self.$name());if($truthy(self.sexp.$meta()["$[]"]("post"))){return self.$line(""+self.$name()+" = "+self.$scope().$working_arguments()+";")}else{offset=self.sexp.$meta()["$[]"]("offset");self.$line(""+"var $args_len = arguments.length, $rest_len = $args_len - "+offset+";");self.$line("if ($rest_len < 0) { $rest_len = 0; }");self.$line(""+self.$name()+" = new Array($rest_len);");self.$line(""+"for (var $arg_idx = "+offset+"; $arg_idx < $args_len; $arg_idx++) {");self.$line(""+" "+self.$name()+"[$arg_idx - "+offset+"] = arguments[$arg_idx];");return self.$line("}")}},TMP_RestargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/initialize_kwargs"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$kwargs_initialized","$scope","$helper","$line","$kwargs_initialized=","$-"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $InitializeKwargsNode(){}var self=$InitializeKwargsNode=$klass($base,$super,"InitializeKwargsNode",$InitializeKwargsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1;return(Opal.defn(self,"$initialize_kw_args_if_needed",TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1=function $$initialize_kw_args_if_needed(){var self=this,$writer=nil;if($truthy(self.$scope().$kwargs_initialized())){return nil}self.$helper("hash2");self.$line("if ($kwargs == null || !$kwargs.$$is_hash) {");self.$line(" if ($kwargs == null) {");self.$line(" $kwargs = $hash2([], {});");self.$line(" } else {");self.$line(" throw Opal.ArgumentError.$new('expected kwargs');");self.$line(" }");self.$line("}");$writer=[true];$send(self.$scope(),"kwargs_initialized=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1.$$arity=0),nil)&&"initialize_kw_args_if_needed"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$initialize_kw_args_if_needed","$add_temp","$lvar_name","$line","$inspect","$to_s","$<<","$used_kwargs","$scope"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwargNode(){}var self=$KwargNode=$klass($base,$super,"KwargNode",$KwargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwargNode_compile_1;def.sexp=nil;self.$handle("kwarg");self.$children("lvar_name");return(Opal.defn(self,"$compile",TMP_KwargNode_compile_1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$initialize_kw_args_if_needed();self.$add_temp(self.$lvar_name());self.$line(""+"if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {");self.$line(""+" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');");self.$line("}");self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];");return self.$scope().$used_kwargs()["$<<"](key_name)},TMP_KwargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$initialize_kw_args_if_needed","$add_temp","$lvar_name","$line","$inspect","$to_s","$<<","$used_kwargs","$scope","$==","$default_value","$expr"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwoptArgNode(){}var self=$KwoptArgNode=$klass($base,$super,"KwoptArgNode",$KwoptArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwoptArgNode_compile_1;def.sexp=nil;self.$handle("kwoptarg");self.$children("lvar_name","default_value");return(Opal.defn(self,"$compile",TMP_KwoptArgNode_compile_1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$initialize_kw_args_if_needed();self.$add_temp(self.$lvar_name());self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];");self.$scope().$used_kwargs()["$<<"](key_name);if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$lvar_name()+" == null) {");self.$line(""+" "+self.$lvar_name()+" = ",self.$expr(self.$default_value()));return self.$line("}")},TMP_KwoptArgNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$initialize_kw_args_if_needed","$used_kwargs","$name","$add_temp","$line","$map","$scope","$join"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwrestArgNode(){}var self=$KwrestArgNode=$klass($base,$super,"KwrestArgNode",$KwrestArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwrestArgNode_compile_1,TMP_KwrestArgNode_used_kwargs_3;self.$handle("kwrestarg");self.$children("name");Opal.defn(self,"$compile",TMP_KwrestArgNode_compile_1=function $$compile(){var self=this,extract_code=nil;self.$initialize_kw_args_if_needed();extract_code=""+"Opal.kwrestargs($kwargs, "+self.$used_kwargs()+");";if($truthy(self.$name())){self.$add_temp(self.$name());return self.$line(""+self.$name()+" = "+extract_code)}else{return nil}},TMP_KwrestArgNode_compile_1.$$arity=0);return(Opal.defn(self,"$used_kwargs",TMP_KwrestArgNode_used_kwargs_3=function $$used_kwargs(){var TMP_2,self=this,args=nil;args=$send(self.$scope().$used_kwargs(),"map",[],(TMP_2=function(arg_name){var self=TMP_2.$$s||this;if(arg_name==null)arg_name=nil;return""+"'"+arg_name+"': true"},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));return""+"{"+args.$join(",")+"}"},TMP_KwrestArgNode_used_kwargs_3.$$arity=0),nil)&&"used_kwargs"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/post_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$empty?","$children","$initialize_kw_args","$each","$push","$process","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $PostKwargsNode(){}var self=$PostKwargsNode=$klass($base,$super,"PostKwargsNode",$PostKwargsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_PostKwargsNode_compile_2,TMP_PostKwargsNode_initialize_kw_args_3;self.$handle("post_kwargs");Opal.defn(self,"$compile",TMP_PostKwargsNode_compile_2=function $$compile(){var TMP_1,self=this;if($truthy(self.$children()["$empty?"]())){return nil}self.$initialize_kw_args();return $send(self.$children(),"each",[],(TMP_1=function(arg){var self=TMP_1.$$s||this;if(arg==null)arg=nil;return self.$push(self.$process(arg))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_PostKwargsNode_compile_2.$$arity=0);return(Opal.defn(self,"$initialize_kw_args",TMP_PostKwargsNode_initialize_kw_args_3=function $$initialize_kw_args(){var self=this;return self.$line(""+"$kwargs = Opal.extract_kwargs("+self.$scope().$working_arguments()+");")},TMP_PostKwargsNode_initialize_kw_args_3.$$arity=0),nil)&&"initialize_kw_args"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/post_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$attr_reader","$each","$children","$[]=","$meta","$-","$type","$===","$<<","$empty?","$working_arguments","$scope","$[]","$working_arguments=","$add_temp","$line","$size","$inline_args","$extract_arguments","$push","$process","$kwargs_sexp","$required_left_args","$compile_required_arg","$optargs","$compile_optarg","$compile_restarg","$required_right_args","$indent","$restarg","$extract_restarg","$extract_blank_restarg","$s","$kwargs"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $PostArgsNode(){}var self=$PostArgsNode=$klass($base,$super,"PostArgsNode",$PostArgsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_PostArgsNode_initialize_1,TMP_PostArgsNode_extract_arguments_3,TMP_PostArgsNode_compile_7,TMP_PostArgsNode_compile_optarg_9,TMP_PostArgsNode_compile_required_arg_10,TMP_PostArgsNode_compile_restarg_13,TMP_PostArgsNode_extract_restarg_14,TMP_PostArgsNode_extract_blank_restarg_15,TMP_PostArgsNode_kwargs_sexp_16;def.sexp=nil;self.$handle("post_args");self.$attr_reader("kwargs");self.$attr_reader("required_left_args");self.$attr_reader("optargs");self.$attr_reader("restarg");self.$attr_reader("required_right_args");Opal.defn(self,"$initialize",TMP_PostArgsNode_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_PostArgsNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_PostArgsNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_PostArgsNode_initialize_1,false),$zuper,$iter);self.kwargs=[];self.required_left_args=[];self.optargs=[];self.restarg=nil;return self.required_right_args=[]},TMP_PostArgsNode_initialize_1.$$arity=-1);Opal.defn(self,"$extract_arguments",TMP_PostArgsNode_extract_arguments_3=function $$extract_arguments(){var TMP_2,self=this,found_opt_or_rest=nil;found_opt_or_rest=false;return $send(self.$children(),"each",[],(TMP_2=function(arg){var self=TMP_2.$$s||this,$writer=nil,$case=nil;if(self.kwargs==null)self.kwargs=nil;if(self.optargs==null)self.optargs=nil;if(self.required_right_args==null)self.required_right_args=nil;if(self.required_left_args==null)self.required_left_args=nil;if(arg==null)arg=nil;$writer=["post",true];$send(arg.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return function(){$case=arg.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){return self.kwargs["$<<"](arg)}else if("restarg"["$==="]($case)){self.restarg=arg;return found_opt_or_rest=true}else if("optarg"["$==="]($case)){self.optargs["$<<"](arg);return found_opt_or_rest=true}else if("arg"["$==="]($case)||"mlhs"["$==="]($case)){if($truthy(found_opt_or_rest)){return self.required_right_args["$<<"](arg)}else{return self.required_left_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_PostArgsNode_extract_arguments_3.$$arity=0);Opal.defn(self,"$compile",TMP_PostArgsNode_compile_7=function $$compile(){var TMP_4,TMP_5,TMP_6,self=this,old_working_arguments=nil,js_source=nil,$writer=nil;if($truthy(self.$children()["$empty?"]())){return nil}old_working_arguments=self.$scope().$working_arguments();if($truthy(self.sexp.$meta()["$[]"]("js_source"))){js_source=self.sexp.$meta()["$[]"]("js_source");$writer=[""+js_source+"_args"];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{js_source="arguments";$writer=["$post_args"];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}self.$add_temp(""+self.$scope().$working_arguments());self.$line(""+self.$scope().$working_arguments()+" = Opal.slice.call("+js_source+", "+self.$scope().$inline_args().$size()+", "+js_source+".length);");self.$extract_arguments();self.$push(self.$process(self.$kwargs_sexp()));$send(self.$required_left_args(),"each",[],(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));$send(self.$optargs(),"each",[],(TMP_5=function(optarg){var self=TMP_5.$$s||this;if(optarg==null)optarg=nil;return self.$compile_optarg(optarg)},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));self.$compile_restarg();$send(self.$required_right_args(),"each",[],(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));$writer=[old_working_arguments];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_PostArgsNode_compile_7.$$arity=0);Opal.defn(self,"$compile_optarg",TMP_PostArgsNode_compile_optarg_9=function $$compile_optarg(optarg){var $a,TMP_8,self=this,var_name=nil,_=nil;$a=[].concat(Opal.to_a(optarg)),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;self.$add_temp(var_name);self.$line(""+"if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");$send(self,"indent",[],(TMP_8=function(){var self=TMP_8.$$s||this;return self.$line(""+var_name+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8));self.$line("}");return self.$push(self.$process(optarg))},TMP_PostArgsNode_compile_optarg_9.$$arity=1);Opal.defn(self,"$compile_required_arg",TMP_PostArgsNode_compile_required_arg_10=function $$compile_required_arg(arg){var self=this;return self.$push(self.$process(arg))},TMP_PostArgsNode_compile_required_arg_10.$$arity=1);Opal.defn(self,"$compile_restarg",TMP_PostArgsNode_compile_restarg_13=function $$compile_restarg(){var TMP_11,TMP_12,self=this;if($truthy(self.$restarg())){}else{return nil}self.$line(""+"if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");$send(self,"indent",[],(TMP_11=function(){var self=TMP_11.$$s||this;return self.$extract_restarg()},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11));self.$line("} else {");$send(self,"indent",[],(TMP_12=function(){var self=TMP_12.$$s||this;return self.$extract_blank_restarg()},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));return self.$line("}")},TMP_PostArgsNode_compile_restarg_13.$$arity=0);Opal.defn(self,"$extract_restarg",TMP_PostArgsNode_extract_restarg_14=function $$extract_restarg(){var $a,self=this,extract_code=nil,var_name=nil,_=nil;extract_code=""+self.$scope().$working_arguments()+".splice(0, "+self.$scope().$working_arguments()+".length - "+self.$required_right_args().$size()+");";$a=[].concat(Opal.to_a(self.$restarg())),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(var_name)){self.$add_temp(var_name);return self.$line(""+var_name+" = "+extract_code)}else{return self.$line(extract_code)}},TMP_PostArgsNode_extract_restarg_14.$$arity=0);Opal.defn(self,"$extract_blank_restarg",TMP_PostArgsNode_extract_blank_restarg_15=function $$extract_blank_restarg(){var $a,self=this,var_name=nil,_=nil;$a=[].concat(Opal.to_a(self.$restarg())),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(var_name)){self.$add_temp(var_name);return self.$line(""+var_name+" = [];")}else{return nil}},TMP_PostArgsNode_extract_blank_restarg_15.$$arity=0);return(Opal.defn(self,"$kwargs_sexp",TMP_PostArgsNode_kwargs_sexp_16=function $$kwargs_sexp(){var self=this;return $send(self,"s",["post_kwargs"].concat(Opal.to_a(self.$kwargs())))},TMP_PostArgsNode_kwargs_sexp_16.$$arity=0),nil)&&"kwargs_sexp"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/node_with_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$require","$attr_accessor","$attr_writer","$attr_reader","$children","$args","$each_with_index","$type","$===","$<<","$any?","$[]","$length","$!=","$map!","$inline_args","$updated","$optimize_args!","$select","$==","$find","$include?","$s","$post_args","$each","$push","$process","$post_args_sexp","$uses_block?","$scope","$identity","$block_name","$add_temp","$line","$inline_args=","$-","$first","$pop","$[]=","$meta","$keyword_args","$all?","$rest_arg","$opt_args","$has_only_optional_kwargs?","$negative_arity","$positive_arity","$size","$has_required_kwargs?","$+","$-@","$map","$build_parameter","$block_arg","$join","$!","$empty?","$<","$>"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NodeWithArgs(){}var self=$NodeWithArgs=$klass($base,$super,"NodeWithArgs",$NodeWithArgs);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NodeWithArgs_initialize_1,TMP_NodeWithArgs_split_args_5,TMP_NodeWithArgs_opt_args_7,TMP_NodeWithArgs_rest_arg_9,TMP_NodeWithArgs_keyword_args_11,TMP_NodeWithArgs_inline_args_sexp_12,TMP_NodeWithArgs_post_args_sexp_13,TMP_NodeWithArgs_compile_inline_args_15,TMP_NodeWithArgs_compile_post_args_16,TMP_NodeWithArgs_compile_block_arg_17,TMP_NodeWithArgs_with_inline_args_18,TMP_NodeWithArgs_in_mlhs_19,TMP_NodeWithArgs_in_mlhs$q_20,TMP_NodeWithArgs_optimize_args$B_21,TMP_NodeWithArgs_has_only_optional_kwargs$q_23,TMP_NodeWithArgs_has_required_kwargs$q_25,TMP_NodeWithArgs_arity_26,TMP_NodeWithArgs_negative_arity_28,TMP_NodeWithArgs_positive_arity_29,TMP_NodeWithArgs_build_parameter_30,TMP_NodeWithArgs_parameters_code_32,TMP_NodeWithArgs_arity_checks_33;def.opt_args=def.rest_arg=def.keyword_args=def.in_mlhs=def.arity_checks=nil;self.$attr_accessor("mlhs_args");self.$attr_accessor("used_kwargs");self.$attr_accessor("mlhs_mapping");self.$attr_accessor("working_arguments");self.$attr_writer("inline_args");self.$attr_accessor("kwargs_initialized");self.$attr_reader("inline_args","post_args");Opal.defn(self,"$initialize",TMP_NodeWithArgs_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_NodeWithArgs_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_NodeWithArgs_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NodeWithArgs_initialize_1,false),$zuper,$iter);self.mlhs_args=$hash2([],{});self.used_kwargs=[];self.mlhs_mapping=$hash2([],{});self.working_arguments=nil;self.in_mlhs=false;self.kwargs_initialized=false;self.inline_args=[];self.post_args=[];return self.post_args_started=false},TMP_NodeWithArgs_initialize_1.$$arity=-1);Opal.defn(self,"$split_args",TMP_NodeWithArgs_split_args_5=function $$split_args(){var TMP_2,TMP_4,self=this,args=nil;args=self.$args().$children();$send(args,"each_with_index",[],(TMP_2=function(arg,idx){var self=TMP_2.$$s||this,TMP_3,$case=nil;if(self.post_args_started==null)self.post_args_started=nil;if(self.post_args==null)self.post_args=nil;if(self.inline_args==null)self.inline_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;return function(){$case=arg.$type();if("arg"["$==="]($case)||"mlhs"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if($truthy(self.post_args_started)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else if("restarg"["$==="]($case)){self.post_args_started=true;return self.post_args["$<<"](arg)}else if("optarg"["$==="]($case)){if($truthy($send(args["$[]"](idx,args.$length()),"any?",[],(TMP_3=function(next_arg){var self=TMP_3.$$s||this,$a;if(next_arg==null)next_arg=nil;return $truthy($a=next_arg.$type()["$!="]("optarg"))?next_arg.$type()["$!="]("restarg"):$a},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3)))){self.post_args_started=true}if($truthy(self.post_args_started)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2));$send(self.$inline_args(),"map!",[],(TMP_4=function(inline_arg){var self=TMP_4.$$s||this;if(inline_arg==null)inline_arg=nil;return inline_arg.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["inline"],{inline:true})}))},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return self["$optimize_args!"]()},TMP_NodeWithArgs_split_args_5.$$arity=0);Opal.defn(self,"$opt_args",TMP_NodeWithArgs_opt_args_7=function $$opt_args(){var $a,TMP_6,self=this;return self.opt_args=$truthy($a=self.opt_args)?$a:$send(self.$args().$children(),"select",[],(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("optarg")},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6))},TMP_NodeWithArgs_opt_args_7.$$arity=0);Opal.defn(self,"$rest_arg",TMP_NodeWithArgs_rest_arg_9=function $$rest_arg(){var $a,TMP_8,self=this;return self.rest_arg=$truthy($a=self.rest_arg)?$a:$send(self.$args().$children(),"find",[],(TMP_8=function(arg){var self=TMP_8.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("restarg")},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_NodeWithArgs_rest_arg_9.$$arity=0);Opal.defn(self,"$keyword_args",TMP_NodeWithArgs_keyword_args_11=function $$keyword_args(){var $a,TMP_10,self=this;return self.keyword_args=$truthy($a=self.keyword_args)?$a:$send(self.$args().$children(),"select",[],(TMP_10=function(arg){var self=TMP_10.$$s||this;if(arg==null)arg=nil;return["kwarg","kwoptarg","kwrestarg"]["$include?"](arg.$type())},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10))},TMP_NodeWithArgs_keyword_args_11.$$arity=0);Opal.defn(self,"$inline_args_sexp",TMP_NodeWithArgs_inline_args_sexp_12=function $$inline_args_sexp(){var self=this;return $send(self,"s",["inline_args"].concat(Opal.to_a(self.$args().$children())))},TMP_NodeWithArgs_inline_args_sexp_12.$$arity=0);Opal.defn(self,"$post_args_sexp",TMP_NodeWithArgs_post_args_sexp_13=function $$post_args_sexp(){var self=this;return $send(self,"s",["post_args"].concat(Opal.to_a(self.$post_args())))},TMP_NodeWithArgs_post_args_sexp_13.$$arity=0);Opal.defn(self,"$compile_inline_args",TMP_NodeWithArgs_compile_inline_args_15=function $$compile_inline_args(){var TMP_14,self=this;return $send(self.$inline_args(),"each",[],(TMP_14=function(inline_arg){var self=TMP_14.$$s||this;if(inline_arg==null)inline_arg=nil;return self.$push(self.$process(inline_arg))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_NodeWithArgs_compile_inline_args_15.$$arity=0);Opal.defn(self,"$compile_post_args",TMP_NodeWithArgs_compile_post_args_16=function $$compile_post_args(){var self=this;return self.$push(self.$process(self.$post_args_sexp()))},TMP_NodeWithArgs_compile_post_args_16.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_NodeWithArgs_compile_block_arg_17=function $$compile_block_arg(){var self=this,scope_name=nil,yielder=nil;if($truthy(self.$scope()["$uses_block?"]())){scope_name=self.$scope().$identity();yielder=self.$scope().$block_name();self.$add_temp(""+"$iter = "+scope_name+".$$p");self.$add_temp(""+yielder+" = $iter || nil");return self.$line(""+"if ($iter) "+scope_name+".$$p = null;")}else{return nil}},TMP_NodeWithArgs_compile_block_arg_17.$$arity=0);Opal.defn(self,"$with_inline_args",TMP_NodeWithArgs_with_inline_args_18=function $$with_inline_args(args){var self=this,$iter=TMP_NodeWithArgs_with_inline_args_18.$$p,$yield=$iter||nil,old_inline_args=nil,$writer=nil;if($iter)TMP_NodeWithArgs_with_inline_args_18.$$p=null;old_inline_args=self.$inline_args();$writer=[args];$send(self,"inline_args=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.yieldX($yield,[]);$writer=[old_inline_args];$send(self,"inline_args=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_NodeWithArgs_with_inline_args_18.$$arity=1);Opal.defn(self,"$in_mlhs",TMP_NodeWithArgs_in_mlhs_19=function $$in_mlhs(){var self=this,$iter=TMP_NodeWithArgs_in_mlhs_19.$$p,$yield=$iter||nil,old_mlhs=nil;if($iter)TMP_NodeWithArgs_in_mlhs_19.$$p=null;old_mlhs=self.in_mlhs;self.in_mlhs=true;Opal.yieldX($yield,[]);return self.in_mlhs=old_mlhs},TMP_NodeWithArgs_in_mlhs_19.$$arity=0);Opal.defn(self,"$in_mlhs?",TMP_NodeWithArgs_in_mlhs$q_20=function(){var self=this;return self.in_mlhs},TMP_NodeWithArgs_in_mlhs$q_20.$$arity=0);Opal.defn(self,"$optimize_args!",TMP_NodeWithArgs_optimize_args$B_21=function(){var $a,self=this,rest_arg=nil,$writer=nil;if($truthy(($a=self.$post_args().$length()["$=="](1))?self.$post_args().$first().$type()["$=="]("restarg"):self.$post_args().$length()["$=="](1))){rest_arg=self.$post_args().$pop();$writer=["offset",self.$inline_args().$length()];$send(rest_arg.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$inline_args()["$<<"](rest_arg)}else{return nil}},TMP_NodeWithArgs_optimize_args$B_21.$$arity=0);Opal.defn(self,"$has_only_optional_kwargs?",TMP_NodeWithArgs_has_only_optional_kwargs$q_23=function(){var $a,TMP_22,self=this;return $truthy($a=self.$keyword_args()["$any?"]())?$send(self.$keyword_args(),"all?",[],(TMP_22=function(arg){var self=TMP_22.$$s||this;if(arg==null)arg=nil;return["kwoptarg","kwrestarg"]["$include?"](arg.$type())},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22)):$a},TMP_NodeWithArgs_has_only_optional_kwargs$q_23.$$arity=0);Opal.defn(self,"$has_required_kwargs?",TMP_NodeWithArgs_has_required_kwargs$q_25=function(){var TMP_24,self=this;return $send(self.$keyword_args(),"any?",[],(TMP_24=function(arg){var self=TMP_24.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("kwarg")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))},TMP_NodeWithArgs_has_required_kwargs$q_25.$$arity=0);Opal.defn(self,"$arity",TMP_NodeWithArgs_arity_26=function $$arity(){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.$rest_arg())?$b:self.$opt_args()["$any?"]())?$a:self["$has_only_optional_kwargs?"]())){return self.$negative_arity()}else{return self.$positive_arity()}},TMP_NodeWithArgs_arity_26.$$arity=0);Opal.defn(self,"$negative_arity",TMP_NodeWithArgs_negative_arity_28=function $$negative_arity(){var TMP_27,self=this,required_plain_args=nil,result=nil;required_plain_args=$send(self.$args().$children(),"select",[],(TMP_27=function(arg){var self=TMP_27.$$s||this;if(arg==null)arg=nil;return["arg","mlhs"]["$include?"](arg.$type())},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));result=required_plain_args.$size();if($truthy(self["$has_required_kwargs?"]())){result=$rb_plus(result,1)}result=$rb_minus(result["$-@"](),1);return result},TMP_NodeWithArgs_negative_arity_28.$$arity=0);Opal.defn(self,"$positive_arity",TMP_NodeWithArgs_positive_arity_29=function $$positive_arity(){var self=this,result=nil;result=self.$args().$children().$size();result=$rb_minus(result,self.$keyword_args().$size());if($truthy(self.$keyword_args()["$any?"]())){result=$rb_plus(result,1)}return result},TMP_NodeWithArgs_positive_arity_29.$$arity=0);Opal.defn(self,"$build_parameter",TMP_NodeWithArgs_build_parameter_30=function $$build_parameter(parameter_type,parameter_name){var self=this;if($truthy(parameter_name)){return""+"['"+parameter_type+"', '"+parameter_name+"']"}else{return""+"['"+parameter_type+"']"}},TMP_NodeWithArgs_build_parameter_30.$$arity=2);Opal.const_set($nesting[0],"SEXP_TO_PARAMETERS",$hash2(["arg","mlhs","optarg","restarg","kwarg","kwoptarg","kwrestarg"],{arg:"req",mlhs:"req",optarg:"opt",restarg:"rest",kwarg:"keyreq",kwoptarg:"key",kwrestarg:"keyrest"}));Opal.defn(self,"$parameters_code",TMP_NodeWithArgs_parameters_code_32=function $$parameters_code(){var TMP_31,self=this,stringified_parameters=nil;stringified_parameters=$send(self.$args().$children(),"map",[],(TMP_31=function(arg){var self=TMP_31.$$s||this,value=nil;if(arg==null)arg=nil;value=function(){if(arg.$type()["$=="]("mlhs")){return nil}else{return arg.$children()["$[]"](0)}return nil}();return self.$build_parameter(Opal.const_get_relative($nesting,"SEXP_TO_PARAMETERS")["$[]"](arg.$type()),value)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));if($truthy(self.$block_arg())){stringified_parameters["$<<"](""+"['block', '"+self.$block_arg()+"']")}return""+"["+stringified_parameters.$join(", ")+"]"},TMP_NodeWithArgs_parameters_code_32.$$arity=0);return(Opal.defn(self,"$arity_checks",TMP_NodeWithArgs_arity_checks_33=function $$arity_checks(){var $a,$b,$c,self=this,arity=nil,min_arity=nil,max_arity=nil;if($truthy(($a=self["arity_checks"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.arity_checks}arity=self.$args().$children().$size();arity=$rb_minus(arity,self.$opt_args().$size());if($truthy(self.$rest_arg())){arity=$rb_minus(arity,1)}arity=$rb_minus(arity,self.$keyword_args().$size());if($truthy($truthy($b=$truthy($c=self.$opt_args()["$empty?"]()["$!"]())?$c:self.$keyword_args()["$empty?"]()["$!"]())?$b:self.$rest_arg())){arity=$rb_minus(arity["$-@"](),1)}self.arity_checks=[];if($truthy($rb_lt(arity,0))){min_arity=$rb_plus(arity,1)["$-@"]();max_arity=self.$args().$children().$size();if($truthy($rb_gt(min_arity,0))){self.arity_checks["$<<"](""+"$arity < "+min_arity)}if($truthy($truthy($b=max_arity)?self.$rest_arg()["$!"]():$b)){self.arity_checks["$<<"](""+"$arity > "+max_arity)}}else{self.arity_checks["$<<"](""+"$arity !== "+arity)}return self.arity_checks},TMP_NodeWithArgs_arity_checks_33.$$arity=0),nil)&&"arity_checks"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/iter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$extract_block_arg","$extract_shadow_args","$extract_underscore_args","$split_args","$in_scope","$process","$inline_args_sexp","$identify!","$scope","$add_temp","$compile_block_arg","$compile_shadow_args","$compile_inline_args","$compile_post_args","$compile_norm_args","$arity_check?","$compiler","$compile_arity_check","$stmt","$returned_body","$to_vars","$line","$unshift","$push","$contains_break?","$arity","$parameters_code","$has_top_level_mlhs_arg?","$has_trailing_comma_in_args?","$select","$args","$==","$type","$each","$norm_args","$block_arg","$block_name=","$-","$[]","$updated","$s","$body","$shadow_args","$<<","$locals","$add_arg","$each_with_index","$first","$returns","$keys","$mlhs_mapping","$any?","$loc","$expression","$source","$match","$>","$size","$arity_checks","$!","$top?","$def?","$class_scope?","$parent","$mid","$class?","$name","$module?","$identity","$join","$new","$found_break?"]);self.$require("opal/nodes/node_with_args");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $IterNode(){}var self=$IterNode=$klass($base,$super,"IterNode",$IterNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IterNode_compile_2,TMP_IterNode_norm_args_4,TMP_IterNode_compile_norm_args_6,TMP_IterNode_compile_block_arg_7,TMP_IterNode_extract_block_arg_8,TMP_IterNode_compile_shadow_args_10,TMP_IterNode_extract_shadow_args_12,TMP_IterNode_extract_underscore_args_14,TMP_IterNode_returned_body_15,TMP_IterNode_mlhs_args_16,TMP_IterNode_has_top_level_mlhs_arg$q_18,TMP_IterNode_has_trailing_comma_in_args$q_19,TMP_IterNode_compile_arity_check_20,TMP_IterNode_contains_break$q_21;def.norm_args=def.sexp=nil;self.$handle("iter");self.$children("args","body");self.$attr_accessor("block_arg","shadow_args");Opal.defn(self,"$compile",TMP_IterNode_compile_2=function $$compile(){var TMP_1,self=this,inline_params=nil,to_vars=nil,identity=nil,body_code=nil;inline_params=nil;self.$extract_block_arg();self.$extract_shadow_args();self.$extract_underscore_args();self.$split_args();to_vars=identity=body_code=nil;$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this;inline_params=self.$process(self.$inline_args_sexp());identity=self.$scope()["$identify!"]();self.$add_temp(""+"self = "+identity+".$$s || this");self.$compile_block_arg();self.$compile_shadow_args();self.$compile_inline_args();self.$compile_post_args();self.$compile_norm_args();if($truthy(self.$compiler()["$arity_check?"]())){self.$compile_arity_check()}body_code=self.$stmt(self.$returned_body());return to_vars=self.$scope().$to_vars()},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));self.$line(body_code);self.$unshift(to_vars);self.$unshift(""+"("+identity+" = function(",inline_params,"){");self.$push(""+"}, "+identity+".$$s = self,");if($truthy(self["$contains_break?"]())){self.$push(""+" "+identity+".$$brk = $brk,")}self.$push(""+" "+identity+".$$arity = "+self.$arity()+",");if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+" "+identity+".$$parameters = "+self.$parameters_code()+",")}if($truthy(self["$has_top_level_mlhs_arg?"]())){self.$push(""+" "+identity+".$$has_top_level_mlhs_arg = true,")}if($truthy(self["$has_trailing_comma_in_args?"]())){self.$push(""+" "+identity+".$$has_trailing_comma_in_args = true,")}return self.$push(""+" "+identity+")")},TMP_IterNode_compile_2.$$arity=0);Opal.defn(self,"$norm_args",TMP_IterNode_norm_args_4=function $$norm_args(){var $a,TMP_3,self=this;return self.norm_args=$truthy($a=self.norm_args)?$a:$send(self.$args().$children(),"select",[],(TMP_3=function(arg){var self=TMP_3.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("arg")},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_IterNode_norm_args_4.$$arity=0);Opal.defn(self,"$compile_norm_args",TMP_IterNode_compile_norm_args_6=function $$compile_norm_args(){var TMP_5,self=this;return $send(self.$norm_args(),"each",[],(TMP_5=function(arg){var self=TMP_5.$$s||this,$a,arg_name=nil,_=nil;if(arg==null)arg=nil;$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;return self.$push(""+"if ("+arg_name+" == null) "+arg_name+" = nil;")},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_IterNode_compile_norm_args_6.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_IterNode_compile_block_arg_7=function $$compile_block_arg(){var self=this,$writer=nil,scope_name=nil;if($truthy(self.$block_arg())){$writer=[self.$block_arg()];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$scope().$add_temp(self.$block_arg());scope_name=self.$scope()["$identify!"]();self.$line(""+self.$block_arg()+" = "+scope_name+".$$p || nil;");return self.$line(""+"if ("+self.$block_arg()+") "+scope_name+".$$p = null;")}else{return nil}},TMP_IterNode_compile_block_arg_7.$$arity=0);Opal.defn(self,"$extract_block_arg",TMP_IterNode_extract_block_arg_8=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$body()])}else{return nil}},TMP_IterNode_extract_block_arg_8.$$arity=0);Opal.defn(self,"$compile_shadow_args",TMP_IterNode_compile_shadow_args_10=function $$compile_shadow_args(){var TMP_9,self=this;return $send(self.$shadow_args(),"each",[],(TMP_9=function(shadow_arg){var self=TMP_9.$$s||this,arg_name=nil;if(shadow_arg==null)shadow_arg=nil;arg_name=shadow_arg.$children()["$[]"](0);self.$scope().$locals()["$<<"](arg_name);return self.$scope().$add_arg(arg_name)},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_IterNode_compile_shadow_args_10.$$arity=0);Opal.defn(self,"$extract_shadow_args",TMP_IterNode_extract_shadow_args_12=function $$extract_shadow_args(){var TMP_11,self=this,valid_args=nil;self.shadow_args=[];valid_args=[];if($truthy(self.$args())){}else{return nil}$send(self.$args().$children(),"each_with_index",[],(TMP_11=function(arg,idx){var self=TMP_11.$$s||this;if(self.shadow_args==null)self.shadow_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;if(arg.$type()["$=="]("shadowarg")){return self.shadow_args["$<<"](arg)}else{return valid_args["$<<"](arg)}},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11));return self.sexp=self.sexp.$updated(nil,[self.$args().$updated(nil,valid_args),self.$body()])},TMP_IterNode_extract_shadow_args_12.$$arity=0);Opal.defn(self,"$extract_underscore_args",TMP_IterNode_extract_underscore_args_14=function $$extract_underscore_args(){var TMP_13,self=this,valid_args=nil,caught_blank_argument=nil;valid_args=[];caught_blank_argument=false;$send(self.$args().$children(),"each",[],(TMP_13=function(arg){var self=TMP_13.$$s||this,arg_name=nil;if(arg==null)arg=nil;arg_name=arg.$children().$first();if(arg_name["$=="]("_")){if($truthy(caught_blank_argument)){return nil}else{caught_blank_argument=true;return valid_args["$<<"](arg)}}else{return valid_args["$<<"](arg)}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));return self.sexp=self.sexp.$updated(nil,[self.$args().$updated(nil,valid_args),self.$body()])},TMP_IterNode_extract_underscore_args_14.$$arity=0);Opal.defn(self,"$returned_body",TMP_IterNode_returned_body_15=function $$returned_body(){var $a,self=this;return self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil"))},TMP_IterNode_returned_body_15.$$arity=0);Opal.defn(self,"$mlhs_args",TMP_IterNode_mlhs_args_16=function $$mlhs_args(){var self=this;return self.$scope().$mlhs_mapping().$keys()},TMP_IterNode_mlhs_args_16.$$arity=0);Opal.defn(self,"$has_top_level_mlhs_arg?",TMP_IterNode_has_top_level_mlhs_arg$q_18=function(){var TMP_17,self=this;return $send(self.$args().$children(),"any?",[],(TMP_17=function(arg){var self=TMP_17.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("mlhs")},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17))},TMP_IterNode_has_top_level_mlhs_arg$q_18.$$arity=0);Opal.defn(self,"$has_trailing_comma_in_args?",TMP_IterNode_has_trailing_comma_in_args$q_19=function(){var $a,self=this,args_source=nil;if($truthy($truthy($a=self.$args().$loc())?self.$args().$loc().$expression():$a)){args_source=self.$args().$loc().$expression().$source();return args_source.$match(/,\s*\|/)}else{return nil}},TMP_IterNode_has_trailing_comma_in_args$q_19.$$arity=0);Opal.defn(self,"$compile_arity_check",TMP_IterNode_compile_arity_check_20=function $$compile_arity_check(){var $a,$b,$c,self=this,parent_scope=nil,context=nil,identity=nil;if($truthy($rb_gt(self.$arity_checks().$size(),0))){parent_scope=self.$scope();while($truthy(($truthy($b=$truthy($c=parent_scope["$top?"]())?$c:parent_scope["$def?"]())?$b:parent_scope["$class_scope?"]())["$!"]())){parent_scope=parent_scope.$parent()}context=function(){if($truthy(parent_scope["$top?"]())){return"'
'"}else if($truthy(parent_scope["$def?"]())){return""+"'"+parent_scope.$mid()+"'"}else if($truthy(parent_scope["$class?"]())){return""+"''"}else if($truthy(parent_scope["$module?"]())){return""+"''"}else{return nil}return nil}();identity=self.$scope().$identity();self.$line(""+"if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {");self.$line(" var $arity = arguments.length;");self.$line(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+self.$arity()+", "+context+"); }");return self.$line("}")}else{return nil}},TMP_IterNode_compile_arity_check_20.$$arity=0);return(Opal.defn(self,"$contains_break?",TMP_IterNode_contains_break$q_21=function(){var self=this,finder=nil;finder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.sexp);return finder["$found_break?"]()},TMP_IterNode_contains_break$q_21.$$arity=0),nil)&&"contains_break?"})($nesting[0],Opal.const_get_relative($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/def"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$args","$==","$type","$[]","$updated","$mid","$s","$stmts","$extract_block_arg","$split_args","$block_arg","$in_scope","$mid=","$scope","$-","$defs=","$uses_block!","$add_arg","$block_name=","$process","$inline_args_sexp","$stmt","$returns","$compiler","$add_temp","$compile_inline_args","$compile_post_args","$identify!","$identity","$compile_block_arg","$arity_check?","$compile_arity_check","$uses_zuper","$add_local","$line","$unshift","$current_indent","$to_vars","$catch_return","$push","$valid_name?","$arity","$parameters_code","$parse_comments?","$comments_code","$enable_source_location?","$source_location","$wrap_with_definition","$iter?","$module?","$class?","$sclass?","$eval?","$top?","$def?","$raise","$expr?","$wrap","$>","$size","$arity_checks","$inspect","$to_s","$join","$name","$source_buffer","$expression","$loc","$+","$map","$comments","$text"]);self.$require("opal/nodes/node_with_args");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefNode(){}var self=$DefNode=$klass($base,$super,"DefNode",$DefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefNode_extract_block_arg_1,TMP_DefNode_compile_3,TMP_DefNode_wrap_with_definition_4,TMP_DefNode_compile_arity_check_5,TMP_DefNode_source_location_6,TMP_DefNode_comments_code_8;def.sexp=nil;self.$handle("def");self.$children("mid","args","stmts");self.$attr_accessor("block_arg");Opal.defn(self,"$extract_block_arg",TMP_DefNode_extract_block_arg_1=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[self.$mid(),$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$stmts()])}else{return nil}},TMP_DefNode_extract_block_arg_1.$$arity=0);Opal.defn(self,"$compile",TMP_DefNode_compile_3=function $$compile(){var TMP_2,self=this,inline_params=nil,scope_name=nil,block_name=nil,function_name=nil;self.$extract_block_arg();self.$split_args();inline_params=nil;scope_name=nil;if($truthy(self.$block_arg())){block_name=self.$block_arg()}$send(self,"in_scope",[],(TMP_2=function(){var self=TMP_2.$$s||this,$a,$writer=nil,stmt_code=nil;if(self.sexp==null)self.sexp=nil;$writer=[self.$mid()];$send(self.$scope(),"mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if(self.sexp.$type()["$=="]("defs")){$writer=[true];$send(self.$scope(),"defs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(block_name)){self.$scope()["$uses_block!"]();self.$scope().$add_arg(block_name)}$writer=[$truthy($a=block_name)?$a:"$yield"];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];inline_params=self.$process(self.$inline_args_sexp());stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts()));self.$add_temp("self = this");self.$compile_inline_args();self.$compile_post_args();self.$scope()["$identify!"]();scope_name=self.$scope().$identity();self.$compile_block_arg();if($truthy(self.$compiler()["$arity_check?"]())){self.$compile_arity_check()}if($truthy(self.$scope().$uses_zuper())){self.$add_local("$zuper");self.$add_local("$zuper_i");self.$add_local("$zuper_ii");self.$line("// Prepare super implicit arguments");self.$line("for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {");self.$line(" $zuper[$zuper_i] = arguments[$zuper_i];");self.$line("}")}self.$unshift(""+"\n"+self.$current_indent(),self.$scope().$to_vars());self.$line(stmt_code);if($truthy(self.$scope().$catch_return())){self.$unshift("try {\n");self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }");return self.$push(" throw $returner; }")}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));function_name=function(){if($truthy(self["$valid_name?"](self.$mid()))){return""+" $$"+self.$mid()}else{return""}return nil}();self.$unshift(") {");self.$unshift(inline_params);self.$unshift(""+"function"+function_name+"(");if($truthy(scope_name)){self.$unshift(""+scope_name+" = ")}self.$line("}");self.$push(""+", "+scope_name+".$$arity = "+self.$arity());if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+", "+scope_name+".$$parameters = "+self.$parameters_code())}if($truthy(self.$compiler()["$parse_comments?"]())){self.$push(""+", "+scope_name+".$$comments = "+self.$comments_code())}if($truthy(self.$compiler()["$enable_source_location?"]())){self.$push(""+", "+scope_name+".$$source_location = "+self.$source_location())}return self.$wrap_with_definition()},TMP_DefNode_compile_3.$$arity=0);Opal.defn(self,"$wrap_with_definition",TMP_DefNode_wrap_with_definition_4=function $$wrap_with_definition(){var $a,self=this;if($truthy(self.$scope()["$iter?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else if($truthy($truthy($a=self.$scope()["$module?"]())?$a:self.$scope()["$class?"]())){self.$unshift(""+"Opal.defn(self, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$sclass?"]())){self.$unshift(""+"Opal.defn(self, '$"+self.$mid()+"', ")}else if($truthy(self.$compiler()["$eval?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$top?"]())){self.$unshift(""+"Opal.defn(Opal.Object, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$def?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else{self.$raise("Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message.")}self.$push(")");if($truthy(self["$expr?"]())){return self.$wrap("(",""+", nil) && '"+self.$mid()+"'")}else{return self.$unshift(""+"\n"+self.$current_indent())}},TMP_DefNode_wrap_with_definition_4.$$arity=0);Opal.defn(self,"$compile_arity_check",TMP_DefNode_compile_arity_check_5=function $$compile_arity_check(){var self=this,meth=nil;if($truthy($rb_gt(self.$arity_checks().$size(),0))){meth=self.$scope().$mid().$to_s().$inspect();self.$line("var $arity = arguments.length;");return self.$push(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.ac($arity, "+self.$arity()+", this, "+meth+"); }")}else{return nil}},TMP_DefNode_compile_arity_check_5.$$arity=0);Opal.defn(self,"$source_location",TMP_DefNode_source_location_6=function $$source_location(){var self=this,file=nil,line=nil;file=self.sexp.$loc().$expression().$source_buffer().$name();line=self.sexp.$loc().$line();return""+"['"+file+".rb', "+line+"]"},TMP_DefNode_source_location_6.$$arity=0);return(Opal.defn(self,"$comments_code",TMP_DefNode_comments_code_8=function $$comments_code(){var TMP_7,self=this;return $rb_plus($rb_plus("[",$send(self.$comments(),"map",[],(TMP_7=function(comment){var self=TMP_7.$$s||this;if(comment==null)comment=nil;return comment.$text().$inspect()},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7)).$join(", ")),"]")},TMP_DefNode_comments_code_8.$$arity=0),nil)&&"comments_code"})($nesting[0],Opal.const_get_relative($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$args","$==","$type","$[]","$updated","$recvr","$mid","$s","$stmts","$unshift","$expr","$push"]);self.$require("opal/nodes/def");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefsNode(){}var self=$DefsNode=$klass($base,$super,"DefsNode",$DefsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefsNode_extract_block_arg_1,TMP_DefsNode_wrap_with_definition_2;def.sexp=nil;self.$handle("defs");self.$children("recvr","mid","args","stmts");Opal.defn(self,"$extract_block_arg",TMP_DefsNode_extract_block_arg_1=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[self.$recvr(),self.$mid(),$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$stmts()])}else{return nil}},TMP_DefsNode_extract_block_arg_1.$$arity=0);return(Opal.defn(self,"$wrap_with_definition",TMP_DefsNode_wrap_with_definition_2=function $$wrap_with_definition(){var self=this;self.$unshift("Opal.defs(",self.$expr(self.$recvr()),""+", '$"+self.$mid()+"', ");return self.$push(")")},TMP_DefsNode_wrap_with_definition_2.$$arity=0),nil)&&"wrap_with_definition"})($nesting[0],Opal.const_get_relative($nesting,"DefNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$truthy","$falsy","$push","$js_truthy","$test","$indent","$line","$stmt","$==","$type","$needs_wrapper?","$wrap","$returns","$compiler","$true_body","$s","$false_body","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $IfNode(){}var self=$IfNode=$klass($base,$super,"IfNode",$IfNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IfNode_compile_3,TMP_IfNode_truthy_4,TMP_IfNode_falsy_5,TMP_IfNode_needs_wrapper$q_6;self.$handle("if");self.$children("test","true_body","false_body");Opal.defn(self,"$compile",TMP_IfNode_compile_3=function $$compile(){var $a,TMP_1,TMP_2,self=this,truthy=nil,falsy=nil;$a=[self.$truthy(),self.$falsy()],truthy=$a[0],falsy=$a[1],$a;self.$push("if (",self.$js_truthy(self.$test()),") {");if($truthy(truthy)){$send(self,"indent",[],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$line(self.$stmt(truthy))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))}if($truthy(falsy)){if(falsy.$type()["$=="]("if")){self.$line("} else ",self.$stmt(falsy))}else{$send(self,"indent",[],(TMP_2=function(){var self=TMP_2.$$s||this;self.$line("} else {");return self.$line(self.$stmt(falsy))},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));self.$line("}")}}else{self.$push("}")}if($truthy(self["$needs_wrapper?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_IfNode_compile_3.$$arity=0);Opal.defn(self,"$truthy",TMP_IfNode_truthy_4=function $$truthy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$true_body())?$a:self.$s("nil"))}else{return self.$true_body()}},TMP_IfNode_truthy_4.$$arity=0);Opal.defn(self,"$falsy",TMP_IfNode_falsy_5=function $$falsy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$false_body())?$a:self.$s("nil"))}else{return self.$false_body()}},TMP_IfNode_falsy_5.$$arity=0);return(Opal.defn(self,"$needs_wrapper?",TMP_IfNode_needs_wrapper$q_6=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},TMP_IfNode_needs_wrapper$q_6.$$arity=0),nil)&&"needs_wrapper?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $IFlipFlop(){}var self=$IFlipFlop=$klass($base,$super,"IFlipFlop",$IFlipFlop);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IFlipFlop_compile_7;self.$handle("iflipflop");return(Opal.defn(self,"$compile",TMP_IFlipFlop_compile_7=function $$compile(){var self=this;return self.$push("true")},TMP_IFlipFlop_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $EFlipFlop(){}var self=$EFlipFlop=$klass($base,$super,"EFlipFlop",$EFlipFlop);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EFlipFlop_compile_8;self.$handle("eflipflop");return(Opal.defn(self,"$compile",TMP_EFlipFlop_compile_8=function $$compile(){var self=this;return self.$push("true")},TMP_EFlipFlop_compile_8.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/logic"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$in_while?","$push","$expr_or_nil","$value","$wrap","$size","$children","$===","$s","$first","$compile_while","$iter?","$scope","$compile_iter","$error","$[]","$while_loop","$stmt?","$line","$break_val","$nil?","$expr","$[]=","$-","$identity","$==","$empty_splat?","$recv","$type","$rhs","$compile_if","$compile_ternary","$raise","$helper","$with_temp","$lhs","$indent","$js_truthy_optimize","$>","$find_parent_def","$expr?","$def?","$return_in_iter?","$return_expr_in_def?","$scope_to_catch_return","$catch_return=","$return_val","$to_s"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NextNode(){}var self=$NextNode=$klass($base,$super,"NextNode",$NextNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NextNode_compile_1,TMP_NextNode_value_2;self.$handle("next");Opal.defn(self,"$compile",TMP_NextNode_compile_1=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$push("continue;")}else{self.$push(self.$expr_or_nil(self.$value()));return self.$wrap("return ",";")}},TMP_NextNode_compile_1.$$arity=0);return(Opal.defn(self,"$value",TMP_NextNode_value_2=function $$value(){var self=this,$case=nil;return function(){$case=self.$children().$size();if((0)["$==="]($case)){return self.$s("nil")}else if(1["$==="]($case)){return self.$children().$first()}else{return $send(self,"s",["array"].concat(Opal.to_a(self.$children())))}}()},TMP_NextNode_value_2.$$arity=0),nil)&&"value"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BreakNode(){}var self=$BreakNode=$klass($base,$super,"BreakNode",$BreakNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BreakNode_compile_3,TMP_BreakNode_compile_while_4,TMP_BreakNode_compile_iter_5,TMP_BreakNode_break_val_6;self.$handle("break");self.$children("value");Opal.defn(self,"$compile",TMP_BreakNode_compile_3=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$error("void value expression: cannot use break outside of iter/while")}},TMP_BreakNode_compile_3.$$arity=0);Opal.defn(self,"$compile_while",TMP_BreakNode_compile_while_4=function $$compile_while(){var self=this;if($truthy(self.$while_loop()["$[]"]("closure"))){return self.$push("return ",self.$expr_or_nil(self.$value()))}else{return self.$push("break;")}},TMP_BreakNode_compile_while_4.$$arity=0);Opal.defn(self,"$compile_iter",TMP_BreakNode_compile_iter_5=function $$compile_iter(){var self=this;if($truthy(self["$stmt?"]())){}else{self.$error("break must be used as a statement")}return self.$line("Opal.brk(",self.$break_val(),", $brk)")},TMP_BreakNode_compile_iter_5.$$arity=0);return(Opal.defn(self,"$break_val",TMP_BreakNode_break_val_6=function $$break_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else{return self.$expr(self.$value())}},TMP_BreakNode_break_val_6.$$arity=0),nil)&&"break_val"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RedoNode(){}var self=$RedoNode=$klass($base,$super,"RedoNode",$RedoNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RedoNode_compile_7,TMP_RedoNode_compile_while_8,TMP_RedoNode_compile_iter_9;self.$handle("redo");Opal.defn(self,"$compile",TMP_RedoNode_compile_7=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$push("REDO()")}},TMP_RedoNode_compile_7.$$arity=0);Opal.defn(self,"$compile_while",TMP_RedoNode_compile_while_8=function $$compile_while(){var self=this,$writer=nil;$writer=["use_redo",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push(""+self.$while_loop()["$[]"]("redo_var")+" = true")},TMP_RedoNode_compile_while_8.$$arity=0);return(Opal.defn(self,"$compile_iter",TMP_RedoNode_compile_iter_9=function $$compile_iter(){var self=this;return self.$push(""+"return "+self.$scope().$identity()+".apply(null, $slice.call(arguments))")},TMP_RedoNode_compile_iter_9.$$arity=0),nil)&&"compile_iter"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $SplatNode(){}var self=$SplatNode=$klass($base,$super,"SplatNode",$SplatNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SplatNode_empty_splat$q_10,TMP_SplatNode_compile_11;self.$handle("splat");self.$children("value");Opal.defn(self,"$empty_splat?",TMP_SplatNode_empty_splat$q_10=function(){var self=this;return self.$value()["$=="](self.$s("array"))},TMP_SplatNode_empty_splat$q_10.$$arity=0);return(Opal.defn(self,"$compile",TMP_SplatNode_compile_11=function $$compile(){var self=this;if($truthy(self["$empty_splat?"]())){return self.$push("[]")}else{return self.$push("Opal.to_a(",self.$recv(self.$value()),")")}},TMP_SplatNode_compile_11.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BinaryOp(){}var self=$BinaryOp=$klass($base,$super,"BinaryOp",$BinaryOp);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BinaryOp_compile_12,TMP_BinaryOp_compile_ternary_13,TMP_BinaryOp_compile_if_14;Opal.defn(self,"$compile",TMP_BinaryOp_compile_12=function $$compile(){var self=this;if(self.$rhs().$type()["$=="]("break")){return self.$compile_if()}else{return self.$compile_ternary()}},TMP_BinaryOp_compile_12.$$arity=0);Opal.defn(self,"$compile_ternary",TMP_BinaryOp_compile_ternary_13=function $$compile_ternary(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_BinaryOp_compile_ternary_13.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_BinaryOp_compile_if_14=function $$compile_if(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_BinaryOp_compile_if_14.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $OrNode(){}var self=$OrNode=$klass($base,$super,"OrNode",$OrNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_OrNode_compile_ternary_16,TMP_OrNode_compile_if_20;self.$handle("or");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_OrNode_compile_ternary_16=function $$compile_ternary(){var TMP_15,self=this;self.$helper("truthy");return $send(self,"with_temp",[],(TMP_15=function(tmp){var self=TMP_15.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),""+") ? "+tmp+" : ",self.$expr(self.$rhs()),")")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15))},TMP_OrNode_compile_ternary_16.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_OrNode_compile_if_20=function $$compile_if(){var TMP_17,self=this;self.$helper("truthy");return $send(self,"with_temp",[],(TMP_17=function(tmp){var self=TMP_17.$$s||this,TMP_18,TMP_19;if(tmp==null)tmp=nil;self.$push(""+"if ($truthy("+tmp+" = ",self.$expr(self.$lhs()),")) {");$send(self,"indent",[],(TMP_18=function(){var self=TMP_18.$$s||this;return self.$line(tmp)},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18));self.$line("} else {");$send(self,"indent",[],(TMP_19=function(){var self=TMP_19.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19));return self.$line("}")},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17))},TMP_OrNode_compile_if_20.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){function $AndNode(){}var self=$AndNode=$klass($base,$super,"AndNode",$AndNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_AndNode_compile_ternary_22,TMP_AndNode_compile_if_25;self.$handle("and");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_AndNode_compile_ternary_22=function $$compile_ternary(){var TMP_21,self=this,truthy_opt=nil;truthy_opt=nil;return $send(self,"with_temp",[],(TMP_21=function(tmp){var self=TMP_21.$$s||this;if(tmp==null)tmp=nil;if($truthy(truthy_opt=self.$js_truthy_optimize(self.$lhs()))){self.$push(""+"(("+tmp+" = ",truthy_opt);self.$push(") ? ");self.$push(self.$expr(self.$rhs()));return self.$push(" : ",self.$expr(self.$lhs()),")")}else{self.$helper("truthy");return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),") ? ",self.$expr(self.$rhs()),""+" : "+tmp+")")}},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))},TMP_AndNode_compile_ternary_22.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_AndNode_compile_if_25=function $$compile_if(){var $a,TMP_23,TMP_24,self=this,condition=nil;self.$helper("truthy");condition=$truthy($a=self.$js_truthy_optimize(self.$lhs()))?$a:self.$expr(self.$lhs());self.$line("if ($truthy(",condition,")) {");$send(self,"indent",[],(TMP_23=function(){var self=TMP_23.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23));self.$line("} else {");$send(self,"indent",[],(TMP_24=function(){var self=TMP_24.$$s||this;return self.$line(self.$expr(self.$lhs()))},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24));return self.$line("}")},TMP_AndNode_compile_if_25.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){function $ReturnNode(){}var self=$ReturnNode=$klass($base,$super,"ReturnNode",$ReturnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ReturnNode_return_val_26,TMP_ReturnNode_return_in_iter$q_27,TMP_ReturnNode_return_expr_in_def$q_28,TMP_ReturnNode_scope_to_catch_return_29,TMP_ReturnNode_compile_30;self.$handle("return");self.$children("value");Opal.defn(self,"$return_val",TMP_ReturnNode_return_val_26=function $$return_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else if($truthy($rb_gt(self.$children().$size(),1))){return self.$expr($send(self,"s",["array"].concat(Opal.to_a(self.$children()))))}else{return self.$expr(self.$value())}},TMP_ReturnNode_return_val_26.$$arity=0);Opal.defn(self,"$return_in_iter?",TMP_ReturnNode_return_in_iter$q_27=function(){var $a,self=this,parent_def=nil;if($truthy($truthy($a=self.$scope()["$iter?"]())?parent_def=self.$scope().$find_parent_def():$a)){return parent_def}else{return nil}},TMP_ReturnNode_return_in_iter$q_27.$$arity=0);Opal.defn(self,"$return_expr_in_def?",TMP_ReturnNode_return_expr_in_def$q_28=function(){var $a,self=this;if($truthy($truthy($a=self["$expr?"]())?self.$scope()["$def?"]():$a)){return self.$scope()}else{return nil}},TMP_ReturnNode_return_expr_in_def$q_28.$$arity=0);Opal.defn(self,"$scope_to_catch_return",TMP_ReturnNode_scope_to_catch_return_29=function $$scope_to_catch_return(){var $a,self=this;return $truthy($a=self["$return_in_iter?"]())?$a:self["$return_expr_in_def?"]()},TMP_ReturnNode_scope_to_catch_return_29.$$arity=0);return(Opal.defn(self,"$compile",TMP_ReturnNode_compile_30=function $$compile(){var self=this,def_scope=nil,$writer=nil;if($truthy(def_scope=self.$scope_to_catch_return())){$writer=[true];$send(def_scope,"catch_return=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push("Opal.ret(",self.$return_val(),")")}else if($truthy(self["$stmt?"]())){return self.$push("return ",self.$return_val())}else{return self.$raise(Opal.const_get_relative($nesting,"SyntaxError"),"void value expression: cannot return as an expression")}},TMP_ReturnNode_compile_30.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JSReturnNode(){}var self=$JSReturnNode=$klass($base,$super,"JSReturnNode",$JSReturnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JSReturnNode_compile_31;self.$handle("js_return");self.$children("value");return(Opal.defn(self,"$compile",TMP_JSReturnNode_compile_31=function $$compile(){var self=this;self.$push("return ");return self.$push(self.$expr(self.$value()))},TMP_JSReturnNode_compile_31.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JSTempNode(){}var self=$JSTempNode=$klass($base,$super,"JSTempNode",$JSTempNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JSTempNode_compile_32;self.$handle("js_tmp");self.$children("value");return(Opal.defn(self,"$compile",TMP_JSTempNode_compile_32=function $$compile(){var self=this;return self.$push(self.$value().$to_s())},TMP_JSTempNode_compile_32.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BlockPassNode(){}var self=$BlockPassNode=$klass($base,$super,"BlockPassNode",$BlockPassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BlockPassNode_compile_33;self.$handle("block_pass");self.$children("value");return(Opal.defn(self,"$compile",TMP_BlockPassNode_compile_33=function $$compile(){var self=this;return self.$push(self.$expr(self.$s("send",self.$value(),"to_proc",self.$s("arglist"))))},TMP_BlockPassNode_compile_33.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/definitions"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$each","$line","$expr","$push","$new_name","$old_name","$empty?","$stmt?","$compile_children","$simple_children?","$compile_inline_children","$>","$size","$wrap","$==","$returned_children","$+","$returns","$compiler","$s","$process","$none?","$include?","$type","$each_with_index","$reject","$map","$to_proc"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $UndefNode(){}var self=$UndefNode=$klass($base,$super,"UndefNode",$UndefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UndefNode_compile_2;self.$handle("undef");self.$children("value");return(Opal.defn(self,"$compile",TMP_UndefNode_compile_2=function $$compile(){var TMP_1,self=this;return $send(self.$children(),"each",[],(TMP_1=function(child){var self=TMP_1.$$s||this;if(child==null)child=nil;return self.$line("Opal.udef(self, '$' + ",self.$expr(child),");")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_UndefNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $AliasNode(){}var self=$AliasNode=$klass($base,$super,"AliasNode",$AliasNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_AliasNode_compile_3;self.$handle("alias");self.$children("new_name","old_name");return(Opal.defn(self,"$compile",TMP_AliasNode_compile_3=function $$compile(){var self=this;return self.$push("Opal.alias(self, ",self.$expr(self.$new_name()),", ",self.$expr(self.$old_name()),")")},TMP_AliasNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BeginNode(){}var self=$BeginNode=$klass($base,$super,"BeginNode",$BeginNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BeginNode_compile_4,TMP_BeginNode_returned_children_5,TMP_BeginNode_compile_children_7,TMP_BeginNode_simple_children$q_9,TMP_BeginNode_compile_inline_children_12;def.level=def.returned_children=nil;self.$handle("begin");Opal.defn(self,"$compile",TMP_BeginNode_compile_4=function $$compile(){var self=this;if($truthy(self.$children()["$empty?"]())){return self.$push("nil")}if($truthy(self["$stmt?"]())){return self.$compile_children(self.$children(),self.level)}else if($truthy(self["$simple_children?"]())){self.$compile_inline_children(self.$children(),self.level);if($truthy($rb_gt(self.$children().$size(),1))){return self.$wrap("(",")")}else{return nil}}else if(self.$children().$size()["$=="](1)){return self.$compile_inline_children(self.$returned_children(),self.level)}else{self.$compile_children(self.$returned_children(),self.level);return self.$wrap("(function() {","})()")}},TMP_BeginNode_compile_4.$$arity=0);Opal.defn(self,"$returned_children",TMP_BeginNode_returned_children_5=function $$returned_children(){var $a,$b,$c,self=this,rest=nil,last_child=nil;return self.returned_children=$truthy($a=self.returned_children)?$a:($b=[].concat(Opal.to_a(self.$children())),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b,function(){if($truthy(last_child)){return $rb_plus(rest,[self.$compiler().$returns(last_child)])}else{return[self.$s("nil")]}return nil}())},TMP_BeginNode_returned_children_5.$$arity=0);Opal.defn(self,"$compile_children",TMP_BeginNode_compile_children_7=function $$compile_children(children,level){var TMP_6,self=this;return $send(children,"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this;if(child==null)child=nil;return self.$line(self.$process(child,level),";")},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6))},TMP_BeginNode_compile_children_7.$$arity=2);Opal.const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"]);Opal.defn(self,"$simple_children?",TMP_BeginNode_simple_children$q_9=function(){var TMP_8,self=this;return $send(self.$children(),"none?",[],(TMP_8=function(child){var self=TMP_8.$$s||this;if(child==null)child=nil;return Opal.const_get_relative($nesting,"COMPLEX_CHILDREN")["$include?"](child.$type())},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_BeginNode_simple_children$q_9.$$arity=0);return(Opal.defn(self,"$compile_inline_children",TMP_BeginNode_compile_inline_children_12=function $$compile_inline_children(children,level){var TMP_10,TMP_11,self=this;return $send($send($send(children,"map",[],(TMP_10=function(child){var self=TMP_10.$$s||this;if(child==null)child=nil;return self.$process(child,level)},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10)),"reject",[],"empty?".$to_proc()),"each_with_index",[],(TMP_11=function(child,idx){var self=TMP_11.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(child)},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11))},TMP_BeginNode_compile_inline_children_12.$$arity=2),nil)&&"compile_inline_children"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting);(function($base,$super,$parent_nesting){function $KwBeginNode(){}var self=$KwBeginNode=$klass($base,$super,"KwBeginNode",$KwBeginNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("kwbegin")})($nesting[0],Opal.const_get_relative($nesting,"BeginNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$find_yielding_scope","$uses_block!","$block_name","$yields_single_arg?","$push","$expr","$first","$wrap","$s","$uses_splat?","$scope","$def?","$parent","$!","$==","$size","$any?","$type","$handle","$compile_call","$children"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BaseYieldNode(){}var self=$BaseYieldNode=$klass($base,$super,"BaseYieldNode",$BaseYieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BaseYieldNode_compile_call_1,TMP_BaseYieldNode_find_yielding_scope_2,TMP_BaseYieldNode_yields_single_arg$q_3,TMP_BaseYieldNode_uses_splat$q_5;Opal.defn(self,"$compile_call",TMP_BaseYieldNode_compile_call_1=function $$compile_call(children,level){var $a,self=this,yielding_scope=nil,block_name=nil;yielding_scope=self.$find_yielding_scope();yielding_scope["$uses_block!"]();block_name=$truthy($a=yielding_scope.$block_name())?$a:"$yield";if($truthy(self["$yields_single_arg?"](children))){self.$push(self.$expr(children.$first()));return self.$wrap(""+"Opal.yield1("+block_name+", ",")")}else{self.$push(self.$expr($send(self,"s",["arglist"].concat(Opal.to_a(children)))));if($truthy(self["$uses_splat?"](children))){return self.$wrap(""+"Opal.yieldX("+block_name+", ",")")}else{return self.$wrap(""+"Opal.yieldX("+block_name+", [","])")}}},TMP_BaseYieldNode_compile_call_1.$$arity=2);Opal.defn(self,"$find_yielding_scope",TMP_BaseYieldNode_find_yielding_scope_2=function $$find_yielding_scope(){var $a,$b,self=this,working=nil;working=self.$scope();while($truthy(working)){if($truthy($truthy($b=working.$block_name())?$b:working["$def?"]())){break}working=working.$parent()}return working},TMP_BaseYieldNode_find_yielding_scope_2.$$arity=0);Opal.defn(self,"$yields_single_arg?",TMP_BaseYieldNode_yields_single_arg$q_3=function(children){var $a,self=this;return $truthy($a=self["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$a},TMP_BaseYieldNode_yields_single_arg$q_3.$$arity=1);return(Opal.defn(self,"$uses_splat?",TMP_BaseYieldNode_uses_splat$q_5=function(children){var TMP_4,self=this;return $send(children,"any?",[],(TMP_4=function(child){var self=TMP_4.$$s||this;if(child==null)child=nil;return child.$type()["$=="]("splat")},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4))},TMP_BaseYieldNode_uses_splat$q_5.$$arity=1),nil)&&"uses_splat?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $YieldNode(){}var self=$YieldNode=$klass($base,$super,"YieldNode",$YieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_YieldNode_compile_6;def.level=nil;self.$handle("yield");return(Opal.defn(self,"$compile",TMP_YieldNode_compile_6=function $$compile(){var self=this;return self.$compile_call(self.$children(),self.level)},TMP_YieldNode_compile_6.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseYieldNode"),$nesting);(function($base,$super,$parent_nesting){function $ReturnableYieldNode(){}var self=$ReturnableYieldNode=$klass($base,$super,"ReturnableYieldNode",$ReturnableYieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ReturnableYieldNode_compile_7;def.level=nil;self.$handle("returnable_yield");return(Opal.defn(self,"$compile",TMP_ReturnableYieldNode_compile_7=function $$compile(){var self=this;self.$compile_call(self.$children(),self.level);return self.$wrap("return ",";")},TMP_ReturnableYieldNode_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseYieldNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/rescue"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$push","$in_ensure","$line","$stmt","$body_sexp","$indent","$has_rescue_else?","$unshift","$rescue_else_code","$process","$compiler","$ensr_sexp","$wrap_in_closure?","$wrap","$returns","$begn","$ensr","$s","$recv?","$expr?","$rescue_else_sexp","$scope","$stmt?","$detect","$[]","$!=","$type","$rescue_else_sexp=","$-","$handle_rescue_else_manually?","$body_code","$each_with_index","$==","$nil?","$body","$!","$in_ensure?","$expr","$klasses","$lvar","$rescue_body","$klasses_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EnsureNode(){}var self=$EnsureNode=$klass($base,$super,"EnsureNode",$EnsureNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EnsureNode_compile_5,TMP_EnsureNode_body_sexp_6,TMP_EnsureNode_ensr_sexp_7,TMP_EnsureNode_wrap_in_closure$q_8,TMP_EnsureNode_rescue_else_code_9;self.$handle("ensure");self.$children("begn","ensr");Opal.defn(self,"$compile",TMP_EnsureNode_compile_5=function $$compile(){var TMP_1,TMP_2,self=this;self.$push("try {");$send(self,"in_ensure",[],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$line(self.$stmt(self.$body_sexp()))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));self.$line("} finally {");$send(self,"indent",[],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3;if(self.level==null)self.level=nil;if($truthy(self["$has_rescue_else?"]())){self.$unshift("var $no_errors = true; ");self.$line("var $rescue_else_result;");self.$line("if ($no_errors) { ");$send(self,"indent",[],(TMP_3=function(){var self=TMP_3.$$s||this,TMP_4;self.$line("$rescue_else_result = (function() {");$send(self,"indent",[],(TMP_4=function(){var self=TMP_4.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},TMP_4.$$s=self,TMP_4.$$arity=0,TMP_4));return self.$line("})();")},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));self.$line("}");self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level));return self.$line("if ($no_errors) { return $rescue_else_result; }")}else{return self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));self.$line("}");if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() { ","; })()")}else{return nil}},TMP_EnsureNode_compile_5.$$arity=0);Opal.defn(self,"$body_sexp",TMP_EnsureNode_body_sexp_6=function $$body_sexp(){var self=this;if($truthy(self["$wrap_in_closure?"]())){return self.$compiler().$returns(self.$begn())}else{return self.$begn()}},TMP_EnsureNode_body_sexp_6.$$arity=0);Opal.defn(self,"$ensr_sexp",TMP_EnsureNode_ensr_sexp_7=function $$ensr_sexp(){var $a,self=this;return $truthy($a=self.$ensr())?$a:self.$s("nil")},TMP_EnsureNode_ensr_sexp_7.$$arity=0);Opal.defn(self,"$wrap_in_closure?",TMP_EnsureNode_wrap_in_closure$q_8=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?$a:self["$has_rescue_else?"]()},TMP_EnsureNode_wrap_in_closure$q_8.$$arity=0);return(Opal.defn(self,"$rescue_else_code",TMP_EnsureNode_rescue_else_code_9=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},TMP_EnsureNode_rescue_else_code_9.$$arity=0),nil)&&"rescue_else_code"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RescueNode(){}var self=$RescueNode=$klass($base,$super,"RescueNode",$RescueNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RescueNode_compile_16,TMP_RescueNode_body_code_17,TMP_RescueNode_rescue_else_code_18,TMP_RescueNode_handle_rescue_else_manually$q_19;self.$handle("rescue");self.$children("body");Opal.defn(self,"$compile",TMP_RescueNode_compile_16=function $$compile(){var TMP_10,TMP_11,TMP_12,TMP_14,$a,self=this,$writer=nil,has_rescue_handlers=nil;$writer=[$send(self.$children()["$[]"]($range(1,-1,false)),"detect",[],(TMP_10=function(sexp){var self=TMP_10.$$s||this,$a;if(sexp==null)sexp=nil;return $truthy($a=sexp)?sexp.$type()["$!="]("resbody"):$a},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10))];$send(self.$scope(),"rescue_else_sexp=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];has_rescue_handlers=false;if($truthy(self["$handle_rescue_else_manually?"]())){self.$line("var $no_errors = true;")}self.$push("try {");$send(self,"indent",[],(TMP_11=function(){var self=TMP_11.$$s||this;return self.$line(self.$stmt(self.$body_code()))},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11));self.$line("} catch ($err) {");$send(self,"indent",[],(TMP_12=function(){var self=TMP_12.$$s||this,TMP_13;if($truthy(self["$has_rescue_else?"]())){self.$line("$no_errors = false;")}$send(self.$children()["$[]"]($range(1,-1,false)),"each_with_index",[],(TMP_13=function(child,idx){var self=TMP_13.$$s||this,$a;if(self.level==null)self.level=nil;if(child==null)child=nil;if(idx==null)idx=nil;if($truthy($truthy($a=child)?child.$type()["$=="]("resbody"):$a)){has_rescue_handlers=true;if(idx["$=="](0)){}else{self.$push(" else ")}return self.$line(self.$process(child,self.level))}else{return nil}},TMP_13.$$s=self,TMP_13.$$arity=2,TMP_13));return self.$push(" else { throw $err; }")},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));self.$line("}");if($truthy(self["$handle_rescue_else_manually?"]())){self.$push("finally {");$send(self,"indent",[],(TMP_14=function(){var self=TMP_14.$$s||this,TMP_15;self.$line("if ($no_errors) { ");$send(self,"indent",[],(TMP_15=function(){var self=TMP_15.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15));return self.$line("}")},TMP_14.$$s=self,TMP_14.$$arity=0,TMP_14));self.$push("}")}if($truthy($truthy($a=self["$expr?"]())?$a:self["$recv?"]())){return self.$wrap("(function() { ","})()")}else{return nil}},TMP_RescueNode_compile_16.$$arity=0);Opal.defn(self,"$body_code",TMP_RescueNode_body_code_17=function $$body_code(){var $a,self=this,body_code=nil;body_code=function(){if($truthy($truthy($a=self.$body()["$nil?"]())?$a:self.$body().$type()["$=="]("resbody"))){return self.$s("nil")}else{return self.$body()}return nil}();if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_RescueNode_body_code_17.$$arity=0);Opal.defn(self,"$rescue_else_code",TMP_RescueNode_rescue_else_code_18=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},TMP_RescueNode_rescue_else_code_18.$$arity=0);return(Opal.defn(self,"$handle_rescue_else_manually?",TMP_RescueNode_handle_rescue_else_manually$q_19=function(){var $a,self=this;return $truthy($a=self.$scope()["$in_ensure?"]()["$!"]())?self.$scope()["$has_rescue_else?"]():$a},TMP_RescueNode_handle_rescue_else_manually$q_19.$$arity=0),nil)&&"handle_rescue_else_manually?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ResBodyNode(){}var self=$ResBodyNode=$klass($base,$super,"ResBodyNode",$ResBodyNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ResBodyNode_compile_22,TMP_ResBodyNode_klasses_23,TMP_ResBodyNode_rescue_body_24;self.$handle("resbody");self.$children("klasses_sexp","lvar","body");Opal.defn(self,"$compile",TMP_ResBodyNode_compile_22=function $$compile(){var TMP_20,self=this;self.$push("if (Opal.rescue($err, ",self.$expr(self.$klasses()),")) {");$send(self,"indent",[],(TMP_20=function(){var self=TMP_20.$$s||this,TMP_21;if($truthy(self.$lvar())){self.$push(self.$expr(self.$lvar()),"$err;")}self.$line("try {");$send(self,"indent",[],(TMP_21=function(){var self=TMP_21.$$s||this;return self.$line(self.$stmt(self.$rescue_body()))},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21));return self.$line("} finally { Opal.pop_exception() }")},TMP_20.$$s=self,TMP_20.$$arity=0,TMP_20));return self.$line("}")},TMP_ResBodyNode_compile_22.$$arity=0);Opal.defn(self,"$klasses",TMP_ResBodyNode_klasses_23=function $$klasses(){var $a,self=this;return $truthy($a=self.$klasses_sexp())?$a:self.$s("array",self.$s("const",nil,"StandardError"))},TMP_ResBodyNode_klasses_23.$$arity=0);return(Opal.defn(self,"$rescue_body",TMP_ResBodyNode_rescue_body_24=function $$rescue_body(){var $a,self=this,body_code=nil;body_code=$truthy($a=self.$body())?$a:self.$s("nil");if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_ResBodyNode_rescue_body_24.$$arity=0),nil)&&"rescue_body"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RetryNode(){}var self=$RetryNode=$klass($base,$super,"RetryNode",$RetryNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RetryNode_compile_25;self.$handle("retry");return(Opal.defn(self,"$compile",TMP_RetryNode_compile_25=function $$compile(){var self=this;return self.$push(self.$stmt(self.$s("send",nil,"retry")))},TMP_RetryNode_compile_25.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/case"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$in_case","$compiler","$compile_code","$needs_closure?","$wrap","$condition","$[]=","$case_stmt","$-","$add_local","$push","$expr","$each_with_index","$case_parts","$line","$type","$===","$returns","$==","$stmt","$!","$stmt?","$[]","$when_checks","$js_truthy","$s","$process","$body_code","$last"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CaseNode(){}var self=$CaseNode=$klass($base,$super,"CaseNode",$CaseNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CaseNode_compile_2,TMP_CaseNode_compile_code_4,TMP_CaseNode_needs_closure$q_5,TMP_CaseNode_case_parts_6,TMP_CaseNode_case_stmt_7;self.$handle("case");self.$children("condition");Opal.defn(self,"$compile",TMP_CaseNode_compile_2=function $$compile(){var TMP_1,self=this;return $send(self.$compiler(),"in_case",[],(TMP_1=function(){var self=TMP_1.$$s||this;self.$compile_code();if($truthy(self["$needs_closure?"]())){return self.$wrap("(function() {","})()")}else{return nil}},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))},TMP_CaseNode_compile_2.$$arity=0);Opal.defn(self,"$compile_code",TMP_CaseNode_compile_code_4=function $$compile_code(){var TMP_3,$a,self=this,handled_else=nil,$writer=nil;handled_else=false;if($truthy(self.$condition())){$writer=["cond",true];$send(self.$case_stmt(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_local("$case");self.$push("$case = ",self.$expr(self.$condition()),";")}$send(self.$case_parts(),"each_with_index",[],(TMP_3=function(wen,idx){var self=TMP_3.$$s||this,$case=nil;if(wen==null)wen=nil;if(idx==null)idx=nil;if($truthy(wen)){self.$line();return function(){$case=wen.$type();if("when"["$==="]($case)){if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}if(idx["$=="](0)){}else{self.$push("else ")}return self.$push(self.$stmt(wen))}else{handled_else=true;if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}return self.$push("else {",self.$stmt(wen),"}")}}()}else{return nil}},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3));if($truthy($truthy($a=self["$needs_closure?"]())?handled_else["$!"]():$a)){self.$line();return self.$push("else { return nil }")}else{return nil}},TMP_CaseNode_compile_code_4.$$arity=0);Opal.defn(self,"$needs_closure?",TMP_CaseNode_needs_closure$q_5=function(){var self=this;return self["$stmt?"]()["$!"]()},TMP_CaseNode_needs_closure$q_5.$$arity=0);Opal.defn(self,"$case_parts",TMP_CaseNode_case_parts_6=function $$case_parts(){var self=this;return self.$children()["$[]"]($range(1,-1,false))},TMP_CaseNode_case_parts_6.$$arity=0);return(Opal.defn(self,"$case_stmt",TMP_CaseNode_case_stmt_7=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_CaseNode_case_stmt_7.$$arity=0),nil)&&"case_stmt"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $WhenNode(){}var self=$WhenNode=$klass($base,$super,"WhenNode",$WhenNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_WhenNode_compile_9,TMP_WhenNode_when_checks_10,TMP_WhenNode_case_stmt_11,TMP_WhenNode_body_code_12;def.level=nil;self.$handle("when");self.$children("whens","body");Opal.defn(self,"$compile",TMP_WhenNode_compile_9=function $$compile(){var TMP_8,self=this;self.$push("if (");$send(self.$when_checks(),"each_with_index",[],(TMP_8=function(check,idx){var self=TMP_8.$$s||this,call=nil;if(check==null)check=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" || ")}if(check.$type()["$=="]("splat")){self.$push("(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {");if($truthy(self.$case_stmt()["$[]"]("cond"))){self.$push("if ($splt[i]['$===']($case)) { return true; }")}else{self.$push("if (",self.$js_truthy(check),")) { return true; }")}return self.$push("} return false; })(",self.$expr(check.$children()["$[]"](0)),")")}else if($truthy(self.$case_stmt()["$[]"]("cond"))){call=self.$s("send",check,"===",self.$s("arglist",self.$s("js_tmp","$case")));return self.$push(self.$expr(call))}else{return self.$push(self.$js_truthy(check))}},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8));return self.$push(") {",self.$process(self.$body_code(),self.level),"}")},TMP_WhenNode_compile_9.$$arity=0);Opal.defn(self,"$when_checks",TMP_WhenNode_when_checks_10=function $$when_checks(){var self=this;return self.$children()["$[]"]($range(0,-2,false))},TMP_WhenNode_when_checks_10.$$arity=0);Opal.defn(self,"$case_stmt",TMP_WhenNode_case_stmt_11=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_WhenNode_case_stmt_11.$$arity=0);return(Opal.defn(self,"$body_code",TMP_WhenNode_body_code_12=function $$body_code(){var $a,self=this;return $truthy($a=self.$children().$last())?$a:self.$s("nil")},TMP_WhenNode_body_code_12.$$arity=0),nil)&&"body_code"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/super"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include?","$type","$s","$helper","$push","$compile_receiver","$compile_method","$compile_arguments","$compile_block_pass","$private","$def?","$scope","$find_parent_def","$==","$raise_exception?","$implicit_args?","$to_s","$mid","$def_scope","$identify!","$defs","$name","$parent","$method_id","$def_scope_identity","$defined_check_param","$get_super_chain","$join","$map","$implicit_arguments_param","$super_method_invocation","$iter?","$super_block_invocation","$raise","$handle","$method_missing?","$compiler","$wrap","$uses_block!","$compile_using_send","$iter","$uses_zuper=","$-","$formal_block_parameter","$!","$[]","$<<","$empty?","$children","$arglist","$expr","$===","$extract_block_arg","$block_arg"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BaseSuperNode(){}var self=$BaseSuperNode=$klass($base,$super,"BaseSuperNode",$BaseSuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BaseSuperNode_initialize_1,TMP_BaseSuperNode_compile_using_send_2,TMP_BaseSuperNode_def_scope_3,TMP_BaseSuperNode_raise_exception$q_4,TMP_BaseSuperNode_defined_check_param_5,TMP_BaseSuperNode_implicit_args$q_6,TMP_BaseSuperNode_implicit_arguments_param_7,TMP_BaseSuperNode_method_id_8,TMP_BaseSuperNode_def_scope_identity_9,TMP_BaseSuperNode_super_method_invocation_10,TMP_BaseSuperNode_super_block_invocation_12,TMP_BaseSuperNode_compile_method_13;def.sexp=def.def_scope=nil;Opal.defn(self,"$initialize",TMP_BaseSuperNode_initialize_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_BaseSuperNode_initialize_1.$$p,$yield=$iter||nil,args=nil,rest=nil,last_child=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_BaseSuperNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_BaseSuperNode_initialize_1,false),$zuper,$iter);args=[].concat(Opal.to_a(self.sexp));$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_child)?["iter","block_pass"]["$include?"](last_child.$type()):$b)){self.iter=last_child;args=rest}else{self.iter=self.$s("js_tmp","null")}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)));return self.recvr=self.$s("self")},TMP_BaseSuperNode_initialize_1.$$arity=-1);Opal.defn(self,"$compile_using_send",TMP_BaseSuperNode_compile_using_send_2=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_BaseSuperNode_compile_using_send_2.$$arity=0);self.$private();Opal.defn(self,"$def_scope",TMP_BaseSuperNode_def_scope_3=function $$def_scope(){var $a,self=this;return self.def_scope=$truthy($a=self.def_scope)?$a:function(){if($truthy(self.$scope()["$def?"]())){return self.$scope()}else{return self.$scope().$find_parent_def()}return nil}()},TMP_BaseSuperNode_def_scope_3.$$arity=0);Opal.defn(self,"$raise_exception?",TMP_BaseSuperNode_raise_exception$q_4=function(){var self=this;return self.sexp.$type()["$=="]("defined_super")},TMP_BaseSuperNode_raise_exception$q_4.$$arity=0);Opal.defn(self,"$defined_check_param",TMP_BaseSuperNode_defined_check_param_5=function $$defined_check_param(){var self=this;if($truthy(self["$raise_exception?"]())){return"true"}else{return"false"}},TMP_BaseSuperNode_defined_check_param_5.$$arity=0);Opal.defn(self,"$implicit_args?",TMP_BaseSuperNode_implicit_args$q_6=function(){var self=this;return self.sexp.$type()["$=="]("zsuper")},TMP_BaseSuperNode_implicit_args$q_6.$$arity=0);Opal.defn(self,"$implicit_arguments_param",TMP_BaseSuperNode_implicit_arguments_param_7=function $$implicit_arguments_param(){var self=this;if($truthy(self["$implicit_args?"]())){return"true"}else{return"false"}},TMP_BaseSuperNode_implicit_arguments_param_7.$$arity=0);Opal.defn(self,"$method_id",TMP_BaseSuperNode_method_id_8=function $$method_id(){var self=this;return self.$def_scope().$mid().$to_s()},TMP_BaseSuperNode_method_id_8.$$arity=0);Opal.defn(self,"$def_scope_identity",TMP_BaseSuperNode_def_scope_identity_9=function $$def_scope_identity(){var self=this;return self.$def_scope()["$identify!"](self.$def_scope().$mid())},TMP_BaseSuperNode_def_scope_identity_9.$$arity=0);Opal.defn(self,"$super_method_invocation",TMP_BaseSuperNode_super_method_invocation_10=function $$super_method_invocation(){var self=this,class_name=nil;if($truthy(self.$def_scope().$defs())){class_name=function(){if($truthy(self.$def_scope().$parent().$name())){return""+"$"+self.$def_scope().$parent().$name()}else{return"self.$$class.$$proto"}return nil}();return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+", "+class_name+")"}else{return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+")"}},TMP_BaseSuperNode_super_method_invocation_10.$$arity=0);Opal.defn(self,"$super_block_invocation",TMP_BaseSuperNode_super_block_invocation_12=function $$super_block_invocation(){var $a,$b,TMP_11,self=this,chain=nil,cur_defn=nil,mid=nil,trys=nil;$b=self.$scope().$get_super_chain(),$a=Opal.to_ary($b),chain=$a[0]==null?nil:$a[0],cur_defn=$a[1]==null?nil:$a[1],mid=$a[2]==null?nil:$a[2],$b;trys=$send(chain,"map",[],(TMP_11=function(c){var self=TMP_11.$$s||this;if(c==null)c=nil;return""+c+".$$def"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11)).$join(" || ");return""+"Opal.find_iter_super_dispatcher(self, "+mid+", ("+trys+" || "+cur_defn+"), "+self.$defined_check_param()+", "+self.$implicit_arguments_param()+")"},TMP_BaseSuperNode_super_block_invocation_12.$$arity=0);return(Opal.defn(self,"$compile_method",TMP_BaseSuperNode_compile_method_13=function $$compile_method(){var self=this;self.$push(", ");if($truthy(self.$scope()["$def?"]())){return self.$push(self.$super_method_invocation())}else if($truthy(self.$scope()["$iter?"]())){return self.$push(self.$super_block_invocation())}else{return self.$raise("super must be called from method body or block")}},TMP_BaseSuperNode_compile_method_13.$$arity=0),nil)&&"compile_method"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){function $DefinedSuperNode(){}var self=$DefinedSuperNode=$klass($base,$super,"DefinedSuperNode",$DefinedSuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefinedSuperNode_compile_14;self.$handle("defined_super");return(Opal.defn(self,"$compile",TMP_DefinedSuperNode_compile_14=function $$compile(){var self=this;self.$compile_receiver();self.$compile_method();if($truthy(self.$compiler()["$method_missing?"]())){return self.$wrap("(!(",'.$$stub) ? "super" : nil)')}else{return self.$wrap("((",') != null ? "super" : nil)')}},TMP_DefinedSuperNode_compile_14.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){function $SuperNode(){}var self=$SuperNode=$klass($base,$super,"SuperNode",$SuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SuperNode_initialize_15,TMP_SuperNode_compile_16;self.$handle("super");Opal.defn(self,"$initialize",TMP_SuperNode_initialize_15=function $$initialize($a_rest){var self=this,$iter=TMP_SuperNode_initialize_15.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_SuperNode_initialize_15.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_SuperNode_initialize_15,false),$zuper,$iter);if($truthy(self.$scope()["$def?"]())){return self.$scope()["$uses_block!"]()}else{return nil}},TMP_SuperNode_initialize_15.$$arity=-1);return(Opal.defn(self,"$compile",TMP_SuperNode_compile_16=function $$compile(){var self=this;return self.$compile_using_send()},TMP_SuperNode_compile_16.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){function $ZsuperNode(){}var self=$ZsuperNode=$klass($base,$super,"ZsuperNode",$ZsuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ZsuperNode_initialize_17,TMP_ZsuperNode_compile_18,TMP_ZsuperNode_compile_arguments_19,TMP_ZsuperNode_formal_block_parameter_20;self.$handle("zsuper");Opal.defn(self,"$initialize",TMP_ZsuperNode_initialize_17=function $$initialize($a_rest){var self=this,$iter=TMP_ZsuperNode_initialize_17.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_ZsuperNode_initialize_17.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ZsuperNode_initialize_17,false),$zuper,$iter);if(self.$iter().$type()["$=="]("iter")){return nil}else{self.$scope()["$uses_block!"]();return self.iter=self.$s("js_tmp","$iter")}},TMP_ZsuperNode_initialize_17.$$arity=-1);Opal.defn(self,"$compile",TMP_ZsuperNode_compile_18=function $$compile(){var $a,self=this,$writer=nil,implicit_args=nil,block_arg=nil,block_pass=nil;if($truthy(self.$def_scope())){$writer=[true];$send(self.$def_scope(),"uses_zuper=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];implicit_args=[self.$s("js_tmp","$zuper")];if($truthy($truthy($a=block_arg=self.$formal_block_parameter())?self.$iter()["$!"]():$a)){block_pass=self.$s("block_pass",self.$s("lvar",block_arg["$[]"](1)));implicit_args["$<<"](block_pass)}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(implicit_args)))}return self.$compile_using_send()},TMP_ZsuperNode_compile_18.$$arity=0);Opal.defn(self,"$compile_arguments",TMP_ZsuperNode_compile_arguments_19=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push(self.$expr(self.$arglist()))}},TMP_ZsuperNode_compile_arguments_19.$$arity=0);return(Opal.defn(self,"$formal_block_parameter",TMP_ZsuperNode_formal_block_parameter_20=function $$formal_block_parameter(){var self=this,$case=nil;return function(){$case=self.$def_scope();if(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"IterNode")["$==="]($case)){return self.$def_scope().$extract_block_arg()}else if(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"DefNode")["$==="]($case)){return self.$def_scope().$block_arg()}else{return self.$raise(""+"Don't know what to do with super in the scope "+self.$def_scope())}}()},TMP_ZsuperNode_formal_block_parameter_20.$$arity=0),nil)&&"formal_block_parameter"})($nesting[0],Opal.const_get_relative($nesting,"SuperNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","0.11.4")}($nesting[0],$nesting)};Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$version_comment","$opening","$in_scope","$stmt","$stmts","$is_a?","$eval?","$compiler","$add_temp","$add_used_helpers","$add_used_operators","$line","$to_vars","$scope","$compile_method_stubs","$compile_irb_vars","$compile_end_construct","$closing","$requirable?","$to_s","$cleanpath","$Pathname","$file","$inspect","$returns","$body","$irb?","$to_a","$helpers","$each","$operator_helpers","$[]","$method_missing?","$method_calls","$join","$map","$empty?","$eof_content"]);self.$require("pathname");self.$require("opal/version");self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $TopNode(){}var self=$TopNode=$klass($base,$super,"TopNode",$TopNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_TopNode_compile_2,TMP_TopNode_opening_3,TMP_TopNode_closing_4,TMP_TopNode_stmts_5,TMP_TopNode_compile_irb_vars_6,TMP_TopNode_add_used_helpers_8,TMP_TopNode_add_used_operators_10,TMP_TopNode_compile_method_stubs_12,TMP_TopNode_compile_end_construct_13,TMP_TopNode_version_comment_14;self.$handle("top");self.$children("body");Opal.defn(self,"$compile",TMP_TopNode_compile_2=function $$compile(){var TMP_1,self=this;self.$push(self.$version_comment());self.$opening();$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,body_code=nil;body_code=self.$stmt(self.$stmts());if($truthy(body_code["$is_a?"](Opal.const_get_relative($nesting,"Array")))){}else{body_code=[body_code]}if($truthy(self.$compiler()["$eval?"]())){self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]")}else{self.$add_temp("self = Opal.top");self.$add_temp("$nesting = []")}self.$add_temp("nil = Opal.nil");self.$add_used_helpers();self.$add_used_operators();self.$line(self.$scope().$to_vars());self.$compile_method_stubs();self.$compile_irb_vars();self.$compile_end_construct();return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$closing()},TMP_TopNode_compile_2.$$arity=0);Opal.defn(self,"$opening",TMP_TopNode_opening_3=function $$opening(){var self=this,path=nil;if($truthy(self.$compiler()["$requirable?"]())){path=self.$Pathname(self.$compiler().$file()).$cleanpath().$to_s();return self.$line(""+"Opal.modules["+path.$inspect()+"] = function(Opal) {")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("(function(Opal, self) {")}else{return self.$line("(function(Opal) {")}},TMP_TopNode_opening_3.$$arity=0);Opal.defn(self,"$closing",TMP_TopNode_closing_4=function $$closing(){var self=this;if($truthy(self.$compiler()["$requirable?"]())){return self.$line("};\n")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("})(Opal, self)")}else{return self.$line("})(Opal);\n")}},TMP_TopNode_closing_4.$$arity=0);Opal.defn(self,"$stmts",TMP_TopNode_stmts_5=function $$stmts(){var self=this;return self.$compiler().$returns(self.$body())},TMP_TopNode_stmts_5.$$arity=0);Opal.defn(self,"$compile_irb_vars",TMP_TopNode_compile_irb_vars_6=function $$compile_irb_vars(){var self=this;if($truthy(self.$compiler()["$irb?"]())){return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }")}else{return nil}},TMP_TopNode_compile_irb_vars_6.$$arity=0);Opal.defn(self,"$add_used_helpers",TMP_TopNode_add_used_helpers_8=function $$add_used_helpers(){var TMP_7,self=this,helpers=nil;helpers=self.$compiler().$helpers().$to_a();return $send(helpers.$to_a(),"each",[],(TMP_7=function(h){var self=TMP_7.$$s||this;if(h==null)h=nil;return self.$add_temp(""+"$"+h+" = Opal."+h)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_TopNode_add_used_helpers_8.$$arity=0);Opal.defn(self,"$add_used_operators",TMP_TopNode_add_used_operators_10=function $$add_used_operators(){var TMP_9,self=this,operators=nil;operators=self.$compiler().$operator_helpers().$to_a();return $send(operators,"each",[],(TMP_9=function(op){var self=TMP_9.$$s||this,name=nil;if(op==null)op=nil;name=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Nodes"),"CallNode"),"OPERATORS")["$[]"](op);self.$line(""+"function $rb_"+name+"(lhs, rhs) {");self.$line(""+" return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs "+op+" rhs : lhs['$"+op+"'](rhs);");return self.$line("}")},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_TopNode_add_used_operators_10.$$arity=0);Opal.defn(self,"$compile_method_stubs",TMP_TopNode_compile_method_stubs_12=function $$compile_method_stubs(){var TMP_11,self=this,calls=nil,stubs=nil;if($truthy(self.$compiler()["$method_missing?"]())){calls=self.$compiler().$method_calls();stubs=$send(calls.$to_a(),"map",[],(TMP_11=function(k){var self=TMP_11.$$s||this;if(k==null)k=nil;return""+"'$"+k+"'"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11)).$join(", ");if($truthy(stubs["$empty?"]())){return nil}else{return self.$line(""+"Opal.add_stubs(["+stubs+"]);")}}else{return nil}},TMP_TopNode_compile_method_stubs_12.$$arity=0);Opal.defn(self,"$compile_end_construct",TMP_TopNode_compile_end_construct_13=function $$compile_end_construct(){var self=this,content=nil;if($truthy(content=self.$compiler().$eof_content())){self.$line("var $__END__ = Opal.Object.$new();");return self.$line(""+"$__END__.$read = function() { return "+content.$inspect()+"; };")}else{return nil}},TMP_TopNode_compile_end_construct_13.$$arity=0);return(Opal.defn(self,"$version_comment",TMP_TopNode_version_comment_14=function $$version_comment(){var self=this;return""+"/* Generated by Opal "+Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"VERSION")+" */"},TMP_TopNode_version_comment_14.$$arity=0),nil)&&"version_comment"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/while"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$with_temp","$js_truthy","$test","$in_while","$compiler","$wrap_in_closure?","$[]=","$while_loop","$-","$stmt","$body","$uses_redo?","$push","$while_open","$while_close","$line","$wrap","$[]","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $WhileNode(){}var self=$WhileNode=$klass($base,$super,"WhileNode",$WhileNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_WhileNode_compile_3,TMP_WhileNode_while_open_4,TMP_WhileNode_while_close_5,TMP_WhileNode_uses_redo$q_6,TMP_WhileNode_wrap_in_closure$q_7;self.$handle("while");self.$children("test","body");Opal.defn(self,"$compile",TMP_WhileNode_compile_3=function $$compile(){var TMP_1,self=this;$send(self,"with_temp",[],(TMP_1=function(redo_var){var self=TMP_1.$$s||this,TMP_2,test_code=nil;if(redo_var==null)redo_var=nil;test_code=self.$js_truthy(self.$test());$send(self.$compiler(),"in_while",[],(TMP_2=function(){var self=TMP_2.$$s||this,$writer=nil,body_code=nil;if($truthy(self["$wrap_in_closure?"]())){$writer=["closure",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=["redo_var",redo_var];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];body_code=self.$stmt(self.$body());if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false; "+self.$while_open()+redo_var+" || ");self.$push(test_code);self.$push(self.$while_close())}else{self.$push(self.$while_open(),test_code,self.$while_close())}if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false;")}return self.$line(body_code)},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));return self.$line("}")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_WhileNode_compile_3.$$arity=0);Opal.defn(self,"$while_open",TMP_WhileNode_while_open_4=function $$while_open(){var self=this;return"while ("},TMP_WhileNode_while_open_4.$$arity=0);Opal.defn(self,"$while_close",TMP_WhileNode_while_close_5=function $$while_close(){var self=this;return") {"},TMP_WhileNode_while_close_5.$$arity=0);Opal.defn(self,"$uses_redo?",TMP_WhileNode_uses_redo$q_6=function(){var self=this;return self.$while_loop()["$[]"]("use_redo")},TMP_WhileNode_uses_redo$q_6.$$arity=0);return(Opal.defn(self,"$wrap_in_closure?",TMP_WhileNode_wrap_in_closure$q_7=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},TMP_WhileNode_wrap_in_closure$q_7.$$arity=0),nil)&&"wrap_in_closure?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $WhilePostNode(){}var self=$WhilePostNode=$klass($base,$super,"WhilePostNode",$WhilePostNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("while_post")})($nesting[0],Opal.const_get_relative($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){function $UntilNode(){}var self=$UntilNode=$klass($base,$super,"UntilNode",$UntilNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UntilNode_while_open_8,TMP_UntilNode_while_close_9;self.$handle("until");Opal.defn(self,"$while_open",TMP_UntilNode_while_open_8=function $$while_open(){var self=this;return"while (!("},TMP_UntilNode_while_open_8.$$arity=0);return(Opal.defn(self,"$while_close",TMP_UntilNode_while_close_9=function $$while_close(){var self=this;return")) {"},TMP_UntilNode_while_close_9.$$arity=0),nil)&&"while_close"})($nesting[0],Opal.const_get_relative($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){function $UntilPostNode(){}var self=$UntilPostNode=$klass($base,$super,"UntilPostNode",$UntilPostNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("until_post")})($nesting[0],Opal.const_get_relative($nesting,"UntilNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/hash"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$handle","$attr_accessor","$each","$children","$type","$===","$<<","$[]","$all?","$keys","$include?","$has_kwsplat","$compile_merge","$simple_keys?","$compile_hash2","$compile_hash","$helper","$==","$empty?","$expr","$s","$each_with_index","$push","$wrap","$times","$size","$inspect","$to_s","$values","$[]=","$-","$join","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $HashNode(){}var self=$HashNode=$klass($base,$super,"HashNode",$HashNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_HashNode_initialize_1,TMP_HashNode_simple_keys$q_4,TMP_HashNode_compile_5,TMP_HashNode_compile_merge_8,TMP_HashNode_compile_hash_10,TMP_HashNode_compile_hash2_13;self.$handle("hash");self.$attr_accessor("has_kwsplat","keys","values");Opal.defn(self,"$initialize",TMP_HashNode_initialize_1=function $$initialize($a_rest){var TMP_2,self=this,$iter=TMP_HashNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_HashNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_HashNode_initialize_1,false),$zuper,$iter);self.has_kwsplat=false;self.keys=[];self.values=[];return $send(self.$children(),"each",[],(TMP_2=function(child){var self=TMP_2.$$s||this,$case=nil;if(self.keys==null)self.keys=nil;if(self.values==null)self.values=nil;if(child==null)child=nil;return function(){$case=child.$type();if("kwsplat"["$==="]($case)){return self.has_kwsplat=true}else if("pair"["$==="]($case)){self.keys["$<<"](child.$children()["$[]"](0));return self.values["$<<"](child.$children()["$[]"](1))}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_HashNode_initialize_1.$$arity=-1);Opal.defn(self,"$simple_keys?",TMP_HashNode_simple_keys$q_4=function(){var TMP_3,self=this;return $send(self.$keys(),"all?",[],(TMP_3=function(key){var self=TMP_3.$$s||this;if(key==null)key=nil;return["sym","str"]["$include?"](key.$type())},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_HashNode_simple_keys$q_4.$$arity=0);Opal.defn(self,"$compile",TMP_HashNode_compile_5=function $$compile(){var self=this;if($truthy(self.$has_kwsplat())){return self.$compile_merge()}else if($truthy(self["$simple_keys?"]())){return self.$compile_hash2()}else{return self.$compile_hash()}},TMP_HashNode_compile_5.$$arity=0);Opal.defn(self,"$compile_merge",TMP_HashNode_compile_merge_8=function $$compile_merge(){var $a,TMP_6,TMP_7,self=this,result=nil,seq=nil;self.$helper("hash");$a=[[],[]],result=$a[0],seq=$a[1],$a;$send(self.$children(),"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this;if(child==null)child=nil;if(child.$type()["$=="]("kwsplat")){if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}result["$<<"](self.$expr(child));return seq=[]}else{return seq["$<<"](child)}},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}return $send(result,"each_with_index",[],(TMP_7=function(fragment,idx){var self=TMP_7.$$s||this;if(fragment==null)fragment=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$push(fragment)}else{return self.$push(".$merge(",fragment,")")}},TMP_7.$$s=self,TMP_7.$$arity=2,TMP_7))},TMP_HashNode_compile_merge_8.$$arity=0);Opal.defn(self,"$compile_hash",TMP_HashNode_compile_hash_10=function $$compile_hash(){var TMP_9,self=this;self.$helper("hash");$send(self.$children(),"each_with_index",[],(TMP_9=function(pair,idx){var self=TMP_9.$$s||this,$a,$b,key=nil,value=nil;if(pair==null)pair=nil;if(idx==null)idx=nil;$b=pair.$children(),$a=Opal.to_ary($b),key=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$b;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(key),", ",self.$expr(value))},TMP_9.$$s=self,TMP_9.$$arity=2,TMP_9));return self.$wrap("$hash(",")")},TMP_HashNode_compile_hash_10.$$arity=0);return(Opal.defn(self,"$compile_hash2",TMP_HashNode_compile_hash2_13=function $$compile_hash2(){var $a,TMP_11,TMP_12,self=this,hash_obj=nil,hash_keys=nil;$a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],$a;self.$helper("hash2");$send(self.$keys().$size(),"times",[],(TMP_11=function(idx){var self=TMP_11.$$s||this,key=nil,$writer=nil;if(idx==null)idx=nil;key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect();if($truthy(hash_obj["$include?"](key))){}else{hash_keys["$<<"](key)}$writer=[key,self.$expr(self.$values()["$[]"](idx))];$send(hash_obj,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11));$send(hash_keys,"each_with_index",[],(TMP_12=function(key,idx){var self=TMP_12.$$s||this;if(key==null)key=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}self.$push(""+key+": ");return self.$push(hash_obj["$[]"](key))},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12));return self.$wrap(""+"$hash2(["+hash_keys.$join(", ")+"], {","})")},TMP_HashNode_compile_hash2_13.$$arity=0),nil)&&"compile_hash2"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $KwSplatNode(){}var self=$KwSplatNode=$klass($base,$super,"KwSplatNode",$KwSplatNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwSplatNode_compile_14;self.$handle("kwsplat");self.$children("value");return(Opal.defn(self,"$compile",TMP_KwSplatNode_compile_14=function $$compile(){var self=this;return self.$push("Opal.to_hash(",self.$expr(self.$value()),")")},TMP_KwSplatNode_compile_14.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$empty?","$children","$push","$each","$==","$type","$expr","$<<","$fragment"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ArrayNode(){}var self=$ArrayNode=$klass($base,$super,"ArrayNode",$ArrayNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ArrayNode_compile_2;self.$handle("array");return(Opal.defn(self,"$compile",TMP_ArrayNode_compile_2=function $$compile(){var $a,TMP_1,self=this,code=nil,work=nil,join=nil;if($truthy(self.$children()["$empty?"]())){return self.$push("[]")}$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],(TMP_1=function(child){var self=TMP_1.$$s||this,splat=nil,part=nil;if(child==null)child=nil;splat=child.$type()["$=="]("splat");part=self.$expr(child);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")"))}else{code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](part)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(work["$empty?"]())){}else{join=[self.$fragment("["),work,self.$fragment("]")];if($truthy(code["$empty?"]())){code=join}else{code.$push([self.$fragment(".concat("),join,self.$fragment(")")])}}return self.$push(code)},TMP_ArrayNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$type","$value","$===","$push","$inspect","$to_s","$==","$size","$[]","$compile_defined_send","$wrap","$compile_defined_ivar","$compile_defined_super","$compile_defined_yield","$compile_defined_xstr","$compile_defined_const","$compile_defined_cvar","$compile_defined_gvar","$compile_defined_back_ref","$compile_defined_nth_ref","$compile_defined_array","$respond_to?","$__send__","$new_temp","$scope","$expr","$wrap_with_try_catch","$mid_to_jsid","$compile_defined","$compile_send_recv_doesnt_raise","$each","$s","$uses_block!","$block_name","$find_parent_def","$nil?","$class_variable_owner","$helper","$include?","$each_with_index"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefinedNode(){}var self=$DefinedNode=$klass($base,$super,"DefinedNode",$DefinedNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefinedNode_compile_1,TMP_DefinedNode_compile_defined_2,TMP_DefinedNode_wrap_with_try_catch_3,TMP_DefinedNode_compile_send_recv_doesnt_raise_4,TMP_DefinedNode_compile_defined_send_6,TMP_DefinedNode_compile_defined_ivar_7,TMP_DefinedNode_compile_defined_super_8,TMP_DefinedNode_compile_defined_yield_9,TMP_DefinedNode_compile_defined_xstr_10,TMP_DefinedNode_compile_defined_const_11,TMP_DefinedNode_compile_defined_cvar_12,TMP_DefinedNode_compile_defined_gvar_13,TMP_DefinedNode_compile_defined_back_ref_14,TMP_DefinedNode_compile_defined_nth_ref_15,TMP_DefinedNode_compile_defined_array_17;self.$handle("defined?");self.$children("value");Opal.defn(self,"$compile",TMP_DefinedNode_compile_1=function $$compile(){var $a,self=this,$case=nil;return function(){$case=self.$value().$type();if("self"["$==="]($case)||"nil"["$==="]($case)||"false"["$==="]($case)||"true"["$==="]($case)){return self.$push(self.$value().$type().$to_s().$inspect())}else if("lvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"gvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"op_asgn"["$==="]($case)||"or_asgn"["$==="]($case)||"and_asgn"["$==="]($case)){return self.$push("'assignment'")}else if("lvar"["$==="]($case)){return self.$push("'local-variable'")}else if("begin"["$==="]($case)){if($truthy(($a=self.$value().$children().$size()["$=="](1))?self.$value().$children()["$[]"](0).$type()["$=="]("masgn"):self.$value().$children().$size()["$=="](1))){return self.$push("'assignment'")}else{return self.$push("'expression'")}}else if("send"["$==="]($case)){self.$compile_defined_send(self.$value());return self.$wrap("("," ? 'method' : nil)")}else if("ivar"["$==="]($case)){self.$compile_defined_ivar(self.$value());return self.$wrap("("," ? 'instance-variable' : nil)")}else if("zsuper"["$==="]($case)||"super"["$==="]($case)){return self.$compile_defined_super(self.$value())}else if("yield"["$==="]($case)){self.$compile_defined_yield(self.$value());return self.$wrap("("," ? 'yield' : nil)")}else if("xstr"["$==="]($case)){return self.$compile_defined_xstr(self.$value())}else if("const"["$==="]($case)){self.$compile_defined_const(self.$value());return self.$wrap("("," ? 'constant' : nil)")}else if("cvar"["$==="]($case)){self.$compile_defined_cvar(self.$value());return self.$wrap("("," ? 'class variable' : nil)")}else if("gvar"["$==="]($case)){self.$compile_defined_gvar(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("back_ref"["$==="]($case)){self.$compile_defined_back_ref(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("nth_ref"["$==="]($case)){self.$compile_defined_nth_ref(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("array"["$==="]($case)){self.$compile_defined_array(self.$value());return self.$wrap("("," ? 'expression' : nil)")}else{return self.$push("'expression'")}}()},TMP_DefinedNode_compile_1.$$arity=0);Opal.defn(self,"$compile_defined",TMP_DefinedNode_compile_defined_2=function $$compile_defined(node){var self=this,type=nil,node_tmp=nil;type=node.$type();if($truthy(self["$respond_to?"](""+"compile_defined_"+type))){return self.$__send__(""+"compile_defined_"+type,node)}else{node_tmp=self.$scope().$new_temp();self.$push(""+"("+node_tmp+" = ",self.$expr(node),")");return node_tmp}},TMP_DefinedNode_compile_defined_2.$$arity=1);Opal.defn(self,"$wrap_with_try_catch",TMP_DefinedNode_wrap_with_try_catch_3=function $$wrap_with_try_catch(code){var self=this,returning_tmp=nil;returning_tmp=self.$scope().$new_temp();self.$push(""+"("+returning_tmp+" = (function() { try {");self.$push(""+" return "+code+";");self.$push("} catch ($err) {");self.$push(" if (Opal.rescue($err, [Opal.Exception])) {");self.$push(" try {");self.$push(" return false;");self.$push(" } finally { Opal.pop_exception() }");self.$push(" } else { throw $err; }");self.$push("}})())");return returning_tmp},TMP_DefinedNode_wrap_with_try_catch_3.$$arity=1);Opal.defn(self,"$compile_send_recv_doesnt_raise",TMP_DefinedNode_compile_send_recv_doesnt_raise_4=function $$compile_send_recv_doesnt_raise(recv_code){var self=this;return self.$wrap_with_try_catch(recv_code)},TMP_DefinedNode_compile_send_recv_doesnt_raise_4.$$arity=1);Opal.defn(self,"$compile_defined_send",TMP_DefinedNode_compile_defined_send_6=function $$compile_defined_send(node){var $a,TMP_5,self=this,recv=nil,method_name=nil,args=nil,mid=nil,recv_code=nil,recv_tmp=nil,recv_value_tmp=nil,meth_tmp=nil;$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;mid=self.$mid_to_jsid(method_name.$to_s());if($truthy(recv)){recv_code=self.$compile_defined(recv);self.$push(" && ");if(recv.$type()["$=="]("send")){recv_code=self.$compile_send_recv_doesnt_raise(recv_code);self.$push(" && ")}recv_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_tmp+" = ",recv_code,""+", "+recv_tmp+") && ")}else{recv_tmp="self"}recv_value_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_value_tmp+" = "+recv_tmp+") && ");meth_tmp=self.$scope().$new_temp();self.$push(""+"((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)");self.$push(""+" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))");$send(args,"each",[],(TMP_5=function(arg){var self=TMP_5.$$s||this,$case=nil;if(arg==null)arg=nil;return function(){$case=arg.$type();if("block_pass"["$==="]($case)){return nil}else{self.$push(" && ");return self.$compile_defined(arg)}}()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));self.$wrap("(",")");return""+meth_tmp+"()"},TMP_DefinedNode_compile_defined_send_6.$$arity=1);Opal.defn(self,"$compile_defined_ivar",TMP_DefinedNode_compile_defined_ivar_7=function $$compile_defined_ivar(node){var self=this,name=nil,tmp=nil;name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));tmp=self.$scope().$new_temp();self.$push(""+"("+tmp+" = self['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)");return tmp},TMP_DefinedNode_compile_defined_ivar_7.$$arity=1);Opal.defn(self,"$compile_defined_super",TMP_DefinedNode_compile_defined_super_8=function $$compile_defined_super(node){var self=this;return self.$push(self.$expr(self.$s("defined_super")))},TMP_DefinedNode_compile_defined_super_8.$$arity=1);Opal.defn(self,"$compile_defined_yield",TMP_DefinedNode_compile_defined_yield_9=function $$compile_defined_yield(node){var $a,$b,self=this,block_name=nil,parent=nil;self.$scope()["$uses_block!"]();block_name=$truthy($a=self.$scope().$block_name())?$a:parent=$truthy($b=self.$scope().$find_parent_def())?parent.$block_name():$b;self.$push(""+"("+block_name+" != null && "+block_name+" !== nil)");return block_name},TMP_DefinedNode_compile_defined_yield_9.$$arity=1);Opal.defn(self,"$compile_defined_xstr",TMP_DefinedNode_compile_defined_xstr_10=function $$compile_defined_xstr(node){var self=this;return self.$push("(typeof(",self.$expr(node),') !== "undefined")')},TMP_DefinedNode_compile_defined_xstr_10.$$arity=1);Opal.defn(self,"$compile_defined_const",TMP_DefinedNode_compile_defined_const_11=function $$compile_defined_const(node){var $a,self=this,const_scope=nil,const_name=nil,const_tmp=nil,const_scope_tmp=nil;$a=[].concat(Opal.to_a(node)),const_scope=$a[0]==null?nil:$a[0],const_name=$a[1]==null?nil:$a[1],$a;const_tmp=self.$scope().$new_temp();if($truthy(const_scope["$nil?"]())){self.$push(""+"("+const_tmp+" = Opal.const_get_relative($nesting, '"+const_name+"', 'skip_raise'))")}else if(const_scope["$=="](self.$s("cbase"))){self.$push(""+"("+const_tmp+" = Opal.const_get_qualified('::', '"+const_name+"', 'skip_raise'))")}else{const_scope_tmp=self.$compile_defined(const_scope);self.$push(""+" && ("+const_tmp+" = Opal.const_get_qualified("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")}return const_tmp},TMP_DefinedNode_compile_defined_const_11.$$arity=1);Opal.defn(self,"$compile_defined_cvar",TMP_DefinedNode_compile_defined_cvar_12=function $$compile_defined_cvar(node){var $a,self=this,cvar_name=nil,_=nil,cvar_tmp=nil;$a=[].concat(Opal.to_a(node)),cvar_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;cvar_tmp=self.$scope().$new_temp();self.$push(""+"("+cvar_tmp+" = "+self.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)");return cvar_tmp},TMP_DefinedNode_compile_defined_cvar_12.$$arity=1);Opal.defn(self,"$compile_defined_gvar",TMP_DefinedNode_compile_defined_gvar_13=function $$compile_defined_gvar(node){var self=this,name=nil,gvar_temp=nil;self.$helper("gvars");name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));gvar_temp=self.$scope().$new_temp();if($truthy(["~","!"]["$include?"](name))){self.$push(""+"("+gvar_temp+" = ",self.$expr(node)," || true)")}else{self.$push(""+"("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)")}return gvar_temp},TMP_DefinedNode_compile_defined_gvar_13.$$arity=1);Opal.defn(self,"$compile_defined_back_ref",TMP_DefinedNode_compile_defined_back_ref_14=function $$compile_defined_back_ref(node){var self=this,back_ref_temp=nil;self.$helper("gvars");back_ref_temp=self.$scope().$new_temp();self.$push(""+"("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)");return back_ref_temp},TMP_DefinedNode_compile_defined_back_ref_14.$$arity=1);Opal.defn(self,"$compile_defined_nth_ref",TMP_DefinedNode_compile_defined_nth_ref_15=function $$compile_defined_nth_ref(node){var self=this,nth_ref_tmp=nil;self.$helper("gvars");nth_ref_tmp=self.$scope().$new_temp();self.$push(""+"("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)");return nth_ref_tmp},TMP_DefinedNode_compile_defined_nth_ref_15.$$arity=1);return(Opal.defn(self,"$compile_defined_array",TMP_DefinedNode_compile_defined_array_17=function $$compile_defined_array(node){var TMP_16,self=this;return $send(node.$children(),"each_with_index",[],(TMP_16=function(child,idx){var self=TMP_16.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" && ")}return self.$compile_defined(child)},TMP_16.$$s=self,TMP_16.$$arity=2,TMP_16))},TMP_DefinedNode_compile_defined_array_17.$$arity=1),nil)&&"compile_defined_array"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/masgn"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$new_temp","$scope","$==","$type","$rhs","$push","$expr","$any?","$size","$compile_masgn","$lhs","$queue_temp","$take_while","$!=","$drop","$each_with_index","$compile_assignment","$empty?","$shift","$[]","$<<","$dup","$s","$!","$>=","$updated","$include?","$+","$last","$raise"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $MassAssignNode(){}var self=$MassAssignNode=$klass($base,$super,"MassAssignNode",$MassAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MassAssignNode_compile_2,TMP_MassAssignNode_compile_masgn_6,TMP_MassAssignNode_compile_assignment_7;Opal.const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"]);self.$handle("masgn");self.$children("lhs","rhs");Opal.defn(self,"$compile",TMP_MassAssignNode_compile_2=function $$compile(){var TMP_1,self=this,array=nil,rhs_len=nil,retval=nil;array=self.$scope().$new_temp();if(self.$rhs().$type()["$=="]("array")){self.$push(""+array+" = ",self.$expr(self.$rhs()));rhs_len=function(){if($truthy($send(self.$rhs().$children(),"any?",[],(TMP_1=function(c){var self=TMP_1.$$s||this;if(c==null)c=nil;return c.$type()["$=="]("splat")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1)))){return nil}else{return self.$rhs().$children().$size()}return nil}();self.$compile_masgn(self.$lhs().$children(),array,rhs_len);self.$push(""+", "+array)}else if(self.$rhs().$type()["$=="]("begin")){retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}else{retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}return self.$scope().$queue_temp(array)},TMP_MassAssignNode_compile_2.$$arity=0);Opal.defn(self,"$compile_masgn",TMP_MassAssignNode_compile_masgn_6=function $$compile_masgn(lhs_items,array,len){var TMP_3,TMP_4,TMP_5,self=this,pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;if(len==null){len=nil}pre_splat=$send(lhs_items,"take_while",[],(TMP_3=function(child){var self=TMP_3.$$s||this;if(child==null)child=nil;return child.$type()["$!="]("splat")},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3));post_splat=lhs_items.$drop(pre_splat.$size());$send(pre_splat,"each_with_index",[],(TMP_4=function(child,idx){var self=TMP_4.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;return self.$compile_assignment(child,array,idx,len)},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4));if($truthy(post_splat["$empty?"]())){return nil}else{splat=post_splat.$shift();if($truthy(post_splat["$empty?"]())){if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+")"));self.$push(", ");return self.$push(self.$expr(part))}else{return nil}}else{tmp=self.$scope().$new_temp();self.$push(""+", "+tmp+" = "+array+".length - "+post_splat.$size());self.$push(""+", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp);if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")"));self.$push(", ");self.$push(self.$expr(part))}$send(post_splat,"each_with_index",[],(TMP_5=function(child,idx){var self=TMP_5.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$compile_assignment(child,array,tmp)}else{return self.$compile_assignment(child,array,""+tmp+" + "+idx)}},TMP_5.$$s=self,TMP_5.$$arity=2,TMP_5));return self.$scope().$queue_temp(tmp)}}},TMP_MassAssignNode_compile_masgn_6.$$arity=-3);return(Opal.defn(self,"$compile_assignment",TMP_MassAssignNode_compile_assignment_7=function $$compile_assignment(child,array,idx,len){var $a,self=this,assign=nil,part=nil,tmp=nil;if(len==null){len=nil}if($truthy($truthy($a=len["$!"]())?$a:$rb_ge(idx,len))){assign=self.$s("js_tmp",""+"("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])")}else{assign=self.$s("js_tmp",""+array+"["+idx+"]")}part=child.$updated();if($truthy(Opal.const_get_relative($nesting,"SIMPLE_ASSIGNMENT")["$include?"](child.$type()))){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("send")){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("attrasgn")){part.$last()["$<<"](assign)}else if(child.$type()["$=="]("mlhs")){tmp=self.$scope().$new_temp();self.$push(""+", ("+tmp+" = Opal.to_ary("+assign.$children()["$[]"](0)+")");self.$compile_masgn(child.$children(),tmp);self.$push(")");self.$scope().$queue_temp(tmp);return nil}else{self.$raise(""+"Bad child node in masgn LHS: "+child+". LHS: "+self.$lhs())}self.$push(", ");return self.$push(self.$expr(part))},TMP_MassAssignNode_compile_assignment_7.$$arity=-4),nil)&&"compile_assignment"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$each","$children","$==","$type","$expr","$empty?","$<<","$fragment","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ArglistNode(){}var self=$ArglistNode=$klass($base,$super,"ArglistNode",$ArglistNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ArglistNode_compile_2;self.$handle("arglist");return(Opal.defn(self,"$compile",TMP_ArglistNode_compile_2=function $$compile(){var $a,TMP_1,self=this,code=nil,work=nil,join=nil;$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],(TMP_1=function(current){var self=TMP_1.$$s||this,splat=nil,arg=nil;if(current==null)current=nil;splat=current.$type()["$=="]("splat");arg=self.$expr(current);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](arg)}else{code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](arg)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(work["$empty?"]())){}else{join=work;if($truthy(code["$empty?"]())){code=join}else{code["$<<"](self.$fragment(".concat("))["$<<"](join)["$<<"](self.$fragment(")"))}}return $send(self,"push",Opal.to_a(code))},TMP_ArglistNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/nodes/base");self.$require("opal/nodes/literal");self.$require("opal/nodes/variables");self.$require("opal/nodes/constants");self.$require("opal/nodes/call");self.$require("opal/nodes/csend");self.$require("opal/nodes/call_special");self.$require("opal/nodes/module");self.$require("opal/nodes/class");self.$require("opal/nodes/singleton_class");self.$require("opal/nodes/inline_args");self.$require("opal/nodes/args/normarg");self.$require("opal/nodes/args/optarg");self.$require("opal/nodes/args/mlhsarg");self.$require("opal/nodes/args/restarg");self.$require("opal/nodes/args/kwarg");self.$require("opal/nodes/args/kwoptarg");self.$require("opal/nodes/args/kwrestarg");self.$require("opal/nodes/args/post_kwargs");self.$require("opal/nodes/args/post_args");self.$require("opal/nodes/iter");self.$require("opal/nodes/def");self.$require("opal/nodes/defs");self.$require("opal/nodes/if");self.$require("opal/nodes/logic");self.$require("opal/nodes/definitions");self.$require("opal/nodes/yield");self.$require("opal/nodes/rescue");self.$require("opal/nodes/case");self.$require("opal/nodes/super");self.$require("opal/nodes/top");self.$require("opal/nodes/while");self.$require("opal/nodes/hash");self.$require("opal/nodes/array");self.$require("opal/nodes/defined");self.$require("opal/nodes/masgn");return self.$require("opal/nodes/arglist")};Opal.modules["opal/eof_content"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$empty?","$[]","$last_token_position","$drop_while","$lines","$==","$join","$private","$last","$end_pos"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EofContent(){}var self=$EofContent=$klass($base,$super,"EofContent",$EofContent);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EofContent_initialize_1,TMP_EofContent_eof_3,TMP_EofContent_last_token_position_4;def.tokens=def.source=nil;Opal.const_set($nesting[0],"DATA_SEPARATOR","__END__\n");Opal.defn(self,"$initialize",TMP_EofContent_initialize_1=function $$initialize(tokens,source){var self=this;self.tokens=tokens;return self.source=source},TMP_EofContent_initialize_1.$$arity=2);Opal.defn(self,"$eof",TMP_EofContent_eof_3=function $$eof(){var TMP_2,$a,self=this,eof_content=nil;if($truthy(self.tokens["$empty?"]())){return nil}eof_content=self.source["$[]"](Opal.Range.$new(self.$last_token_position(),-1,false));if($truthy(eof_content)){}else{return nil}eof_content=$send(eof_content.$lines(),"drop_while",[],(TMP_2=function(line){var self=TMP_2.$$s||this;if(line==null)line=nil;return line["$=="]("\n")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));if(eof_content["$[]"](0)["$=="]("__END__\n")){eof_content=$truthy($a=eof_content["$[]"]($range(1,-1,false)))?$a:[];return eof_content.$join()}else if(eof_content["$=="](["__END__"])){return""}else{return nil}},TMP_EofContent_eof_3.$$arity=0);self.$private();return(Opal.defn(self,"$last_token_position",TMP_EofContent_last_token_position_4=function $$last_token_position(){var $a,$b,self=this,_=nil,last_token_info=nil,last_token_range=nil;$b=self.tokens.$last(),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_info=$a[1]==null?nil:$a[1],$b;$b=last_token_info,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_range=$a[1]==null?nil:$a[1],$b;return last_token_range.$end_pos()},TMP_EofContent_last_token_position_4.$$arity=0),nil)&&"last_token_position"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/compiler"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$compile","$new","$[]","$define_method","$fetch","$!","$include?","$raise","$+","$inspect","$compiler_option","$attr_reader","$attr_accessor","$parse","$flatten","$process","$join","$map","$to_proc","$file","$source=","$-","$default_parser","$tokenize","$message","$backtrace","$s","$associate_locations","$eof","$warn","$to_s","$empty?","$gsub","$<<","$helpers","$new_temp","$queue_temp","$push_while","$indent","$pop_while","$in_while?","$==","$fragment","$scope","$handlers","$type","$compile_to_fragments","$error","$returns","$===","$updated","$any?","$children","$select","$end_with?","$loc","$uses_block!","$block_name","$find_parent_def"]);self.$require("set");self.$require("opal/parser");self.$require("opal/fragment");self.$require("opal/nodes");self.$require("opal/eof_content");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Opal_compile_1;Opal.defs(self,"$compile",TMP_Opal_compile_1=function $$compile(source,options){var self=this;if(options==null){options=$hash2([],{})}return Opal.const_get_relative($nesting,"Compiler").$new(source,options).$compile()},TMP_Opal_compile_1.$$arity=-2);(function($base,$super,$parent_nesting){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Compiler_compiler_option_4,TMP_Compiler_initialize_5,TMP_Compiler_compile_6,TMP_Compiler_parse_7,TMP_Compiler_source_map_8,TMP_Compiler_helpers_9,TMP_Compiler_operator_helpers_10,TMP_Compiler_method_calls_11,TMP_Compiler_error_12,TMP_Compiler_warning_13,TMP_Compiler_parser_indent_14,TMP_Compiler_s_15,TMP_Compiler_fragment_16,TMP_Compiler_unique_temp_17,TMP_Compiler_helper_18,TMP_Compiler_indent_19,TMP_Compiler_with_temp_20,TMP_Compiler_in_while_21,TMP_Compiler_in_ensure_23,TMP_Compiler_in_ensure$q_24,TMP_Compiler_in_case_25,TMP_Compiler_in_while$q_26,TMP_Compiler_process_27,TMP_Compiler_handlers_28,TMP_Compiler_requires_29,TMP_Compiler_required_trees_30,TMP_Compiler_returns_35,TMP_Compiler_handle_block_given_call_36;def.sexp=def.fragments=def.source=def.buffer=def.parser=def.helpers=def.operator_helpers=def.method_calls=def.indent=def.unique=def.scope=def.in_ensure=def.case_stmt=def.handlers=def.requires=def.required_trees=nil;Opal.const_set($nesting[0],"INDENT"," ");Opal.const_set($nesting[0],"COMPARE",["<",">","<=",">="]);Opal.defs(self,"$compiler_option",TMP_Compiler_compiler_option_4=function $$compiler_option(name,default_value,options){var $a,TMP_2,self=this,mid=nil,valid_values=nil;if(options==null){options=$hash2([],{})}mid=options["$[]"]("as");valid_values=options["$[]"]("valid_values");return $send(self,"define_method",[$truthy($a=mid)?$a:name],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3,$b,value=nil;if(self.options==null)self.options=nil;value=$send(self.options,"fetch",[name],(TMP_3=function(){var self=TMP_3.$$s||this;return default_value},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));if($truthy($truthy($b=valid_values)?valid_values["$include?"](value)["$!"]():$b)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),$rb_plus(""+"invalid value "+value.$inspect()+" for option "+name.$inspect()+" ",""+"(valid values: "+valid_values.$inspect()+")"))}return value},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_Compiler_compiler_option_4.$$arity=-3);self.$compiler_option("file","(file)");self.$compiler_option("method_missing",true,$hash2(["as"],{as:"method_missing?"}));self.$compiler_option("arity_check",false,$hash2(["as"],{as:"arity_check?"}));self.$compiler_option("freezing",true,$hash2(["as"],{as:"freezing?"}));self.$compiler_option("tainting",true,$hash2(["as"],{as:"tainting?"}));self.$compiler_option("irb",false,$hash2(["as"],{as:"irb?"}));self.$compiler_option("dynamic_require_severity","ignore",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]}));self.$compiler_option("requirable",false,$hash2(["as"],{as:"requirable?"}));self.$compiler_option("inline_operators",true,$hash2(["as"],{as:"inline_operators?"}));self.$compiler_option("eval",false,$hash2(["as"],{as:"eval?"}));self.$compiler_option("enable_source_location",false,$hash2(["as"],{as:"enable_source_location?"}));self.$compiler_option("parse_comments",false,$hash2(["as"],{as:"parse_comments?"}));self.$attr_reader("result");self.$attr_reader("fragments");self.$attr_accessor("scope");self.$attr_reader("case_stmt");self.$attr_reader("eof_content");self.$attr_reader("comments");Opal.defn(self,"$initialize",TMP_Compiler_initialize_5=function $$initialize(source,options){var self=this;if(options==null){options=$hash2([],{})}self.source=source;self.indent="";self.unique=0;self.options=options;self.comments=Opal.const_get_relative($nesting,"Hash").$new([]);return self.case_stmt=nil},TMP_Compiler_initialize_5.$$arity=-2);Opal.defn(self,"$compile",TMP_Compiler_compile_6=function $$compile(){var self=this;self.$parse();self.fragments=self.$process(self.sexp).$flatten();return self.result=$send(self.fragments,"map",[],"code".$to_proc()).$join("")},TMP_Compiler_compile_6.$$arity=0);Opal.defn(self,"$parse",TMP_Compiler_parse_7=function $$parse(){var $a,$b,self=this,$writer=nil,sexp=nil,comments=nil,tokens=nil,error=nil;self.buffer=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"Source"),"Buffer").$new(self.$file(),1);$writer=[self.source];$send(self.buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.parser=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Parser").$default_parser();try{$b=self.parser.$tokenize(self.buffer),$a=Opal.to_ary($b),sexp=$a[0]==null?nil:$a[0],comments=$a[1]==null?nil:$a[1],tokens=$a[2]==null?nil:$a[2],$b}catch($err){if(Opal.rescue($err,[Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"SyntaxError")])){error=$err;try{self.$raise(Opal.const_get_qualified("::","SyntaxError"),error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}else{throw $err}}self.sexp=self.$s("top",$truthy($a=sexp)?$a:self.$s("nil"));self.comments=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"Source"),"Comment").$associate_locations(sexp,comments);return self.eof_content=Opal.const_get_relative($nesting,"EofContent").$new(tokens,self.source).$eof()},TMP_Compiler_parse_7.$$arity=0);Opal.defn(self,"$source_map",TMP_Compiler_source_map_8=function $$source_map(source_file){var $a,self=this;if(source_file==null){source_file=nil}return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"SourceMap").$new(self.fragments,$truthy($a=source_file)?$a:self.$file())},TMP_Compiler_source_map_8.$$arity=-1);Opal.defn(self,"$helpers",TMP_Compiler_helpers_9=function $$helpers(){var $a,self=this;return self.helpers=$truthy($a=self.helpers)?$a:Opal.const_get_relative($nesting,"Set").$new(["breaker","slice"])},TMP_Compiler_helpers_9.$$arity=0);Opal.defn(self,"$operator_helpers",TMP_Compiler_operator_helpers_10=function $$operator_helpers(){var $a,self=this;return self.operator_helpers=$truthy($a=self.operator_helpers)?$a:Opal.const_get_relative($nesting,"Set").$new()},TMP_Compiler_operator_helpers_10.$$arity=0);Opal.defn(self,"$method_calls",TMP_Compiler_method_calls_11=function $$method_calls(){var $a,self=this;return self.method_calls=$truthy($a=self.method_calls)?$a:Opal.const_get_relative($nesting,"Set").$new()},TMP_Compiler_method_calls_11.$$arity=0);Opal.defn(self,"$error",TMP_Compiler_error_12=function $$error(msg,line){var self=this;if(line==null){line=nil}return self.$raise(Opal.const_get_relative($nesting,"SyntaxError"),""+msg+" :"+self.$file()+":"+line)},TMP_Compiler_error_12.$$arity=-2);Opal.defn(self,"$warning",TMP_Compiler_warning_13=function $$warning(msg,line){var self=this;if(line==null){line=nil}return self.$warn(""+"WARNING: "+msg+" -- "+self.$file()+":"+line)},TMP_Compiler_warning_13.$$arity=-2);Opal.defn(self,"$parser_indent",TMP_Compiler_parser_indent_14=function $$parser_indent(){var self=this;return self.indent},TMP_Compiler_parser_indent_14.$$arity=0);Opal.defn(self,"$s",TMP_Compiler_s_15=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node").$new(type,children)},TMP_Compiler_s_15.$$arity=-2);Opal.defn(self,"$fragment",TMP_Compiler_fragment_16=function $$fragment(str,scope,sexp){var self=this;if(sexp==null){sexp=nil}return Opal.const_get_relative($nesting,"Fragment").$new(str,scope,sexp)},TMP_Compiler_fragment_16.$$arity=-3);Opal.defn(self,"$unique_temp",TMP_Compiler_unique_temp_17=function $$unique_temp(name){var $a,self=this,unique=nil;name=name.$to_s();if($truthy($truthy($a=name)?name["$empty?"]()["$!"]():$a)){name=(""+"_"+name).$gsub("?","$q").$gsub("!","$B").$gsub("=","$eq").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")}unique=self.unique=$rb_plus(self.unique,1);return""+"TMP"+name+"_"+unique},TMP_Compiler_unique_temp_17.$$arity=1);Opal.defn(self,"$helper",TMP_Compiler_helper_18=function $$helper(name){var self=this;return self.$helpers()["$<<"](name)},TMP_Compiler_helper_18.$$arity=1);Opal.defn(self,"$indent",TMP_Compiler_indent_19=function $$indent(){var self=this,$iter=TMP_Compiler_indent_19.$$p,block=$iter||nil,indent=nil,res=nil;if($iter)TMP_Compiler_indent_19.$$p=null;indent=self.indent;self.indent=$rb_plus(self.indent,Opal.const_get_relative($nesting,"INDENT"));self.space=""+"\n"+self.indent;res=Opal.yieldX(block,[]);self.indent=indent;self.space=""+"\n"+self.indent;return res},TMP_Compiler_indent_19.$$arity=0);Opal.defn(self,"$with_temp",TMP_Compiler_with_temp_20=function $$with_temp(){var self=this,$iter=TMP_Compiler_with_temp_20.$$p,block=$iter||nil,tmp=nil,res=nil;if($iter)TMP_Compiler_with_temp_20.$$p=null;tmp=self.scope.$new_temp();res=Opal.yield1(block,tmp);self.scope.$queue_temp(tmp);return res},TMP_Compiler_with_temp_20.$$arity=0);Opal.defn(self,"$in_while",TMP_Compiler_in_while_21=function $$in_while(){var TMP_22,self=this,$iter=TMP_Compiler_in_while_21.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_Compiler_in_while_21.$$p=null;if($yield!==nil){}else{return nil}self.while_loop=self.scope.$push_while();result=$send(self,"indent",[],(TMP_22=function(){var self=TMP_22.$$s||this;return Opal.yieldX($yield,[])},TMP_22.$$s=self,TMP_22.$$arity=0,TMP_22));self.scope.$pop_while();return result},TMP_Compiler_in_while_21.$$arity=0);Opal.defn(self,"$in_ensure",TMP_Compiler_in_ensure_23=function $$in_ensure(){var self=this,$iter=TMP_Compiler_in_ensure_23.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_Compiler_in_ensure_23.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},TMP_Compiler_in_ensure_23.$$arity=0);Opal.defn(self,"$in_ensure?",TMP_Compiler_in_ensure$q_24=function(){var self=this;return self.in_ensure["$!"]()["$!"]()},TMP_Compiler_in_ensure$q_24.$$arity=0);Opal.defn(self,"$in_case",TMP_Compiler_in_case_25=function $$in_case(){var self=this,$iter=TMP_Compiler_in_case_25.$$p,$yield=$iter||nil,old=nil;if($iter)TMP_Compiler_in_case_25.$$p=null;if($yield!==nil){}else{return nil}old=self.case_stmt;self.case_stmt=$hash2([],{});Opal.yieldX($yield,[]);return self.case_stmt=old},TMP_Compiler_in_case_25.$$arity=0);Opal.defn(self,"$in_while?",TMP_Compiler_in_while$q_26=function(){var self=this;return self.scope["$in_while?"]()},TMP_Compiler_in_while$q_26.$$arity=0);Opal.defn(self,"$process",TMP_Compiler_process_27=function $$process(sexp,level){var self=this,handler=nil;if(level==null){level="expr"}if(sexp["$=="](nil)){return self.$fragment("",self.$scope())}if($truthy(handler=self.$handlers()["$[]"](sexp.$type()))){return handler.$new(sexp,level,self).$compile_to_fragments()}else{return self.$error(""+"Unsupported sexp: "+sexp.$type())}},TMP_Compiler_process_27.$$arity=-2);Opal.defn(self,"$handlers",TMP_Compiler_handlers_28=function $$handlers(){var $a,self=this;return self.handlers=$truthy($a=self.handlers)?$a:Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"Base").$handlers()},TMP_Compiler_handlers_28.$$arity=0);Opal.defn(self,"$requires",TMP_Compiler_requires_29=function $$requires(){var $a,self=this;return self.requires=$truthy($a=self.requires)?$a:[]},TMP_Compiler_requires_29.$$arity=0);Opal.defn(self,"$required_trees",TMP_Compiler_required_trees_30=function $$required_trees(){var $a,self=this;return self.required_trees=$truthy($a=self.required_trees)?$a:[]},TMP_Compiler_required_trees_30.$$arity=0);Opal.defn(self,"$returns",TMP_Compiler_returns_35=function $$returns(sexp){var $a,$b,TMP_31,TMP_32,TMP_33,TMP_34,self=this,$case=nil,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,strs=nil,multiline=nil,first_child=nil,rest_children=nil,old_value=nil,cond=nil,true_body=nil,false_body=nil;if($truthy(sexp)){}else{return self.$returns(self.$s("nil"))}return function(){$case=sexp.$type();if("undef"["$==="]($case)){return self.$returns(self.$s("begin",sexp,self.$s("nil")))}else if("break"["$==="]($case)||"next"["$==="]($case)||"redo"["$==="]($case)){return sexp}else if("yield"["$==="]($case)){return sexp.$updated("returnable_yield",nil)}else if("when"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(when_sexp)).concat([self.$returns(then_sexp)]))}else if("rescue"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),body_sexp=$a[0]==null?nil:$a[0],$b=$a.length-1,$b=$b<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=$a[$b]==null?nil:$a[$b],$a;resbodies=$send(resbodies,"map",[],(TMP_31=function(resbody){var self=TMP_31.$$s||this;if(resbody==null)resbody=nil;return self.$returns(resbody)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));if($truthy(else_sexp)){else_sexp=self.$returns(else_sexp)}return sexp.$updated(nil,[self.$returns(body_sexp)].concat(Opal.to_a(resbodies)).concat([else_sexp]))}else if("resbody"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),klass=$a[0]==null?nil:$a[0],lvar=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[klass,lvar,self.$returns(body)])}else if("ensure"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),rescue_sexp=$a[0]==null?nil:$a[0],ensure_body=$a[1]==null?nil:$a[1],$a;sexp=sexp.$updated(nil,[self.$returns(rescue_sexp),ensure_body]);return self.$s("js_return",sexp)}else if("begin"["$==="]($case)||"kwbegin"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,rest=$slice.call($a,0,$b),last=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(rest)).concat([self.$returns(last)]))}else if("while"["$==="]($case)||"until"["$==="]($case)||"while_post"["$==="]($case)||"until_post"["$==="]($case)){return sexp}else if("return"["$==="]($case)||"js_return"["$==="]($case)||"returnable_yield"["$==="]($case)){return sexp}else if("xstr"["$==="]($case)){if($truthy(sexp.$children()["$any?"]())){strs=$send($send(sexp.$children(),"select",[],(TMP_32=function(child){var self=TMP_32.$$s||this;if(child==null)child=nil;return child.$type()["$=="]("str")},TMP_32.$$s=self,TMP_32.$$arity=1,TMP_32)),"map",[],(TMP_33=function(child){var self=TMP_33.$$s||this;if(child==null)child=nil;return child.$children()["$[]"](0)},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));multiline=$send(strs,"any?",[],(TMP_34=function(str){var self=TMP_34.$$s||this;if(str==null)str=nil;return str["$end_with?"](";\n")},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34));$a=[].concat(Opal.to_a(sexp)),first_child=$a[0]==null?nil:$a[0],rest_children=$slice.call($a,1),$a;if($truthy(multiline)){return sexp}else if(first_child.$type()["$=="]("str")){old_value=first_child.$children()["$[]"](0);if($truthy(old_value["$include?"]("return"))){return sexp}else{first_child=self.$s("js_return",first_child);return sexp.$updated(nil,[first_child].concat(Opal.to_a(rest_children)))}}else{return self.$s("js_return",sexp)}}else{return self.$returns(self.$s("str",""))}}else if("if"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),cond=$a[0]==null?nil:$a[0],true_body=$a[1]==null?nil:$a[1],false_body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[cond,self.$returns(true_body),self.$returns(false_body)])}else{return self.$s("js_return",sexp).$updated(nil,nil,$hash2(["location"],{location:sexp.$loc()}))}}()},TMP_Compiler_returns_35.$$arity=1);return(Opal.defn(self,"$handle_block_given_call",TMP_Compiler_handle_block_given_call_36=function $$handle_block_given_call(sexp){var $a,self=this,scope=nil;self.scope["$uses_block!"]();if($truthy(self.scope.$block_name())){return self.$fragment(""+"("+self.scope.$block_name()+" !== nil)",self.$scope(),sexp)}else if($truthy($truthy($a=scope=self.scope.$find_parent_def())?scope.$block_name():$a)){return self.$fragment(""+"("+scope.$block_name()+" !== nil)",scope,sexp)}else{return self.$fragment("false",scope,sexp)}},TMP_Compiler_handle_block_given_call_36.$$arity=1),nil)&&"handle_block_given_call"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/erb"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$require","$compile","$new","$fix_quotes","$find_contents","$find_code","$wrap_compiled","$require_erb","$prepared_source","$gsub","$+","$=~","$sub"]);self.$require("opal/compiler");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $ERB,self=$ERB=$module($base,"ERB");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ERB_compile_1;Opal.defs(self,"$compile",TMP_ERB_compile_1=function $$compile(source,file_name){var self=this;if(file_name==null){file_name="(erb)"}return Opal.const_get_relative($nesting,"Compiler").$new(source,file_name).$compile()},TMP_ERB_compile_1.$$arity=-2);(function($base,$super,$parent_nesting){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Compiler_initialize_2,TMP_Compiler_prepared_source_3,TMP_Compiler_compile_4,TMP_Compiler_fix_quotes_5,TMP_Compiler_require_erb_6,TMP_Compiler_find_contents_8,TMP_Compiler_find_code_10,TMP_Compiler_wrap_compiled_11;def.prepared_source=def.source=def.file_name=nil;Opal.const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/);Opal.defn(self,"$initialize",TMP_Compiler_initialize_2=function $$initialize(source,file_name){var $a,self=this;if(file_name==null){file_name="(erb)"}return $a=[source,file_name,source],self.source=$a[0],self.file_name=$a[1],self.result=$a[2],$a},TMP_Compiler_initialize_2.$$arity=-2);Opal.defn(self,"$prepared_source",TMP_Compiler_prepared_source_3=function $$prepared_source(){var $a,self=this,source=nil;return self.prepared_source=$truthy($a=self.prepared_source)?$a:(source=self.source,source=self.$fix_quotes(source),source=self.$find_contents(source),source=self.$find_code(source),source=self.$wrap_compiled(source),source=self.$require_erb(source),source)},TMP_Compiler_prepared_source_3.$$arity=0);Opal.defn(self,"$compile",TMP_Compiler_compile_4=function $$compile(){var self=this;return Opal.const_get_relative($nesting,"Opal").$compile(self.$prepared_source())},TMP_Compiler_compile_4.$$arity=0);Opal.defn(self,"$fix_quotes",TMP_Compiler_fix_quotes_5=function $$fix_quotes(result){var self=this;return result.$gsub('"','\\"')},TMP_Compiler_fix_quotes_5.$$arity=1);Opal.defn(self,"$require_erb",TMP_Compiler_require_erb_6=function $$require_erb(result){var self=this;return $rb_plus('require "erb";',result)},TMP_Compiler_require_erb_6.$$arity=1);Opal.defn(self,"$find_contents",TMP_Compiler_find_contents_8=function $$find_contents(result){var TMP_7,self=this;return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(TMP_7=function(){var self=TMP_7.$$s||this,$a,inner=nil;inner=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$gsub(/\\'/,"'").$gsub(/\\"/,'"');if($truthy(inner["$=~"](Opal.const_get_relative($nesting,"BLOCK_EXPR")))){return""+'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("'}else{return""+'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}},TMP_7.$$s=self,TMP_7.$$arity=0,TMP_7))},TMP_Compiler_find_contents_8.$$arity=1);Opal.defn(self,"$find_code",TMP_Compiler_find_code_10=function $$find_code(result){var TMP_9,self=this;return $send(result,"gsub",[/<%([\s\S]+?)%>/],(TMP_9=function(){var self=TMP_9.$$s||this,$a,inner=nil;inner=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$gsub(/\\"/,'"');return""+'")\n'+inner+'\noutput_buffer.append("'},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))},TMP_Compiler_find_code_10.$$arity=1);return(Opal.defn(self,"$wrap_compiled",TMP_Compiler_wrap_compiled_11=function $$wrap_compiled(result){var self=this,path=nil;path=self.file_name.$sub(new RegExp(""+"\\.opalerb"+Opal.const_get_relative($nesting,"REGEXP_END")),"");return result=""+"Template.new('"+path+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'},TMP_Compiler_wrap_compiled_11.$$arity=1),nil)&&"wrap_compiled"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$require","$coerce_to!","$merge","$compile","$eval"]);self.$require("opal/compiler");self.$require("opal/erb");self.$require("opal/version");(function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_eval_1,TMP_Kernel_require_remote_2;Opal.defn(self,"$eval",TMP_Kernel_eval_1=function(str){var self=this,default_eval_options=nil,compiling_options=nil,code=nil;str=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](str,Opal.const_get_relative($nesting,"String"),"to_str");default_eval_options=$hash2(["file","eval"],{file:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);code=Opal.const_get_relative($nesting,"Opal").$compile(str,compiling_options);return function(self){return eval(code)}(self)},TMP_Kernel_eval_1.$$arity=1);Opal.defn(self,"$require_remote",TMP_Kernel_require_remote_2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_Kernel_require_remote_2.$$arity=1)})($nesting[0],$nesting);Opal.compile=function(str,options){if(options){options=Opal.hash(options)}return Opal.Opal.$compile(str,options)};Opal["eval"]=function(str,options){return eval(Opal.compile(str,options))};function run_ruby_scripts(){var tag,tags=document.getElementsByTagName("script");for(var i=0,len=tags.length;i>","$exception?","$[]","$resolved?","$rejected?","$error","$include?","$action","$realized?","$raise","$^","$call","$resolve!","$exception!","$any?","$each","$reject!","$there_can_be_only_one!","$then","$to_proc","$fail","$always","$trace","$class","$object_id","$+","$inspect","$act?","$nil?","$prev","$push","$concat","$it","$proc","$reverse","$pop","$<=","$length","$shift","$-","$wait","$map","$reduce","$try","$tap","$all?","$find"]);return function($base,$super,$parent_nesting){function $Promise(){}var self=$Promise=$klass($base,$super,"Promise",$Promise);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Promise_value_1,TMP_Promise_error_2,TMP_Promise_when_3,TMP_Promise_initialize_4,TMP_Promise_value_5,TMP_Promise_act$q_6,TMP_Promise_action_7,TMP_Promise_exception$q_8,TMP_Promise_realized$q_9,TMP_Promise_resolved$q_10,TMP_Promise_rejected$q_11,TMP_Promise_$_12,TMP_Promise_$lt$lt_13,TMP_Promise_$gt$gt_14,TMP_Promise_resolve_15,TMP_Promise_resolve$B_17,TMP_Promise_reject_18,TMP_Promise_reject$B_20,TMP_Promise_exception$B_21,TMP_Promise_then_22,TMP_Promise_then$B_23,TMP_Promise_fail_24,TMP_Promise_fail$B_25,TMP_Promise_always_26,TMP_Promise_always$B_27,TMP_Promise_trace_28,TMP_Promise_trace$B_29,TMP_Promise_there_can_be_only_one$B_30,TMP_Promise_inspect_31;def.value=def.action=def.exception=def.realized=def.next=def.delayed=def.error=def.prev=nil;Opal.defs(self,"$value",TMP_Promise_value_1=function $$value(value){var self=this;return self.$new().$resolve(value)},TMP_Promise_value_1.$$arity=1);Opal.defs(self,"$error",TMP_Promise_error_2=function $$error(value){var self=this;return self.$new().$reject(value)},TMP_Promise_error_2.$$arity=1);Opal.defs(self,"$when",TMP_Promise_when_3=function $$when($a_rest){var self=this,promises;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}promises=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){promises[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"When").$new(promises)},TMP_Promise_when_3.$$arity=-1);self.$attr_reader("error","prev","next");Opal.defn(self,"$initialize",TMP_Promise_initialize_4=function $$initialize(action){var self=this;if(action==null){action=$hash2([],{})}self.action=action;self.realized=false;self.exception=false;self.value=nil;self.error=nil;self.delayed=false;self.prev=nil;return self.next=[]},TMP_Promise_initialize_4.$$arity=-1);Opal.defn(self,"$value",TMP_Promise_value_5=function $$value(){var self=this;if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](self.value))){return self.value.$value()}else{return self.value}},TMP_Promise_value_5.$$arity=0);Opal.defn(self,"$act?",TMP_Promise_act$q_6=function(){var $a,self=this;return $truthy($a=self.action["$has_key?"]("success"))?$a:self.action["$has_key?"]("always")},TMP_Promise_act$q_6.$$arity=0);Opal.defn(self,"$action",TMP_Promise_action_7=function $$action(){var self=this;return self.action.$keys()},TMP_Promise_action_7.$$arity=0);Opal.defn(self,"$exception?",TMP_Promise_exception$q_8=function(){var self=this;return self.exception},TMP_Promise_exception$q_8.$$arity=0);Opal.defn(self,"$realized?",TMP_Promise_realized$q_9=function(){var self=this;return self.realized["$!"]()["$!"]()},TMP_Promise_realized$q_9.$$arity=0);Opal.defn(self,"$resolved?",TMP_Promise_resolved$q_10=function(){var self=this;return self.realized["$=="]("resolve")},TMP_Promise_resolved$q_10.$$arity=0);Opal.defn(self,"$rejected?",TMP_Promise_rejected$q_11=function(){var self=this;return self.realized["$=="]("reject")},TMP_Promise_rejected$q_11.$$arity=0);Opal.defn(self,"$^",TMP_Promise_$_12=function(promise){var self=this;promise["$<<"](self);self["$>>"](promise);return promise},TMP_Promise_$_12.$$arity=1);Opal.defn(self,"$<<",TMP_Promise_$lt$lt_13=function(promise){var self=this;self.prev=promise;return self},TMP_Promise_$lt$lt_13.$$arity=1);Opal.defn(self,"$>>",TMP_Promise_$gt$gt_14=function(promise){var $a,self=this;self.next["$<<"](promise);if($truthy(self["$exception?"]())){promise.$reject(self.delayed["$[]"](0))}else if($truthy(self["$resolved?"]())){promise.$resolve(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$value()}return nil}())}else if($truthy(self["$rejected?"]())){if($truthy($truthy($a=self.action["$has_key?"]("failure")["$!"]())?$a:Opal.const_get_relative($nesting,"Promise")["$==="](function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.error}return nil}()))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}else if($truthy(promise.$action()["$include?"]("always"))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}}return self},TMP_Promise_$gt$gt_14.$$arity=1);Opal.defn(self,"$resolve",TMP_Promise_resolve_15=function $$resolve(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{if($truthy(block=$truthy($a=self.action["$[]"]("success"))?$a:self.action["$[]"]("always"))){value=block.$call(value)}self["$resolve!"](value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},TMP_Promise_resolve_15.$$arity=-1);Opal.defn(self,"$resolve!",TMP_Promise_resolve$B_17=function(value){var TMP_16,self=this;self.realized="resolve";self.value=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],(TMP_16=function(p){var self=TMP_16.$$s||this;if(p==null)p=nil;return p.$resolve(value)},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16))}else{return self.delayed=[value]}},TMP_Promise_resolve$B_17.$$arity=1);Opal.defn(self,"$reject",TMP_Promise_reject_18=function $$reject(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{if($truthy(block=$truthy($a=self.action["$[]"]("failure"))?$a:self.action["$[]"]("always"))){value=block.$call(value)}if($truthy(self.action["$has_key?"]("always"))){self["$resolve!"](value)}else{self["$reject!"](value)}}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},TMP_Promise_reject_18.$$arity=-1);Opal.defn(self,"$reject!",TMP_Promise_reject$B_20=function(value){var TMP_19,self=this;self.realized="reject";self.error=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],(TMP_19=function(p){var self=TMP_19.$$s||this;if(p==null)p=nil;return p.$reject(value)},TMP_19.$$s=self,TMP_19.$$arity=1,TMP_19))}else{return self.delayed=[value]}},TMP_Promise_reject$B_20.$$arity=1);Opal.defn(self,"$exception!",TMP_Promise_exception$B_21=function(error){var self=this;self.exception=true;return self["$reject!"](error)},TMP_Promise_exception$B_21.$$arity=1);Opal.defn(self,"$then",TMP_Promise_then_22=function $$then(){var self=this,$iter=TMP_Promise_then_22.$$p,block=$iter||nil;if($iter)TMP_Promise_then_22.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["success"],{success:block})))},TMP_Promise_then_22.$$arity=0);Opal.defn(self,"$then!",TMP_Promise_then$B_23=function(){var self=this,$iter=TMP_Promise_then$B_23.$$p,block=$iter||nil;if($iter)TMP_Promise_then$B_23.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"then",[],block.$to_proc())},TMP_Promise_then$B_23.$$arity=0);Opal.alias(self,"do","then");Opal.alias(self,"do!","then!");Opal.defn(self,"$fail",TMP_Promise_fail_24=function $$fail(){var self=this,$iter=TMP_Promise_fail_24.$$p,block=$iter||nil;if($iter)TMP_Promise_fail_24.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["failure"],{failure:block})))},TMP_Promise_fail_24.$$arity=0);Opal.defn(self,"$fail!",TMP_Promise_fail$B_25=function(){var self=this,$iter=TMP_Promise_fail$B_25.$$p,block=$iter||nil;if($iter)TMP_Promise_fail$B_25.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"fail",[],block.$to_proc())},TMP_Promise_fail$B_25.$$arity=0);Opal.alias(self,"rescue","fail");Opal.alias(self,"catch","fail");Opal.alias(self,"rescue!","fail!");Opal.alias(self,"catch!","fail!");Opal.defn(self,"$always",TMP_Promise_always_26=function $$always(){var self=this,$iter=TMP_Promise_always_26.$$p,block=$iter||nil;if($iter)TMP_Promise_always_26.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["always"],{always:block})))},TMP_Promise_always_26.$$arity=0);Opal.defn(self,"$always!",TMP_Promise_always$B_27=function(){var self=this,$iter=TMP_Promise_always$B_27.$$p,block=$iter||nil;if($iter)TMP_Promise_always$B_27.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"always",[],block.$to_proc())},TMP_Promise_always$B_27.$$arity=0);Opal.alias(self,"finally","always");Opal.alias(self,"ensure","always");Opal.alias(self,"finally!","always!");Opal.alias(self,"ensure!","always!");Opal.defn(self,"$trace",TMP_Promise_trace_28=function $$trace(depth){var self=this,$iter=TMP_Promise_trace_28.$$p,block=$iter||nil;if(depth==null){depth=nil}if($iter)TMP_Promise_trace_28.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Trace").$new(depth,block))},TMP_Promise_trace_28.$$arity=-1);Opal.defn(self,"$trace!",TMP_Promise_trace$B_29=function($a_rest){var self=this,args,$iter=TMP_Promise_trace$B_29.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Promise_trace$B_29.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"trace",Opal.to_a(args),block.$to_proc())},TMP_Promise_trace$B_29.$$arity=-1);Opal.defn(self,"$there_can_be_only_one!",TMP_Promise_there_can_be_only_one$B_30=function(){var self=this;if($truthy(self.next["$any?"]())){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"a promise has already been chained")}else{return nil}},TMP_Promise_there_can_be_only_one$B_30.$$arity=0);Opal.defn(self,"$inspect",TMP_Promise_inspect_31=function $$inspect(){var $a,self=this,result=nil;result=""+"#<"+self.$class()+"("+self.$object_id()+")";if($truthy(self.next["$any?"]())){result=$rb_plus(result,""+" >> "+self.next.$inspect())}if($truthy(self["$realized?"]())){result=$rb_plus(result,""+": "+($truthy($a=self.value)?$a:self.error).$inspect()+">")}else{result=$rb_plus(result,">")}return result},TMP_Promise_inspect_31.$$arity=0);(function($base,$super,$parent_nesting){function $Trace(){}var self=$Trace=$klass($base,$super,"Trace",$Trace);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Trace_it_32,TMP_Trace_initialize_33;Opal.defs(self,"$it",TMP_Trace_it_32=function $$it(promise){var $a,self=this,current=nil,prev=nil;current=[];if($truthy($truthy($a=promise["$act?"]())?$a:promise.$prev()["$nil?"]())){current.$push(promise.$value())}if($truthy(prev=promise.$prev())){return current.$concat(self.$it(prev))}else{return current}},TMP_Trace_it_32.$$arity=1);return(Opal.defn(self,"$initialize",TMP_Trace_initialize_33=function $$initialize(depth,block){var TMP_34,self=this,$iter=TMP_Trace_initialize_33.$$p,$yield=$iter||nil;if($iter)TMP_Trace_initialize_33.$$p=null;self.depth=depth;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Trace_initialize_33,false),[$hash2(["success"],{success:$send(self,"proc",[],(TMP_34=function(){var self=TMP_34.$$s||this,$a,trace=nil;trace=Opal.const_get_relative($nesting,"Trace").$it(self).$reverse();trace.$pop();if($truthy($truthy($a=depth)?$rb_le(depth,trace.$length()):$a)){trace.$shift($rb_minus(trace.$length(),depth))}return $send(block,"call",Opal.to_a(trace))},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))})],null)},TMP_Trace_initialize_33.$$arity=2),nil)&&"initialize"})($nesting[0],self,$nesting);return function($base,$super,$parent_nesting){function $When(){}var self=$When=$klass($base,$super,"When",$When);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_When_initialize_35,TMP_When_each_37,TMP_When_collect_39,TMP_When_inject_41,TMP_When_wait_44,TMP_When_$gt$gt_45,TMP_When_try_47;def.wait=nil;Opal.defn(self,"$initialize",TMP_When_initialize_35=function $$initialize(promises){var TMP_36,self=this,$iter=TMP_When_initialize_35.$$p,$yield=$iter||nil;if(promises==null){promises=[]}if($iter)TMP_When_initialize_35.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_When_initialize_35,false),[],null);self.wait=[];return $send(promises,"each",[],(TMP_36=function(promise){var self=TMP_36.$$s||this;if(promise==null)promise=nil;return self.$wait(promise)},TMP_36.$$s=self,TMP_36.$$arity=1,TMP_36))},TMP_When_initialize_35.$$arity=-1);Opal.defn(self,"$each",TMP_When_each_37=function $$each(){var TMP_38,self=this,$iter=TMP_When_each_37.$$p,block=$iter||nil;if($iter)TMP_When_each_37.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],(TMP_38=function(values){var self=TMP_38.$$s||this;if(values==null)values=nil;return $send(values,"each",[],block.$to_proc())},TMP_38.$$s=self,TMP_38.$$arity=1,TMP_38))},TMP_When_each_37.$$arity=0);Opal.defn(self,"$collect",TMP_When_collect_39=function $$collect(){var TMP_40,self=this,$iter=TMP_When_collect_39.$$p,block=$iter||nil;if($iter)TMP_When_collect_39.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],(TMP_40=function(values){var self=TMP_40.$$s||this;if(values==null)values=nil;return Opal.const_get_relative($nesting,"When").$new($send(values,"map",[],block.$to_proc()))},TMP_40.$$s=self,TMP_40.$$arity=1,TMP_40))},TMP_When_collect_39.$$arity=0);Opal.defn(self,"$inject",TMP_When_inject_41=function $$inject($a_rest){var TMP_42,self=this,args,$iter=TMP_When_inject_41.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_When_inject_41.$$p=null;return $send(self,"then",[],(TMP_42=function(values){var self=TMP_42.$$s||this;if(values==null)values=nil;return $send(values,"reduce",Opal.to_a(args),block.$to_proc())},TMP_42.$$s=self,TMP_42.$$arity=1,TMP_42))},TMP_When_inject_41.$$arity=-1);Opal.alias(self,"map","collect");Opal.alias(self,"reduce","inject");Opal.defn(self,"$wait",TMP_When_wait_44=function $$wait(promise){var TMP_43,self=this;if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](promise))){}else{promise=Opal.const_get_relative($nesting,"Promise").$value(promise)}if($truthy(promise["$act?"]())){promise=promise.$then()}self.wait["$<<"](promise);$send(promise,"always",[],(TMP_43=function(){var self=TMP_43.$$s||this;if(self.next==null)self.next=nil;if($truthy(self.next["$any?"]())){return self.$try()}else{return nil}},TMP_43.$$s=self,TMP_43.$$arity=0,TMP_43));return self},TMP_When_wait_44.$$arity=1);Opal.alias(self,"and","wait");Opal.defn(self,"$>>",TMP_When_$gt$gt_45=function($a_rest){var TMP_46,self=this,$iter=TMP_When_$gt$gt_45.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_When_$gt$gt_45.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $send($send(self,Opal.find_super_dispatcher(self,">>",TMP_When_$gt$gt_45,false),$zuper,$iter),"tap",[],(TMP_46=function(){var self=TMP_46.$$s||this;return self.$try()},TMP_46.$$s=self,TMP_46.$$arity=0,TMP_46))},TMP_When_$gt$gt_45.$$arity=-1);return(Opal.defn(self,"$try",TMP_When_try_47=function(){var self=this,promise=nil;if($truthy($send(self.wait,"all?",[],"realized?".$to_proc()))){if($truthy(promise=$send(self.wait,"find",[],"rejected?".$to_proc()))){return self.$reject(promise.$error())}else{return self.$resolve($send(self.wait,"map",[],"value".$to_proc()))}}else{return nil}},TMP_When_try_47.$$arity=0),nil)&&"try"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["time"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$strftime"]);return function($base,$super,$parent_nesting){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Time_parse_1,TMP_Time_iso8601_2;Opal.defs(self,"$parse",TMP_Time_parse_1=function $$parse(str){var self=this;return new Date(Date.parse(str))},TMP_Time_parse_1.$$arity=1);return(Opal.defn(self,"$iso8601",TMP_Time_iso8601_2=function $$iso8601(){var self=this;return self.$strftime("%FT%T%z")},TMP_Time_iso8601_2.$$arity=0),nil)&&"iso8601"}($nesting[0],null,$nesting)};Opal.modules["dxopal/patches/require_remote"]=function(Opal){var TMP_require_remote_1,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require","$eval"]);self.$require("opal-parser");return(Opal.defn(Opal.Object,"$require_remote",TMP_require_remote_1=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.overrideMimeType("text/plain");r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_require_remote_1.$$arity=1),nil)&&"require_remote"};Opal.modules["dxopal/patches/require_dxopal"]=function(Opal){var TMP_require_1,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send;Opal.add_stubs(["$==","$dxopal_orig_require"]);(function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"dxopal_orig_require","require")})($nesting[0],$nesting);return(Opal.defn(Opal.Object,"$require",TMP_require_1=function $$require($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(args["$=="](["dxopal"])){return nil}else{return $send(self,"dxopal_orig_require",Opal.to_a(args))}},TMP_require_1.$$arity=-1),nil)&&"require"};(function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var TMP_console_1,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$call","$name","$class","$Array","$backtrace","$raise","$new","$[]=","$-","$join","$sort","$keys","$>=","$[]","$inspect","$+"]);self.$require("opal");self.$require("console");Opal.defn(Opal.Object,"$console",TMP_console_1=function $$console(){var self=this;if($gvars.console==null)$gvars.console=nil;return $gvars.console},TMP_console_1.$$arity=0);self.$require("dxopal/constants/colors");self.$require("dxopal/font");self.$require("dxopal/input");self.$require("dxopal/input/key_codes");self.$require("dxopal/image");self.$require("dxopal/sound");self.$require("dxopal/sound_effect");self.$require("dxopal/sprite");self.$require("dxopal/window");self.$require("dxopal/version");self.$require("opal-parser");self.$require("singleton");self.$require("delegate");self.$require("forwardable");self.$require("pp");self.$require("promise");self.$require("set");self.$require("time");self.$require("dxopal/patches/require_remote");self.$require("dxopal/patches/require_dxopal");(function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DXOpal_dump_error_2,TMP_DXOpal_3,TMP_DXOpal_p__4;self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Constants"),"Colors"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Input"),"KeyCodes"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Input"),"MouseCodes"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"SoundEffect"),"WaveTypes"));Opal.defs(self,"$dump_error",TMP_DXOpal_dump_error_2=function $$dump_error(){var self=this,$iter=TMP_DXOpal_dump_error_2.$$p,block=$iter||nil,ex=nil,div=nil;if($iter)TMP_DXOpal_dump_error_2.$$p=null;try{return block.$call()}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){ex=$err;try{div=document.getElementById("dxopal-errors");if($truthy(div&&!ex.DXOpalPrinted)){div.textContent="ERROR: "+ex.$class().$name();var ul=document.createElement("ul");self.$Array(ex.$backtrace()).forEach(function(line){var li=document.createElement("li");li.textContent=line;ul.appendChild(li)});div.appendChild(ul);ex.DXOpalPrinted=true}return self.$raise(ex)}finally{Opal.pop_exception()}}else{throw $err}}},TMP_DXOpal_dump_error_2.$$arity=0);Opal.const_set($nesting[0],"P_CT",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_DXOpal_3=function(h,k){var self=TMP_DXOpal_3.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,0];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_DXOpal_3.$$s=self,TMP_DXOpal_3.$$arity=2,TMP_DXOpal_3)));Opal.defn(self,"$p_",TMP_DXOpal_p__4=function $$p_(hash,n){var self=this,key=nil,$writer=nil;if(n==null){n=10}key=hash.$keys().$sort().$join();if($truthy($rb_ge(Opal.const_get_relative($nesting,"P_CT")["$[]"](key),n))){return nil}console.log(hash.$inspect());$writer=[key,$rb_plus(Opal.const_get_relative($nesting,"P_CT")["$[]"](key),1)];$send(Opal.const_get_relative($nesting,"P_CT"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_DXOpal_p__4.$$arity=-2)})($nesting[0],$nesting);(function(){var P_CT={};Opal.DXOpal.p_=function(key,obj,n){n=n||10;P_CT[key]=P_CT[key]||0;if(P_CT[key]=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars){result[cvar]=ancestor.$$cvars[cvar]}}return result};Opal.class_variable_set=function(module,name,value){var ancestors=Opal.ancestors(module),i,length=ancestors.length;for(i=length-2;i>=0;i--){var ancestor=ancestors[i];if($hasOwn.call(ancestor.$$cvars,name)){ancestor.$$cvars[name]=value;return value}}module.$$cvars[name]=value;return value};function isRoot(proto){return proto.hasOwnProperty("$$iclass")&&proto.hasOwnProperty("$$root")}function own_included_modules(module){var result=[],mod,proto=Object.getPrototypeOf(module.$$prototype);while(proto){if(proto.hasOwnProperty("$$class")){break}mod=protoToModule(proto);if(mod){result.push(mod)}proto=Object.getPrototypeOf(proto)}return result}function own_prepended_modules(module){var result=[],mod,proto=Object.getPrototypeOf(module.$$prototype);if(module.$$prototype.hasOwnProperty("$$dummy")){while(proto){if(proto===module.$$prototype.$$define_methods_on){break}mod=protoToModule(proto);if(mod){result.push(mod)}proto=Object.getPrototypeOf(proto)}}return result}Opal.append_features=function(module,includer){var module_ancestors=Opal.ancestors(module);var iclasses=[];if(module_ancestors.indexOf(includer)!==-1){throw Opal.ArgumentError.$new("cyclic include detected")}for(var i=0,length=module_ancestors.length;i1||(has_mlhs||has_trailing_comma)&&block.length===1){arg=Opal.to_ary(arg)}if((block.length>1||has_trailing_comma&&block.length===1)&&arg.$$is_array){return block.apply(null,arg)}else{return block(arg)}};Opal.yieldX=function(block,args){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&args.length===1){if(args[0].$$is_array){return block.apply(null,args[0])}}if(!args.$$is_array){var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i","$coerce_to!","$!=","$[]","$upcase"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting),$Opal_bridge$1,$Opal_type_error$2,$Opal_coerce_to$3,$Opal_coerce_to$excl$4,$Opal_coerce_to$ques$5,$Opal_try_convert$6,$Opal_compare$7,$Opal_destructure$8,$Opal_respond_to$ques$9,$Opal_inspect_obj$10,$Opal_instance_variable_name$excl$11,$Opal_class_variable_name$excl$12,$Opal_const_name$excl$13,$Opal_pristine$14;Opal.defs(self,"$bridge",$Opal_bridge$1=function $$bridge(constructor,klass){var self=this;return Opal.bridge(constructor,klass)},$Opal_bridge$1.$$arity=2);Opal.defs(self,"$type_error",$Opal_type_error$2=function $$type_error(object,type,method,coerced){var $a,self=this;if(method==null){method=nil}if(coerced==null){coerced=nil}if($truthy($truthy($a=method)?coerced:$a)){return $$($nesting,"TypeError").$new(""+"can't convert "+object.$class()+" into "+type+" ("+object.$class()+"#"+method+" gives "+coerced.$class()+")")}else{return $$($nesting,"TypeError").$new(""+"no implicit conversion of "+object.$class()+" into "+type)}},$Opal_type_error$2.$$arity=-3);Opal.defs(self,"$coerce_to",$Opal_coerce_to$3=function $$coerce_to(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){}else{self.$raise(self.$type_error(object,type))}return object.$__send__(method)},$Opal_coerce_to$3.$$arity=3);Opal.defs(self,"$coerce_to!",$Opal_coerce_to$excl$4=function(object,type,method){var self=this,coerced=nil;coerced=self.$coerce_to(object,type,method);if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},$Opal_coerce_to$excl$4.$$arity=3);Opal.defs(self,"$coerce_to?",$Opal_coerce_to$ques$5=function(object,type,method){var self=this,coerced=nil;if($truthy(object["$respond_to?"](method))){}else{return nil}coerced=self.$coerce_to(object,type,method);if($truthy(coerced["$nil?"]())){return nil}if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},$Opal_coerce_to$ques$5.$$arity=3);Opal.defs(self,"$try_convert",$Opal_try_convert$6=function $$try_convert(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){return object.$__send__(method)}else{return nil}},$Opal_try_convert$6.$$arity=3);Opal.defs(self,"$compare",$Opal_compare$7=function $$compare(a,b){var self=this,compare=nil;compare=a["$<=>"](b);if($truthy(compare===nil)){self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+a.$class()+" with "+b.$class()+" failed")}return compare},$Opal_compare$7.$$arity=2);Opal.defs(self,"$destructure",$Opal_destructure$8=function $$destructure(args){var self=this;if(args.length==1){return args[0]}else if(args.$$is_array){return args}else{var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i=0;i--){method_name=method_names[i];method=owner_class.$$prototype["$"+method_name];if(method&&!method.$$stub){method.$$pristine=true}}return nil},$Opal_pristine$14.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/module"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$lambda=Opal.lambda,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$module_eval","$to_proc","$===","$raise","$equal?","$<","$>","$nil?","$attr_reader","$attr_writer","$class_variable_name!","$new","$const_name!","$=~","$inject","$split","$const_get","$==","$!~","$start_with?","$bind","$call","$class","$append_features","$included","$name","$cover?","$size","$merge","$compile","$proc","$any?","$prepend_features","$prepended","$to_s","$__id__","$constants","$include?","$copy_class_variables","$copy_constants"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Module");var $nesting=[self].concat($parent_nesting),$Module_allocate$1,$Module_initialize$2,$Module_$eq_eq_eq$3,$Module_$lt$4,$Module_$lt_eq$5,$Module_$gt$6,$Module_$gt_eq$7,$Module_$lt_eq_gt$8,$Module_alias_method$9,$Module_alias_native$10,$Module_ancestors$11,$Module_append_features$12,$Module_attr_accessor$13,$Module_attr_reader$14,$Module_attr_writer$15,$Module_autoload$16,$Module_class_variables$17,$Module_class_variable_get$18,$Module_class_variable_set$19,$Module_class_variable_defined$ques$20,$Module_remove_class_variable$21,$Module_constants$22,$Module_constants$23,$Module_nesting$24,$Module_const_defined$ques$25,$Module_const_get$26,$Module_const_missing$28,$Module_const_set$29,$Module_public_constant$30,$Module_define_method$31,$Module_remove_method$33,$Module_singleton_class$ques$34,$Module_include$35,$Module_included_modules$36,$Module_include$ques$37,$Module_instance_method$38,$Module_instance_methods$39,$Module_included$40,$Module_extended$41,$Module_extend_object$42,$Module_method_added$43,$Module_method_removed$44,$Module_method_undefined$45,$Module_module_eval$46,$Module_module_exec$48,$Module_method_defined$ques$49,$Module_module_function$50,$Module_name$51,$Module_prepend$52,$Module_prepend_features$53,$Module_prepended$54,$Module_remove_const$55,$Module_to_s$56,$Module_undef_method$57,$Module_instance_variables$58,$Module_dup$59,$Module_copy_class_variables$60,$Module_copy_constants$61;Opal.defs(self,"$allocate",$Module_allocate$1=function $$allocate(){var self=this;var module=Opal.allocate_module(nil,function(){});if(self!==Opal.Module)Object.setPrototypeOf(module,self.$$prototype);return module},$Module_allocate$1.$$arity=0);Opal.def(self,"$initialize",$Module_initialize$2=function $$initialize(){var $iter=$Module_initialize$2.$$p,block=$iter||nil,self=this;if($iter)$Module_initialize$2.$$p=null;if($iter)$Module_initialize$2.$$p=null;if(block!==nil){return $send(self,"module_eval",[],block.$to_proc())}else{return nil}},$Module_initialize$2.$$arity=0);Opal.def(self,"$===",$Module_$eq_eq_eq$3=function(object){var self=this;if($truthy(object==null)){return false}return Opal.is_a(object,self)},$Module_$eq_eq_eq$3.$$arity=1);Opal.def(self,"$<",$Module_$lt$4=function(other){var self=this;if($truthy($$($nesting,"Module")["$==="](other))){}else{self.$raise($$($nesting,"TypeError"),"compared with non class/module")}var working=self,ancestors,i,length;if(working===other){return false}for(i=0,ancestors=Opal.ancestors(self),length=ancestors.length;i",$Module_$gt$6=function(other){var self=this;if($truthy($$($nesting,"Module")["$==="](other))){}else{self.$raise($$($nesting,"TypeError"),"compared with non class/module")}return $rb_lt(other,self)},$Module_$gt$6.$$arity=1);Opal.def(self,"$>=",$Module_$gt_eq$7=function(other){var $a,self=this;return $truthy($a=self["$equal?"](other))?$a:$rb_gt(self,other)},$Module_$gt_eq$7.$$arity=1);Opal.def(self,"$<=>",$Module_$lt_eq_gt$8=function(other){var self=this,lt=nil;if(self===other){return 0}if($truthy($$($nesting,"Module")["$==="](other))){}else{return nil}lt=$rb_lt(self,other);if($truthy(lt["$nil?"]())){return nil}if($truthy(lt)){return-1}else{return 1}},$Module_$lt_eq_gt$8.$$arity=1);Opal.def(self,"$alias_method",$Module_alias_method$9=function $$alias_method(newname,oldname){var self=this;Opal.alias(self,newname,oldname);return self},$Module_alias_method$9.$$arity=2);Opal.def(self,"$alias_native",$Module_alias_native$10=function $$alias_native(mid,jsid){var self=this;if(jsid==null){jsid=mid}Opal.alias_native(self,mid,jsid);return self},$Module_alias_native$10.$$arity=-2);Opal.def(self,"$ancestors",$Module_ancestors$11=function $$ancestors(){var self=this;return Opal.ancestors(self)},$Module_ancestors$11.$$arity=0);Opal.def(self,"$append_features",$Module_append_features$12=function $$append_features(includer){var self=this;Opal.append_features(self,includer);return self},$Module_append_features$12.$$arity=1);Opal.def(self,"$attr_accessor",$Module_attr_accessor$13=function $$attr_accessor($a){var $post_args,names,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;$send(self,"attr_reader",Opal.to_a(names));return $send(self,"attr_writer",Opal.to_a(names))},$Module_attr_accessor$13.$$arity=-1);Opal.alias(self,"attr","attr_accessor");Opal.def(self,"$attr_reader",$Module_attr_reader$14=function $$attr_reader($a){var $post_args,names,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;var proto=self.$$prototype;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name);var body=function(ivar){return function(){if(this[ivar]==null){return nil}else{return this[ivar]}}}(ivar);Opal.defineProperty(proto,ivar,nil);body.$$parameters=[];body.$$arity=0;Opal.defn(self,id,body)}return nil},$Module_attr_reader$14.$$arity=-1);Opal.def(self,"$attr_writer",$Module_attr_writer$15=function $$attr_writer($a){var $post_args,names,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;var proto=self.$$prototype;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name);var body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]];body.$$arity=1;Opal.defineProperty(proto,ivar,nil);Opal.defn(self,id,body)}return nil},$Module_attr_writer$15.$$arity=-1);Opal.def(self,"$autoload",$Module_autoload$16=function $$autoload(const$,path){var self=this;if(self.$$autoload==null)self.$$autoload={};Opal.const_cache_version++;self.$$autoload[const$]=path;return nil},$Module_autoload$16.$$arity=2);Opal.def(self,"$class_variables",$Module_class_variables$17=function $$class_variables(){var self=this;return Object.keys(Opal.class_variables(self))},$Module_class_variables$17.$$arity=0);Opal.def(self,"$class_variable_get",$Module_class_variable_get$18=function $$class_variable_get(name){var self=this;name=$$($nesting,"Opal")["$class_variable_name!"](name);var value=Opal.class_variables(self)[name];if(value==null){self.$raise($$($nesting,"NameError").$new(""+"uninitialized class variable "+name+" in "+self,name))}return value},$Module_class_variable_get$18.$$arity=1);Opal.def(self,"$class_variable_set",$Module_class_variable_set$19=function $$class_variable_set(name,value){var self=this;name=$$($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variable_set(self,name,value)},$Module_class_variable_set$19.$$arity=2);Opal.def(self,"$class_variable_defined?",$Module_class_variable_defined$ques$20=function(name){var self=this;name=$$($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variables(self).hasOwnProperty(name)},$Module_class_variable_defined$ques$20.$$arity=1);Opal.def(self,"$remove_class_variable",$Module_remove_class_variable$21=function $$remove_class_variable(name){var self=this;name=$$($nesting,"Opal")["$class_variable_name!"](name);if(Opal.hasOwnProperty.call(self.$$cvars,name)){var value=self.$$cvars[name];delete self.$$cvars[name];return value}else{self.$raise($$($nesting,"NameError"),""+"cannot remove "+name+" for "+self)}},$Module_remove_class_variable$21.$$arity=1);Opal.def(self,"$constants",$Module_constants$22=function $$constants(inherit){var self=this;if(inherit==null){inherit=true}return Opal.constants(self,inherit)},$Module_constants$22.$$arity=-1);Opal.defs(self,"$constants",$Module_constants$23=function $$constants(inherit){var self=this;if(inherit==null){var nesting=(self.$$nesting||[]).concat(Opal.Object),constant,constants={},i,ii;for(i=0,ii=nesting.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise($$($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(self);mod.$included(self)}return self},$Module_include$35.$$arity=-1);Opal.def(self,"$included_modules",$Module_included_modules$36=function $$included_modules(){var self=this;return Opal.included_modules(self)},$Module_included_modules$36.$$arity=0);Opal.def(self,"$include?",$Module_include$ques$37=function(mod){var self=this;if(!mod.$$is_module){self.$raise($$($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}var i,ii,mod2,ancestors=Opal.ancestors(self);for(i=0,ii=ancestors.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise($$($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$prepend_features(self);mod.$prepended(self)}return self},$Module_prepend$52.$$arity=-1);Opal.def(self,"$prepend_features",$Module_prepend_features$53=function $$prepend_features(prepender){var self=this;if(!self.$$is_module){self.$raise($$($nesting,"TypeError"),""+"wrong argument type "+self.$class()+" (expected Module)")}Opal.prepend_features(self,prepender);return self},$Module_prepend_features$53.$$arity=1);Opal.def(self,"$prepended",$Module_prepended$54=function $$prepended(mod){var self=this;return nil},$Module_prepended$54.$$arity=1);Opal.def(self,"$remove_const",$Module_remove_const$55=function $$remove_const(name){var self=this;return Opal.const_remove(self,name)},$Module_remove_const$55.$$arity=1);Opal.def(self,"$to_s",$Module_to_s$56=function $$to_s(){var $a,self=this;return $truthy($a=Opal.Module.$name.call(self))?$a:""+"#<"+(self.$$is_module?"Module":"Class")+":0x"+self.$__id__().$to_s(16)+">"},$Module_to_s$56.$$arity=0);Opal.def(self,"$undef_method",$Module_undef_method$57=function $$undef_method($a){var $post_args,names,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;for(var i=0,length=names.length;i"}else if(singleton_of){return""+"#>"}return $send(self,Opal.find_super_dispatcher(self,"to_s",$Class_to_s$7,false),[],null)},$Class_to_s$7.$$arity=0),nil)&&"to_s"}($nesting[0],null,$nesting)};Opal.modules["corelib/basic_object"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$range=Opal.range,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$==","$!","$nil?","$cover?","$size","$raise","$merge","$compile","$proc","$any?","$inspect","$new"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BasicObject");var $nesting=[self].concat($parent_nesting),$BasicObject_initialize$1,$BasicObject_$eq_eq$2,$BasicObject_eql$ques$3,$BasicObject___id__$4,$BasicObject___send__$5,$BasicObject_$excl$6,$BasicObject_$not_eq$7,$BasicObject_instance_eval$8,$BasicObject_instance_exec$10,$BasicObject_singleton_method_added$11,$BasicObject_singleton_method_removed$12,$BasicObject_singleton_method_undefined$13,$BasicObject_class$14,$BasicObject_method_missing$15;Opal.def(self,"$initialize",$BasicObject_initialize$1=function $$initialize($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$BasicObject_initialize$1.$$arity=-1);Opal.def(self,"$==",$BasicObject_$eq_eq$2=function(other){var self=this;return self===other},$BasicObject_$eq_eq$2.$$arity=1);Opal.def(self,"$eql?",$BasicObject_eql$ques$3=function(other){var self=this;return self["$=="](other)},$BasicObject_eql$ques$3.$$arity=1);Opal.alias(self,"equal?","==");Opal.def(self,"$__id__",$BasicObject___id__$4=function $$__id__(){var self=this;if(self.$$id!=null){return self.$$id}Opal.defineProperty(self,"$$id",Opal.uid());return self.$$id},$BasicObject___id__$4.$$arity=0);Opal.def(self,"$__send__",$BasicObject___send__$5=function $$__send__(symbol,$a){var $iter=$BasicObject___send__$5.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$BasicObject___send__$5.$$p=null;if($iter)$BasicObject___send__$5.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var func=self["$"+symbol];if(func){if(block!==nil){func.$$p=block}return func.apply(self,args)}if(block!==nil){self.$method_missing.$$p=block}return self.$method_missing.apply(self,[symbol].concat(args))},$BasicObject___send__$5.$$arity=-2);Opal.def(self,"$!",$BasicObject_$excl$6=function(){var self=this;return false},$BasicObject_$excl$6.$$arity=0);Opal.def(self,"$!=",$BasicObject_$not_eq$7=function(other){var self=this;return self["$=="](other)["$!"]()},$BasicObject_$not_eq$7.$$arity=1);Opal.def(self,"$instance_eval",$BasicObject_instance_eval$8=function $$instance_eval($a){var $iter=$BasicObject_instance_eval$8.$$p,block=$iter||nil,$post_args,args,$b,$$9,self=this,string=nil,file=nil,_lineno=nil,default_eval_options=nil,compiling_options=nil,compiled=nil;if($iter)$BasicObject_instance_eval$8.$$p=null;if($iter)$BasicObject_instance_eval$8.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy($truthy($b=block["$nil?"]())?!!Opal.compile:$b)){if($truthy($range(1,3,false)["$cover?"](args.$size()))){}else{$$$("::","Kernel").$raise($$$("::","ArgumentError"),"wrong number of arguments (0 for 1..3)")}$b=[].concat(Opal.to_a(args)),string=$b[0]==null?nil:$b[0],file=$b[1]==null?nil:$b[1],_lineno=$b[2]==null?nil:$b[2],$b;default_eval_options=$hash2(["file","eval"],{file:$truthy($b=file)?$b:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);compiled=$$$("::","Opal").$compile(string,compiling_options);block=$send($$$("::","Kernel"),"proc",[],($$9=function(){var self=$$9.$$s||this;return function(self){return eval(compiled)}(self)},$$9.$$s=self,$$9.$$arity=0,$$9))}else if($truthy(args["$any?"]())){$$$("::","Kernel").$raise($$$("::","ArgumentError"),""+"wrong number of arguments ("+args.$size()+" for 0)")}var old=block.$$s,result;block.$$s=null;if(self.$$is_a_module){self.$$eval=true;try{result=block.call(self,self)}finally{self.$$eval=false}}else{result=block.call(self,self)}block.$$s=old;return result},$BasicObject_instance_eval$8.$$arity=-1);Opal.def(self,"$instance_exec",$BasicObject_instance_exec$10=function $$instance_exec($a){var $iter=$BasicObject_instance_exec$10.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$BasicObject_instance_exec$10.$$p=null;if($iter)$BasicObject_instance_exec$10.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy(block)){}else{$$$("::","Kernel").$raise($$$("::","ArgumentError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;if(self.$$is_a_module){self.$$eval=true;try{result=block.apply(self,args)}finally{self.$$eval=false}}else{result=block.apply(self,args)}block.$$s=block_self;return result},$BasicObject_instance_exec$10.$$arity=-1);Opal.def(self,"$singleton_method_added",$BasicObject_singleton_method_added$11=function $$singleton_method_added($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$BasicObject_singleton_method_added$11.$$arity=-1);Opal.def(self,"$singleton_method_removed",$BasicObject_singleton_method_removed$12=function $$singleton_method_removed($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$BasicObject_singleton_method_removed$12.$$arity=-1);Opal.def(self,"$singleton_method_undefined",$BasicObject_singleton_method_undefined$13=function $$singleton_method_undefined($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$BasicObject_singleton_method_undefined$13.$$arity=-1);Opal.def(self,"$class",$BasicObject_class$14=function(){var self=this;return self.$$class},$BasicObject_class$14.$$arity=0);return(Opal.def(self,"$method_missing",$BasicObject_method_missing$15=function $$method_missing(symbol,$a){var $iter=$BasicObject_method_missing$15.$$p,block=$iter||nil,$post_args,args,self=this,message=nil;if($iter)$BasicObject_method_missing$15.$$p=null;if($iter)$BasicObject_method_missing$15.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;message=function(){if($truthy(self.$inspect&&!self.$inspect.$$stub)){return""+"undefined method `"+symbol+"' for "+self.$inspect()+":"+self.$$class}else{return""+"undefined method `"+symbol+"' for "+self.$$class}return nil}();return $$$("::","Kernel").$raise($$$("::","NoMethodError").$new(message,symbol))},$BasicObject_method_missing$15.$$arity=-2),nil)&&"method_missing"}($nesting[0],null,$nesting)};Opal.modules["corelib/kernel"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$klass=Opal.klass;Opal.add_stubs(["$raise","$new","$inspect","$!","$=~","$==","$object_id","$class","$coerce_to?","$<<","$allocate","$copy_instance_variables","$copy_singleton_methods","$initialize_clone","$initialize_copy","$define_method","$singleton_class","$to_proc","$initialize_dup","$for","$empty?","$pop","$call","$coerce_to","$append_features","$extend_object","$extended","$__id__","$to_s","$instance_variable_name!","$respond_to?","$to_int","$coerce_to!","$Integer","$nil?","$===","$enum_for","$result","$any?","$print","$format","$puts","$each","$<=","$length","$[]","$exception","$is_a?","$rand","$respond_to_missing?","$try_convert!","$expand_path","$join","$start_with?","$new_seed","$srand","$sym","$arg","$open","$include"]);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_method_missing$1,$Kernel_$eq_tilde$2,$Kernel_$excl_tilde$3,$Kernel_$eq_eq_eq$4,$Kernel_$lt_eq_gt$5,$Kernel_method$6,$Kernel_methods$7,$Kernel_public_methods$8,$Kernel_Array$9,$Kernel_at_exit$10,$Kernel_caller$11,$Kernel_class$12,$Kernel_copy_instance_variables$13,$Kernel_copy_singleton_methods$14,$Kernel_clone$15,$Kernel_initialize_clone$16,$Kernel_define_singleton_method$17,$Kernel_dup$18,$Kernel_initialize_dup$19,$Kernel_enum_for$20,$Kernel_equal$ques$21,$Kernel_exit$22,$Kernel_extend$23,$Kernel_hash$24,$Kernel_initialize_copy$25,$Kernel_inspect$26,$Kernel_instance_of$ques$27,$Kernel_instance_variable_defined$ques$28,$Kernel_instance_variable_get$29,$Kernel_instance_variable_set$30,$Kernel_remove_instance_variable$31,$Kernel_instance_variables$32,$Kernel_Integer$33,$Kernel_Float$34,$Kernel_Hash$35,$Kernel_is_a$ques$36,$Kernel_itself$37,$Kernel_lambda$38,$Kernel_load$39,$Kernel_loop$40,$Kernel_nil$ques$42,$Kernel_printf$43,$Kernel_proc$44,$Kernel_puts$45,$Kernel_p$46,$Kernel_print$48,$Kernel_warn$49,$Kernel_raise$50,$Kernel_rand$51,$Kernel_respond_to$ques$52,$Kernel_respond_to_missing$ques$53,$Kernel_require$54,$Kernel_require_relative$55,$Kernel_require_tree$56,$Kernel_singleton_class$57,$Kernel_sleep$58,$Kernel_srand$59,$Kernel_String$60,$Kernel_tap$61,$Kernel_to_proc$62,$Kernel_to_s$63,$Kernel_catch$64,$Kernel_throw$65,$Kernel_open$66,$Kernel_yield_self$67;Opal.def(self,"$method_missing",$Kernel_method_missing$1=function $$method_missing(symbol,$a){var $iter=$Kernel_method_missing$1.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Kernel_method_missing$1.$$p=null;if($iter)$Kernel_method_missing$1.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;return self.$raise($$($nesting,"NoMethodError").$new(""+"undefined method `"+symbol+"' for "+self.$inspect(),symbol,args))},$Kernel_method_missing$1.$$arity=-2);Opal.def(self,"$=~",$Kernel_$eq_tilde$2=function(obj){var self=this;return false},$Kernel_$eq_tilde$2.$$arity=1);Opal.def(self,"$!~",$Kernel_$excl_tilde$3=function(obj){var self=this;return self["$=~"](obj)["$!"]()},$Kernel_$excl_tilde$3.$$arity=1);Opal.def(self,"$===",$Kernel_$eq_eq_eq$4=function(other){var $a,self=this;return $truthy($a=self.$object_id()["$=="](other.$object_id()))?$a:self["$=="](other)},$Kernel_$eq_eq_eq$4.$$arity=1);Opal.def(self,"$<=>",$Kernel_$lt_eq_gt$5=function(other){var self=this;self.$$comparable=true;var x=self["$=="](other);if(x&&x!==nil){return 0}return nil},$Kernel_$lt_eq_gt$5.$$arity=1);Opal.def(self,"$method",$Kernel_method$6=function $$method(name){var self=this;var meth=self["$"+name];if(!meth||meth.$$stub){self.$raise($$($nesting,"NameError").$new(""+"undefined method `"+name+"' for class `"+self.$class()+"'",name))}return $$($nesting,"Method").$new(self,meth.$$owner||self.$class(),meth,name)},$Kernel_method$6.$$arity=1);Opal.def(self,"$methods",$Kernel_methods$7=function $$methods(all){var self=this;if(all==null){all=true}if($truthy(all)){return Opal.methods(self)}else{return Opal.own_methods(self)}},$Kernel_methods$7.$$arity=-1);Opal.def(self,"$public_methods",$Kernel_public_methods$8=function $$public_methods(all){var self=this;if(all==null){all=true}if($truthy(all)){return Opal.methods(self)}else{return Opal.receiver_methods(self)}},$Kernel_public_methods$8.$$arity=-1);Opal.def(self,"$Array",$Kernel_Array$9=function $$Array(object){var self=this;var coerced;if(object===nil){return[]}if(object.$$is_array){return object}coerced=$$($nesting,"Opal")["$coerce_to?"](object,$$($nesting,"Array"),"to_ary");if(coerced!==nil){return coerced}coerced=$$($nesting,"Opal")["$coerce_to?"](object,$$($nesting,"Array"),"to_a");if(coerced!==nil){return coerced}return[object]},$Kernel_Array$9.$$arity=1);Opal.def(self,"$at_exit",$Kernel_at_exit$10=function $$at_exit(){var $iter=$Kernel_at_exit$10.$$p,block=$iter||nil,$a,self=this;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if($iter)$Kernel_at_exit$10.$$p=null;if($iter)$Kernel_at_exit$10.$$p=null;$gvars.__at_exit__=$truthy($a=$gvars.__at_exit__)?$a:[];return $gvars.__at_exit__["$<<"](block)},$Kernel_at_exit$10.$$arity=0);Opal.def(self,"$caller",$Kernel_caller$11=function $$caller($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return[]},$Kernel_caller$11.$$arity=-1);Opal.def(self,"$class",$Kernel_class$12=function(){var self=this;return self.$$class},$Kernel_class$12.$$arity=0);Opal.def(self,"$copy_instance_variables",$Kernel_copy_instance_variables$13=function $$copy_instance_variables(other){var self=this;var keys=Object.keys(other),i,ii,name;for(i=0,ii=keys.length;i0){method=$post_args[0];$post_args.splice(0,1)}if(method==null){method="each"}args=$post_args;return $send($$($nesting,"Enumerator"),"for",[self,method].concat(Opal.to_a(args)),block.$to_proc())},$Kernel_enum_for$20.$$arity=-1);Opal.alias(self,"to_enum","enum_for");Opal.def(self,"$equal?",$Kernel_equal$ques$21=function(other){var self=this;return self===other},$Kernel_equal$ques$21.$$arity=1);Opal.def(self,"$exit",$Kernel_exit$22=function $$exit(status){var $a,self=this,block=nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if(status==null){status=true}$gvars.__at_exit__=$truthy($a=$gvars.__at_exit__)?$a:[];while(!$truthy($gvars.__at_exit__["$empty?"]())){block=$gvars.__at_exit__.$pop();block.$call()}if(status.$$is_boolean){status=status?0:1}else{status=$$($nesting,"Opal").$coerce_to(status,$$($nesting,"Integer"),"to_int")}Opal.exit(status);return nil},$Kernel_exit$22.$$arity=-1);Opal.def(self,"$extend",$Kernel_extend$23=function $$extend($a){var $post_args,mods,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);mods=$post_args;var singleton=self.$singleton_class();for(var i=mods.length-1;i>=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise($$($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(singleton);mod.$extend_object(self);mod.$extended(self)}return self},$Kernel_extend$23.$$arity=-1);Opal.def(self,"$hash",$Kernel_hash$24=function $$hash(){var self=this;return self.$__id__()},$Kernel_hash$24.$$arity=0);Opal.def(self,"$initialize_copy",$Kernel_initialize_copy$25=function $$initialize_copy(other){var self=this;return nil},$Kernel_initialize_copy$25.$$arity=1);Opal.def(self,"$inspect",$Kernel_inspect$26=function $$inspect(){var self=this;return self.$to_s()},$Kernel_inspect$26.$$arity=0);Opal.def(self,"$instance_of?",$Kernel_instance_of$ques$27=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise($$($nesting,"TypeError"),"class or module required")}return self.$$class===klass},$Kernel_instance_of$ques$27.$$arity=1);Opal.def(self,"$instance_variable_defined?",$Kernel_instance_variable_defined$ques$28=function(name){var self=this;name=$$($nesting,"Opal")["$instance_variable_name!"](name);return Opal.hasOwnProperty.call(self,name.substr(1))},$Kernel_instance_variable_defined$ques$28.$$arity=1);Opal.def(self,"$instance_variable_get",$Kernel_instance_variable_get$29=function $$instance_variable_get(name){var self=this;name=$$($nesting,"Opal")["$instance_variable_name!"](name);var ivar=self[Opal.ivar(name.substr(1))];return ivar==null?nil:ivar},$Kernel_instance_variable_get$29.$$arity=1);Opal.def(self,"$instance_variable_set",$Kernel_instance_variable_set$30=function $$instance_variable_set(name,value){var self=this;name=$$($nesting,"Opal")["$instance_variable_name!"](name);return self[Opal.ivar(name.substr(1))]=value},$Kernel_instance_variable_set$30.$$arity=2);Opal.def(self,"$remove_instance_variable",$Kernel_remove_instance_variable$31=function $$remove_instance_variable(name){var self=this;name=$$($nesting,"Opal")["$instance_variable_name!"](name);var key=Opal.ivar(name.substr(1)),val;if(self.hasOwnProperty(key)){val=self[key];delete self[key];return val}return self.$raise($$($nesting,"NameError"),""+"instance variable "+name+" not defined")},$Kernel_remove_instance_variable$31.$$arity=1);Opal.def(self,"$instance_variables",$Kernel_instance_variables$32=function $$instance_variables(){var self=this;var result=[],ivar;for(var name in self){if(self.hasOwnProperty(name)&&name.charAt(0)!=="$"){if(name.substr(-1)==="$"){ivar=name.slice(0,name.length-1)}else{ivar=name}result.push("@"+ivar)}}return result},$Kernel_instance_variables$32.$$arity=0);Opal.def(self,"$Integer",$Kernel_Integer$33=function $$Integer(value,base){var self=this;var i,str,base_digits;if(!value.$$is_string){if(base!==undefined){self.$raise($$($nesting,"ArgumentError"),"base specified for non string value")}if(value===nil){self.$raise($$($nesting,"TypeError"),"can't convert nil into Integer")}if(value.$$is_number){if(value===Infinity||value===-Infinity||isNaN(value)){self.$raise($$($nesting,"FloatDomainError"),value)}return Math.floor(value)}if(value["$respond_to?"]("to_int")){i=value.$to_int();if(i!==nil){return i}}return $$($nesting,"Opal")["$coerce_to!"](value,$$($nesting,"Integer"),"to_i")}if(value==="0"){return 0}if(base===undefined){base=0}else{base=$$($nesting,"Opal").$coerce_to(base,$$($nesting,"Integer"),"to_int");if(base===1||base<0||base>36){self.$raise($$($nesting,"ArgumentError"),""+"invalid radix "+base)}}str=value.toLowerCase();str=str.replace(/(\d)_(?=\d)/g,"$1");str=str.replace(/^(\s*[+-]?)(0[bodx]?)/,function(_,head,flag){switch(flag){case"0b":if(base===0||base===2){base=2;return head}case"0":case"0o":if(base===0||base===8){base=8;return head}case"0d":if(base===0||base===10){base=10;return head}case"0x":if(base===0||base===16){base=16;return head}}self.$raise($$($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')});base=base===0?10:base;base_digits="0-"+(base<=10?base-1:"9a-"+String.fromCharCode(97+(base-11)));if(!new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)){self.$raise($$($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}i=parseInt(str,base);if(isNaN(i)){self.$raise($$($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}return i},$Kernel_Integer$33.$$arity=-2);Opal.def(self,"$Float",$Kernel_Float$34=function $$Float(value){var self=this;var str;if(value===nil){self.$raise($$($nesting,"TypeError"),"can't convert nil into Float")}if(value.$$is_string){str=value.toString();str=str.replace(/(\d)_(?=\d)/g,"$1");if(/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)){return self.$Integer(str)}if(!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)){self.$raise($$($nesting,"ArgumentError"),""+'invalid value for Float(): "'+value+'"')}return parseFloat(str)}return $$($nesting,"Opal")["$coerce_to!"](value,$$($nesting,"Float"),"to_f")},$Kernel_Float$34.$$arity=1);Opal.def(self,"$Hash",$Kernel_Hash$35=function $$Hash(arg){var $a,self=this;if($truthy($truthy($a=arg["$nil?"]())?$a:arg["$=="]([]))){return $hash2([],{})}if($truthy($$($nesting,"Hash")["$==="](arg))){return arg}return $$($nesting,"Opal")["$coerce_to!"](arg,$$($nesting,"Hash"),"to_hash")},$Kernel_Hash$35.$$arity=1);Opal.def(self,"$is_a?",$Kernel_is_a$ques$36=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise($$($nesting,"TypeError"),"class or module required")}return Opal.is_a(self,klass)},$Kernel_is_a$ques$36.$$arity=1);Opal.def(self,"$itself",$Kernel_itself$37=function $$itself(){var self=this;return self},$Kernel_itself$37.$$arity=0);Opal.alias(self,"kind_of?","is_a?");Opal.def(self,"$lambda",$Kernel_lambda$38=function $$lambda(){var $iter=$Kernel_lambda$38.$$p,block=$iter||nil,self=this;if($iter)$Kernel_lambda$38.$$p=null;if($iter)$Kernel_lambda$38.$$p=null;return Opal.lambda(block)},$Kernel_lambda$38.$$arity=0);Opal.def(self,"$load",$Kernel_load$39=function $$load(file){var self=this;file=$$($nesting,"Opal")["$coerce_to!"](file,$$($nesting,"String"),"to_str");return Opal.load(file)},$Kernel_load$39.$$arity=1);Opal.def(self,"$loop",$Kernel_loop$40=function $$loop(){var $$41,$a,$iter=$Kernel_loop$40.$$p,$yield=$iter||nil,self=this,e=nil;if($iter)$Kernel_loop$40.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["loop"],($$41=function(){var self=$$41.$$s||this;return $$$($$($nesting,"Float"),"INFINITY")},$$41.$$s=self,$$41.$$arity=0,$$41))}while($truthy(true)){try{Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[$$($nesting,"StopIteration")])){e=$err;try{return e.$result()}finally{Opal.pop_exception()}}else{throw $err}}}return self},$Kernel_loop$40.$$arity=0);Opal.def(self,"$nil?",$Kernel_nil$ques$42=function(){var self=this;return false},$Kernel_nil$ques$42.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.def(self,"$printf",$Kernel_printf$43=function $$printf($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy(args["$any?"]())){self.$print($send(self,"format",Opal.to_a(args)))}return nil},$Kernel_printf$43.$$arity=-1);Opal.def(self,"$proc",$Kernel_proc$44=function $$proc(){var $iter=$Kernel_proc$44.$$p,block=$iter||nil,self=this;if($iter)$Kernel_proc$44.$$p=null;if($iter)$Kernel_proc$44.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to create Proc object without a block")}block.$$is_lambda=false;return block},$Kernel_proc$44.$$arity=0);Opal.def(self,"$puts",$Kernel_puts$45=function $$puts($a){var $post_args,strs,self=this;if($gvars.stdout==null)$gvars.stdout=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;return $send($gvars.stdout,"puts",Opal.to_a(strs))},$Kernel_puts$45.$$arity=-1);Opal.def(self,"$p",$Kernel_p$46=function $$p($a){var $post_args,args,$$47,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;$send(args,"each",[],($$47=function(obj){var self=$$47.$$s||this;if($gvars.stdout==null)$gvars.stdout=nil;if(obj==null){obj=nil}return $gvars.stdout.$puts(obj.$inspect())},$$47.$$s=self,$$47.$$arity=1,$$47));if($truthy($rb_le(args.$length(),1))){return args["$[]"](0)}else{return args}},$Kernel_p$46.$$arity=-1);Opal.def(self,"$print",$Kernel_print$48=function $$print($a){var $post_args,strs,self=this;if($gvars.stdout==null)$gvars.stdout=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;return $send($gvars.stdout,"print",Opal.to_a(strs))},$Kernel_print$48.$$arity=-1);Opal.def(self,"$warn",$Kernel_warn$49=function $$warn($a){var $post_args,strs,$b,self=this;if($gvars.VERBOSE==null)$gvars.VERBOSE=nil;if($gvars.stderr==null)$gvars.stderr=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;if($truthy($truthy($b=$gvars.VERBOSE["$nil?"]())?$b:strs["$empty?"]())){return nil}else{return $send($gvars.stderr,"puts",Opal.to_a(strs))}},$Kernel_warn$49.$$arity=-1);Opal.def(self,"$raise",$Kernel_raise$50=function $$raise(exception,string,_backtrace){var self=this;if($gvars["!"]==null)$gvars["!"]=nil;if(string==null){string=nil}if(_backtrace==null){_backtrace=nil}if(exception==null&&$gvars["!"]!==nil){throw $gvars["!"]}if(exception==null){exception=$$($nesting,"RuntimeError").$new()}else if(exception.$$is_string){exception=$$($nesting,"RuntimeError").$new(exception)}else if(exception.$$is_class&&exception["$respond_to?"]("exception")){exception=exception.$exception(string)}else if(exception["$is_a?"]($$($nesting,"Exception"))){}else{exception=$$($nesting,"TypeError").$new("exception class/object expected")}if($gvars["!"]!==nil){Opal.exceptions.push($gvars["!"])}$gvars["!"]=exception;throw exception},$Kernel_raise$50.$$arity=-1);Opal.alias(self,"fail","raise");Opal.def(self,"$rand",$Kernel_rand$51=function $$rand(max){var self=this;if(max===undefined){return $$$($$($nesting,"Random"),"DEFAULT").$rand()}if(max.$$is_number){if(max<0){max=Math.abs(max)}if(max%1!==0){max=max.$to_i()}if(max===0){max=undefined}}return $$$($$($nesting,"Random"),"DEFAULT").$rand(max)},$Kernel_rand$51.$$arity=-1);Opal.def(self,"$respond_to?",$Kernel_respond_to$ques$52=function(name,include_all){var self=this;if(include_all==null){include_all=false}if($truthy(self["$respond_to_missing?"](name,include_all))){return true}var body=self["$"+name];if(typeof body==="function"&&!body.$$stub){return true}return false},$Kernel_respond_to$ques$52.$$arity=-2);Opal.def(self,"$respond_to_missing?",$Kernel_respond_to_missing$ques$53=function(method_name,include_all){var self=this;if(include_all==null){include_all=false}return false},$Kernel_respond_to_missing$ques$53.$$arity=-2);Opal.def(self,"$require",$Kernel_require$54=function $$require(file){var self=this;file=$$($nesting,"Opal")["$coerce_to!"](file,$$($nesting,"String"),"to_str");return Opal.require(file)},$Kernel_require$54.$$arity=1);Opal.def(self,"$require_relative",$Kernel_require_relative$55=function $$require_relative(file){var self=this;$$($nesting,"Opal")["$try_convert!"](file,$$($nesting,"String"),"to_str");file=$$($nesting,"File").$expand_path($$($nesting,"File").$join(Opal.current_file,"..",file));return Opal.require(file)},$Kernel_require_relative$55.$$arity=1);Opal.def(self,"$require_tree",$Kernel_require_tree$56=function $$require_tree(path){var self=this;var result=[];path=$$($nesting,"File").$expand_path(path);path=Opal.normalize(path);if(path===".")path="";for(var name in Opal.modules){if(name["$start_with?"](path)){result.push([name,Opal.require(name)])}}return result},$Kernel_require_tree$56.$$arity=1);Opal.alias(self,"send","__send__");Opal.alias(self,"public_send","__send__");Opal.def(self,"$singleton_class",$Kernel_singleton_class$57=function $$singleton_class(){var self=this;return Opal.get_singleton_class(self)},$Kernel_singleton_class$57.$$arity=0);Opal.def(self,"$sleep",$Kernel_sleep$58=function $$sleep(seconds){var self=this;if(seconds==null){seconds=nil}if(seconds===nil){self.$raise($$($nesting,"TypeError"),"can't convert NilClass into time interval")}if(!seconds.$$is_number){self.$raise($$($nesting,"TypeError"),""+"can't convert "+seconds.$class()+" into time interval")}if(seconds<0){self.$raise($$($nesting,"ArgumentError"),"time interval must be positive")}var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date};var t=get_time();while(get_time()-t<=seconds*1e3);return seconds},$Kernel_sleep$58.$$arity=-1);Opal.def(self,"$srand",$Kernel_srand$59=function $$srand(seed){var self=this;if(seed==null){seed=$$($nesting,"Random").$new_seed()}return $$($nesting,"Random").$srand(seed)},$Kernel_srand$59.$$arity=-1);Opal.def(self,"$String",$Kernel_String$60=function $$String(str){var $a,self=this;return $truthy($a=$$($nesting,"Opal")["$coerce_to?"](str,$$($nesting,"String"),"to_str"))?$a:$$($nesting,"Opal")["$coerce_to!"](str,$$($nesting,"String"),"to_s")},$Kernel_String$60.$$arity=1);Opal.def(self,"$tap",$Kernel_tap$61=function $$tap(){var $iter=$Kernel_tap$61.$$p,block=$iter||nil,self=this;if($iter)$Kernel_tap$61.$$p=null;if($iter)$Kernel_tap$61.$$p=null;Opal.yield1(block,self);return self},$Kernel_tap$61.$$arity=0);Opal.def(self,"$to_proc",$Kernel_to_proc$62=function $$to_proc(){var self=this;return self},$Kernel_to_proc$62.$$arity=0);Opal.def(self,"$to_s",$Kernel_to_s$63=function $$to_s(){var self=this;return""+"#<"+self.$class()+":0x"+self.$__id__().$to_s(16)+">"},$Kernel_to_s$63.$$arity=0);Opal.def(self,"$catch",$Kernel_catch$64=function(sym){var $iter=$Kernel_catch$64.$$p,$yield=$iter||nil,self=this,e=nil;if($iter)$Kernel_catch$64.$$p=null;try{return Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[$$($nesting,"UncaughtThrowError")])){e=$err;try{if(e.$sym()["$=="](sym)){return e.$arg()}return self.$raise()}finally{Opal.pop_exception()}}else{throw $err}}},$Kernel_catch$64.$$arity=1);Opal.def(self,"$throw",$Kernel_throw$65=function($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return self.$raise($$($nesting,"UncaughtThrowError"),args)},$Kernel_throw$65.$$arity=-1);Opal.def(self,"$open",$Kernel_open$66=function $$open($a){var $iter=$Kernel_open$66.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Kernel_open$66.$$p=null;if($iter)$Kernel_open$66.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send($$($nesting,"File"),"open",Opal.to_a(args),block.$to_proc())},$Kernel_open$66.$$arity=-1);Opal.def(self,"$yield_self",$Kernel_yield_self$67=function $$yield_self(){var $$68,$iter=$Kernel_yield_self$67.$$p,$yield=$iter||nil,self=this;if($iter)$Kernel_yield_self$67.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["yield_self"],($$68=function(){var self=$$68.$$s||this;return 1},$$68.$$s=self,$$68.$$arity=0,$$68))}return Opal.yield1($yield,self)},$Kernel_yield_self$67.$$arity=0)})($nesting[0],$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Object");var $nesting=[self].concat($parent_nesting);return self.$include($$($nesting,"Kernel"))}($nesting[0],null,$nesting)};Opal.modules["corelib/error"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$new","$clone","$to_s","$empty?","$class","$raise","$+","$attr_reader","$[]","$>","$length","$inspect"]);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Exception");var $nesting=[self].concat($parent_nesting),$Exception_new$1,$Exception_exception$2,$Exception_initialize$3,$Exception_backtrace$4,$Exception_exception$5,$Exception_message$6,$Exception_inspect$7,$Exception_set_backtrace$8,$Exception_to_s$9;self.$$prototype.message=nil;var stack_trace_limit;Opal.defs(self,"$new",$Exception_new$1=function($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;var message=args.length>0?args[0]:nil;var error=new self.$$constructor(message);error.name=self.$$name;error.message=message;Opal.send(error,error.$initialize,args);if(Opal.config.enable_stack_trace&&Error.captureStackTrace){Error.captureStackTrace(error,stack_trace_limit)}return error},$Exception_new$1.$$arity=-1);stack_trace_limit=self.$new;Opal.defs(self,"$exception",$Exception_exception$2=function $$exception($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send(self,"new",Opal.to_a(args))},$Exception_exception$2.$$arity=-1);Opal.def(self,"$initialize",$Exception_initialize$3=function $$initialize($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return self.message=args.length>0?args[0]:nil},$Exception_initialize$3.$$arity=-1);Opal.def(self,"$backtrace",$Exception_backtrace$4=function $$backtrace(){var self=this;if(self.backtrace){return self.backtrace}var backtrace=self.stack;if(typeof backtrace==="string"){return backtrace.split("\n").slice(0,15)}else if(backtrace){return backtrace.slice(0,15)}return[]},$Exception_backtrace$4.$$arity=0);Opal.def(self,"$exception",$Exception_exception$5=function $$exception(str){var self=this;if(str==null){str=nil}if(str===nil||self===str){return self}var cloned=self.$clone();cloned.message=str;cloned.stack=self.stack;return cloned},$Exception_exception$5.$$arity=-1);Opal.def(self,"$message",$Exception_message$6=function $$message(){var self=this;return self.$to_s()},$Exception_message$6.$$arity=0);Opal.def(self,"$inspect",$Exception_inspect$7=function $$inspect(){var self=this,as_str=nil;as_str=self.$to_s();if($truthy(as_str["$empty?"]())){return self.$class().$to_s()}else{return""+"#<"+self.$class().$to_s()+": "+self.$to_s()+">"}},$Exception_inspect$7.$$arity=0);Opal.def(self,"$set_backtrace",$Exception_set_backtrace$8=function $$set_backtrace(backtrace){var self=this;var valid=true,i,ii;if(backtrace===nil){self.backtrace=nil;self.stack=""}else if(backtrace.$$is_string){self.backtrace=[backtrace];self.stack=backtrace}else{if(backtrace.$$is_array){for(i=0,ii=backtrace.length;irhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$raise","$name","$new","$>","$length","$Rational"]);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"NilClass");var $nesting=[self].concat($parent_nesting),$NilClass_$excl$2,$NilClass_$$3,$NilClass_$$4,$NilClass_$$5,$NilClass_$eq_eq$6,$NilClass_dup$7,$NilClass_clone$8,$NilClass_inspect$9,$NilClass_nil$ques$10,$NilClass_singleton_class$11,$NilClass_to_a$12,$NilClass_to_h$13,$NilClass_to_i$14,$NilClass_to_s$15,$NilClass_to_c$16,$NilClass_rationalize$17,$NilClass_to_r$18,$NilClass_instance_variables$19;self.$$prototype.$$meta=self;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$1;Opal.def(self,"$allocate",$allocate$1=function $$allocate(){var self=this;return self.$raise($$($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},$allocate$1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.def(self,"$!",$NilClass_$excl$2=function(){var self=this;return true},$NilClass_$excl$2.$$arity=0);Opal.def(self,"$&",$NilClass_$$3=function(other){var self=this;return false},$NilClass_$$3.$$arity=1);Opal.def(self,"$|",$NilClass_$$4=function(other){var self=this;return other!==false&&other!==nil},$NilClass_$$4.$$arity=1);Opal.def(self,"$^",$NilClass_$$5=function(other){var self=this;return other!==false&&other!==nil},$NilClass_$$5.$$arity=1);Opal.def(self,"$==",$NilClass_$eq_eq$6=function(other){var self=this;return other===nil},$NilClass_$eq_eq$6.$$arity=1);Opal.def(self,"$dup",$NilClass_dup$7=function $$dup(){var self=this;return nil},$NilClass_dup$7.$$arity=0);Opal.def(self,"$clone",$NilClass_clone$8=function $$clone($kwargs){var freeze,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return nil},$NilClass_clone$8.$$arity=-1);Opal.def(self,"$inspect",$NilClass_inspect$9=function $$inspect(){var self=this;return"nil"},$NilClass_inspect$9.$$arity=0);Opal.def(self,"$nil?",$NilClass_nil$ques$10=function(){var self=this;return true},$NilClass_nil$ques$10.$$arity=0);Opal.def(self,"$singleton_class",$NilClass_singleton_class$11=function $$singleton_class(){var self=this;return $$($nesting,"NilClass")},$NilClass_singleton_class$11.$$arity=0);Opal.def(self,"$to_a",$NilClass_to_a$12=function $$to_a(){var self=this;return[]},$NilClass_to_a$12.$$arity=0);Opal.def(self,"$to_h",$NilClass_to_h$13=function $$to_h(){var self=this;return Opal.hash()},$NilClass_to_h$13.$$arity=0);Opal.def(self,"$to_i",$NilClass_to_i$14=function $$to_i(){var self=this;return 0},$NilClass_to_i$14.$$arity=0);Opal.alias(self,"to_f","to_i");Opal.def(self,"$to_s",$NilClass_to_s$15=function $$to_s(){var self=this;return""},$NilClass_to_s$15.$$arity=0);Opal.def(self,"$to_c",$NilClass_to_c$16=function $$to_c(){var self=this;return $$($nesting,"Complex").$new(0,0)},$NilClass_to_c$16.$$arity=0);Opal.def(self,"$rationalize",$NilClass_rationalize$17=function $$rationalize($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy($rb_gt(args.$length(),1))){self.$raise($$($nesting,"ArgumentError"))}return self.$Rational(0,1)},$NilClass_rationalize$17.$$arity=-1);Opal.def(self,"$to_r",$NilClass_to_r$18=function $$to_r(){var self=this;return self.$Rational(0,1)},$NilClass_to_r$18.$$arity=0);return(Opal.def(self,"$instance_variables",$NilClass_instance_variables$19=function $$instance_variables(){var self=this;return[]},$NilClass_instance_variables$19.$$arity=0),nil)&&"instance_variables"})($nesting[0],null,$nesting);return Opal.const_set($nesting[0],"NIL",nil)};Opal.modules["corelib/boolean"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$raise","$name"]);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Boolean");var $nesting=[self].concat($parent_nesting),$Boolean___id__$2,$Boolean_$excl$3,$Boolean_$$4,$Boolean_$$5,$Boolean_$$6,$Boolean_$eq_eq$7,$Boolean_singleton_class$8,$Boolean_to_s$9,$Boolean_dup$10,$Boolean_clone$11;Opal.defineProperty(self.$$prototype,"$$is_boolean",true);Opal.defineProperty(self.$$prototype,"$$meta",self);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$1;Opal.def(self,"$allocate",$allocate$1=function $$allocate(){var self=this;return self.$raise($$($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},$allocate$1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.def(self,"$__id__",$Boolean___id__$2=function $$__id__(){var self=this;return self.valueOf()?2:0},$Boolean___id__$2.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.def(self,"$!",$Boolean_$excl$3=function(){var self=this;return self!=true},$Boolean_$excl$3.$$arity=0);Opal.def(self,"$&",$Boolean_$$4=function(other){var self=this;return self==true?other!==false&&other!==nil:false},$Boolean_$$4.$$arity=1);Opal.def(self,"$|",$Boolean_$$5=function(other){var self=this;return self==true?true:other!==false&&other!==nil},$Boolean_$$5.$$arity=1);Opal.def(self,"$^",$Boolean_$$6=function(other){var self=this;return self==true?other===false||other===nil:other!==false&&other!==nil},$Boolean_$$6.$$arity=1);Opal.def(self,"$==",$Boolean_$eq_eq$7=function(other){var self=this;return self==true===other.valueOf()},$Boolean_$eq_eq$7.$$arity=1);Opal.alias(self,"equal?","==");Opal.alias(self,"eql?","==");Opal.def(self,"$singleton_class",$Boolean_singleton_class$8=function $$singleton_class(){var self=this;return $$($nesting,"Boolean")},$Boolean_singleton_class$8.$$arity=0);Opal.def(self,"$to_s",$Boolean_to_s$9=function $$to_s(){var self=this;return self==true?"true":"false"},$Boolean_to_s$9.$$arity=0);Opal.def(self,"$dup",$Boolean_dup$10=function $$dup(){var self=this;return self},$Boolean_dup$10.$$arity=0);return(Opal.def(self,"$clone",$Boolean_clone$11=function $$clone($kwargs){var freeze,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},$Boolean_clone$11.$$arity=-1),nil)&&"clone"})($nesting[0],Boolean,$nesting);Opal.const_set($nesting[0],"TrueClass",$$($nesting,"Boolean"));Opal.const_set($nesting[0],"FalseClass",$$($nesting,"Boolean"));Opal.const_set($nesting[0],"TRUE",true);return Opal.const_set($nesting[0],"FALSE",false)};Opal.modules["corelib/comparable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$<","$===","$raise","$class","$equal?","$<=>"]);return function($base,$parent_nesting){var self=$module($base,"Comparable");var $nesting=[self].concat($parent_nesting),$Comparable_$eq_eq$1,$Comparable_$gt$2,$Comparable_$gt_eq$3,$Comparable_$lt$4,$Comparable_$lt_eq$5,$Comparable_between$ques$6,$Comparable_clamp$7,$case=nil;function normalize(what){if(Opal.is_a(what,Opal.Integer)){return what}if($rb_gt(what,0)){return 1}if($rb_lt(what,0)){return-1}return 0}function fail_comparison(lhs,rhs){var class_name;(function(){$case=rhs;if(nil["$==="]($case)||true["$==="]($case)||false["$==="]($case)||$$($nesting,"Integer")["$==="]($case)||$$($nesting,"Float")["$==="]($case)){return class_name=rhs.$inspect()}else{return class_name=rhs.$$class}})();self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+lhs.$class()+" with "+class_name+" failed")}Opal.def(self,"$==",$Comparable_$eq_eq$1=function(other){var self=this,cmp=nil;if($truthy(self["$equal?"](other))){return true}if(self["$<=>"]==Opal.Kernel["$<=>"]){return false}if(self.$$comparable){delete self.$$comparable;return false}if($truthy(cmp=self["$<=>"](other))){}else{return false}return normalize(cmp)==0},$Comparable_$eq_eq$1.$$arity=1);Opal.def(self,"$>",$Comparable_$gt$2=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{fail_comparison(self,other)}return normalize(cmp)>0},$Comparable_$gt$2.$$arity=1);Opal.def(self,"$>=",$Comparable_$gt_eq$3=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{fail_comparison(self,other)}return normalize(cmp)>=0},$Comparable_$gt_eq$3.$$arity=1);Opal.def(self,"$<",$Comparable_$lt$4=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{fail_comparison(self,other)}return normalize(cmp)<0},$Comparable_$lt$4.$$arity=1);Opal.def(self,"$<=",$Comparable_$lt_eq$5=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{fail_comparison(self,other)}return normalize(cmp)<=0},$Comparable_$lt_eq$5.$$arity=1);Opal.def(self,"$between?",$Comparable_between$ques$6=function(min,max){var self=this;if($rb_lt(self,min)){return false}if($rb_gt(self,max)){return false}return true},$Comparable_between$ques$6.$$arity=2);Opal.def(self,"$clamp",$Comparable_clamp$7=function $$clamp(min,max){var self=this,cmp=nil;cmp=min["$<=>"](max);if($truthy(cmp)){}else{fail_comparison(min,max)}if($truthy(normalize(cmp)>0)){self.$raise($$($nesting,"ArgumentError"),"min argument must be smaller than max argument")}if($truthy(normalize(self["$<=>"](min))<0)){return min}if($truthy(normalize(self["$<=>"](max))>0)){return max}return self},$Comparable_clamp$7.$$arity=2)}($nesting[0],$nesting)};Opal.modules["corelib/regexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$nil?","$[]","$raise","$escape","$options","$to_str","$new","$join","$coerce_to!","$!","$match","$coerce_to?","$begin","$coerce_to","$=~","$attr_reader","$===","$inspect","$to_a"]);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Regexp");var $nesting=[self].concat($parent_nesting),$Regexp_$eq_eq$6,$Regexp_$eq_eq_eq$7,$Regexp_$eq_tilde$8,$Regexp_inspect$9,$Regexp_match$10,$Regexp_match$ques$11,$Regexp_$$12,$Regexp_source$13,$Regexp_options$14,$Regexp_casefold$ques$15;Opal.const_set($nesting[0],"IGNORECASE",1);Opal.const_set($nesting[0],"EXTENDED",2);Opal.const_set($nesting[0],"MULTILINE",4);Opal.defineProperty(self.$$prototype,"$$is_regexp",true);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$1,$escape$2,$last_match$3,$union$4,$new$5;Opal.def(self,"$allocate",$allocate$1=function $$allocate(){var $iter=$allocate$1.$$p,$yield=$iter||nil,self=this,allocated=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$allocate$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}allocated=$send(self,Opal.find_super_dispatcher(self,"allocate",$allocate$1,false),$zuper,$iter);allocated.uninitialized=true;return allocated},$allocate$1.$$arity=0);Opal.def(self,"$escape",$escape$2=function $$escape(string){var self=this;return Opal.escape_regexp(string)},$escape$2.$$arity=1);Opal.def(self,"$last_match",$last_match$3=function $$last_match(n){var self=this;if($gvars["~"]==null)$gvars["~"]=nil;if(n==null){n=nil}if($truthy(n["$nil?"]())){return $gvars["~"]}else{return $gvars["~"]["$[]"](n)}},$last_match$3.$$arity=-1);Opal.alias(self,"quote","escape");Opal.def(self,"$union",$union$4=function $$union($a){var $post_args,parts,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);parts=$post_args;var is_first_part_array,quoted_validated,part,options,each_part_options;if(parts.length==0){return/(?!)/}if(parts.length==1&&parts[0].$$is_regexp){return parts[0]}is_first_part_array=parts[0].$$is_array;if(parts.length>1&&is_first_part_array){self.$raise($$($nesting,"TypeError"),"no implicit conversion of Array into String")}if(is_first_part_array){parts=parts[0]}options=undefined;quoted_validated=[];for(var i=0;i=pos){$gvars["~"]=$$($nesting,"MatchData").$new(re,md);return block===nil?$gvars["~"]:Opal.yield1(block,$gvars["~"])}re.lastIndex=md.index+1}},$Regexp_match$10.$$arity=-2);Opal.def(self,"$match?",$Regexp_match$ques$11=function(string,pos){var self=this;if(self.uninitialized){self.$raise($$($nesting,"TypeError"),"uninitialized Regexp")}if(pos===undefined){return string===nil?false:self.test($$($nesting,"Opal").$coerce_to(string,$$($nesting,"String"),"to_str"))}pos=$$($nesting,"Opal").$coerce_to(pos,$$($nesting,"Integer"),"to_int");if(string===nil){return false}string=$$($nesting,"Opal").$coerce_to(string,$$($nesting,"String"),"to_str");if(pos<0){pos+=string.length;if(pos<0){return false}}var md,re=Opal.global_regexp(self);md=re.exec(string);if(md===null||md.index"},$MatchData_inspect$23.$$arity=0);Opal.def(self,"$length",$MatchData_length$24=function $$length(){var self=this;return self.matches.length},$MatchData_length$24.$$arity=0);Opal.alias(self,"size","length");Opal.def(self,"$to_a",$MatchData_to_a$25=function $$to_a(){var self=this;return self.matches},$MatchData_to_a$25.$$arity=0);Opal.def(self,"$to_s",$MatchData_to_s$26=function $$to_s(){var self=this;return self.matches[0]},$MatchData_to_s$26.$$arity=0);return(Opal.def(self,"$values_at",$MatchData_values_at$27=function $$values_at($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;var i,a,index,values=[];for(i=0;i","$==","$=~","$new","$force_encoding","$casecmp","$empty?","$ljust","$ceil","$/","$+","$rjust","$floor","$to_a","$each_char","$to_proc","$coerce_to!","$copy_singleton_methods","$initialize_clone","$initialize_dup","$enum_for","$size","$chomp","$[]","$to_i","$each_line","$encoding","$class","$match","$match?","$captures","$proc","$succ","$escape"]);self.$require("corelib/comparable");self.$require("corelib/regexp");(function($base,$super,$parent_nesting){var self=$klass($base,$super,"String");var $nesting=[self].concat($parent_nesting),$String___id__$1,$String_try_convert$2,$String_new$3,$String_initialize$4,$String_$percent$5,$String_$$6,$String_$plus$7,$String_$lt_eq_gt$8,$String_$eq_eq$9,$String_$eq_tilde$10,$String_$$$11,$String_b$12,$String_capitalize$13,$String_casecmp$14,$String_casecmp$ques$15,$String_center$16,$String_chars$17,$String_chomp$18,$String_chop$19,$String_chr$20,$String_clone$21,$String_dup$22,$String_count$23,$String_delete$24,$String_delete_prefix$25,$String_delete_suffix$26,$String_downcase$27,$String_each_char$28,$String_each_line$30,$String_empty$ques$31,$String_end_with$ques$32,$String_gsub$33,$String_hash$34,$String_hex$35,$String_include$ques$36,$String_index$37,$String_inspect$38,$String_intern$39,$String_lines$40,$String_length$41,$String_ljust$42,$String_lstrip$43,$String_ascii_only$ques$44,$String_match$45,$String_match$ques$46,$String_next$47,$String_oct$48,$String_ord$49,$String_partition$50,$String_reverse$51,$String_rindex$52,$String_rjust$53,$String_rpartition$54,$String_rstrip$55,$String_scan$56,$String_split$57,$String_squeeze$58,$String_start_with$ques$59,$String_strip$60,$String_sub$61,$String_sum$62,$String_swapcase$63,$String_to_f$64,$String_to_i$65,$String_to_proc$66,$String_to_s$68,$String_tr$69,$String_tr_s$70,$String_upcase$71,$String_upto$72,$String_instance_variables$73,$String__load$74,$String_unicode_normalize$75,$String_unicode_normalized$ques$76,$String_unpack$77,$String_unpack1$78;self.$include($$($nesting,"Comparable"));Opal.defineProperty(self.$$prototype,"$$is_string",true);Opal.defineProperty(self.$$prototype,"$$cast",function(string){var klass=this.$$class;if(klass.$$constructor===String){return string}else{return new klass.$$constructor(string)}});Opal.def(self,"$__id__",$String___id__$1=function $$__id__(){var self=this;return self.toString()},$String___id__$1.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defs(self,"$try_convert",$String_try_convert$2=function $$try_convert(what){var self=this;return $$($nesting,"Opal")["$coerce_to?"](what,$$($nesting,"String"),"to_str")},$String_try_convert$2.$$arity=1);Opal.defs(self,"$new",$String_new$3=function(str){var self=this;if(str==null){str=""}str=$$($nesting,"Opal").$coerce_to(str,$$($nesting,"String"),"to_str");return new self.$$constructor(str)},$String_new$3.$$arity=-1);Opal.def(self,"$initialize",$String_initialize$4=function $$initialize(str){var self=this;if(str===undefined){return self}return self.$raise($$($nesting,"NotImplementedError"),"Mutable strings are not supported in Opal.")},$String_initialize$4.$$arity=-1);Opal.def(self,"$%",$String_$percent$5=function(data){var self=this;if($truthy($$($nesting,"Array")["$==="](data))){return $send(self,"format",[self].concat(Opal.to_a(data)))}else{return self.$format(self,data)}},$String_$percent$5.$$arity=1);Opal.def(self,"$*",$String_$$6=function(count){var self=this;count=$$($nesting,"Opal").$coerce_to(count,$$($nesting,"Integer"),"to_int");if(count<0){self.$raise($$($nesting,"ArgumentError"),"negative argument")}if(count===0){return self.$$cast("")}var result="",string=self.toString();if(string.length*count>=1<<28){self.$raise($$($nesting,"RangeError"),"multiply count must not overflow maximum string size")}for(;;){if((count&1)===1){result+=string}count>>>=1;if(count===0){break}string+=string}return self.$$cast(result)},$String_$$6.$$arity=1);Opal.def(self,"$+",$String_$plus$7=function(other){var self=this;other=$$($nesting,"Opal").$coerce_to(other,$$($nesting,"String"),"to_str");return self+other.$to_s()},$String_$plus$7.$$arity=1);Opal.def(self,"$<=>",$String_$lt_eq_gt$8=function(other){var self=this;if($truthy(other["$respond_to?"]("to_str"))){other=other.$to_str().$to_s();return self>other?1:self"](self);if(cmp===nil){return nil}else{return cmp>0?-1:cmp<0?1:0}}},$String_$lt_eq_gt$8.$$arity=1);Opal.def(self,"$==",$String_$eq_eq$9=function(other){var self=this;if(other.$$is_string){return self.toString()===other.toString()}if($$($nesting,"Opal")["$respond_to?"](other,"to_str")){return other["$=="](self)}return false},$String_$eq_eq$9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.def(self,"$=~",$String_$eq_tilde$10=function(other){var self=this;if(other.$$is_string){self.$raise($$($nesting,"TypeError"),"type mismatch: String given")}return other["$=~"](self)},$String_$eq_tilde$10.$$arity=1);Opal.def(self,"$[]",$String_$$$11=function(index,length){var self=this;var size=self.length,exclude;if(index.$$is_range){exclude=index.excl;length=$$($nesting,"Opal").$coerce_to(index.end,$$($nesting,"Integer"),"to_int");index=$$($nesting,"Opal").$coerce_to(index.begin,$$($nesting,"Integer"),"to_int");if(Math.abs(index)>size){return nil}if(index<0){index+=size}if(length<0){length+=size}if(!exclude){length+=1}length=length-index;if(length<0){length=0}return self.$$cast(self.substr(index,length))}if(index.$$is_string){if(length!=null){self.$raise($$($nesting,"TypeError"))}return self.indexOf(index)!==-1?self.$$cast(index):nil}if(index.$$is_regexp){var match=self.match(index);if(match===null){$gvars["~"]=nil;return nil}$gvars["~"]=$$($nesting,"MatchData").$new(index,match);if(length==null){return self.$$cast(match[0])}length=$$($nesting,"Opal").$coerce_to(length,$$($nesting,"Integer"),"to_int");if(length<0&&-length=0&&length=size||index<0){return nil}return self.$$cast(self.substr(index,1))}length=$$($nesting,"Opal").$coerce_to(length,$$($nesting,"Integer"),"to_int");if(length<0){return nil}if(index>size||index<0){return nil}return self.$$cast(self.substr(index,length))},$String_$$$11.$$arity=-2);Opal.alias(self,"byteslice","[]");Opal.def(self,"$b",$String_b$12=function $$b(){var self=this;return self.$force_encoding("binary")},$String_b$12.$$arity=0);Opal.def(self,"$capitalize",$String_capitalize$13=function $$capitalize(){var self=this;return self.$$cast(self.charAt(0).toUpperCase()+self.substr(1).toLowerCase())},$String_capitalize$13.$$arity=0);Opal.def(self,"$casecmp",$String_casecmp$14=function $$casecmp(other){var self=this;if($truthy(other["$respond_to?"]("to_str"))){}else{return nil}other=$$($nesting,"Opal").$coerce_to(other,$$($nesting,"String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;if(ascii_only.test(self)&&ascii_only.test(other)){self=self.toLowerCase();other=other.toLowerCase()}return self["$<=>"](other)},$String_casecmp$14.$$arity=1);Opal.def(self,"$casecmp?",$String_casecmp$ques$15=function(other){var self=this;var cmp=self.$casecmp(other);if(cmp===nil){return nil}else{return cmp===0}},$String_casecmp$ques$15.$$arity=1);Opal.def(self,"$center",$String_center$16=function $$center(width,padstr){var self=this;if(padstr==null){padstr=" "}width=$$($nesting,"Opal").$coerce_to(width,$$($nesting,"Integer"),"to_int");padstr=$$($nesting,"Opal").$coerce_to(padstr,$$($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise($$($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var ljustified=self.$ljust($rb_divide($rb_plus(width,self.length),2).$ceil(),padstr),rjustified=self.$rjust($rb_divide($rb_plus(width,self.length),2).$floor(),padstr);return self.$$cast(rjustified+ljustified.slice(self.length))},$String_center$16.$$arity=-2);Opal.def(self,"$chars",$String_chars$17=function $$chars(){var $iter=$String_chars$17.$$p,block=$iter||nil,self=this;if($iter)$String_chars$17.$$p=null;if($iter)$String_chars$17.$$p=null;if($truthy(block)){}else{return self.$each_char().$to_a()}return $send(self,"each_char",[],block.$to_proc())},$String_chars$17.$$arity=0);Opal.def(self,"$chomp",$String_chomp$18=function $$chomp(separator){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($truthy(separator===nil||self.length===0)){return self}separator=$$($nesting,"Opal")["$coerce_to!"](separator,$$($nesting,"String"),"to_str").$to_s();var result;if(separator==="\n"){result=self.replace(/\r?\n?$/,"")}else if(separator===""){result=self.replace(/(\r?\n)+$/,"")}else if(self.length>=separator.length){var tail=self.substr(self.length-separator.length,separator.length);if(tail===separator){result=self.substr(0,self.length-separator.length)}}if(result!=null){return self.$$cast(result)}return self},$String_chomp$18.$$arity=-1);Opal.def(self,"$chop",$String_chop$19=function $$chop(){var self=this;var length=self.length,result;if(length<=1){result=""}else if(self.charAt(length-1)==="\n"&&self.charAt(length-2)==="\r"){result=self.substr(0,length-2)}else{result=self.substr(0,length-1)}return self.$$cast(result)},$String_chop$19.$$arity=0);Opal.def(self,"$chr",$String_chr$20=function $$chr(){var self=this;return self.charAt(0)},$String_chr$20.$$arity=0);Opal.def(self,"$clone",$String_clone$21=function $$clone(){var self=this,copy=nil;copy=self.slice();copy.$copy_singleton_methods(self);copy.$initialize_clone(self);return copy},$String_clone$21.$$arity=0);Opal.def(self,"$dup",$String_dup$22=function $$dup(){var self=this,copy=nil;copy=self.slice();copy.$initialize_dup(self);return copy},$String_dup$22.$$arity=0);Opal.def(self,"$count",$String_count$23=function $$count($a){var $post_args,sets,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);sets=$post_args;if(sets.length===0){self.$raise($$($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return 0}return self.length-self.replace(new RegExp(char_class,"g"),"").length},$String_count$23.$$arity=-1);Opal.def(self,"$delete",$String_delete$24=function($a){var $post_args,sets,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);sets=$post_args;if(sets.length===0){self.$raise($$($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.$$cast(self.replace(new RegExp(char_class,"g"),""))},$String_delete$24.$$arity=-1);Opal.def(self,"$delete_prefix",$String_delete_prefix$25=function $$delete_prefix(prefix){var self=this;if(!prefix.$$is_string){prefix=$$($nesting,"Opal").$coerce_to(prefix,$$($nesting,"String"),"to_str")}if(self.slice(0,prefix.length)===prefix){return self.$$cast(self.slice(prefix.length))}else{return self}},$String_delete_prefix$25.$$arity=1);Opal.def(self,"$delete_suffix",$String_delete_suffix$26=function $$delete_suffix(suffix){var self=this;if(!suffix.$$is_string){suffix=$$($nesting,"Opal").$coerce_to(suffix,$$($nesting,"String"),"to_str")}if(self.slice(self.length-suffix.length)===suffix){return self.$$cast(self.slice(0,self.length-suffix.length))}else{return self}},$String_delete_suffix$26.$$arity=1);Opal.def(self,"$downcase",$String_downcase$27=function $$downcase(){var self=this;return self.$$cast(self.toLowerCase())},$String_downcase$27.$$arity=0);Opal.def(self,"$each_char",$String_each_char$28=function $$each_char(){var $iter=$String_each_char$28.$$p,block=$iter||nil,$$29,self=this;if($iter)$String_each_char$28.$$p=null;if($iter)$String_each_char$28.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_char"],($$29=function(){var self=$$29.$$s||this;return self.$size()},$$29.$$s=self,$$29.$$arity=0,$$29))}for(var i=0,length=self.length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix){return true}}return false},$String_end_with$ques$32.$$arity=-1);Opal.alias(self,"equal?","===");Opal.def(self,"$gsub",$String_gsub$33=function $$gsub(pattern,replacement){var $iter=$String_gsub$33.$$p,block=$iter||nil,self=this;if($iter)$String_gsub$33.$$p=null;if($iter)$String_gsub$33.$$p=null;if(replacement===undefined&&block===nil){return self.$enum_for("gsub",pattern)}var result="",match_data=nil,index=0,match,_replacement;if(pattern.$$is_regexp){pattern=Opal.global_multiline_regexp(pattern)}else{pattern=$$($nesting,"Opal").$coerce_to(pattern,$$($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}var lastIndex;while(true){match=pattern.exec(self);if(match===null){$gvars["~"]=nil;result+=self.slice(index);break}match_data=$$($nesting,"MatchData").$new(pattern,match);if(replacement===undefined){lastIndex=pattern.lastIndex;_replacement=block(match[0]);pattern.lastIndex=lastIndex}else if(replacement.$$is_hash){_replacement=replacement["$[]"](match[0]).$to_s()}else{if(!replacement.$$is_string){replacement=$$($nesting,"Opal").$coerce_to(replacement,$$($nesting,"String"),"to_str")}_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,function(original,slashes,command){if(slashes.length%2===0){return original}switch(command){case"+":for(var i=match.length-1;i>0;i--){if(match[i]!==undefined){return slashes.slice(1)+match[i]}}return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}}).replace(/\\\\/g,"\\")}if(pattern.lastIndex===match.index){result+=_replacement+self.slice(index,match.index+1);pattern.lastIndex+=1}else{result+=self.slice(index,match.index)+_replacement}index=pattern.lastIndex}$gvars["~"]=match_data;return self.$$cast(result)},$String_gsub$33.$$arity=-2);Opal.def(self,"$hash",$String_hash$34=function $$hash(){var self=this;return self.toString()},$String_hash$34.$$arity=0);Opal.def(self,"$hex",$String_hex$35=function $$hex(){var self=this;return self.$to_i(16)},$String_hex$35.$$arity=0);Opal.def(self,"$include?",$String_include$ques$36=function(other){var self=this;if(!other.$$is_string){other=$$($nesting,"Opal").$coerce_to(other,$$($nesting,"String"),"to_str")}return self.indexOf(other)!==-1},$String_include$ques$36.$$arity=1);Opal.def(self,"$index",$String_index$37=function $$index(search,offset){var self=this;var index,match,regex;if(offset===undefined){offset=0}else{offset=$$($nesting,"Opal").$coerce_to(offset,$$($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){regex=Opal.global_multiline_regexp(search);while(true){match=regex.exec(self);if(match===null){$gvars["~"]=nil;index=-1;break}if(match.index>=offset){$gvars["~"]=$$($nesting,"MatchData").$new(regex,match);index=match.index;break}regex.lastIndex=match.index+1}}else{search=$$($nesting,"Opal").$coerce_to(search,$$($nesting,"String"),"to_str");if(search.length===0&&offset>self.length){index=-1}else{index=self.indexOf(search,offset)}}return index===-1?nil:index},$String_index$37.$$arity=-2);Opal.def(self,"$inspect",$String_inspect$38=function $$inspect(){var self=this;var escapable=/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"},escaped=self.replace(escapable,function(chr){return meta[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4)});return'"'+escaped.replace(/\#[\$\@\{]/g,"\\$&")+'"'},$String_inspect$38.$$arity=0);Opal.def(self,"$intern",$String_intern$39=function $$intern(){var self=this;return self.toString()},$String_intern$39.$$arity=0);Opal.def(self,"$lines",$String_lines$40=function $$lines(separator){var $iter=$String_lines$40.$$p,block=$iter||nil,self=this,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if($iter)$String_lines$40.$$p=null;if($iter)$String_lines$40.$$p=null;if(separator==null){separator=$gvars["/"]}e=$send(self,"each_line",[separator],block.$to_proc());if($truthy(block)){return self}else{return e.$to_a()}},$String_lines$40.$$arity=-1);Opal.def(self,"$length",$String_length$41=function $$length(){var self=this;return self.length},$String_length$41.$$arity=0);Opal.def(self,"$ljust",$String_ljust$42=function $$ljust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=$$($nesting,"Opal").$coerce_to(width,$$($nesting,"Integer"),"to_int");padstr=$$($nesting,"Opal").$coerce_to(padstr,$$($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise($$($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var index=-1,result="";width-=self.length;while(++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){switch(code){case 57:carry=true;code=48;break;case 90:carry=true;code=65;break;case 122:carry=true;code=97;break;default:carry=false;code+=1}}else{if(first_alphanum_char_index===-1){if(code===255){carry=true;code=0}else{carry=false;code+=1}}else{carry=true}}result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1);if(carry&&(i===0||i===first_alphanum_char_index)){switch(code){case 65:break;case 97:break;default:code+=1}if(i===0){result=String.fromCharCode(code)+result}else{result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i)}carry=false}if(!carry){break}}return self.$$cast(result)},$String_next$47.$$arity=0);Opal.def(self,"$oct",$String_oct$48=function $$oct(){var self=this;var result,string=self,radix=8;if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"){return original}}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16;break}return head+tail});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},$String_oct$48.$$arity=0);Opal.def(self,"$ord",$String_ord$49=function $$ord(){var self=this;return self.charCodeAt(0)},$String_ord$49.$$arity=0);Opal.def(self,"$partition",$String_partition$50=function $$partition(sep){var self=this;var i,m;if(sep.$$is_regexp){m=sep.exec(self);if(m===null){i=-1}else{$$($nesting,"MatchData").$new(sep,m);sep=m[0];i=m.index}}else{sep=$$($nesting,"Opal").$coerce_to(sep,$$($nesting,"String"),"to_str");i=self.indexOf(sep)}if(i===-1){return[self,"",""]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},$String_partition$50.$$arity=1);Opal.def(self,"$reverse",$String_reverse$51=function $$reverse(){var self=this;return self.split("").reverse().join("")},$String_reverse$51.$$arity=0);Opal.def(self,"$rindex",$String_rindex$52=function $$rindex(search,offset){var self=this;var i,m,r,_m;if(offset===undefined){offset=self.length}else{offset=$$($nesting,"Opal").$coerce_to(offset,$$($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){m=null;r=Opal.global_multiline_regexp(search);while(true){_m=r.exec(self);if(_m===null||_m.index>offset){break}m=_m;r.lastIndex=m.index+1}if(m===null){$gvars["~"]=nil;i=-1}else{$$($nesting,"MatchData").$new(r,m);i=m.index}}else{search=$$($nesting,"Opal").$coerce_to(search,$$($nesting,"String"),"to_str");i=self.lastIndexOf(search,offset)}return i===-1?nil:i},$String_rindex$52.$$arity=-2);Opal.def(self,"$rjust",$String_rjust$53=function $$rjust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=$$($nesting,"Opal").$coerce_to(width,$$($nesting,"Integer"),"to_int");padstr=$$($nesting,"Opal").$coerce_to(padstr,$$($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise($$($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var chars=Math.floor(width-self.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return self.$$cast(result+padstr.slice(0,remaining)+self)},$String_rjust$53.$$arity=-2);Opal.def(self,"$rpartition",$String_rpartition$54=function $$rpartition(sep){var self=this;var i,m,r,_m;if(sep.$$is_regexp){m=null;r=Opal.global_multiline_regexp(sep);while(true){_m=r.exec(self);if(_m===null){break}m=_m;r.lastIndex=m.index+1}if(m===null){i=-1}else{$$($nesting,"MatchData").$new(r,m);sep=m[0];i=m.index}}else{sep=$$($nesting,"Opal").$coerce_to(sep,$$($nesting,"String"),"to_str");i=self.lastIndexOf(sep)}if(i===-1){return["","",self]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},$String_rpartition$54.$$arity=1);Opal.def(self,"$rstrip",$String_rstrip$55=function $$rstrip(){var self=this;return self.replace(/[\s\u0000]*$/,"")},$String_rstrip$55.$$arity=0);Opal.def(self,"$scan",$String_scan$56=function $$scan(pattern){var $iter=$String_scan$56.$$p,block=$iter||nil,self=this;if($iter)$String_scan$56.$$p=null;if($iter)$String_scan$56.$$p=null;var result=[],match_data=nil,match;if(pattern.$$is_regexp){pattern=Opal.global_multiline_regexp(pattern)}else{pattern=$$($nesting,"Opal").$coerce_to(pattern,$$($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while((match=pattern.exec(self))!=null){match_data=$$($nesting,"MatchData").$new(pattern,match);if(block===nil){match.length==1?result.push(match[0]):result.push(match_data.$captures())}else{match.length==1?block(match[0]):block.call(self,match_data.$captures())}if(pattern.lastIndex===match.index){pattern.lastIndex+=1}}$gvars["~"]=match_data;return block!==nil?self:result},$String_scan$56.$$arity=1);Opal.alias(self,"size","length");Opal.alias(self,"slice","[]");Opal.def(self,"$split",$String_split$57=function $$split(pattern,limit){var $a,self=this;if($gvars[";"]==null)$gvars[";"]=nil;if(self.length===0){return[]}if(limit===undefined){limit=0}else{limit=$$($nesting,"Opal")["$coerce_to!"](limit,$$($nesting,"Integer"),"to_int");if(limit===1){return[self]}}if(pattern===undefined||pattern===nil){pattern=$truthy($a=$gvars[";"])?$a:" "}var result=[],string=self.toString(),index=0,match,i,ii;if(pattern.$$is_regexp){pattern=Opal.global_multiline_regexp(pattern)}else{pattern=$$($nesting,"Opal").$coerce_to(pattern,$$($nesting,"String"),"to_str").$to_s();if(pattern===" "){pattern=/\s+/gm;string=string.replace(/^\s+/,"")}else{pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}}result=string.split(pattern);if(result.length===1&&result[0]===string){return[self.$$cast(result[0])]}while((i=result.indexOf(undefined))!==-1){result.splice(i,1)}function castResult(){for(i=0;i=result.length){castResult();return result}i=0;while(match!==null){i++;index=pattern.lastIndex;if(i+1===limit){break}match=pattern.exec(string)}result.splice(limit-1,result.length-1,string.slice(index));castResult();return result},$String_split$57.$$arity=-1);Opal.def(self,"$squeeze",$String_squeeze$58=function $$squeeze($a){var $post_args,sets,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);sets=$post_args;if(sets.length===0){return self.$$cast(self.replace(/(.)\1+/g,"$1"))}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.$$cast(self.replace(new RegExp("("+char_class+")\\1+","g"),"$1"))},$String_squeeze$58.$$arity=-1);Opal.def(self,"$start_with?",$String_start_with$ques$59=function($a){var $post_args,prefixes,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);prefixes=$post_args;for(var i=0,length=prefixes.length;i0;i--){if(match[i]!==undefined){return slashes.slice(1)+match[i]}}return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}}).replace(/\\\\/g,"\\");result=self.slice(0,match.index)+replacement+self.slice(match.index+match[0].length)}}return self.$$cast(result)},$String_sub$61.$$arity=-2);Opal.alias(self,"succ","next");Opal.def(self,"$sum",$String_sum$62=function $$sum(n){var self=this;if(n==null){n=16}n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");var result=0,length=self.length,i=0;for(;i36){self.$raise($$($nesting,"ArgumentError"),""+"invalid radix "+radix)}if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"&&(radix===0||radix===16)){return original}}switch(flag){case"0b":if(radix===0||radix===2){radix=2;return head+tail}break;case"0":case"0o":if(radix===0||radix===8){radix=8;return head+tail}break;case"0d":if(radix===0||radix===10){radix=10;return head+tail}break;case"0x":if(radix===0||radix===16){radix=16;return head+tail}break}return original});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},$String_to_i$65.$$arity=-1);Opal.def(self,"$to_proc",$String_to_proc$66=function $$to_proc(){var $$67,$iter=$String_to_proc$66.$$p,$yield=$iter||nil,self=this,method_name=nil;if($iter)$String_to_proc$66.$$p=null;method_name=$rb_plus("$",self.valueOf());return $send(self,"proc",[],($$67=function($a){var self=$$67.$$s||this,$iter=$$67.$$p,block=$iter||nil,$post_args,args;if($iter)$$67.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if(args.length===0){self.$raise($$($nesting,"ArgumentError"),"no receiver given")}var recv=args[0];if(recv==null)recv=nil;var body=recv[method_name];if(!body){return recv.$method_missing.apply(recv,args)}if(typeof block==="function"){body.$$p=block}if(args.length===1){return body.call(recv)}else{return body.apply(recv,args.slice(1))}},$$67.$$s=self,$$67.$$arity=-1,$$67))},$String_to_proc$66.$$arity=0);Opal.def(self,"$to_s",$String_to_s$68=function $$to_s(){var self=this;return self.toString()},$String_to_s$68.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.alias(self,"to_sym","intern");Opal.def(self,"$tr",$String_tr$69=function $$tr(from,to){var self=this;from=$$($nesting,"Opal").$coerce_to(from,$$($nesting,"String"),"to_str").$to_s();to=$$($nesting,"Opal").$coerce_to(to,$$($nesting,"String"),"to_str").$to_s();if(from.length==0||from===to){return self}var i,in_range,c,ch,start,end,length;var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"&&from_chars.length>1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise($$($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise($$($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise($$($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise($$($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i0&&ichar_code_upto){self.$raise($$($nesting,"ArgumentError"),""+'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration')}for(char_code=char_code_from+1;char_code1;set=explode_sequences_in_character_set(neg?set.slice(1):set);if(neg){neg_intersection=intersection(neg_intersection,set)}else{pos_intersection=intersection(pos_intersection,set)}}if(pos_intersection.length>0&&neg_intersection.length>0){tmp="";for(i=0,len=pos_intersection.length;i0){return"["+$$($nesting,"Regexp").$escape(pos_intersection)+"]"}if(neg_intersection.length>0){return"[^"+$$($nesting,"Regexp").$escape(neg_intersection)+"]"}return null}Opal.def(self,"$instance_variables",$String_instance_variables$73=function $$instance_variables(){var self=this;return[]},$String_instance_variables$73.$$arity=0);Opal.defs(self,"$_load",$String__load$74=function $$_load($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send(self,"new",Opal.to_a(args))},$String__load$74.$$arity=-1);Opal.def(self,"$unicode_normalize",$String_unicode_normalize$75=function $$unicode_normalize(form){var self=this;return self.toString()},$String_unicode_normalize$75.$$arity=-1);Opal.def(self,"$unicode_normalized?",$String_unicode_normalized$ques$76=function(form){var self=this;return true},$String_unicode_normalized$ques$76.$$arity=-1);Opal.def(self,"$unpack",$String_unpack$77=function $$unpack(format){var self=this;return self.$raise("To use String#unpack, you must first require 'corelib/string/unpack'.")},$String_unpack$77.$$arity=1);return(Opal.def(self,"$unpack1",$String_unpack1$78=function $$unpack1(format){var self=this;return self.$raise("To use String#unpack1, you must first require 'corelib/string/unpack'.")},$String_unpack1$78.$$arity=1),nil)&&"unpack1"})($nesting[0],String,$nesting);return Opal.const_set($nesting[0],"Symbol",$$($nesting,"String"))};Opal.modules["corelib/enumerable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$*","$coerce_to","$try_convert","$<","$+","$-","$ceil","$/","$size","$__send__","$length","$<=","$[]","$push","$<<","$[]=","$===","$inspect","$<=>","$first","$reverse","$sort","$to_proc","$compare","$call","$dup","$to_a","$sort!","$map!","$key?","$values","$zip"]);return function($base,$parent_nesting){var self=$module($base,"Enumerable");var $nesting=[self].concat($parent_nesting),$Enumerable_all$ques$1,$Enumerable_any$ques$5,$Enumerable_chunk$9,$Enumerable_chunk_while$12,$Enumerable_collect$14,$Enumerable_collect_concat$16,$Enumerable_count$19,$Enumerable_cycle$23,$Enumerable_detect$25,$Enumerable_drop$27,$Enumerable_drop_while$28,$Enumerable_each_cons$29,$Enumerable_each_entry$31,$Enumerable_each_slice$33,$Enumerable_each_with_index$35,$Enumerable_each_with_object$37,$Enumerable_entries$39,$Enumerable_find_all$40,$Enumerable_find_index$42,$Enumerable_first$45,$Enumerable_grep$48,$Enumerable_grep_v$50,$Enumerable_group_by$52,$Enumerable_include$ques$54,$Enumerable_inject$56,$Enumerable_lazy$57,$Enumerable_enumerator_size$59,$Enumerable_max$60,$Enumerable_max_by$61,$Enumerable_min$63,$Enumerable_min_by$64,$Enumerable_minmax$66,$Enumerable_minmax_by$68,$Enumerable_none$ques$69,$Enumerable_one$ques$73,$Enumerable_partition$77,$Enumerable_reject$79,$Enumerable_reverse_each$81,$Enumerable_slice_before$83,$Enumerable_slice_after$85,$Enumerable_slice_when$88,$Enumerable_sort$90,$Enumerable_sort_by$92,$Enumerable_sum$97,$Enumerable_take$99,$Enumerable_take_while$100,$Enumerable_uniq$102,$Enumerable_zip$104;function comparableForPattern(value){if(value.length===0){value=[nil]}if(value.length>1){value=[value]}return value}Opal.def(self,"$all?",$Enumerable_all$ques$1=function(pattern){try{var $iter=$Enumerable_all$ques$1.$$p,block=$iter||nil,$$2,$$3,$$4,self=this;if($iter)$Enumerable_all$ques$1.$$p=null;if($iter)$Enumerable_all$ques$1.$$p=null;if($truthy(pattern!==undefined)){$send(self,"each",[],($$2=function($a){var self=$$2.$$s||this,$post_args,value,comparable=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;comparable=comparableForPattern(value);if($truthy($send(pattern,"public_send",["==="].concat(Opal.to_a(comparable))))){return nil}else{Opal.ret(false)}},$$2.$$s=self,$$2.$$arity=-1,$$2))}else if(block!==nil){$send(self,"each",[],($$3=function($a){var self=$$3.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy(Opal.yieldX(block,Opal.to_a(value)))){return nil}else{Opal.ret(false)}},$$3.$$s=self,$$3.$$arity=-1,$$3))}else{$send(self,"each",[],($$4=function($a){var self=$$4.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy($$($nesting,"Opal").$destructure(value))){return nil}else{Opal.ret(false)}},$$4.$$s=self,$$4.$$arity=-1,$$4))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_all$ques$1.$$arity=-1);Opal.def(self,"$any?",$Enumerable_any$ques$5=function(pattern){try{var $iter=$Enumerable_any$ques$5.$$p,block=$iter||nil,$$6,$$7,$$8,self=this;if($iter)$Enumerable_any$ques$5.$$p=null;if($iter)$Enumerable_any$ques$5.$$p=null;if($truthy(pattern!==undefined)){$send(self,"each",[],($$6=function($a){var self=$$6.$$s||this,$post_args,value,comparable=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;comparable=comparableForPattern(value);if($truthy($send(pattern,"public_send",["==="].concat(Opal.to_a(comparable))))){Opal.ret(true)}else{return nil}},$$6.$$s=self,$$6.$$arity=-1,$$6))}else if(block!==nil){$send(self,"each",[],($$7=function($a){var self=$$7.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(true)}else{return nil}},$$7.$$s=self,$$7.$$arity=-1,$$7))}else{$send(self,"each",[],($$8=function($a){var self=$$8.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy($$($nesting,"Opal").$destructure(value))){Opal.ret(true)}else{return nil}},$$8.$$s=self,$$8.$$arity=-1,$$8))}return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_any$ques$5.$$arity=-1);Opal.def(self,"$chunk",$Enumerable_chunk$9=function $$chunk(){var $iter=$Enumerable_chunk$9.$$p,block=$iter||nil,$$10,$$11,self=this;if($iter)$Enumerable_chunk$9.$$p=null;if($iter)$Enumerable_chunk$9.$$p=null;if(block!==nil){}else{return $send(self,"to_enum",["chunk"],($$10=function(){var self=$$10.$$s||this;return self.$enumerator_size()},$$10.$$s=self,$$10.$$arity=0,$$10))}return $send($$$("::","Enumerator"),"new",[],($$11=function(yielder){var self=$$11.$$s||this;if(yielder==null){yielder=nil}var previous=nil,accumulate=[];function releaseAccumulate(){if(accumulate.length>0){yielder.$yield(previous,accumulate)}}self.$each.$$p=function(value){var key=Opal.yield1(block,value);if(key===nil){releaseAccumulate();accumulate=[];previous=nil}else{if(previous===nil||previous===key){accumulate.push(value)}else{releaseAccumulate();accumulate=[value]}previous=key}};self.$each();releaseAccumulate()},$$11.$$s=self,$$11.$$arity=1,$$11))},$Enumerable_chunk$9.$$arity=0);Opal.def(self,"$chunk_while",$Enumerable_chunk_while$12=function $$chunk_while(){var $iter=$Enumerable_chunk_while$12.$$p,block=$iter||nil,$$13,self=this;if($iter)$Enumerable_chunk_while$12.$$p=null;if($iter)$Enumerable_chunk_while$12.$$p=null;if(block!==nil){}else{self.$raise($$($nesting,"ArgumentError"),"no block given")}return $send(self,"slice_when",[],($$13=function(before,after){var self=$$13.$$s||this;if(before==null){before=nil}if(after==null){after=nil}return Opal.yieldX(block,[before,after])["$!"]()},$$13.$$s=self,$$13.$$arity=2,$$13))},$Enumerable_chunk_while$12.$$arity=0);Opal.def(self,"$collect",$Enumerable_collect$14=function $$collect(){var $iter=$Enumerable_collect$14.$$p,block=$iter||nil,$$15,self=this;if($iter)$Enumerable_collect$14.$$p=null;if($iter)$Enumerable_collect$14.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect"],($$15=function(){var self=$$15.$$s||this;return self.$enumerator_size()},$$15.$$s=self,$$15.$$arity=0,$$15))}var result=[];self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);result.push(value)};self.$each();return result},$Enumerable_collect$14.$$arity=0);Opal.def(self,"$collect_concat",$Enumerable_collect_concat$16=function $$collect_concat(){var $iter=$Enumerable_collect_concat$16.$$p,block=$iter||nil,$$17,$$18,self=this;if($iter)$Enumerable_collect_concat$16.$$p=null;if($iter)$Enumerable_collect_concat$16.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect_concat"],($$17=function(){var self=$$17.$$s||this;return self.$enumerator_size()},$$17.$$s=self,$$17.$$arity=0,$$17))}return $send(self,"map",[],($$18=function(item){var self=$$18.$$s||this;if(item==null){item=nil}return Opal.yield1(block,item)},$$18.$$s=self,$$18.$$arity=1,$$18)).$flatten(1)},$Enumerable_collect_concat$16.$$arity=0);Opal.def(self,"$count",$Enumerable_count$19=function $$count(object){var $iter=$Enumerable_count$19.$$p,block=$iter||nil,$$20,$$21,$$22,self=this,result=nil;if($iter)$Enumerable_count$19.$$p=null;if($iter)$Enumerable_count$19.$$p=null;result=0;if(object!=null&&block!==nil){self.$warn("warning: given block not used")}if($truthy(object!=null)){block=$send(self,"proc",[],($$20=function($a){var self=$$20.$$s||this,$post_args,args;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $$($nesting,"Opal").$destructure(args)["$=="](object)},$$20.$$s=self,$$20.$$arity=-1,$$20))}else if($truthy(block["$nil?"]())){block=$send(self,"proc",[],($$21=function(){var self=$$21.$$s||this;return true},$$21.$$s=self,$$21.$$arity=0,$$21))}$send(self,"each",[],($$22=function($a){var self=$$22.$$s||this,$post_args,args;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy(Opal.yieldX(block,args))){return result++}else{return nil}},$$22.$$s=self,$$22.$$arity=-1,$$22));return result},$Enumerable_count$19.$$arity=-1);Opal.def(self,"$cycle",$Enumerable_cycle$23=function $$cycle(n){var $iter=$Enumerable_cycle$23.$$p,block=$iter||nil,$$24,self=this;if($iter)$Enumerable_cycle$23.$$p=null;if($iter)$Enumerable_cycle$23.$$p=null;if(n==null){n=nil}if(block!==nil){}else{return $send(self,"enum_for",["cycle",n],($$24=function(){var self=$$24.$$s||this;if($truthy(n["$nil?"]())){if($truthy(self["$respond_to?"]("size"))){return $$$($$($nesting,"Float"),"INFINITY")}else{return nil}}else{n=$$($nesting,"Opal")["$coerce_to!"](n,$$($nesting,"Integer"),"to_int");if($truthy($rb_gt(n,0))){return $rb_times(self.$enumerator_size(),n)}else{return 0}}},$$24.$$s=self,$$24.$$arity=0,$$24))}if($truthy(n["$nil?"]())){}else{n=$$($nesting,"Opal")["$coerce_to!"](n,$$($nesting,"Integer"),"to_int");if($truthy(n<=0)){return nil}}var result,all=[],i,length,value;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);all.push(param)};self.$each();if(result!==undefined){return result}if(all.length===0){return nil}if(n===nil){while(true){for(i=0,length=all.length;i1){for(i=0,length=all.length;in){buffer.shift()}if(buffer.length==n){Opal.yield1(block,buffer.slice(0,n))}};self.$each();return result},$Enumerable_each_cons$29.$$arity=1);Opal.def(self,"$each_entry",$Enumerable_each_entry$31=function $$each_entry($a){var $iter=$Enumerable_each_entry$31.$$p,block=$iter||nil,$post_args,data,$$32,self=this;if($iter)$Enumerable_each_entry$31.$$p=null;if($iter)$Enumerable_each_entry$31.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);data=$post_args;if(block!==nil){}else{return $send(self,"to_enum",["each_entry"].concat(Opal.to_a(data)),($$32=function(){var self=$$32.$$s||this;return self.$enumerator_size()},$$32.$$s=self,$$32.$$arity=0,$$32))}self.$each.$$p=function(){var item=$$($nesting,"Opal").$destructure(arguments);Opal.yield1(block,item)};self.$each.apply(self,data);return self},$Enumerable_each_entry$31.$$arity=-1);Opal.def(self,"$each_slice",$Enumerable_each_slice$33=function $$each_slice(n){var $iter=$Enumerable_each_slice$33.$$p,block=$iter||nil,$$34,self=this;if($iter)$Enumerable_each_slice$33.$$p=null;if($iter)$Enumerable_each_slice$33.$$p=null;n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");if($truthy(n<=0)){self.$raise($$($nesting,"ArgumentError"),"invalid slice size")}if(block!==nil){}else{return $send(self,"enum_for",["each_slice",n],($$34=function(){var self=$$34.$$s||this;if($truthy(self["$respond_to?"]("size"))){return $rb_divide(self.$size(),n).$ceil()}else{return nil}},$$34.$$s=self,$$34.$$arity=0,$$34))}var result,slice=[];self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments);slice.push(param);if(slice.length===n){Opal.yield1(block,slice);slice=[]}};self.$each();if(result!==undefined){return result}if(slice.length>0){Opal.yield1(block,slice)}return nil},$Enumerable_each_slice$33.$$arity=1);Opal.def(self,"$each_with_index",$Enumerable_each_with_index$35=function $$each_with_index($a){var $iter=$Enumerable_each_with_index$35.$$p,block=$iter||nil,$post_args,args,$$36,self=this;if($iter)$Enumerable_each_with_index$35.$$p=null;if($iter)$Enumerable_each_with_index$35.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if(block!==nil){}else{return $send(self,"enum_for",["each_with_index"].concat(Opal.to_a(args)),($$36=function(){var self=$$36.$$s||this;return self.$enumerator_size()},$$36.$$s=self,$$36.$$arity=0,$$36))}var result,index=0;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments);block(param,index);index++};self.$each.apply(self,args);if(result!==undefined){return result}return self},$Enumerable_each_with_index$35.$$arity=-1);Opal.def(self,"$each_with_object",$Enumerable_each_with_object$37=function $$each_with_object(object){var $iter=$Enumerable_each_with_object$37.$$p,block=$iter||nil,$$38,self=this;if($iter)$Enumerable_each_with_object$37.$$p=null;if($iter)$Enumerable_each_with_object$37.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_with_object",object],($$38=function(){var self=$$38.$$s||this;return self.$enumerator_size()},$$38.$$s=self,$$38.$$arity=0,$$38))}var result;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments);block(param,object)};self.$each();if(result!==undefined){return result}return object},$Enumerable_each_with_object$37.$$arity=1);Opal.def(self,"$entries",$Enumerable_entries$39=function $$entries($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;var result=[];self.$each.$$p=function(){result.push($$($nesting,"Opal").$destructure(arguments))};self.$each.apply(self,args);return result},$Enumerable_entries$39.$$arity=-1);Opal.alias(self,"find","detect");Opal.def(self,"$find_all",$Enumerable_find_all$40=function $$find_all(){var $iter=$Enumerable_find_all$40.$$p,block=$iter||nil,$$41,self=this;if($iter)$Enumerable_find_all$40.$$p=null;if($iter)$Enumerable_find_all$40.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["find_all"],($$41=function(){var self=$$41.$$s||this;return self.$enumerator_size()},$$41.$$s=self,$$41.$$arity=0,$$41))}var result=[];self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){result.push(param)}};self.$each();return result},$Enumerable_find_all$40.$$arity=0);Opal.def(self,"$find_index",$Enumerable_find_index$42=function $$find_index(object){try{var $iter=$Enumerable_find_index$42.$$p,block=$iter||nil,$$43,$$44,self=this,index=nil;if($iter)$Enumerable_find_index$42.$$p=null;if($iter)$Enumerable_find_index$42.$$p=null;if($truthy(object===undefined&&block===nil)){return self.$enum_for("find_index")}if(object!=null&&block!==nil){self.$warn("warning: given block not used")}index=0;if($truthy(object!=null)){$send(self,"each",[],($$43=function($a){var self=$$43.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($$($nesting,"Opal").$destructure(value)["$=="](object)){Opal.ret(index)}return index+=1},$$43.$$s=self,$$43.$$arity=-1,$$43))}else{$send(self,"each",[],($$44=function($a){var self=$$44.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(index)}return index+=1},$$44.$$s=self,$$44.$$arity=-1,$$44))}return nil}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_find_index$42.$$arity=-1);Opal.def(self,"$first",$Enumerable_first$45=function $$first(number){try{var $$46,$$47,self=this,result=nil,current=nil;if($truthy(number===undefined)){return $send(self,"each",[],($$46=function(value){var self=$$46.$$s||this;if(value==null){value=nil}Opal.ret(value)},$$46.$$s=self,$$46.$$arity=1,$$46))}else{result=[];number=$$($nesting,"Opal").$coerce_to(number,$$($nesting,"Integer"),"to_int");if($truthy(number<0)){self.$raise($$($nesting,"ArgumentError"),"attempt to take negative size")}if($truthy(number==0)){return[]}current=0;$send(self,"each",[],($$47=function($a){var self=$$47.$$s||this,$post_args,args;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;result.push($$($nesting,"Opal").$destructure(args));if($truthy(number<=++current)){Opal.ret(result)}else{return nil}},$$47.$$s=self,$$47.$$arity=-1,$$47));return result}}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_first$45.$$arity=-1);Opal.alias(self,"flat_map","collect_concat");Opal.def(self,"$grep",$Enumerable_grep$48=function $$grep(pattern){var $iter=$Enumerable_grep$48.$$p,block=$iter||nil,$$49,self=this,result=nil;if($iter)$Enumerable_grep$48.$$p=null;if($iter)$Enumerable_grep$48.$$p=null;result=[];$send(self,"each",[],($$49=function($a){var self=$$49.$$s||this,$post_args,value,cmp=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;cmp=comparableForPattern(value);if($truthy($send(pattern,"__send__",["==="].concat(Opal.to_a(cmp))))){}else{return nil}if(block!==nil){if($truthy($rb_gt(value.$length(),1))){value=[value]}value=Opal.yieldX(block,Opal.to_a(value))}else if($truthy($rb_le(value.$length(),1))){value=value["$[]"](0)}return result.$push(value)},$$49.$$s=self,$$49.$$arity=-1,$$49));return result},$Enumerable_grep$48.$$arity=1);Opal.def(self,"$grep_v",$Enumerable_grep_v$50=function $$grep_v(pattern){var $iter=$Enumerable_grep_v$50.$$p,block=$iter||nil,$$51,self=this,result=nil;if($iter)$Enumerable_grep_v$50.$$p=null;if($iter)$Enumerable_grep_v$50.$$p=null;result=[];$send(self,"each",[],($$51=function($a){var self=$$51.$$s||this,$post_args,value,cmp=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;cmp=comparableForPattern(value);if($truthy($send(pattern,"__send__",["==="].concat(Opal.to_a(cmp))))){return nil}if(block!==nil){if($truthy($rb_gt(value.$length(),1))){value=[value]}value=Opal.yieldX(block,Opal.to_a(value))}else if($truthy($rb_le(value.$length(),1))){value=value["$[]"](0)}return result.$push(value)},$$51.$$s=self,$$51.$$arity=-1,$$51));return result},$Enumerable_grep_v$50.$$arity=1);Opal.def(self,"$group_by",$Enumerable_group_by$52=function $$group_by(){var $iter=$Enumerable_group_by$52.$$p,block=$iter||nil,$$53,$a,self=this,hash=nil,$writer=nil;if($iter)$Enumerable_group_by$52.$$p=null;if($iter)$Enumerable_group_by$52.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["group_by"],($$53=function(){var self=$$53.$$s||this;return self.$enumerator_size()},$$53.$$s=self,$$53.$$arity=0,$$53))}hash=$hash2([],{});var result;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);($truthy($a=hash["$[]"](value))?$a:($writer=[value,[]],$send(hash,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]))["$<<"](param)};self.$each();if(result!==undefined){return result}return hash},$Enumerable_group_by$52.$$arity=0);Opal.def(self,"$include?",$Enumerable_include$ques$54=function(obj){try{var $$55,self=this;$send(self,"each",[],($$55=function($a){var self=$$55.$$s||this,$post_args,args;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($$($nesting,"Opal").$destructure(args)["$=="](obj)){Opal.ret(true)}else{return nil}},$$55.$$s=self,$$55.$$arity=-1,$$55));return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_include$ques$54.$$arity=1);Opal.def(self,"$inject",$Enumerable_inject$56=function $$inject(object,sym){var $iter=$Enumerable_inject$56.$$p,block=$iter||nil,self=this;if($iter)$Enumerable_inject$56.$$p=null;if($iter)$Enumerable_inject$56.$$p=null;var result=object;if(block!==nil&&sym===undefined){self.$each.$$p=function(){var value=$$($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}value=Opal.yieldX(block,[result,value]);result=value}}else{if(sym===undefined){if(!$$($nesting,"Symbol")["$==="](object)){self.$raise($$($nesting,"TypeError"),""+object.$inspect()+" is not a Symbol")}sym=object;result=undefined}self.$each.$$p=function(){var value=$$($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}result=result.$__send__(sym,value)}}self.$each();return result==undefined?nil:result},$Enumerable_inject$56.$$arity=-1);Opal.def(self,"$lazy",$Enumerable_lazy$57=function $$lazy(){var $$58,self=this;return $send($$$($$($nesting,"Enumerator"),"Lazy"),"new",[self,self.$enumerator_size()],($$58=function(enum$,$a){var self=$$58.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;return $send(enum$,"yield",Opal.to_a(args))},$$58.$$s=self,$$58.$$arity=-2,$$58))},$Enumerable_lazy$57.$$arity=0);Opal.def(self,"$enumerator_size",$Enumerable_enumerator_size$59=function $$enumerator_size(){var self=this;if($truthy(self["$respond_to?"]("size"))){return self.$size()}else{return nil}},$Enumerable_enumerator_size$59.$$arity=0);Opal.alias(self,"map","collect");Opal.def(self,"$max",$Enumerable_max$60=function $$max(n){var $iter=$Enumerable_max$60.$$p,block=$iter||nil,self=this;if($iter)$Enumerable_max$60.$$p=null;if($iter)$Enumerable_max$60.$$p=null;if(n===undefined||n===nil){var result,value;self.$each.$$p=function(){var item=$$($nesting,"Opal").$destructure(arguments);if(result===undefined){result=item;return}if(block!==nil){value=Opal.yieldX(block,[item,result])}else{value=item["$<=>"](result)}if(value===nil){self.$raise($$($nesting,"ArgumentError"),"comparison failed")}if(value>0){result=item}};self.$each();if(result===undefined){return nil}else{return result}}n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");return $send(self,"sort",[],block.$to_proc()).$reverse().$first(n)},$Enumerable_max$60.$$arity=-1);Opal.def(self,"$max_by",$Enumerable_max_by$61=function $$max_by(){var $iter=$Enumerable_max_by$61.$$p,block=$iter||nil,$$62,self=this;if($iter)$Enumerable_max_by$61.$$p=null;if($iter)$Enumerable_max_by$61.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["max_by"],($$62=function(){var self=$$62.$$s||this;return self.$enumerator_size()},$$62.$$s=self,$$62.$$arity=0,$$62))}var result,by;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)>0){result=param;by=value}};self.$each();return result===undefined?nil:result},$Enumerable_max_by$61.$$arity=0);Opal.alias(self,"member?","include?");Opal.def(self,"$min",$Enumerable_min$63=function $$min(){var $iter=$Enumerable_min$63.$$p,block=$iter||nil,self=this;if($iter)$Enumerable_min$63.$$p=null;if($iter)$Enumerable_min$63.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===nil){self.$raise($$($nesting,"ArgumentError"),"comparison failed")}if(value<0){result=param}}}else{self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}if($$($nesting,"Opal").$compare(param,result)<0){result=param}}}self.$each();return result===undefined?nil:result},$Enumerable_min$63.$$arity=0);Opal.def(self,"$min_by",$Enumerable_min_by$64=function $$min_by(){var $iter=$Enumerable_min_by$64.$$p,block=$iter||nil,$$65,self=this;if($iter)$Enumerable_min_by$64.$$p=null;if($iter)$Enumerable_min_by$64.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["min_by"],($$65=function(){var self=$$65.$$s||this;return self.$enumerator_size()},$$65.$$s=self,$$65.$$arity=0,$$65))}var result,by;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)<0){result=param;by=value}};self.$each();return result===undefined?nil:result},$Enumerable_min_by$64.$$arity=0);Opal.def(self,"$minmax",$Enumerable_minmax$66=function $$minmax(){var $iter=$Enumerable_minmax$66.$$p,block=$iter||nil,$a,$$67,self=this;if($iter)$Enumerable_minmax$66.$$p=null;if($iter)$Enumerable_minmax$66.$$p=null;block=$truthy($a=block)?$a:$send(self,"proc",[],($$67=function(a,b){var self=$$67.$$s||this;if(a==null){a=nil}if(b==null){b=nil}return a["$<=>"](b)},$$67.$$s=self,$$67.$$arity=2,$$67));var min=nil,max=nil,first_time=true;self.$each.$$p=function(){var element=$$($nesting,"Opal").$destructure(arguments);if(first_time){min=max=element;first_time=false}else{var min_cmp=block.$call(min,element);if(min_cmp===nil){self.$raise($$($nesting,"ArgumentError"),"comparison failed")}else if(min_cmp>0){min=element}var max_cmp=block.$call(max,element);if(max_cmp===nil){self.$raise($$($nesting,"ArgumentError"),"comparison failed")}else if(max_cmp<0){max=element}}};self.$each();return[min,max]},$Enumerable_minmax$66.$$arity=0);Opal.def(self,"$minmax_by",$Enumerable_minmax_by$68=function $$minmax_by(){var $iter=$Enumerable_minmax_by$68.$$p,block=$iter||nil,self=this;if($iter)$Enumerable_minmax_by$68.$$p=null;if($iter)$Enumerable_minmax_by$68.$$p=null;return self.$raise($$($nesting,"NotImplementedError"))},$Enumerable_minmax_by$68.$$arity=0);Opal.def(self,"$none?",$Enumerable_none$ques$69=function(pattern){try{var $iter=$Enumerable_none$ques$69.$$p,block=$iter||nil,$$70,$$71,$$72,self=this;if($iter)$Enumerable_none$ques$69.$$p=null;if($iter)$Enumerable_none$ques$69.$$p=null;if($truthy(pattern!==undefined)){$send(self,"each",[],($$70=function($a){var self=$$70.$$s||this,$post_args,value,comparable=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;comparable=comparableForPattern(value);if($truthy($send(pattern,"public_send",["==="].concat(Opal.to_a(comparable))))){Opal.ret(false)}else{return nil}},$$70.$$s=self,$$70.$$arity=-1,$$70))}else if(block!==nil){$send(self,"each",[],($$71=function($a){var self=$$71.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(false)}else{return nil}},$$71.$$s=self,$$71.$$arity=-1,$$71))}else{$send(self,"each",[],($$72=function($a){var self=$$72.$$s||this,$post_args,value,item=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;item=$$($nesting,"Opal").$destructure(value);if($truthy(item)){Opal.ret(false)}else{return nil}},$$72.$$s=self,$$72.$$arity=-1,$$72))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_none$ques$69.$$arity=-1);Opal.def(self,"$one?",$Enumerable_one$ques$73=function(pattern){try{var $iter=$Enumerable_one$ques$73.$$p,block=$iter||nil,$$74,$$75,$$76,self=this,count=nil;if($iter)$Enumerable_one$ques$73.$$p=null;if($iter)$Enumerable_one$ques$73.$$p=null;count=0;if($truthy(pattern!==undefined)){$send(self,"each",[],($$74=function($a){var self=$$74.$$s||this,$post_args,value,comparable=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;comparable=comparableForPattern(value);if($truthy($send(pattern,"public_send",["==="].concat(Opal.to_a(comparable))))){count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}}else{return nil}},$$74.$$s=self,$$74.$$arity=-1,$$74))}else if(block!==nil){$send(self,"each",[],($$75=function($a){var self=$$75.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy(Opal.yieldX(block,Opal.to_a(value)))){}else{return nil}count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}},$$75.$$s=self,$$75.$$arity=-1,$$75))}else{$send(self,"each",[],($$76=function($a){var self=$$76.$$s||this,$post_args,value;$post_args=Opal.slice.call(arguments,0,arguments.length);value=$post_args;if($truthy($$($nesting,"Opal").$destructure(value))){}else{return nil}count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}},$$76.$$s=self,$$76.$$arity=-1,$$76))}return count["$=="](1)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_one$ques$73.$$arity=-1);Opal.def(self,"$partition",$Enumerable_partition$77=function $$partition(){var $iter=$Enumerable_partition$77.$$p,block=$iter||nil,$$78,self=this;if($iter)$Enumerable_partition$77.$$p=null;if($iter)$Enumerable_partition$77.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["partition"],($$78=function(){var self=$$78.$$s||this;return self.$enumerator_size()},$$78.$$s=self,$$78.$$arity=0,$$78))}var truthy=[],falsy=[],result;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){truthy.push(param)}else{falsy.push(param)}};self.$each();return[truthy,falsy]},$Enumerable_partition$77.$$arity=0);Opal.alias(self,"reduce","inject");Opal.def(self,"$reject",$Enumerable_reject$79=function $$reject(){var $iter=$Enumerable_reject$79.$$p,block=$iter||nil,$$80,self=this;if($iter)$Enumerable_reject$79.$$p=null;if($iter)$Enumerable_reject$79.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reject"],($$80=function(){var self=$$80.$$s||this;return self.$enumerator_size()},$$80.$$s=self,$$80.$$arity=0,$$80))}var result=[];self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($falsy(value)){result.push(param)}};self.$each();return result},$Enumerable_reject$79.$$arity=0);Opal.def(self,"$reverse_each",$Enumerable_reverse_each$81=function $$reverse_each(){var $iter=$Enumerable_reverse_each$81.$$p,block=$iter||nil,$$82,self=this;if($iter)$Enumerable_reverse_each$81.$$p=null;if($iter)$Enumerable_reverse_each$81.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reverse_each"],($$82=function(){var self=$$82.$$s||this;return self.$enumerator_size()},$$82.$$s=self,$$82.$$arity=0,$$82))}var result=[];self.$each.$$p=function(){result.push(arguments)};self.$each();for(var i=result.length-1;i>=0;i--){Opal.yieldX(block,result[i])}return result},$Enumerable_reverse_each$81.$$arity=0);Opal.alias(self,"select","find_all");Opal.def(self,"$slice_before",$Enumerable_slice_before$83=function $$slice_before(pattern){var $iter=$Enumerable_slice_before$83.$$p,block=$iter||nil,$$84,self=this;if($iter)$Enumerable_slice_before$83.$$p=null;if($iter)$Enumerable_slice_before$83.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise($$($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}return $send($$($nesting,"Enumerator"),"new",[],($$84=function(e){var self=$$84.$$s||this;if(e==null){e=nil}var slice=[];if(block!==nil){if(pattern===undefined){self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}else{self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=block(param,pattern.$dup());if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}}else{self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}self.$each();if(slice.length>0){e["$<<"](slice)}},$$84.$$s=self,$$84.$$arity=1,$$84))},$Enumerable_slice_before$83.$$arity=-1);Opal.def(self,"$slice_after",$Enumerable_slice_after$85=function $$slice_after(pattern){var $iter=$Enumerable_slice_after$85.$$p,block=$iter||nil,$$86,$$87,self=this;if($iter)$Enumerable_slice_after$85.$$p=null;if($iter)$Enumerable_slice_after$85.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise($$($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}if($truthy(pattern!==undefined)){block=$send(self,"proc",[],($$86=function(e){var self=$$86.$$s||this;if(e==null){e=nil}return pattern["$==="](e)},$$86.$$s=self,$$86.$$arity=1,$$86))}return $send($$($nesting,"Enumerator"),"new",[],($$87=function(yielder){var self=$$87.$$s||this;if(yielder==null){yielder=nil}var accumulate;self.$each.$$p=function(){var element=$$($nesting,"Opal").$destructure(arguments),end_chunk=Opal.yield1(block,element);if(accumulate==null){accumulate=[]}if($truthy(end_chunk)){accumulate.push(element);yielder.$yield(accumulate);accumulate=null}else{accumulate.push(element)}};self.$each();if(accumulate!=null){yielder.$yield(accumulate)}},$$87.$$s=self,$$87.$$arity=1,$$87))},$Enumerable_slice_after$85.$$arity=-1);Opal.def(self,"$slice_when",$Enumerable_slice_when$88=function $$slice_when(){var $iter=$Enumerable_slice_when$88.$$p,block=$iter||nil,$$89,self=this;if($iter)$Enumerable_slice_when$88.$$p=null;if($iter)$Enumerable_slice_when$88.$$p=null;if(block!==nil){}else{self.$raise($$($nesting,"ArgumentError"),"wrong number of arguments (0 for 1)")}return $send($$($nesting,"Enumerator"),"new",[],($$89=function(yielder){var self=$$89.$$s||this;if(yielder==null){yielder=nil}var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=$$($nesting,"Opal").$destructure(arguments),before=params[0],after=params[1],match=Opal.yieldX(block,[before,after]);last_after=after;if(slice===nil){slice=[]}if($truthy(match)){slice.push(before);yielder.$yield(slice);slice=[]}else{slice.push(before)}};self.$each_cons(2);if(slice!==nil){slice.push(last_after);yielder.$yield(slice)}},$$89.$$s=self,$$89.$$arity=1,$$89))},$Enumerable_slice_when$88.$$arity=0);Opal.def(self,"$sort",$Enumerable_sort$90=function $$sort(){var $iter=$Enumerable_sort$90.$$p,block=$iter||nil,$$91,self=this,ary=nil;if($iter)$Enumerable_sort$90.$$p=null;if($iter)$Enumerable_sort$90.$$p=null;ary=self.$to_a();if(block!==nil){}else{block=$lambda(($$91=function(a,b){var self=$$91.$$s||this;if(a==null){a=nil}if(b==null){b=nil}return a["$<=>"](b)},$$91.$$s=self,$$91.$$arity=2,$$91))}return $send(ary,"sort",[],block.$to_proc())},$Enumerable_sort$90.$$arity=0);Opal.def(self,"$sort_by",$Enumerable_sort_by$92=function $$sort_by(){var $iter=$Enumerable_sort_by$92.$$p,block=$iter||nil,$$93,$$94,$$95,$$96,self=this,dup=nil;if($iter)$Enumerable_sort_by$92.$$p=null;if($iter)$Enumerable_sort_by$92.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["sort_by"],($$93=function(){var self=$$93.$$s||this;return self.$enumerator_size()},$$93.$$s=self,$$93.$$arity=0,$$93))}dup=$send(self,"map",[],($$94=function(){var self=$$94.$$s||this,arg=nil;arg=$$($nesting,"Opal").$destructure(arguments);return[Opal.yield1(block,arg),arg]},$$94.$$s=self,$$94.$$arity=0,$$94));$send(dup,"sort!",[],($$95=function(a,b){var self=$$95.$$s||this;if(a==null){a=nil}if(b==null){b=nil}return a[0]["$<=>"](b[0])},$$95.$$s=self,$$95.$$arity=2,$$95));return $send(dup,"map!",[],($$96=function(i){var self=$$96.$$s||this;if(i==null){i=nil}return i[1]},$$96.$$s=self,$$96.$$arity=1,$$96))},$Enumerable_sort_by$92.$$arity=0);Opal.def(self,"$sum",$Enumerable_sum$97=function $$sum(initial){var $$98,$iter=$Enumerable_sum$97.$$p,$yield=$iter||nil,self=this,result=nil;if($iter)$Enumerable_sum$97.$$p=null;if(initial==null){initial=0}result=initial;$send(self,"each",[],($$98=function($a){var self=$$98.$$s||this,$post_args,args,item=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;item=function(){if($yield!==nil){return Opal.yieldX($yield,Opal.to_a(args))}else{return $$($nesting,"Opal").$destructure(args)}return nil}();return result=$rb_plus(result,item)},$$98.$$s=self,$$98.$$arity=-1,$$98));return result},$Enumerable_sum$97.$$arity=-1);Opal.def(self,"$take",$Enumerable_take$99=function $$take(num){var self=this;return self.$first(num)},$Enumerable_take$99.$$arity=1);Opal.def(self,"$take_while",$Enumerable_take_while$100=function $$take_while(){try{var $iter=$Enumerable_take_while$100.$$p,block=$iter||nil,$$101,self=this,result=nil;if($iter)$Enumerable_take_while$100.$$p=null;if($iter)$Enumerable_take_while$100.$$p=null;if($truthy(block)){}else{return self.$enum_for("take_while")}result=[];return $send(self,"each",[],($$101=function($a){var self=$$101.$$s||this,$post_args,args,value=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;value=$$($nesting,"Opal").$destructure(args);if($truthy(Opal.yield1(block,value))){}else{Opal.ret(result)}return result.push(value)},$$101.$$s=self,$$101.$$arity=-1,$$101))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Enumerable_take_while$100.$$arity=0);Opal.def(self,"$uniq",$Enumerable_uniq$102=function $$uniq(){var $iter=$Enumerable_uniq$102.$$p,block=$iter||nil,$$103,self=this,hash=nil;if($iter)$Enumerable_uniq$102.$$p=null;if($iter)$Enumerable_uniq$102.$$p=null;hash=$hash2([],{});$send(self,"each",[],($$103=function($a){var self=$$103.$$s||this,$post_args,args,value=nil,produced=nil,$writer=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;value=$$($nesting,"Opal").$destructure(args);produced=function(){if(block!==nil){return Opal.yield1(block,value)}else{return value}return nil}();if($truthy(hash["$key?"](produced))){return nil}else{$writer=[produced,value];$send(hash,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}},$$103.$$s=self,$$103.$$arity=-1,$$103));return hash.$values()},$Enumerable_uniq$102.$$arity=0);Opal.alias(self,"to_a","entries");Opal.def(self,"$zip",$Enumerable_zip$104=function $$zip($a){var $iter=$Enumerable_zip$104.$$p,block=$iter||nil,$post_args,others,self=this;if($iter)$Enumerable_zip$104.$$p=null;if($iter)$Enumerable_zip$104.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);others=$post_args;return $send(self.$to_a(),"zip",Opal.to_a(others))},$Enumerable_zip$104.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["corelib/enumerator"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs0){method=$post_args[0];$post_args.splice(0,1)}if(method==null){method="each"}args=$post_args;var obj=self.$allocate();obj.object=object;obj.size=block;obj.method=method;obj.args=args;return obj},$Enumerator_for$1.$$arity=-2);Opal.def(self,"$initialize",$Enumerator_initialize$2=function $$initialize($a){var $iter=$Enumerator_initialize$2.$$p,block=$iter||nil,$post_args,self=this;if($iter)$Enumerator_initialize$2.$$p=null;if($iter)$Enumerator_initialize$2.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);if($truthy(block)){self.object=$send($$($nesting,"Generator"),"new",[],block.$to_proc());self.method="each";self.args=[];self.size=arguments[0]||nil;if($truthy(self.size)){return self.size=$$($nesting,"Opal").$coerce_to(self.size,$$($nesting,"Integer"),"to_int")}else{return nil}}else{self.object=arguments[0];self.method=arguments[1]||"each";self.args=$slice.call(arguments,2);return self.size=nil}},$Enumerator_initialize$2.$$arity=-1);Opal.def(self,"$each",$Enumerator_each$3=function $$each($a){var $iter=$Enumerator_each$3.$$p,block=$iter||nil,$post_args,args,$b,self=this;if($iter)$Enumerator_each$3.$$p=null;if($iter)$Enumerator_each$3.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy($truthy($b=block["$nil?"]())?args["$empty?"]():$b)){return self}args=$rb_plus(self.args,args);if($truthy(block["$nil?"]())){return $send(self.$class(),"new",[self.object,self.method].concat(Opal.to_a(args)))}return $send(self.object,"__send__",[self.method].concat(Opal.to_a(args)),block.$to_proc())},$Enumerator_each$3.$$arity=-1);Opal.def(self,"$size",$Enumerator_size$4=function $$size(){var self=this;if($truthy($$($nesting,"Proc")["$==="](self.size))){return $send(self.size,"call",Opal.to_a(self.args))}else{return self.size}},$Enumerator_size$4.$$arity=0);Opal.def(self,"$with_index",$Enumerator_with_index$5=function $$with_index(offset){var $iter=$Enumerator_with_index$5.$$p,block=$iter||nil,$$6,self=this;if($iter)$Enumerator_with_index$5.$$p=null;if($iter)$Enumerator_with_index$5.$$p=null;if(offset==null){offset=0}offset=function(){if($truthy(offset)){return $$($nesting,"Opal").$coerce_to(offset,$$($nesting,"Integer"),"to_int")}else{return 0}return nil}();if($truthy(block)){}else{return $send(self,"enum_for",["with_index",offset],($$6=function(){var self=$$6.$$s||this;return self.$size()},$$6.$$s=self,$$6.$$arity=0,$$6))}var result,index=offset;self.$each.$$p=function(){var param=$$($nesting,"Opal").$destructure(arguments),value=block(param,index);index++;return value};return self.$each()},$Enumerator_with_index$5.$$arity=-1);Opal.alias(self,"with_object","each_with_object");Opal.def(self,"$inspect",$Enumerator_inspect$7=function $$inspect(){var self=this,result=nil;result=""+"#<"+self.$class()+": "+self.object.$inspect()+":"+self.method;if($truthy(self.args["$any?"]())){result=$rb_plus(result,""+"("+self.args.$inspect()["$[]"]($$($nesting,"Range").$new(1,-2))+")")}return $rb_plus(result,">")},$Enumerator_inspect$7.$$arity=0);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Generator");var $nesting=[self].concat($parent_nesting),$Generator_initialize$8,$Generator_each$9;self.$$prototype.block=nil;self.$include($$($nesting,"Enumerable"));Opal.def(self,"$initialize",$Generator_initialize$8=function $$initialize(){var $iter=$Generator_initialize$8.$$p,block=$iter||nil,self=this;if($iter)$Generator_initialize$8.$$p=null;if($iter)$Generator_initialize$8.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"LocalJumpError"),"no block given")}return self.block=block},$Generator_initialize$8.$$arity=0);return(Opal.def(self,"$each",$Generator_each$9=function $$each($a){var $iter=$Generator_each$9.$$p,block=$iter||nil,$post_args,args,self=this,yielder=nil;if($iter)$Generator_each$9.$$p=null;if($iter)$Generator_each$9.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;yielder=$send($$($nesting,"Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder);Opal.yieldX(self.block,args)}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}return self},$Generator_each$9.$$arity=-1),nil)&&"each"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Yielder");var $nesting=[self].concat($parent_nesting),$Yielder_initialize$10,$Yielder_yield$11,$Yielder_$lt$lt$12;self.$$prototype.block=nil;Opal.def(self,"$initialize",$Yielder_initialize$10=function $$initialize(){var $iter=$Yielder_initialize$10.$$p,block=$iter||nil,self=this;if($iter)$Yielder_initialize$10.$$p=null;if($iter)$Yielder_initialize$10.$$p=null;return self.block=block},$Yielder_initialize$10.$$arity=0);Opal.def(self,"$yield",$Yielder_yield$11=function($a){var $post_args,values,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);values=$post_args;var value=Opal.yieldX(self.block,values);if(value===$breaker){throw $breaker}return value},$Yielder_yield$11.$$arity=-1);return(Opal.def(self,"$<<",$Yielder_$lt$lt$12=function($a){var $post_args,values,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);values=$post_args;$send(self,"yield",Opal.to_a(values));return self},$Yielder_$lt$lt$12.$$arity=-1),nil)&&"<<"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lazy");var $nesting=[self].concat($parent_nesting),$Lazy_initialize$13,$Lazy_lazy$16,$Lazy_collect$17,$Lazy_collect_concat$19,$Lazy_drop$23,$Lazy_drop_while$25,$Lazy_enum_for$27,$Lazy_find_all$28,$Lazy_grep$30,$Lazy_reject$33,$Lazy_take$35,$Lazy_take_while$37,$Lazy_inspect$39;self.$$prototype.enumerator=nil;(function($base,$super,$parent_nesting){var self=$klass($base,$super,"StopLazyError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"Exception"),$nesting);Opal.def(self,"$initialize",$Lazy_initialize$13=function $$initialize(object,size){var $iter=$Lazy_initialize$13.$$p,block=$iter||nil,$$14,self=this;if($iter)$Lazy_initialize$13.$$p=null;if($iter)$Lazy_initialize$13.$$p=null;if(size==null){size=nil}if(block!==nil){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy new without a block")}self.enumerator=object;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Lazy_initialize$13,false),[size],($$14=function(yielder,$a){var self=$$14.$$s||this,$post_args,each_args,$$15;if(yielder==null){yielder=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);each_args=$post_args;try{return $send(object,"each",Opal.to_a(each_args),($$15=function($b){var self=$$15.$$s||this,$post_args,args;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;args.unshift(yielder);Opal.yieldX(block,args)},$$15.$$s=self,$$15.$$arity=-1,$$15))}catch($err){if(Opal.rescue($err,[$$($nesting,"Exception")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},$$14.$$s=self,$$14.$$arity=-2,$$14))},$Lazy_initialize$13.$$arity=-2);Opal.alias(self,"force","to_a");Opal.def(self,"$lazy",$Lazy_lazy$16=function $$lazy(){var self=this;return self},$Lazy_lazy$16.$$arity=0);Opal.def(self,"$collect",$Lazy_collect$17=function $$collect(){var $iter=$Lazy_collect$17.$$p,block=$iter||nil,$$18,self=this;if($iter)$Lazy_collect$17.$$p=null;if($iter)$Lazy_collect$17.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send($$($nesting,"Lazy"),"new",[self,self.$enumerator_size()],($$18=function(enum$,$a){var self=$$18.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var value=Opal.yieldX(block,args);enum$.$yield(value)},$$18.$$s=self,$$18.$$arity=-2,$$18))},$Lazy_collect$17.$$arity=0);Opal.def(self,"$collect_concat",$Lazy_collect_concat$19=function $$collect_concat(){var $iter=$Lazy_collect_concat$19.$$p,block=$iter||nil,$$20,self=this;if($iter)$Lazy_collect_concat$19.$$p=null;if($iter)$Lazy_collect_concat$19.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send($$($nesting,"Lazy"),"new",[self,nil],($$20=function(enum$,$a){var self=$$20.$$s||this,$post_args,args,$$21,$$22;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var value=Opal.yieldX(block,args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each")){$send(value,"each",[],($$21=function(v){var self=$$21.$$s||this;if(v==null){v=nil}return enum$.$yield(v)},$$21.$$s=self,$$21.$$arity=1,$$21))}else{var array=$$($nesting,"Opal").$try_convert(value,$$($nesting,"Array"),"to_ary");if(array===nil){enum$.$yield(value)}else{$send(value,"each",[],($$22=function(v){var self=$$22.$$s||this;if(v==null){v=nil}return enum$.$yield(v)},$$22.$$s=self,$$22.$$arity=1,$$22))}}},$$20.$$s=self,$$20.$$arity=-2,$$20))},$Lazy_collect_concat$19.$$arity=0);Opal.def(self,"$drop",$Lazy_drop$23=function $$drop(n){var $$24,self=this,current_size=nil,set_size=nil,dropped=nil;n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise($$($nesting,"ArgumentError"),"attempt to drop negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy($$($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();dropped=0;return $send($$($nesting,"Lazy"),"new",[self,set_size],($$24=function(enum$,$a){var self=$$24.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if($truthy($rb_lt(dropped,n))){return dropped=$rb_plus(dropped,1)}else{return $send(enum$,"yield",Opal.to_a(args))}},$$24.$$s=self,$$24.$$arity=-2,$$24))},$Lazy_drop$23.$$arity=1);Opal.def(self,"$drop_while",$Lazy_drop_while$25=function $$drop_while(){var $iter=$Lazy_drop_while$25.$$p,block=$iter||nil,$$26,self=this,succeeding=nil;if($iter)$Lazy_drop_while$25.$$p=null;if($iter)$Lazy_drop_while$25.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy drop_while without a block")}succeeding=true;return $send($$($nesting,"Lazy"),"new",[self,nil],($$26=function(enum$,$a){var self=$$26.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if($truthy(succeeding)){var value=Opal.yieldX(block,args);if($falsy(value)){succeeding=false;$send(enum$,"yield",Opal.to_a(args))}}else{return $send(enum$,"yield",Opal.to_a(args))}},$$26.$$s=self,$$26.$$arity=-2,$$26))},$Lazy_drop_while$25.$$arity=0);Opal.def(self,"$enum_for",$Lazy_enum_for$27=function $$enum_for($a,$b){var $iter=$Lazy_enum_for$27.$$p,block=$iter||nil,$post_args,method,args,self=this;if($iter)$Lazy_enum_for$27.$$p=null;if($iter)$Lazy_enum_for$27.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);if($post_args.length>0){method=$post_args[0];$post_args.splice(0,1)}if(method==null){method="each"}args=$post_args;return $send(self.$class(),"for",[self,method].concat(Opal.to_a(args)),block.$to_proc())},$Lazy_enum_for$27.$$arity=-1);Opal.def(self,"$find_all",$Lazy_find_all$28=function $$find_all(){var $iter=$Lazy_find_all$28.$$p,block=$iter||nil,$$29,self=this;if($iter)$Lazy_find_all$28.$$p=null;if($iter)$Lazy_find_all$28.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy select without a block")}return $send($$($nesting,"Lazy"),"new",[self,nil],($$29=function(enum$,$a){var self=$$29.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}},$$29.$$s=self,$$29.$$arity=-2,$$29))},$Lazy_find_all$28.$$arity=0);Opal.alias(self,"flat_map","collect_concat");Opal.def(self,"$grep",$Lazy_grep$30=function $$grep(pattern){var $iter=$Lazy_grep$30.$$p,block=$iter||nil,$$31,$$32,self=this;if($iter)$Lazy_grep$30.$$p=null;if($iter)$Lazy_grep$30.$$p=null;if($truthy(block)){return $send($$($nesting,"Lazy"),"new",[self,nil],($$31=function(enum$,$a){var self=$$31.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var param=$$($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){value=Opal.yield1(block,param);enum$.$yield(Opal.yield1(block,param))}},$$31.$$s=self,$$31.$$arity=-2,$$31))}else{return $send($$($nesting,"Lazy"),"new",[self,nil],($$32=function(enum$,$a){var self=$$32.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var param=$$($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){enum$.$yield(param)}},$$32.$$s=self,$$32.$$arity=-2,$$32))}},$Lazy_grep$30.$$arity=1);Opal.alias(self,"map","collect");Opal.alias(self,"select","find_all");Opal.def(self,"$reject",$Lazy_reject$33=function $$reject(){var $iter=$Lazy_reject$33.$$p,block=$iter||nil,$$34,self=this;if($iter)$Lazy_reject$33.$$p=null;if($iter)$Lazy_reject$33.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy reject without a block")}return $send($$($nesting,"Lazy"),"new",[self,nil],($$34=function(enum$,$a){var self=$$34.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var value=Opal.yieldX(block,args);if($falsy(value)){$send(enum$,"yield",Opal.to_a(args))}},$$34.$$s=self,$$34.$$arity=-2,$$34))},$Lazy_reject$33.$$arity=0);Opal.def(self,"$take",$Lazy_take$35=function $$take(n){var $$36,self=this,current_size=nil,set_size=nil,taken=nil;n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise($$($nesting,"ArgumentError"),"attempt to take negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy($$($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();taken=0;return $send($$($nesting,"Lazy"),"new",[self,set_size],($$36=function(enum$,$a){var self=$$36.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if($truthy($rb_lt(taken,n))){$send(enum$,"yield",Opal.to_a(args));return taken=$rb_plus(taken,1)}else{return self.$raise($$($nesting,"StopLazyError"))}},$$36.$$s=self,$$36.$$arity=-2,$$36))},$Lazy_take$35.$$arity=1);Opal.def(self,"$take_while",$Lazy_take_while$37=function $$take_while(){var $iter=$Lazy_take_while$37.$$p,block=$iter||nil,$$38,self=this;if($iter)$Lazy_take_while$37.$$p=null;if($iter)$Lazy_take_while$37.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"tried to call lazy take_while without a block")}return $send($$($nesting,"Lazy"),"new",[self,nil],($$38=function(enum$,$a){var self=$$38.$$s||this,$post_args,args;if(enum$==null){enum$=nil}$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}else{self.$raise($$($nesting,"StopLazyError"))}},$$38.$$s=self,$$38.$$arity=-2,$$38))},$Lazy_take_while$37.$$arity=0);Opal.alias(self,"to_enum","enum_for");return(Opal.def(self,"$inspect",$Lazy_inspect$39=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.enumerator.$inspect()+">"},$Lazy_inspect$39.$$arity=0),nil)&&"inspect"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["corelib/numeric"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$instance_of?","$class","$Float","$respond_to?","$coerce","$__send__","$===","$raise","$equal?","$-","$*","$div","$<","$-@","$ceil","$to_f","$denominator","$to_r","$==","$floor","$/","$%","$Complex","$zero?","$numerator","$abs","$arg","$coerce_to!","$round","$to_i","$truncate","$>"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Numeric");var $nesting=[self].concat($parent_nesting),$Numeric_coerce$1,$Numeric___coerced__$2,$Numeric_$lt_eq_gt$3,$Numeric_$plus$$4,$Numeric_$minus$$5,$Numeric_$percent$6,$Numeric_abs$7,$Numeric_abs2$8,$Numeric_angle$9,$Numeric_ceil$10,$Numeric_conj$11,$Numeric_denominator$12,$Numeric_div$13,$Numeric_divmod$14,$Numeric_fdiv$15,$Numeric_floor$16,$Numeric_i$17,$Numeric_imag$18,$Numeric_integer$ques$19,$Numeric_nonzero$ques$20,$Numeric_numerator$21,$Numeric_polar$22,$Numeric_quo$23,$Numeric_real$24,$Numeric_real$ques$25,$Numeric_rect$26,$Numeric_round$27,$Numeric_to_c$28,$Numeric_to_int$29,$Numeric_truncate$30,$Numeric_zero$ques$31,$Numeric_positive$ques$32,$Numeric_negative$ques$33,$Numeric_dup$34,$Numeric_clone$35,$Numeric_finite$ques$36,$Numeric_infinite$ques$37;self.$include($$($nesting,"Comparable"));Opal.def(self,"$coerce",$Numeric_coerce$1=function $$coerce(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){return[other,self]}return[self.$Float(other),self.$Float(self)]},$Numeric_coerce$1.$$arity=1);Opal.def(self,"$__coerced__",$Numeric___coerced__$2=function $$__coerced__(method,other){var $a,$b,self=this,a=nil,b=nil,$case=nil;if($truthy(other["$respond_to?"]("coerce"))){$b=other.$coerce(self),$a=Opal.to_ary($b),a=$a[0]==null?nil:$a[0],b=$a[1]==null?nil:$a[1],$b;return a.$__send__(method,b)}else{return function(){$case=method;if("+"["$==="]($case)||"-"["$==="]($case)||"*"["$==="]($case)||"/"["$==="]($case)||"%"["$==="]($case)||"&"["$==="]($case)||"|"["$==="]($case)||"^"["$==="]($case)||"**"["$==="]($case)){return self.$raise($$($nesting,"TypeError"),""+other.$class()+" can't be coerced into Numeric")}else if(">"["$==="]($case)||">="["$==="]($case)||"<"["$==="]($case)||"<="["$==="]($case)||"<=>"["$==="]($case)){return self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}else{return nil}}()}},$Numeric___coerced__$2.$$arity=2);Opal.def(self,"$<=>",$Numeric_$lt_eq_gt$3=function(other){var self=this;if($truthy(self["$equal?"](other))){return 0}return nil},$Numeric_$lt_eq_gt$3.$$arity=1);Opal.def(self,"$+@",$Numeric_$plus$$4=function(){var self=this;return self},$Numeric_$plus$$4.$$arity=0);Opal.def(self,"$-@",$Numeric_$minus$$5=function(){var self=this;return $rb_minus(0,self)},$Numeric_$minus$$5.$$arity=0);Opal.def(self,"$%",$Numeric_$percent$6=function(other){var self=this;return $rb_minus(self,$rb_times(other,self.$div(other)))},$Numeric_$percent$6.$$arity=1);Opal.def(self,"$abs",$Numeric_abs$7=function $$abs(){var self=this;if($rb_lt(self,0)){return self["$-@"]()}else{return self}},$Numeric_abs$7.$$arity=0);Opal.def(self,"$abs2",$Numeric_abs2$8=function $$abs2(){var self=this;return $rb_times(self,self)},$Numeric_abs2$8.$$arity=0);Opal.def(self,"$angle",$Numeric_angle$9=function $$angle(){var self=this;if($rb_lt(self,0)){return $$$($$($nesting,"Math"),"PI")}else{return 0}},$Numeric_angle$9.$$arity=0);Opal.alias(self,"arg","angle");Opal.def(self,"$ceil",$Numeric_ceil$10=function $$ceil(ndigits){var self=this;if(ndigits==null){ndigits=0}return self.$to_f().$ceil(ndigits)},$Numeric_ceil$10.$$arity=-1);Opal.def(self,"$conj",$Numeric_conj$11=function $$conj(){var self=this;return self},$Numeric_conj$11.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.def(self,"$denominator",$Numeric_denominator$12=function $$denominator(){var self=this;return self.$to_r().$denominator()},$Numeric_denominator$12.$$arity=0);Opal.def(self,"$div",$Numeric_div$13=function $$div(other){var self=this;if(other["$=="](0)){self.$raise($$($nesting,"ZeroDivisionError"),"divided by o")}return $rb_divide(self,other).$floor()},$Numeric_div$13.$$arity=1);Opal.def(self,"$divmod",$Numeric_divmod$14=function $$divmod(other){var self=this;return[self.$div(other),self["$%"](other)]},$Numeric_divmod$14.$$arity=1);Opal.def(self,"$fdiv",$Numeric_fdiv$15=function $$fdiv(other){var self=this;return $rb_divide(self.$to_f(),other)},$Numeric_fdiv$15.$$arity=1);Opal.def(self,"$floor",$Numeric_floor$16=function $$floor(ndigits){var self=this;if(ndigits==null){ndigits=0}return self.$to_f().$floor(ndigits)},$Numeric_floor$16.$$arity=-1);Opal.def(self,"$i",$Numeric_i$17=function $$i(){var self=this;return self.$Complex(0,self)},$Numeric_i$17.$$arity=0);Opal.def(self,"$imag",$Numeric_imag$18=function $$imag(){var self=this;return 0},$Numeric_imag$18.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.def(self,"$integer?",$Numeric_integer$ques$19=function(){var self=this;return false},$Numeric_integer$ques$19.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.def(self,"$nonzero?",$Numeric_nonzero$ques$20=function(){var self=this;if($truthy(self["$zero?"]())){return nil}else{return self}},$Numeric_nonzero$ques$20.$$arity=0);Opal.def(self,"$numerator",$Numeric_numerator$21=function $$numerator(){var self=this;return self.$to_r().$numerator()},$Numeric_numerator$21.$$arity=0);Opal.alias(self,"phase","arg");Opal.def(self,"$polar",$Numeric_polar$22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},$Numeric_polar$22.$$arity=0);Opal.def(self,"$quo",$Numeric_quo$23=function $$quo(other){var self=this;return $rb_divide($$($nesting,"Opal")["$coerce_to!"](self,$$($nesting,"Rational"),"to_r"),other)},$Numeric_quo$23.$$arity=1);Opal.def(self,"$real",$Numeric_real$24=function $$real(){var self=this;return self},$Numeric_real$24.$$arity=0);Opal.def(self,"$real?",$Numeric_real$ques$25=function(){var self=this;return true},$Numeric_real$ques$25.$$arity=0);Opal.def(self,"$rect",$Numeric_rect$26=function $$rect(){var self=this;return[self,0]},$Numeric_rect$26.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.def(self,"$round",$Numeric_round$27=function $$round(digits){var self=this;return self.$to_f().$round(digits)},$Numeric_round$27.$$arity=-1);Opal.def(self,"$to_c",$Numeric_to_c$28=function $$to_c(){var self=this;return self.$Complex(self,0)},$Numeric_to_c$28.$$arity=0);Opal.def(self,"$to_int",$Numeric_to_int$29=function $$to_int(){var self=this;return self.$to_i()},$Numeric_to_int$29.$$arity=0);Opal.def(self,"$truncate",$Numeric_truncate$30=function $$truncate(ndigits){var self=this;if(ndigits==null){ndigits=0}return self.$to_f().$truncate(ndigits)},$Numeric_truncate$30.$$arity=-1);Opal.def(self,"$zero?",$Numeric_zero$ques$31=function(){var self=this;return self["$=="](0)},$Numeric_zero$ques$31.$$arity=0);Opal.def(self,"$positive?",$Numeric_positive$ques$32=function(){var self=this;return $rb_gt(self,0)},$Numeric_positive$ques$32.$$arity=0);Opal.def(self,"$negative?",$Numeric_negative$ques$33=function(){var self=this;return $rb_lt(self,0)},$Numeric_negative$ques$33.$$arity=0);Opal.def(self,"$dup",$Numeric_dup$34=function $$dup(){var self=this;return self},$Numeric_dup$34.$$arity=0);Opal.def(self,"$clone",$Numeric_clone$35=function $$clone($kwargs){var freeze,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},$Numeric_clone$35.$$arity=-1);Opal.def(self,"$finite?",$Numeric_finite$ques$36=function(){var self=this;return true},$Numeric_finite$ques$36.$$arity=0);return(Opal.def(self,"$infinite?",$Numeric_infinite$ques$37=function(){var self=this;return nil},$Numeric_infinite$ques$37.$$arity=0),nil)&&"infinite?"}($nesting[0],null,$nesting)};Opal.modules["corelib/array"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$==","$object_id","$inspect","$enum_for","$bsearch_index","$to_proc","$nil?","$coerce_to!","$>","$*","$enumerator_size","$empty?","$size","$map","$equal?","$dup","$each","$[]","$dig","$eql?","$length","$begin","$end","$exclude_end?","$flatten","$__id__","$to_s","$new","$max","$min","$!","$>=","$**","$delete_if","$reverse","$rotate","$rand","$at","$keep_if","$shuffle!","$<","$sort","$sort_by","$!=","$times","$[]=","$-","$<<","$values","$is_a?","$last","$first","$upto","$reject","$pristine","$singleton_class"]);self.$require("corelib/enumerable");self.$require("corelib/numeric");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Array");var $nesting=[self].concat($parent_nesting),$Array_$$$1,$Array_initialize$2,$Array_try_convert$3,$Array_$$4,$Array_$$5,$Array_$$6,$Array_$plus$7,$Array_$minus$8,$Array_$lt$lt$9,$Array_$lt_eq_gt$10,$Array_$eq_eq$11,$Array_$$$12,$Array_$$$eq$13,$Array_any$ques$14,$Array_assoc$15,$Array_at$16,$Array_bsearch_index$17,$Array_bsearch$18,$Array_cycle$19,$Array_clear$21,$Array_count$22,$Array_initialize_copy$23,$Array_collect$24,$Array_collect$excl$26,$Array_combination$28,$Array_repeated_combination$30,$Array_compact$32,$Array_compact$excl$33,$Array_concat$34,$Array_delete$37,$Array_delete_at$38,$Array_delete_if$39,$Array_dig$41,$Array_drop$42,$Array_dup$43,$Array_each$44,$Array_each_index$46,$Array_empty$ques$48,$Array_eql$ques$49,$Array_fetch$50,$Array_fill$51,$Array_first$52,$Array_flatten$53,$Array_flatten$excl$54,$Array_hash$55,$Array_include$ques$56,$Array_index$57,$Array_insert$58,$Array_inspect$59,$Array_join$60,$Array_keep_if$61,$Array_last$63,$Array_length$64,$Array_max$65,$Array_min$66,$Array_permutation$67,$Array_repeated_permutation$69,$Array_pop$71,$Array_product$72,$Array_push$73,$Array_rassoc$74,$Array_reject$75,$Array_reject$excl$77,$Array_replace$79,$Array_reverse$80,$Array_reverse$excl$81,$Array_reverse_each$82,$Array_rindex$84,$Array_rotate$85,$Array_rotate$excl$86,$Array_sample$89,$Array_select$90,$Array_select$excl$92,$Array_shift$94,$Array_shuffle$95,$Array_shuffle$excl$96,$Array_slice$excl$97,$Array_sort$98,$Array_sort$excl$99,$Array_sort_by$excl$100,$Array_take$102,$Array_take_while$103,$Array_to_a$104,$Array_to_h$105,$Array_transpose$106,$Array_uniq$109,$Array_uniq$excl$110,$Array_unshift$111,$Array_values_at$112,$Array_zip$115,$Array_inherited$116,$Array_instance_variables$117,$Array_pack$119;self.$include($$($nesting,"Enumerable"));Opal.defineProperty(self.$$prototype,"$$is_array",true);function toArraySubclass(obj,klass){if(klass.$$name===Opal.Array){return obj}else{return klass.$allocate().$replace(obj.$to_a())}}Opal.defs(self,"$[]",$Array_$$$1=function($a){var $post_args,objects,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);objects=$post_args;return toArraySubclass(objects,self)},$Array_$$$1.$$arity=-1);Opal.def(self,"$initialize",$Array_initialize$2=function $$initialize(size,obj){var $iter=$Array_initialize$2.$$p,block=$iter||nil,self=this;if($iter)$Array_initialize$2.$$p=null;if($iter)$Array_initialize$2.$$p=null;if(size==null){size=nil}if(obj==null){obj=nil}if(obj!==nil&&block!==nil){self.$warn("warning: block supersedes default value argument")}if(size>$$$($$($nesting,"Integer"),"MAX")){self.$raise($$($nesting,"ArgumentError"),"array size too big")}if(arguments.length>2){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..2)")}if(arguments.length===0){self.splice(0,self.length);return self}if(arguments.length===1){if(size.$$is_array){self.$replace(size.$to_a());return self}else if(size["$respond_to?"]("to_ary")){self.$replace(size.$to_ary());return self}}size=$$($nesting,"Opal").$coerce_to(size,$$($nesting,"Integer"),"to_int");if(size<0){self.$raise($$($nesting,"ArgumentError"),"negative array size")}self.splice(0,self.length);var i,value;if(block===nil){for(i=0;i",$Array_$lt_eq_gt$10=function(other){var self=this;if($truthy($$($nesting,"Array")["$==="](other))){other=other.$to_a()}else if($truthy(other["$respond_to?"]("to_ary"))){other=other.$to_ary().$to_a()}else{return nil}if(self.$hash()===other.$hash()){return 0}var count=Math.min(self.length,other.length);for(var i=0;i"](other[i]);if(tmp!==0){return tmp}}return self.length["$<=>"](other.length)},$Array_$lt_eq_gt$10.$$arity=1);Opal.def(self,"$==",$Array_$eq_eq$11=function(other){var self=this;var recursed={};function _eqeq(array,other){var i,length,a,b;if(array===other)return true;if(!other.$$is_array){if($$($nesting,"Opal")["$respond_to?"](other,"to_ary")){return other["$=="](array)}else{return false}}if(array.$$constructor!==Array)array=array.$to_a();if(other.$$constructor!==Array)other=other.$to_a();if(array.length!==other.length){return false}recursed[array.$object_id()]=true;for(i=0,length=array.length;isize){return nil}if(to<0){to+=size;if(to<0){return[]}}if(!exclude){to+=1}result=self.slice(from,to);return toArraySubclass(result,self.$class())}function $array_slice_index_length(self,index,length){var size=self.length,exclude,from,to,result;index=Opal.Opal.$coerce_to(index,Opal.Integer,"to_int");if(index<0){index+=size;if(index<0){return nil}}if(length===undefined){if(index>=size||index<0){return nil}return self[index]}else{length=Opal.Opal.$coerce_to(length,Opal.Integer,"to_int");if(length<0||index>size||index<0){return nil}result=self.slice(index,index+length)}return toArraySubclass(result,self.$class())}Opal.def(self,"$[]",$Array_$$$12=function(index,length){var self=this;if(index.$$is_range){return $array_slice_range(self,index)}else{return $array_slice_index_length(self,index,length)}},$Array_$$$12.$$arity=-2);Opal.def(self,"$[]=",$Array_$$$eq$13=function(index,value,extra){var self=this,data=nil,length=nil;var i,size=self.length;if($truthy($$($nesting,"Range")["$==="](index))){data=function(){if($truthy($$($nesting,"Array")["$==="](value))){return value.$to_a()}else if($truthy(value["$respond_to?"]("to_ary"))){return value.$to_ary().$to_a()}else{return[value]}return nil}();var exclude=index.excl,from=$$($nesting,"Opal").$coerce_to(index.begin,$$($nesting,"Integer"),"to_int"),to=$$($nesting,"Opal").$coerce_to(index.end,$$($nesting,"Integer"),"to_int");if(from<0){from+=size;if(from<0){self.$raise($$($nesting,"RangeError"),""+index.$inspect()+" out of range")}}if(to<0){to+=size}if(!exclude){to+=1}if(from>size){for(i=size;isize){for(i=size;i=self.length){return nil}return self[index]},$Array_at$16.$$arity=1);Opal.def(self,"$bsearch_index",$Array_bsearch_index$17=function $$bsearch_index(){var $iter=$Array_bsearch_index$17.$$p,block=$iter||nil,self=this;if($iter)$Array_bsearch_index$17.$$p=null;if($iter)$Array_bsearch_index$17.$$p=null;if(block!==nil){}else{return self.$enum_for("bsearch_index")}var min=0,max=self.length,mid,val,ret,smaller=false,satisfied=nil;while(min0){for(i=0,length=self.length;i0&&n>k){return binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k)}return 0}Opal.def(self,"$combination",$Array_combination$28=function $$combination(n){var $$29,$iter=$Array_combination$28.$$p,$yield=$iter||nil,self=this,num=nil;if($iter)$Array_combination$28.$$p=null;num=$$($nesting,"Opal")["$coerce_to!"](n,$$($nesting,"Integer"),"to_int");if($yield!==nil){}else{return $send(self,"enum_for",["combination",num],($$29=function(){var self=$$29.$$s||this;return binomial_coefficient(self.length,num)},$$29.$$s=self,$$29.$$arity=0,$$29))}var i,length,stack,chosen,lev,done,next;if(num===0){Opal.yield1($yield,[])}else if(num===1){for(i=0,length=self.length;i=0&&num=0){iterate(num,0,[],self)}return self},$Array_repeated_combination$30.$$arity=1);Opal.def(self,"$compact",$Array_compact$32=function $$compact(){var self=this;var result=[];for(var i=0,length=self.length,item;i=self.length){return nil}var result=self[index];self.splice(index,1);return result},$Array_delete_at$38.$$arity=1);Opal.def(self,"$delete_if",$Array_delete_if$39=function $$delete_if(){var $iter=$Array_delete_if$39.$$p,block=$iter||nil,$$40,self=this;if($iter)$Array_delete_if$39.$$p=null;if($iter)$Array_delete_if$39.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["delete_if"],($$40=function(){var self=$$40.$$s||this;return self.$size()},$$40.$$s=self,$$40.$$arity=0,$$40))}for(var i=0,length=self.length,value;i=0&&index2)){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 0..2)")}$c=args,$b=Opal.to_ary($c),one=$b[0]==null?nil:$b[0],two=$b[1]==null?nil:$b[1],$c}else{if($truthy(args.length==0)){self.$raise($$($nesting,"ArgumentError"),"wrong number of arguments (0 for 1..3)")}else if($truthy(args.length>3)){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 1..3)")}$c=args,$b=Opal.to_ary($c),obj=$b[0]==null?nil:$b[0],one=$b[1]==null?nil:$b[1],two=$b[2]==null?nil:$b[2],$c}if($truthy($$($nesting,"Range")["$==="](one))){if($truthy(two)){self.$raise($$($nesting,"TypeError"),"length invalid with range")}left=$$($nesting,"Opal").$coerce_to(one.$begin(),$$($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){self.$raise($$($nesting,"RangeError"),""+one.$inspect()+" out of range")}right=$$($nesting,"Opal").$coerce_to(one.$end(),$$($nesting,"Integer"),"to_int");if($truthy(right<0)){right+=this.length}if($truthy(one["$exclude_end?"]())){}else{right+=1}if($truthy(right<=left)){return self}}else if($truthy(one)){left=$$($nesting,"Opal").$coerce_to(one,$$($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){left=0}if($truthy(two)){right=$$($nesting,"Opal").$coerce_to(two,$$($nesting,"Integer"),"to_int");if($truthy(right==0)){return self}right+=left}else{right=this.length}}else{left=0;right=this.length}if($truthy(left>this.length)){for(i=this.length;ithis.length)){this.length=right}if($truthy(block)){for(length=this.length;left0){if(index<0){index+=self.length+1;if(index<0){self.$raise($$($nesting,"IndexError"),""+index+" is out of bounds")}}if(index>self.length){for(var i=self.length;iself.length){count=self.length}return self.slice(self.length-count,self.length)},$Array_last$63.$$arity=-1);Opal.def(self,"$length",$Array_length$64=function $$length(){var self=this;return self.length},$Array_length$64.$$arity=0);Opal.alias(self,"map","collect");Opal.alias(self,"map!","collect!");Opal.def(self,"$max",$Array_max$65=function $$max(n){var $iter=$Array_max$65.$$p,block=$iter||nil,self=this;if($iter)$Array_max$65.$$p=null;if($iter)$Array_max$65.$$p=null;return $send(self.$each(),"max",[n],block.$to_proc())},$Array_max$65.$$arity=-1);Opal.def(self,"$min",$Array_min$66=function $$min(){var $iter=$Array_min$66.$$p,block=$iter||nil,self=this;if($iter)$Array_min$66.$$p=null;if($iter)$Array_min$66.$$p=null;return $send(self.$each(),"min",[],block.$to_proc())},$Array_min$66.$$arity=0);function descending_factorial(from,how_many){var count=how_many>=0?1:0;while(how_many){count*=from;from--;how_many--}return count}Opal.def(self,"$permutation",$Array_permutation$67=function $$permutation(num){var $iter=$Array_permutation$67.$$p,block=$iter||nil,$$68,self=this,perm=nil,used=nil;if($iter)$Array_permutation$67.$$p=null;if($iter)$Array_permutation$67.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["permutation",num],($$68=function(){var self=$$68.$$s||this;return descending_factorial(self.length,num===undefined?self.length:num)},$$68.$$s=self,$$68.$$arity=0,$$68))}var permute,offensive,output;if(num===undefined){num=self.length}else{num=$$($nesting,"Opal").$coerce_to(num,$$($nesting,"Integer"),"to_int")}if(num<0||self.lengthself.length)){return self.splice(0,self.length)}else{return self.splice(self.length-count,self.length)}},$Array_pop$71.$$arity=-1);Opal.def(self,"$product",$Array_product$72=function $$product($a){var $iter=$Array_product$72.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Array_product$72.$$p=null;if($iter)$Array_product$72.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;var result=block!==nil?null:[],n=args.length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),i,m,subarray,len,resultlen=1;arrays[0]=self;for(i=1;i2147483647){self.$raise($$($nesting,"RangeError"),"too big to product")}lengths[i]=len;counters[i]=0}outer_loop:for(;;){subarray=[];for(i=0;i=0;i--){if(i>=self.length){break}if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(i=self.length-1;i>=0;i--){if(i>=self.length){break}value=block(self[i]);if(value!==false&&value!==nil){return i}}}else if(object==null){return self.$enum_for("rindex")}return nil},$Array_rindex$84.$$arity=-1);Opal.def(self,"$rotate",$Array_rotate$85=function $$rotate(n){var self=this;if(n==null){n=1}n=$$($nesting,"Opal").$coerce_to(n,$$($nesting,"Integer"),"to_int");var ary,idx,firstPart,lastPart;if(self.length===1){return self.slice()}if(self.length===0){return[]}ary=self.slice();idx=n%ary.length;firstPart=ary.slice(idx);lastPart=ary.slice(0,idx);return firstPart.concat(lastPart)},$Array_rotate$85.$$arity=-1);Opal.def(self,"$rotate!",$Array_rotate$excl$86=function(cnt){var self=this,ary=nil;if(cnt==null){cnt=1}if(self.length===0||self.length===1){return self}cnt=$$($nesting,"Opal").$coerce_to(cnt,$$($nesting,"Integer"),"to_int");ary=self.$rotate(cnt);return self.$replace(ary)},$Array_rotate$excl$86.$$arity=-1);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SampleRandom");var $nesting=[self].concat($parent_nesting),$SampleRandom_initialize$87,$SampleRandom_rand$88;self.$$prototype.rng=nil;Opal.def(self,"$initialize",$SampleRandom_initialize$87=function $$initialize(rng){var self=this;return self.rng=rng},$SampleRandom_initialize$87.$$arity=1);return(Opal.def(self,"$rand",$SampleRandom_rand$88=function $$rand(size){var self=this,random=nil;random=$$($nesting,"Opal").$coerce_to(self.rng.$rand(size),$$($nesting,"Integer"),"to_int");if($truthy(random<0)){self.$raise($$($nesting,"RangeError"),"random value must be >= 0")}if($truthy(randomself.length){count=self.length}switch(count){case 0:return[];break;case 1:return[self[rng.$rand(self.length)]];break;case 2:i=rng.$rand(self.length);j=rng.$rand(self.length);if(i===j){j=i===0?i+1:i-1}return[self[i],self[j]];break;default:if(self.length/count>3){abandon=false;spin=0;result=$$($nesting,"Array").$new(count);i=1;result[0]=rng.$rand(self.length);while(i100){abandon=true;break}k=rng.$rand(self.length)}if(abandon){break}j++}if(abandon){break}result[i]=k;i++}if(!abandon){i=0;while(i=i){self.$raise($$($nesting,"RangeError"),""+"random number too big "+j)}}else{j=self.$rand(i)}tmp=self[--i];self[i]=self[j];self[j]=tmp}return self},$Array_shuffle$excl$96.$$arity=-1);Opal.alias(self,"slice","[]");Opal.def(self,"$slice!",$Array_slice$excl$97=function(index,length){var self=this,result=nil,range=nil,range_start=nil,range_end=nil,start=nil;result=nil;if($truthy(length===undefined)){if($truthy($$($nesting,"Range")["$==="](index))){range=index;result=self["$[]"](range);range_start=$$($nesting,"Opal").$coerce_to(range.$begin(),$$($nesting,"Integer"),"to_int");range_end=$$($nesting,"Opal").$coerce_to(range.$end(),$$($nesting,"Integer"),"to_int");if(range_start<0){range_start+=self.length}if(range_end<0){range_end+=self.length}else if(range_end>=self.length){range_end=self.length-1;if(range.excl){range_end+=1}}var range_length=range_end-range_start;if(range.excl){range_end-=1}else{range_length+=1}if(range_start=0&&range_end=0&&range_length>0){self.splice(range_start,range_length)}}else{start=$$($nesting,"Opal").$coerce_to(index,$$($nesting,"Integer"),"to_int");if(start<0){start+=self.length}if(start<0||start>=self.length){return nil}result=self[start];if(start===0){self.shift()}else{self.splice(start,1)}}}else{start=$$($nesting,"Opal").$coerce_to(index,$$($nesting,"Integer"),"to_int");length=$$($nesting,"Opal").$coerce_to(length,$$($nesting,"Integer"),"to_int");if(length<0){return nil}var end=start+length;result=self["$[]"](start,length);if(start<0){start+=self.length}if(start+length>self.length){length=self.length-start}if(start=0){self.splice(start,length)}}return result},$Array_slice$excl$97.$$arity=-2);Opal.def(self,"$sort",$Array_sort$98=function $$sort(){var $iter=$Array_sort$98.$$p,block=$iter||nil,self=this;if($iter)$Array_sort$98.$$p=null;if($iter)$Array_sort$98.$$p=null;if($truthy(self.length>1)){}else{return self}if(block===nil){block=function(a,b){return a["$<=>"](b)}}return self.slice().sort(function(x,y){var ret=block(x,y);if(ret===nil){self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed")}return $rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0})},$Array_sort$98.$$arity=0);Opal.def(self,"$sort!",$Array_sort$excl$99=function(){var $iter=$Array_sort$excl$99.$$p,block=$iter||nil,self=this;if($iter)$Array_sort$excl$99.$$p=null;if($iter)$Array_sort$excl$99.$$p=null;var result;if(block!==nil){result=$send(self.slice(),"sort",[],block.$to_proc())}else{result=self.slice().$sort()}self.length=0;for(var i=0,length=result.length;i=0;i--){self.unshift(objects[i])}return self},$Array_unshift$111.$$arity=-1);Opal.alias(self,"prepend","unshift");Opal.def(self,"$values_at",$Array_values_at$112=function $$values_at($a){var $post_args,args,$$113,self=this,out=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;out=[];$send(args,"each",[],($$113=function(elem){var self=$$113.$$s||this,$$114,finish=nil,start=nil,i=nil;if(elem==null){elem=nil}if($truthy(elem["$is_a?"]($$($nesting,"Range")))){finish=$$($nesting,"Opal").$coerce_to(elem.$last(),$$($nesting,"Integer"),"to_int");start=$$($nesting,"Opal").$coerce_to(elem.$first(),$$($nesting,"Integer"),"to_int");if(start<0){start=start+self.length;return nil}if(finish<0){finish=finish+self.length}if(elem["$exclude_end?"]()){finish--}if(finish=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include","$coerce_to?","$[]","$merge!","$allocate","$raise","$coerce_to!","$each","$fetch","$>=","$>","$==","$compare_by_identity","$lambda?","$abs","$arity","$enum_for","$size","$respond_to?","$class","$dig","$new","$inspect","$map","$to_proc","$flatten","$eql?","$default","$dup","$default_proc","$default_proc=","$-","$default=","$proc"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Hash");var $nesting=[self].concat($parent_nesting),$Hash_$$$1,$Hash_allocate$2,$Hash_try_convert$3,$Hash_initialize$4,$Hash_$eq_eq$5,$Hash_$gt_eq$6,$Hash_$gt$8,$Hash_$lt$9,$Hash_$lt_eq$10,$Hash_$$$11,$Hash_$$$eq$12,$Hash_assoc$13,$Hash_clear$14,$Hash_clone$15,$Hash_compact$16,$Hash_compact$excl$17,$Hash_compare_by_identity$18,$Hash_compare_by_identity$ques$19,$Hash_default$20,$Hash_default$eq$21,$Hash_default_proc$22,$Hash_default_proc$eq$23,$Hash_delete$24,$Hash_delete_if$25,$Hash_dig$27,$Hash_each$28,$Hash_each_key$30,$Hash_each_value$32,$Hash_empty$ques$34,$Hash_fetch$35,$Hash_fetch_values$36,$Hash_flatten$38,$Hash_has_key$ques$39,$Hash_has_value$ques$40,$Hash_hash$41,$Hash_index$42,$Hash_indexes$43,$Hash_inspect$44,$Hash_invert$45,$Hash_keep_if$46,$Hash_keys$48,$Hash_length$49,$Hash_merge$50,$Hash_merge$excl$51,$Hash_rassoc$52,$Hash_rehash$53,$Hash_reject$54,$Hash_reject$excl$56,$Hash_replace$58,$Hash_select$59,$Hash_select$excl$61,$Hash_shift$63,$Hash_slice$64,$Hash_to_a$65,$Hash_to_h$66,$Hash_to_hash$67,$Hash_to_proc$68,$Hash_transform_keys$70,$Hash_transform_keys$excl$72,$Hash_transform_values$74,$Hash_transform_values$excl$76,$Hash_values$78;self.$include($$($nesting,"Enumerable"));self.$$prototype.$$is_hash=true;Opal.defs(self,"$[]",$Hash_$$$1=function($a){var $post_args,argv,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);argv=$post_args;var hash,argc=argv.length,i;if(argc===1){hash=$$($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),$$($nesting,"Hash"),"to_hash");if(hash!==nil){return self.$allocate()["$merge!"](hash)}argv=$$($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),$$($nesting,"Array"),"to_ary");if(argv===nil){self.$raise($$($nesting,"ArgumentError"),"odd number of arguments for Hash")}argc=argv.length;hash=self.$allocate();for(i=0;i=",$Hash_$gt_eq$6=function(other){var $$7,self=this,result=nil;other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Hash"),"to_hash");if(self.$$keys.length",$Hash_$gt$8=function(other){var self=this;other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Hash"),"to_hash");if(self.$$keys.length<=other.$$keys.length){return false}return $rb_ge(self,other)},$Hash_$gt$8.$$arity=1);Opal.def(self,"$<",$Hash_$lt$9=function(other){var self=this;other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Hash"),"to_hash");return $rb_gt(other,self)},$Hash_$lt$9.$$arity=1);Opal.def(self,"$<=",$Hash_$lt_eq$10=function(other){var self=this;other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Hash"),"to_hash");return $rb_ge(other,self)},$Hash_$lt_eq$10.$$arity=1);Opal.def(self,"$[]",$Hash_$$$11=function(key){var self=this;var value=Opal.hash_get(self,key);if(value!==undefined){return value}return self.$default(key)},$Hash_$$$11.$$arity=1);Opal.def(self,"$[]=",$Hash_$$$eq$12=function(key,value){var self=this;Opal.hash_put(self,key,value);return value},$Hash_$$$eq$12.$$arity=2);Opal.def(self,"$assoc",$Hash_assoc$13=function $$assoc(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key;i"+value.$inspect())}return"{"+result.join(", ")+"}"}finally{if(top){inspect_ids=undefined}}},$Hash_inspect$44.$$arity=0);Opal.def(self,"$invert",$Hash_invert$45=function $$invert(){var self=this;var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value;i0){key=keys[0];key=key.$$is_string?key:key.key;return[key,Opal.hash_delete(self,key)]}return self.$default(nil)},$Hash_shift$63.$$arity=0);Opal.alias(self,"size","length");Opal.def(self,"$slice",$Hash_slice$64=function $$slice($a){var $post_args,keys,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);keys=$post_args;var result=Opal.hash();for(var i=0,length=keys.length;irhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$bridge","$raise","$name","$class","$Float","$respond_to?","$coerce_to!","$__coerced__","$===","$!","$>","$**","$new","$<","$to_f","$==","$nan?","$infinite?","$enum_for","$+","$-","$gcd","$lcm","$%","$/","$frexp","$to_i","$ldexp","$rationalize","$*","$<<","$to_r","$truncate","$-@","$size","$<=","$>=","$<=>","$compare","$any?"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Number");var $nesting=[self].concat($parent_nesting),$Number_coerce$2,$Number___id__$3,$Number_$plus$4,$Number_$minus$5,$Number_$$6,$Number_$slash$7,$Number_$percent$8,$Number_$$9,$Number_$$10,$Number_$$11,$Number_$lt$12,$Number_$lt_eq$13,$Number_$gt$14,$Number_$gt_eq$15,$Number_$lt_eq_gt$16,$Number_$lt$lt$17,$Number_$gt$gt$18,$Number_$$$19,$Number_$plus$$20,$Number_$minus$$21,$Number_$$22,$Number_$$$23,$Number_$eq_eq_eq$24,$Number_$eq_eq$25,$Number_abs$26,$Number_abs2$27,$Number_allbits$ques$28,$Number_anybits$ques$29,$Number_angle$30,$Number_bit_length$31,$Number_ceil$32,$Number_chr$33,$Number_denominator$34,$Number_downto$35,$Number_equal$ques$37,$Number_even$ques$38,$Number_floor$39,$Number_gcd$40,$Number_gcdlcm$41,$Number_integer$ques$42,$Number_is_a$ques$43,$Number_instance_of$ques$44,$Number_lcm$45,$Number_next$46,$Number_nobits$ques$47,$Number_nonzero$ques$48,$Number_numerator$49,$Number_odd$ques$50,$Number_ord$51,$Number_pow$52,$Number_pred$53,$Number_quo$54,$Number_rationalize$55,$Number_remainder$56,$Number_round$57,$Number_step$58,$Number_times$60,$Number_to_f$62,$Number_to_i$63,$Number_to_r$64,$Number_to_s$65,$Number_truncate$66,$Number_digits$67,$Number_divmod$68,$Number_upto$69,$Number_zero$ques$71,$Number_size$72,$Number_nan$ques$73,$Number_finite$ques$74,$Number_infinite$ques$75,$Number_positive$ques$76,$Number_negative$ques$77;$$($nesting,"Opal").$bridge(Number,self);Opal.defineProperty(self.$$prototype,"$$is_number",true);self.$$is_number_class=true;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$1;Opal.def(self,"$allocate",$allocate$1=function $$allocate(){var self=this;return self.$raise($$($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},$allocate$1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.def(self,"$coerce",$Number_coerce$2=function $$coerce(other){var self=this;if(other===nil){self.$raise($$($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}else if(other.$$is_string){return[self.$Float(other),self]}else if(other["$respond_to?"]("to_f")){return[$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Float"),"to_f"),self]}else if(other.$$is_number){return[other,self]}else{self.$raise($$($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}},$Number_coerce$2.$$arity=1);Opal.def(self,"$__id__",$Number___id__$3=function $$__id__(){var self=this;return self*2+1},$Number___id__$3.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.def(self,"$+",$Number_$plus$4=function(other){var self=this;if(other.$$is_number){return self+other}else{return self.$__coerced__("+",other)}},$Number_$plus$4.$$arity=1);Opal.def(self,"$-",$Number_$minus$5=function(other){var self=this;if(other.$$is_number){return self-other}else{return self.$__coerced__("-",other)}},$Number_$minus$5.$$arity=1);Opal.def(self,"$*",$Number_$$6=function(other){var self=this;if(other.$$is_number){return self*other}else{return self.$__coerced__("*",other)}},$Number_$$6.$$arity=1);Opal.def(self,"$/",$Number_$slash$7=function(other){var self=this;if(other.$$is_number){return self/other}else{return self.$__coerced__("/",other)}},$Number_$slash$7.$$arity=1);Opal.alias(self,"fdiv","/");Opal.def(self,"$%",$Number_$percent$8=function(other){var self=this;if(other.$$is_number){if(other==-Infinity){return other}else if(other==0){self.$raise($$($nesting,"ZeroDivisionError"),"divided by 0")}else if(other<0||self<0){return(self%other+other)%other}else{return self%other}}else{return self.$__coerced__("%",other)}},$Number_$percent$8.$$arity=1);Opal.def(self,"$&",$Number_$$9=function(other){var self=this;if(other.$$is_number){return self&other}else{return self.$__coerced__("&",other)}},$Number_$$9.$$arity=1);Opal.def(self,"$|",$Number_$$10=function(other){var self=this;if(other.$$is_number){return self|other}else{return self.$__coerced__("|",other)}},$Number_$$10.$$arity=1);Opal.def(self,"$^",$Number_$$11=function(other){var self=this;if(other.$$is_number){return self^other}else{return self.$__coerced__("^",other)}},$Number_$$11.$$arity=1);Opal.def(self,"$<",$Number_$lt$12=function(other){var self=this;if(other.$$is_number){return self",$Number_$gt$14=function(other){var self=this;if(other.$$is_number){return self>other}else{return self.$__coerced__(">",other)}},$Number_$gt$14.$$arity=1);Opal.def(self,"$>=",$Number_$gt_eq$15=function(other){var self=this;if(other.$$is_number){return self>=other}else{return self.$__coerced__(">=",other)}},$Number_$gt_eq$15.$$arity=1);var spaceship_operator=function(self,other){if(other.$$is_number){if(isNaN(self)||isNaN(other)){return nil}if(self>other){return 1}else if(self",other)}};Opal.def(self,"$<=>",$Number_$lt_eq_gt$16=function(other){var self=this;try{return spaceship_operator(self,other)}catch($err){if(Opal.rescue($err,[$$($nesting,"ArgumentError")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},$Number_$lt_eq_gt$16.$$arity=1);Opal.def(self,"$<<",$Number_$lt$lt$17=function(count){var self=this;count=$$($nesting,"Opal")["$coerce_to!"](count,$$($nesting,"Integer"),"to_int");return count>0?self<>-count},$Number_$lt$lt$17.$$arity=1);Opal.def(self,"$>>",$Number_$gt$gt$18=function(count){var self=this;count=$$($nesting,"Opal")["$coerce_to!"](count,$$($nesting,"Integer"),"to_int");return count>0?self>>count:self<<-count},$Number_$gt$gt$18.$$arity=1);Opal.def(self,"$[]",$Number_$$$19=function(bit){var self=this;bit=$$($nesting,"Opal")["$coerce_to!"](bit,$$($nesting,"Integer"),"to_int");if(bit<0){return 0}if(bit>=32){return self<0?1:0}return self>>bit&1},$Number_$$$19.$$arity=1);Opal.def(self,"$+@",$Number_$plus$$20=function(){var self=this;return+self},$Number_$plus$$20.$$arity=0);Opal.def(self,"$-@",$Number_$minus$$21=function(){var self=this;return-self},$Number_$minus$$21.$$arity=0);Opal.def(self,"$~",$Number_$$22=function(){var self=this;return~self},$Number_$$22.$$arity=0);Opal.def(self,"$**",$Number_$$$23=function(other){var $a,$b,self=this;if($truthy($$($nesting,"Integer")["$==="](other))){if($truthy($truthy($a=$$($nesting,"Integer")["$==="](self)["$!"]())?$a:$rb_gt(other,0))){return Math.pow(self,other)}else{return $$($nesting,"Rational").$new(self,1)["$**"](other)}}else if($truthy(($a=$rb_lt(self,0))?$truthy($b=$$($nesting,"Float")["$==="](other))?$b:$$($nesting,"Rational")["$==="](other):$rb_lt(self,0))){return $$($nesting,"Complex").$new(self,0)["$**"](other.$to_f())}else if($truthy(other.$$is_number!=null)){return Math.pow(self,other)}else{return self.$__coerced__("**",other)}},$Number_$$$23.$$arity=1);Opal.def(self,"$===",$Number_$eq_eq_eq$24=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},$Number_$eq_eq_eq$24.$$arity=1);Opal.def(self,"$==",$Number_$eq_eq$25=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},$Number_$eq_eq$25.$$arity=1);Opal.def(self,"$abs",$Number_abs$26=function $$abs(){var self=this;return Math.abs(self)},$Number_abs$26.$$arity=0);Opal.def(self,"$abs2",$Number_abs2$27=function $$abs2(){var self=this;return Math.abs(self*self)},$Number_abs2$27.$$arity=0);Opal.def(self,"$allbits?",$Number_allbits$ques$28=function(mask){var self=this;mask=$$($nesting,"Opal")["$coerce_to!"](mask,$$($nesting,"Integer"),"to_int");return(self&mask)==mask},$Number_allbits$ques$28.$$arity=1);Opal.def(self,"$anybits?",$Number_anybits$ques$29=function(mask){var self=this;mask=$$($nesting,"Opal")["$coerce_to!"](mask,$$($nesting,"Integer"),"to_int");return(self&mask)!==0},$Number_anybits$ques$29.$$arity=1);Opal.def(self,"$angle",$Number_angle$30=function $$angle(){var self=this;if($truthy(self["$nan?"]())){return self}if(self==0){if(1/self>0){return 0}else{return Math.PI}}else if(self<0){return Math.PI}else{return 0}},$Number_angle$30.$$arity=0);Opal.alias(self,"arg","angle");Opal.alias(self,"phase","angle");Opal.def(self,"$bit_length",$Number_bit_length$31=function $$bit_length(){var self=this;if($truthy($$($nesting,"Integer")["$==="](self))){}else{self.$raise($$($nesting,"NoMethodError").$new(""+"undefined method `bit_length` for "+self+":Float","bit_length"))}if(self===0||self===-1){return 0}var result=0,value=self<0?~self:self;while(value!=0){result+=1;value>>>=1}return result},$Number_bit_length$31.$$arity=0);Opal.def(self,"$ceil",$Number_ceil$32=function $$ceil(ndigits){var self=this;if(ndigits==null){ndigits=0}var f=self.$to_f();if(f%1===0&&ndigits>=0){return f}var factor=Math.pow(10,ndigits),result=Math.ceil(f*factor)/factor;if(f%1===0){result=Math.round(result)}return result},$Number_ceil$32.$$arity=-1);Opal.def(self,"$chr",$Number_chr$33=function $$chr(encoding){var self=this;return String.fromCharCode(self)},$Number_chr$33.$$arity=-1);Opal.def(self,"$denominator",$Number_denominator$34=function $$denominator(){var $a,$iter=$Number_denominator$34.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_denominator$34.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return 1}else{return $send(self,Opal.find_super_dispatcher(self,"denominator",$Number_denominator$34,false),$zuper,$iter)}},$Number_denominator$34.$$arity=0);Opal.def(self,"$downto",$Number_downto$35=function $$downto(stop){var $iter=$Number_downto$35.$$p,block=$iter||nil,$$36,self=this;if($iter)$Number_downto$35.$$p=null;if($iter)$Number_downto$35.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["downto",stop],($$36=function(){var self=$$36.$$s||this;if($truthy($$($nesting,"Numeric")["$==="](stop))){}else{self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if($truthy($rb_gt(stop,self))){return 0}else{return $rb_plus($rb_minus(self,stop),1)}},$$36.$$s=self,$$36.$$arity=0,$$36))}if(!stop.$$is_number){self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i>=stop;i--){block(i)}return self},$Number_downto$35.$$arity=1);Opal.alias(self,"eql?","==");Opal.def(self,"$equal?",$Number_equal$ques$37=function(other){var $a,self=this;return $truthy($a=self["$=="](other))?$a:isNaN(self)&&isNaN(other)},$Number_equal$ques$37.$$arity=1);Opal.def(self,"$even?",$Number_even$ques$38=function(){var self=this;return self%2===0},$Number_even$ques$38.$$arity=0);Opal.def(self,"$floor",$Number_floor$39=function $$floor(ndigits){var self=this;if(ndigits==null){ndigits=0}var f=self.$to_f();if(f%1===0&&ndigits>=0){return f}var factor=Math.pow(10,ndigits),result=Math.floor(f*factor)/factor;if(f%1===0){result=Math.round(result)}return result},$Number_floor$39.$$arity=-1);Opal.def(self,"$gcd",$Number_gcd$40=function $$gcd(other){var self=this;if($truthy($$($nesting,"Integer")["$==="](other))){}else{self.$raise($$($nesting,"TypeError"),"not an integer")}var min=Math.abs(self),max=Math.abs(other);while(min>0){var tmp=min;min=max%min;max=tmp}return max},$Number_gcd$40.$$arity=1);Opal.def(self,"$gcdlcm",$Number_gcdlcm$41=function $$gcdlcm(other){var self=this;return[self.$gcd(),self.$lcm()]},$Number_gcdlcm$41.$$arity=1);Opal.def(self,"$integer?",$Number_integer$ques$42=function(){var self=this;return self%1===0},$Number_integer$ques$42.$$arity=0);Opal.def(self,"$is_a?",$Number_is_a$ques$43=function(klass){var $a,$iter=$Number_is_a$ques$43.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_is_a$ques$43.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="]($$($nesting,"Integer")))?$$($nesting,"Integer")["$==="](self):klass["$=="]($$($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="]($$($nesting,"Integer")))?$$($nesting,"Integer")["$==="](self):klass["$=="]($$($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="]($$($nesting,"Float")))?$$($nesting,"Float")["$==="](self):klass["$=="]($$($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"is_a?",$Number_is_a$ques$43,false),$zuper,$iter)},$Number_is_a$ques$43.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.def(self,"$instance_of?",$Number_instance_of$ques$44=function(klass){var $a,$iter=$Number_instance_of$ques$44.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_instance_of$ques$44.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="]($$($nesting,"Integer")))?$$($nesting,"Integer")["$==="](self):klass["$=="]($$($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="]($$($nesting,"Integer")))?$$($nesting,"Integer")["$==="](self):klass["$=="]($$($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="]($$($nesting,"Float")))?$$($nesting,"Float")["$==="](self):klass["$=="]($$($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"instance_of?",$Number_instance_of$ques$44,false),$zuper,$iter)},$Number_instance_of$ques$44.$$arity=1);Opal.def(self,"$lcm",$Number_lcm$45=function $$lcm(other){var self=this;if($truthy($$($nesting,"Integer")["$==="](other))){}else{self.$raise($$($nesting,"TypeError"),"not an integer")}if(self==0||other==0){return 0}else{return Math.abs(self*other/self.$gcd(other))}},$Number_lcm$45.$$arity=1);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.def(self,"$next",$Number_next$46=function $$next(){var self=this;return self+1},$Number_next$46.$$arity=0);Opal.def(self,"$nobits?",$Number_nobits$ques$47=function(mask){var self=this;mask=$$($nesting,"Opal")["$coerce_to!"](mask,$$($nesting,"Integer"),"to_int");return(self&mask)==0},$Number_nobits$ques$47.$$arity=1);Opal.def(self,"$nonzero?",$Number_nonzero$ques$48=function(){var self=this;return self==0?nil:self},$Number_nonzero$ques$48.$$arity=0);Opal.def(self,"$numerator",$Number_numerator$49=function $$numerator(){var $a,$iter=$Number_numerator$49.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_numerator$49.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}else{return $send(self,Opal.find_super_dispatcher(self,"numerator",$Number_numerator$49,false),$zuper,$iter)}},$Number_numerator$49.$$arity=0);Opal.def(self,"$odd?",$Number_odd$ques$50=function(){var self=this;return self%2!==0},$Number_odd$ques$50.$$arity=0);Opal.def(self,"$ord",$Number_ord$51=function $$ord(){var self=this;return self},$Number_ord$51.$$arity=0);Opal.def(self,"$pow",$Number_pow$52=function $$pow(b,m){var self=this;if(self==0){self.$raise($$($nesting,"ZeroDivisionError"),"divided by 0")}if(m===undefined){return self["$**"](b)}else{if(!$$($nesting,"Integer")["$==="](b)){self.$raise($$($nesting,"TypeError"),"Integer#pow() 2nd argument not allowed unless a 1st argument is integer")}if(b<0){self.$raise($$($nesting,"TypeError"),"Integer#pow() 1st argument cannot be negative when 2nd argument specified")}if(!$$($nesting,"Integer")["$==="](m)){self.$raise($$($nesting,"TypeError"),"Integer#pow() 2nd argument not allowed unless all arguments are integers")}if(m===0){self.$raise($$($nesting,"ZeroDivisionError"),"divided by 0")}return self["$**"](b)["$%"](m)}},$Number_pow$52.$$arity=-2);Opal.def(self,"$pred",$Number_pred$53=function $$pred(){var self=this;return self-1},$Number_pred$53.$$arity=0);Opal.def(self,"$quo",$Number_quo$54=function $$quo(other){var $iter=$Number_quo$54.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_quo$54.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($$($nesting,"Integer")["$==="](self))){return $send(self,Opal.find_super_dispatcher(self,"quo",$Number_quo$54,false),$zuper,$iter)}else{return $rb_divide(self,other)}},$Number_quo$54.$$arity=1);Opal.def(self,"$rationalize",$Number_rationalize$55=function $$rationalize(eps){var $a,$b,self=this,f=nil,n=nil;if(arguments.length>1){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy($$($nesting,"Integer")["$==="](self))){return $$($nesting,"Rational").$new(self,1)}else if($truthy(self["$infinite?"]())){return self.$raise($$($nesting,"FloatDomainError"),"Infinity")}else if($truthy(self["$nan?"]())){return self.$raise($$($nesting,"FloatDomainError"),"NaN")}else if($truthy(eps==null)){$b=$$($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),f=$a[0]==null?nil:$a[0],n=$a[1]==null?nil:$a[1],$b;f=$$($nesting,"Math").$ldexp(f,$$$($$($nesting,"Float"),"MANT_DIG")).$to_i();n=$rb_minus(n,$$$($$($nesting,"Float"),"MANT_DIG"));return $$($nesting,"Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize($$($nesting,"Rational").$new(1,1["$<<"]($rb_minus(1,n))))}else{return self.$to_r().$rationalize(eps)}},$Number_rationalize$55.$$arity=-1);Opal.def(self,"$remainder",$Number_remainder$56=function $$remainder(y){var self=this;return $rb_minus(self,$rb_times(y,$rb_divide(self,y).$truncate()))},$Number_remainder$56.$$arity=1);Opal.def(self,"$round",$Number_round$57=function $$round(ndigits){var $a,$b,self=this,_=nil,exp=nil;if($truthy($$($nesting,"Integer")["$==="](self))){if($truthy(ndigits==null)){return self}if($truthy($truthy($a=$$($nesting,"Float")["$==="](ndigits))?ndigits["$infinite?"]():$a)){self.$raise($$($nesting,"RangeError"),"Infinity")}ndigits=$$($nesting,"Opal")["$coerce_to!"](ndigits,$$($nesting,"Integer"),"to_int");if($truthy($rb_lt(ndigits,$$$($$($nesting,"Integer"),"MIN")))){self.$raise($$($nesting,"RangeError"),"out of bounds")}if($truthy(ndigits>=0)){return self}ndigits=ndigits["$-@"]();if(.415241*ndigits-.125>self.$size()){return 0}var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(x)+f/2)/f)*f;return self<0?-x:x}else{if($truthy($truthy($a=self["$nan?"]())?ndigits==null:$a)){self.$raise($$($nesting,"FloatDomainError"),"NaN")}ndigits=$$($nesting,"Opal")["$coerce_to!"](ndigits||0,$$($nesting,"Integer"),"to_int");if($truthy($rb_le(ndigits,0))){if($truthy(self["$nan?"]())){self.$raise($$($nesting,"RangeError"),"NaN")}else if($truthy(self["$infinite?"]())){self.$raise($$($nesting,"FloatDomainError"),"Infinity")}}else if(ndigits["$=="](0)){return Math.round(self)}else if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}$b=$$($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],exp=$a[1]==null?nil:$a[1],$b;if($truthy($rb_ge(ndigits,$rb_minus($rb_plus($$$($$($nesting,"Float"),"DIG"),2),function(){if($truthy($rb_gt(exp,0))){return $rb_divide(exp,4)}else{return $rb_minus($rb_divide(exp,3),1)}return nil}())))){return self}if($truthy($rb_lt(ndigits,function(){if($truthy($rb_gt(exp,0))){return $rb_plus($rb_divide(exp,3),1)}else{return $rb_divide(exp,4)}return nil}()["$-@"]()))){return 0}return Math.round(self*Math.pow(10,ndigits))/Math.pow(10,ndigits)}},$Number_round$57.$$arity=-1);Opal.def(self,"$step",$Number_step$58=function $$step($a,$b,$c){var $iter=$Number_step$58.$$p,block=$iter||nil,$post_args,$kwargs,limit,step,to,by,$$59,self=this,positional_args=nil,keyword_args=nil;if($iter)$Number_step$58.$$p=null;if($iter)$Number_step$58.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}if($post_args.length>0){limit=$post_args[0];$post_args.splice(0,1)}if($post_args.length>0){step=$post_args[0];$post_args.splice(0,1)}to=$kwargs.$$smap["to"];by=$kwargs.$$smap["by"];if(limit!==undefined&&to!==undefined){self.$raise($$($nesting,"ArgumentError"),"to is given twice")}if(step!==undefined&&by!==undefined){self.$raise($$($nesting,"ArgumentError"),"step is given twice")}function validateParameters(){if(to!==undefined){limit=to}if(limit===undefined){limit=nil}if(step===nil){self.$raise($$($nesting,"TypeError"),"step must be numeric")}if(step===0){self.$raise($$($nesting,"ArgumentError"),"step can't be 0")}if(by!==undefined){step=by}if(step===nil||step==null){step=1}var sign=step["$<=>"](0);if(sign===nil){self.$raise($$($nesting,"ArgumentError"),""+"0 can't be coerced into "+step.$class())}if(limit===nil||limit==null){limit=sign>0?$$$($$($nesting,"Float"),"INFINITY"):$$$($$($nesting,"Float"),"INFINITY")["$-@"]()}$$($nesting,"Opal").$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5){err=.5}return floor((limit-self)/step+err)+1}}}function stepSize(){validateParameters();if(step===0){return Infinity}if(step%1!==0){return stepFloatSize()}else if(step>0&&self>limit||step<0&&self0){if(step===Infinity||step===-Infinity){block(self)}else{var i=0,d;if(step>0){while(id){d=limit}block(d);i+=1}}}}}else{var value=self;if(step>0){while(value<=limit){block(value);value+=step}}else{while(value>=limit){block(value);value+=step}}}return self},$Number_step$58.$$arity=-1);Opal.alias(self,"succ","next");Opal.def(self,"$times",$Number_times$60=function $$times(){var $iter=$Number_times$60.$$p,block=$iter||nil,$$61,self=this;if($iter)$Number_times$60.$$p=null;if($iter)$Number_times$60.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["times"],($$61=function(){var self=$$61.$$s||this;return self},$$61.$$s=self,$$61.$$arity=0,$$61))}for(var i=0;i=0){return f}var factor=Math.pow(10,ndigits),result=parseInt(f*factor,10)/factor;if(f%1===0){result=Math.round(result)}return result},$Number_truncate$66.$$arity=-1);Opal.alias(self,"inspect","to_s");Opal.def(self,"$digits",$Number_digits$67=function $$digits(base){var self=this;if(base==null){base=10}if($rb_lt(self,0)){self.$raise($$$($$($nesting,"Math"),"DomainError"),"out of domain")}base=$$($nesting,"Opal")["$coerce_to!"](base,$$($nesting,"Integer"),"to_int");if($truthy($rb_lt(base,2))){self.$raise($$($nesting,"ArgumentError"),""+"invalid radix "+base)}var value=self,result=[];while(value!==0){result.push(value%base);value=parseInt(value/base,10)}return result},$Number_digits$67.$$arity=-1);Opal.def(self,"$divmod",$Number_divmod$68=function $$divmod(other){var $a,$iter=$Number_divmod$68.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Number_divmod$68.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:other["$nan?"]())){return self.$raise($$($nesting,"FloatDomainError"),"NaN")}else if($truthy(self["$infinite?"]())){return self.$raise($$($nesting,"FloatDomainError"),"Infinity")}else{return $send(self,Opal.find_super_dispatcher(self,"divmod",$Number_divmod$68,false),$zuper,$iter)}},$Number_divmod$68.$$arity=1);Opal.def(self,"$upto",$Number_upto$69=function $$upto(stop){var $iter=$Number_upto$69.$$p,block=$iter||nil,$$70,self=this;if($iter)$Number_upto$69.$$p=null;if($iter)$Number_upto$69.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["upto",stop],($$70=function(){var self=$$70.$$s||this;if($truthy($$($nesting,"Numeric")["$==="](stop))){}else{self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if($truthy($rb_lt(stop,self))){return 0}else{return $rb_plus($rb_minus(stop,self),1)}},$$70.$$s=self,$$70.$$arity=0,$$70))}if(!stop.$$is_number){self.$raise($$($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i<=stop;i++){block(i)}return self},$Number_upto$69.$$arity=1);Opal.def(self,"$zero?",$Number_zero$ques$71=function(){var self=this;return self==0},$Number_zero$ques$71.$$arity=0);Opal.def(self,"$size",$Number_size$72=function $$size(){var self=this;return 4},$Number_size$72.$$arity=0);Opal.def(self,"$nan?",$Number_nan$ques$73=function(){var self=this;return isNaN(self)},$Number_nan$ques$73.$$arity=0);Opal.def(self,"$finite?",$Number_finite$ques$74=function(){var self=this;return self!=Infinity&&self!=-Infinity&&!isNaN(self)},$Number_finite$ques$74.$$arity=0);Opal.def(self,"$infinite?",$Number_infinite$ques$75=function(){var self=this;if(self==Infinity){return+1}else if(self==-Infinity){return-1}else{return nil}},$Number_infinite$ques$75.$$arity=0);Opal.def(self,"$positive?",$Number_positive$ques$76=function(){var self=this;return self!=0&&(self==Infinity||1/self>0)},$Number_positive$ques$76.$$arity=0);return(Opal.def(self,"$negative?",$Number_negative$ques$77=function(){var self=this;return self==-Infinity||1/self<0},$Number_negative$ques$77.$$arity=0),nil)&&"negative?"})($nesting[0],$$($nesting,"Numeric"),$nesting);Opal.const_set($nesting[0],"Fixnum",$$($nesting,"Number"));(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Integer");var $nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$78,$eq_eq_eq$79,$sqrt$80;Opal.def(self,"$allocate",$allocate$78=function $$allocate(){var self=this;return self.$raise($$($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},$allocate$78.$$arity=0);Opal.udef(self,"$"+"new");Opal.def(self,"$===",$eq_eq_eq$79=function(other){var self=this;if(!other.$$is_number){return false}return other%1===0},$eq_eq_eq$79.$$arity=1);return(Opal.def(self,"$sqrt",$sqrt$80=function $$sqrt(n){var self=this;n=$$($nesting,"Opal")["$coerce_to!"](n,$$($nesting,"Integer"),"to_int");if(n<0){self.$raise($$$($$($nesting,"Math"),"DomainError"),'Numerical argument is out of domain - "isqrt"')}return parseInt(Math.sqrt(n),10)},$sqrt$80.$$arity=1),nil)&&"sqrt"})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"MAX",Math.pow(2,30)-1);return Opal.const_set($nesting[0],"MIN",-Math.pow(2,30))})($nesting[0],$$($nesting,"Numeric"),$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Float");var $nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$allocate$81,$eq_eq_eq$82;Opal.def(self,"$allocate",$allocate$81=function $$allocate(){var self=this;return self.$raise($$($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},$allocate$81.$$arity=0);Opal.udef(self,"$"+"new");return(Opal.def(self,"$===",$eq_eq_eq$82=function(other){var self=this;return!!other.$$is_number},$eq_eq_eq$82.$$arity=1),nil)&&"==="})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"INFINITY",Infinity);Opal.const_set($nesting[0],"MAX",Number.MAX_VALUE);Opal.const_set($nesting[0],"MIN",Number.MIN_VALUE);Opal.const_set($nesting[0],"NAN",NaN);Opal.const_set($nesting[0],"DIG",15);Opal.const_set($nesting[0],"MANT_DIG",53);Opal.const_set($nesting[0],"RADIX",2);return Opal.const_set($nesting[0],"EPSILON",Number.EPSILON||2.220446049250313e-16)}($nesting[0],$$($nesting,"Numeric"),$nesting)};Opal.modules["corelib/range"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$attr_reader","$raise","$<=>","$include?","$<=","$<","$enum_for","$upto","$to_proc","$respond_to?","$class","$succ","$!","$==","$===","$exclude_end?","$eql?","$begin","$end","$last","$to_a","$>","$-","$abs","$to_i","$coerce_to!","$ceil","$/","$size","$loop","$+","$*","$>=","$each_with_index","$%","$bsearch","$inspect","$[]","$hash"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Range");var $nesting=[self].concat($parent_nesting),$Range_initialize$1,$Range_$eq_eq$2,$Range_$eq_eq_eq$3,$Range_cover$ques$4,$Range_each$5,$Range_eql$ques$6,$Range_exclude_end$ques$7,$Range_first$8,$Range_last$9,$Range_max$10,$Range_min$11,$Range_size$12,$Range_step$13,$Range_bsearch$17,$Range_to_s$18,$Range_inspect$19,$Range_marshal_load$20,$Range_hash$21;self.$$prototype.begin=self.$$prototype.end=self.$$prototype.excl=nil;self.$include($$($nesting,"Enumerable"));self.$$prototype.$$is_range=true;self.$attr_reader("begin","end");Opal.def(self,"$initialize",$Range_initialize$1=function $$initialize(first,last,exclude){var self=this;if(exclude==null){exclude=false}if($truthy(self.begin)){self.$raise($$($nesting,"NameError"),"'initialize' called twice")}if($truthy(first["$<=>"](last))){}else{self.$raise($$($nesting,"ArgumentError"),"bad value for range")}self.begin=first;self.end=last;return self.excl=exclude},$Range_initialize$1.$$arity=-3);Opal.def(self,"$==",$Range_$eq_eq$2=function(other){var self=this;if(!other.$$is_range){return false}return self.excl===other.excl&&self.begin==other.begin&&self.end==other.end},$Range_$eq_eq$2.$$arity=1);Opal.def(self,"$===",$Range_$eq_eq_eq$3=function(value){var self=this;return self["$include?"](value)},$Range_$eq_eq_eq$3.$$arity=1);Opal.def(self,"$cover?",$Range_cover$ques$4=function(value){var $a,self=this,beg_cmp=nil,end_cmp=nil;beg_cmp=self.begin["$<=>"](value);if($truthy($truthy($a=beg_cmp)?$rb_le(beg_cmp,0):$a)){}else{return false}end_cmp=value["$<=>"](self.end);if($truthy(self.excl)){return $truthy($a=end_cmp)?$rb_lt(end_cmp,0):$a}else{return $truthy($a=end_cmp)?$rb_le(end_cmp,0):$a}},$Range_cover$ques$4.$$arity=1);Opal.def(self,"$each",$Range_each$5=function $$each(){var $iter=$Range_each$5.$$p,block=$iter||nil,$a,self=this,current=nil,last=nil;if($iter)$Range_each$5.$$p=null;if($iter)$Range_each$5.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}var i,limit;if(self.begin.$$is_number&&self.end.$$is_number){if(self.begin%1!==0||self.end%1!==0){self.$raise($$($nesting,"TypeError"),"can't iterate from Float")}for(i=self.begin,limit=self.end+function(){if($truthy(self.excl)){return 0}else{return 1}return nil}();i"](last),0))){Opal.yield1(block,current);current=current.$succ()}if($truthy($truthy($a=self.excl["$!"]())?current["$=="](last):$a)){Opal.yield1(block,current)}return self},$Range_each$5.$$arity=0);Opal.def(self,"$eql?",$Range_eql$ques$6=function(other){var $a,$b,self=this;if($truthy($$($nesting,"Range")["$==="](other))){}else{return false}return $truthy($a=$truthy($b=self.excl["$==="](other["$exclude_end?"]()))?self.begin["$eql?"](other.$begin()):$b)?self.end["$eql?"](other.$end()):$a},$Range_eql$ques$6.$$arity=1);Opal.def(self,"$exclude_end?",$Range_exclude_end$ques$7=function(){var self=this;return self.excl},$Range_exclude_end$ques$7.$$arity=0);Opal.def(self,"$first",$Range_first$8=function $$first(n){var $iter=$Range_first$8.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Range_first$8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(n==null)){return self.begin}return $send(self,Opal.find_super_dispatcher(self,"first",$Range_first$8,false),$zuper,$iter)},$Range_first$8.$$arity=-1);Opal.alias(self,"include?","cover?");Opal.def(self,"$last",$Range_last$9=function $$last(n){var self=this;if($truthy(n==null)){return self.end}return self.$to_a().$last(n)},$Range_last$9.$$arity=-1);Opal.def(self,"$max",$Range_max$10=function $$max(){var $a,$iter=$Range_max$10.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Range_max$10.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"max",$Range_max$10,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.excl?self.end-1:self.end}},$Range_max$10.$$arity=0);Opal.alias(self,"member?","cover?");Opal.def(self,"$min",$Range_min$11=function $$min(){var $a,$iter=$Range_min$11.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Range_min$11.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"min",$Range_min$11,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.begin}},$Range_min$11.$$arity=0);Opal.def(self,"$size",$Range_size$12=function $$size(){var $a,self=this,range_begin=nil,range_end=nil,infinity=nil;range_begin=self.begin;range_end=self.end;if($truthy(self.excl)){range_end=$rb_minus(range_end,1)}if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](range_begin))?$$($nesting,"Numeric")["$==="](range_end):$a)){}else{return nil}if($truthy($rb_lt(range_end,range_begin))){return 0}infinity=$$$($$($nesting,"Float"),"INFINITY");if($truthy([range_begin.$abs(),range_end.$abs()]["$include?"](infinity))){return infinity}return(Math.abs(range_end-range_begin)+1).$to_i()},$Range_size$12.$$arity=0);Opal.def(self,"$step",$Range_step$13=function $$step(n){var $$14,$$15,$$16,$iter=$Range_step$13.$$p,$yield=$iter||nil,self=this,i=nil;if($iter)$Range_step$13.$$p=null;if(n==null){n=1}function coerceStepSize(){if(!n.$$is_number){n=$$($nesting,"Opal")["$coerce_to!"](n,$$($nesting,"Integer"),"to_int")}if(n<0){self.$raise($$($nesting,"ArgumentError"),"step can't be negative")}else if(n===0){self.$raise($$($nesting,"ArgumentError"),"step can't be 0")}}function enumeratorSize(){if(!self.begin["$respond_to?"]("succ")){return nil}if(self.begin.$$is_string&&self.end.$$is_string){return nil}if(n%1===0){return $rb_divide(self.$size(),n).$ceil()}else{var begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*$$$($$($nesting,"Float"),"EPSILON"),size;if(err>.5){err=.5}if(self.excl){size=floor((end-begin)/n-err);if(size*n+beginarity&&self.$$is_lambda&&!self.$$is_curried){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+length+" for "+arity+")")}if(length>=arity){return self.$call.apply(self,args)}result=function(){return curried.apply(null,args.concat($slice.call(arguments)))};result.$$is_lambda=self.$$is_lambda;result.$$is_curried=true;return result}curried.$$is_lambda=self.$$is_lambda;curried.$$is_curried=true;return curried},$Proc_curry$9.$$arity=-1);Opal.def(self,"$dup",$Proc_dup$10=function $$dup(){var self=this;var original_proc=self.$$original_proc||self,proc=function(){return original_proc.apply(this,arguments)};for(var prop in self){if(self.hasOwnProperty(prop)){proc[prop]=self[prop]}}return proc},$Proc_dup$10.$$arity=0);return Opal.alias(self,"clone","dup")}($nesting[0],Function,$nesting)};Opal.modules["corelib/method"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$arity","$new","$class","$join","$source_location","$raise"]);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Method");var $nesting=[self].concat($parent_nesting),$Method_initialize$1,$Method_arity$2,$Method_parameters$3,$Method_source_location$4,$Method_comments$5,$Method_call$6,$Method_unbind$7,$Method_to_proc$8,$Method_inspect$9;self.$$prototype.method=self.$$prototype.receiver=self.$$prototype.owner=self.$$prototype.name=nil;self.$attr_reader("owner","receiver","name");Opal.def(self,"$initialize",$Method_initialize$1=function $$initialize(receiver,owner,method,name){var self=this;self.receiver=receiver;self.owner=owner;self.name=name;return self.method=method},$Method_initialize$1.$$arity=4);Opal.def(self,"$arity",$Method_arity$2=function $$arity(){var self=this;return self.method.$arity()},$Method_arity$2.$$arity=0);Opal.def(self,"$parameters",$Method_parameters$3=function $$parameters(){var self=this;return self.method.$$parameters},$Method_parameters$3.$$arity=0);Opal.def(self,"$source_location",$Method_source_location$4=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},$Method_source_location$4.$$arity=0);Opal.def(self,"$comments",$Method_comments$5=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},$Method_comments$5.$$arity=0);Opal.def(self,"$call",$Method_call$6=function $$call($a){var $iter=$Method_call$6.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Method_call$6.$$p=null;if($iter)$Method_call$6.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;self.method.$$p=block;return self.method.apply(self.receiver,args)},$Method_call$6.$$arity=-1);Opal.alias(self,"[]","call");Opal.def(self,"$unbind",$Method_unbind$7=function $$unbind(){var self=this;return $$($nesting,"UnboundMethod").$new(self.receiver.$class(),self.owner,self.method,self.name)},$Method_unbind$7.$$arity=0);Opal.def(self,"$to_proc",$Method_to_proc$8=function $$to_proc(){var self=this;var proc=self.$call.bind(self);proc.$$unbound=self.method;proc.$$is_lambda=true;proc.$$arity=self.method.$$arity;proc.$$parameters=self.method.$$parameters;return proc},$Method_to_proc$8.$$arity=0);return(Opal.def(self,"$inspect",$Method_inspect$9=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.receiver.$class()+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},$Method_inspect$9.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"UnboundMethod");var $nesting=[self].concat($parent_nesting),$UnboundMethod_initialize$10,$UnboundMethod_arity$11,$UnboundMethod_parameters$12,$UnboundMethod_source_location$13,$UnboundMethod_comments$14,$UnboundMethod_bind$15,$UnboundMethod_inspect$16;self.$$prototype.method=self.$$prototype.owner=self.$$prototype.name=self.$$prototype.source=nil;self.$attr_reader("source","owner","name");Opal.def(self,"$initialize",$UnboundMethod_initialize$10=function $$initialize(source,owner,method,name){var self=this;self.source=source;self.owner=owner;self.method=method;return self.name=name},$UnboundMethod_initialize$10.$$arity=4);Opal.def(self,"$arity",$UnboundMethod_arity$11=function $$arity(){var self=this;return self.method.$arity()},$UnboundMethod_arity$11.$$arity=0);Opal.def(self,"$parameters",$UnboundMethod_parameters$12=function $$parameters(){var self=this;return self.method.$$parameters},$UnboundMethod_parameters$12.$$arity=0);Opal.def(self,"$source_location",$UnboundMethod_source_location$13=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},$UnboundMethod_source_location$13.$$arity=0);Opal.def(self,"$comments",$UnboundMethod_comments$14=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},$UnboundMethod_comments$14.$$arity=0);Opal.def(self,"$bind",$UnboundMethod_bind$15=function $$bind(object){var self=this;if(self.owner.$$is_module||Opal.is_a(object,self.owner)){return $$($nesting,"Method").$new(object,self.owner,self.method,self.name)}else{self.$raise($$($nesting,"TypeError"),""+"can't bind singleton method to a different class (expected "+object+".kind_of?("+self.owner+" to be true)")}},$UnboundMethod_bind$15.$$arity=1);return(Opal.def(self,"$inspect",$UnboundMethod_inspect$16=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.source+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},$UnboundMethod_inspect$16.$$arity=0),nil)&&"inspect"}($nesting[0],null,$nesting)};Opal.modules["corelib/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil;$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features;$gvars.LOAD_PATH=$gvars[":"]=[];$gvars["/"]="\n";$gvars[","]=nil;Opal.const_set($nesting[0],"ARGV",[]);Opal.const_set($nesting[0],"ARGF",$$($nesting,"Object").$new());Opal.const_set($nesting[0],"ENV",$hash2([],{}));$gvars.VERBOSE=false;$gvars.DEBUG=false;return $gvars.SAFE=0};Opal.modules["opal/regexp_anchors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$==","$new"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"REGEXP_START",function(){if($$($nesting,"RUBY_ENGINE")["$=="]("opal")){return"^"}else{return nil}return nil}());Opal.const_set($nesting[0],"REGEXP_END",function(){if($$($nesting,"RUBY_ENGINE")["$=="]("opal")){return"$"}else{return nil}return nil}());Opal.const_set($nesting[0],"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"INLINE_IDENTIFIER_REGEXP",$$($nesting,"Regexp").$new(""+"[^"+$$($nesting,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$($nesting,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]"));Opal.const_set($nesting[0],"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"CONST_NAME_REGEXP",$$($nesting,"Regexp").$new(""+$$($nesting,"REGEXP_START")+"(::)?[A-Z][^"+$$($nesting,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$($nesting,"REGEXP_END")))}($nesting[0],$nesting)};Opal.modules["opal/mini"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("corelib/nil");self.$require("corelib/boolean");self.$require("corelib/string");self.$require("corelib/comparable");self.$require("corelib/enumerable");self.$require("corelib/enumerator");self.$require("corelib/array");self.$require("corelib/hash");self.$require("corelib/number");self.$require("corelib/range");self.$require("corelib/proc");self.$require("corelib/method");self.$require("corelib/regexp");self.$require("corelib/variables");return self.$require("opal/regexp_anchors")};Opal.modules["corelib/kernel/format"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$==","$length","$respond_to?","$[]","$coerce_to?","$nil?","$to_a","$raise","$to_int","$fetch","$Integer","$Float","$to_ary","$to_str","$coerce_to","$inspect","$to_s"]);return function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_format$1;Opal.def(self,"$format",$Kernel_format$1=function $$format(format_string,$a){var $post_args,args,$b,self=this,ary=nil;if($gvars.DEBUG==null)$gvars.DEBUG=nil;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if($truthy(($b=args.$length()["$=="](1))?args["$[]"](0)["$respond_to?"]("to_ary"):args.$length()["$=="](1))){ary=$$($nesting,"Opal")["$coerce_to?"](args["$[]"](0),$$($nesting,"Array"),"to_ary");if($truthy(ary["$nil?"]())){}else{args=ary.$to_a()}}var result="",begin_slice=0,end_slice,i,len=format_string.length,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,seq_arg_num=1,pos_arg_num=0,flags,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){if(flags&FWIDTH){self.$raise($$($nesting,"ArgumentError"),"flag after width")}if(flags&FPREC0){self.$raise($$($nesting,"ArgumentError"),"flag after precision")}}function CHECK_FOR_WIDTH(){if(flags&FWIDTH){self.$raise($$($nesting,"ArgumentError"),"width given twice")}if(flags&FPREC0){self.$raise($$($nesting,"ArgumentError"),"width after precision")}}function GET_NTH_ARG(num){if(num>=args.length){self.$raise($$($nesting,"ArgumentError"),"too few arguments")}return args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:self.$raise($$($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with numbered");case-2:self.$raise($$($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with named")}pos_arg_num=seq_arg_num++;return GET_NTH_ARG(pos_arg_num-1)}function GET_POS_ARG(num){if(pos_arg_num>0){self.$raise($$($nesting,"ArgumentError"),""+"numbered("+num+") after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-2){self.$raise($$($nesting,"ArgumentError"),""+"numbered("+num+") after named")}if(num<1){self.$raise($$($nesting,"ArgumentError"),""+"invalid index - "+num+"$")}pos_arg_num=-1;return GET_NTH_ARG(num-1)}function GET_ARG(){return next_arg===undefined?GET_NEXT_ARG():next_arg}function READ_NUM(label){var num,str="";for(;;i++){if(i===len){self.$raise($$($nesting,"ArgumentError"),"malformed format string - %*[0-9]")}if(format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57){i--;num=parseInt(str,10)||0;if(num>2147483647){self.$raise($$($nesting,"ArgumentError"),""+label+" too big")}return num}str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);if(format_string.charAt(i+1)==="$"){i++;arg=GET_POS_ARG(num)}else{arg=GET_NEXT_ARG()}return arg.$to_int()}for(i=format_string.indexOf("%");i!==-1;i=format_string.indexOf("%",i)){str=undefined;flags=FNONE;width=-1;precision=-1;next_arg=undefined;end_slice=i;i++;switch(format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}";hash_parameter_key="";i++;for(;;i++){if(i===len){self.$raise($$($nesting,"ArgumentError"),"malformed name - unmatched parenthesis")}if(format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0){self.$raise($$($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-1){self.$raise($$($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after numbered")}pos_arg_num=-2;if(args[0]===undefined||!args[0].$$is_hash){self.$raise($$($nesting,"ArgumentError"),"one hash required")}next_arg=args[0].$fetch(hash_parameter_key);if(closing_brace_char===">"){continue format_sequence}else{str=next_arg.toString();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length=0){str=arg.toString();while(str.length=0){str=arg.toString(base_number);while(str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);while(str.length=0||isNaN(arg)){if(arg===Infinity){str="Inf"}else{switch(format_string.charAt(i)){case"f":str=arg.toFixed(precision===-1?6:precision);break;case"e":case"E":str=arg.toExponential(precision===-1?6:precision);break;case"g":case"G":str=arg.toExponential();exponent=parseInt(str.split("e")[1],10);if(!(exponent<-4||exponent>=(precision===-1?6:precision))){str=arg.toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length=(precision===-1?6:precision))){str=(-arg).toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){str="-"+str;while(str.length=0&&seq_arg_num"},$Encoding_inspect$8.$$arity=0);Opal.def(self,"$each_byte",$Encoding_each_byte$9=function $$each_byte($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"))},$Encoding_each_byte$9.$$arity=-1);Opal.def(self,"$getbyte",$Encoding_getbyte$10=function $$getbyte($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"))},$Encoding_getbyte$10.$$arity=-1);Opal.def(self,"$bytesize",$Encoding_bytesize$11=function $$bytesize($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"))},$Encoding_bytesize$11.$$arity=-1);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"EncodingError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"StandardError"),$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CompatibilityError");var $nesting=[self].concat($parent_nesting);return nil}($nesting[0],$$($nesting,"EncodingError"),$nesting)})($nesting[0],null,$nesting);$send($$($nesting,"Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:true})],($$12=function(){var self=$$12.$$s||this,$each_byte$13,$bytesize$14;Opal.def(self,"$each_byte",$each_byte$13=function $$each_byte(string){var $iter=$each_byte$13.$$p,block=$iter||nil,self=this;if($iter)$each_byte$13.$$p=null;if($iter)$each_byte$13.$$p=null;for(var i=0,length=string.length;i>8)}},$each_byte$16.$$arity=1);return(Opal.def(self,"$bytesize",$bytesize$17=function $$bytesize(string){var self=this;return string.$bytes().$length()},$bytesize$17.$$arity=1),nil)&&"bytesize"},$$15.$$s=self,$$15.$$arity=0,$$15));$send($$($nesting,"Encoding"),"register",["UTF-16BE"],($$18=function(){var self=$$18.$$s||this,$each_byte$19,$bytesize$20;Opal.def(self,"$each_byte",$each_byte$19=function $$each_byte(string){var $iter=$each_byte$19.$$p,block=$iter||nil,self=this;if($iter)$each_byte$19.$$p=null;if($iter)$each_byte$19.$$p=null;for(var i=0,length=string.length;i>8);Opal.yield1(block,code&255)}},$each_byte$19.$$arity=1);return(Opal.def(self,"$bytesize",$bytesize$20=function $$bytesize(string){var self=this;return string.$bytes().$length()},$bytesize$20.$$arity=1),nil)&&"bytesize"},$$18.$$s=self,$$18.$$arity=0,$$18));$send($$($nesting,"Encoding"),"register",["UTF-32LE"],($$21=function(){var self=$$21.$$s||this,$each_byte$22,$bytesize$23;Opal.def(self,"$each_byte",$each_byte$22=function $$each_byte(string){var $iter=$each_byte$22.$$p,block=$iter||nil,self=this;if($iter)$each_byte$22.$$p=null;if($iter)$each_byte$22.$$p=null;for(var i=0,length=string.length;i>8)}},$each_byte$22.$$arity=1);return(Opal.def(self,"$bytesize",$bytesize$23=function $$bytesize(string){var self=this;return string.$bytes().$length()},$bytesize$23.$$arity=1),nil)&&"bytesize"},$$21.$$s=self,$$21.$$arity=0,$$21));$send($$($nesting,"Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii","dummy"],{aliases:["BINARY","US-ASCII","ASCII"],ascii:true,dummy:true})],($$24=function(){var self=$$24.$$s||this,$each_byte$25,$bytesize$26;Opal.def(self,"$each_byte",$each_byte$25=function $$each_byte(string){var $iter=$each_byte$25.$$p,block=$iter||nil,self=this;if($iter)$each_byte$25.$$p=null;if($iter)$each_byte$25.$$p=null;for(var i=0,length=string.length;i>8)}},$each_byte$25.$$arity=1);return(Opal.def(self,"$bytesize",$bytesize$26=function $$bytesize(string){var self=this;return string.$bytes().$length()},$bytesize$26.$$arity=1),nil)&&"bytesize"},$$24.$$s=self,$$24.$$arity=0,$$24));return function($base,$super,$parent_nesting){var self=$klass($base,$super,"String");var $nesting=[self].concat($parent_nesting),$String_bytes$27,$String_bytesize$28,$String_each_byte$29,$String_each_codepoint$30,$String_codepoints$31,$String_encode$32,$String_force_encoding$33,$String_getbyte$34,$String_valid_encoding$ques$35;self.$$prototype.encoding=nil;self.$attr_reader("encoding");Opal.defineProperty(String.prototype,"encoding",$$$($$($nesting,"Encoding"),"UTF_16LE"));Opal.def(self,"$bytes",$String_bytes$27=function $$bytes(){var self=this;return self.$each_byte().$to_a()},$String_bytes$27.$$arity=0);Opal.def(self,"$bytesize",$String_bytesize$28=function $$bytesize(){var self=this;return self.encoding.$bytesize(self)},$String_bytesize$28.$$arity=0);Opal.def(self,"$each_byte",$String_each_byte$29=function $$each_byte(){var $iter=$String_each_byte$29.$$p,block=$iter||nil,self=this;if($iter)$String_each_byte$29.$$p=null;if($iter)$String_each_byte$29.$$p=null;if(block!==nil){}else{return self.$enum_for("each_byte")}$send(self.encoding,"each_byte",[self],block.$to_proc());return self},$String_each_byte$29.$$arity=0);Opal.def(self,"$each_codepoint",$String_each_codepoint$30=function $$each_codepoint(){var $iter=$String_each_codepoint$30.$$p,block=$iter||nil,self=this;if($iter)$String_each_codepoint$30.$$p=null;if($iter)$String_each_codepoint$30.$$p=null;if(block!==nil){}else{return self.$enum_for("each_codepoint")}for(var i=0,length=self.length;i1){r*=.125;ex++}r=(-.46946116*r+1.072302)*r+.3812513;while(ex<0){r*=.5;ex++}while(ex>0){r*=2;ex--}r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);return r}}Opal.def(self,"$cbrt",$Math_cbrt$11=function $$cbrt(x){var self=this;return $$($nesting,"Math").$checked("cbrt",$$($nesting,"Math")["$float!"](x))},$Math_cbrt$11.$$arity=1);Opal.def(self,"$cos",$Math_cos$12=function $$cos(x){var self=this;return $$($nesting,"Math").$checked("cos",$$($nesting,"Math")["$float!"](x))},$Math_cos$12.$$arity=1);if($truthy(typeof Math.cosh!=="undefined")){}else{Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}}Opal.def(self,"$cosh",$Math_cosh$13=function $$cosh(x){var self=this;return $$($nesting,"Math").$checked("cosh",$$($nesting,"Math")["$float!"](x))},$Math_cosh$13.$$arity=1);if($truthy(typeof Math.erf!=="undefined")){}else{Opal.defineProperty(Math,"erf",function(x){var A1=.254829592,A2=-.284496736,A3=1.421413741,A4=-1.453152027,A5=1.061405429,P=.3275911;var sign=1;if(x<0){sign=-1}x=Math.abs(x);var t=1/(1+P*x);var y=1-((((A5*t+A4)*t+A3)*t+A2)*t+A1)*t*Math.exp(-x*x);return sign*y})}Opal.def(self,"$erf",$Math_erf$14=function $$erf(x){var self=this;return $$($nesting,"Math").$checked("erf",$$($nesting,"Math")["$float!"](x))},$Math_erf$14.$$arity=1);if($truthy(typeof Math.erfc!=="undefined")){}else{Opal.defineProperty(Math,"erfc",function(x){var z=Math.abs(x),t=1/(.5*z+1);var A1=t*.17087277+-.82215223,A2=t*A1+1.48851587,A3=t*A2+-1.13520398,A4=t*A3+.27886807,A5=t*A4+-.18628806,A6=t*A5+.09678418,A7=t*A6+.37409196,A8=t*A7+1.00002368,A9=t*A8,A10=-z*z-1.26551223+A9;var a=t*Math.exp(A10);if(x<0){return 2-a}else{return a}})}Opal.def(self,"$erfc",$Math_erfc$15=function $$erfc(x){var self=this;return $$($nesting,"Math").$checked("erfc",$$($nesting,"Math")["$float!"](x))},$Math_erfc$15.$$arity=1);Opal.def(self,"$exp",$Math_exp$16=function $$exp(x){var self=this;return $$($nesting,"Math").$checked("exp",$$($nesting,"Math")["$float!"](x))},$Math_exp$16.$$arity=1);Opal.def(self,"$frexp",$Math_frexp$17=function $$frexp(x){var self=this;x=$$($nesting,"Math")["$float!"](x);if(isNaN(x)){return[NaN,0]}var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1,frac=x/Math.pow(2,ex);return[frac,ex]},$Math_frexp$17.$$arity=1);Opal.def(self,"$gamma",$Math_gamma$18=function $$gamma(n){var self=this;n=$$($nesting,"Math")["$float!"](n);var i,t,x,value,result,twoN,threeN,fourN,fiveN;var G=4.7421875;var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n)){return NaN}if(n===0&&1/n<0){return-Infinity}if(n===-1||n===-Infinity){self.$raise($$($nesting,"DomainError"),'Numerical argument is out of domain - "gamma"')}if($$($nesting,"Integer")["$==="](n)){if(n<=0){return isFinite(n)?Infinity:NaN}if(n>171){return Infinity}value=n-2;result=n-1;while(value>1){result*=value;value--}if(result==0){result=1}return result}if(n<.5){return Math.PI/(Math.sin(Math.PI*n)*$$($nesting,"Math").$gamma($rb_minus(1,n)))}if(n>=171.35){return Infinity}if(n>85){twoN=n*n;threeN=twoN*n;fourN=threeN*n;fiveN=fourN*n;return Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n))}n-=1;x=P[0];for(i=1;irhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$===","$real?","$raise","$new","$*","$cos","$sin","$attr_reader","$class","$==","$real","$imag","$Complex","$-@","$+","$__coerced__","$-","$nan?","$/","$conj","$abs2","$quo","$polar","$exp","$log","$>","$!=","$divmod","$**","$hypot","$atan2","$lcm","$denominator","$finite?","$infinite?","$numerator","$abs","$arg","$rationalize","$to_f","$to_i","$to_r","$inspect","$positive?","$zero?","$Rational"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Complex");var $nesting=[self].concat($parent_nesting),$Complex_rect$1,$Complex_polar$2,$Complex_initialize$3,$Complex_coerce$4,$Complex_$eq_eq$5,$Complex_$minus$$6,$Complex_$plus$7,$Complex_$minus$8,$Complex_$$9,$Complex_$slash$10,$Complex_$$$11,$Complex_abs$12,$Complex_abs2$13,$Complex_angle$14,$Complex_conj$15,$Complex_denominator$16,$Complex_eql$ques$17,$Complex_fdiv$18,$Complex_finite$ques$19,$Complex_hash$20,$Complex_infinite$ques$21,$Complex_inspect$22,$Complex_numerator$23,$Complex_polar$24,$Complex_rationalize$25,$Complex_real$ques$26,$Complex_rect$27,$Complex_to_f$28,$Complex_to_i$29,$Complex_to_r$30,$Complex_to_s$31;self.$$prototype.real=self.$$prototype.imag=nil;Opal.defs(self,"$rect",$Complex_rect$1=function $$rect(real,imag){var $a,$b,$c,self=this;if(imag==null){imag=0}if($truthy($truthy($a=$truthy($b=$truthy($c=$$($nesting,"Numeric")["$==="](real))?real["$real?"]():$c)?$$($nesting,"Numeric")["$==="](imag):$b)?imag["$real?"]():$a)){}else{self.$raise($$($nesting,"TypeError"),"not a real")}return self.$new(real,imag)},$Complex_rect$1.$$arity=-2);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return Opal.alias(self,"rectangular","rect")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$polar",$Complex_polar$2=function $$polar(r,theta){var $a,$b,$c,self=this;if(theta==null){theta=0}if($truthy($truthy($a=$truthy($b=$truthy($c=$$($nesting,"Numeric")["$==="](r))?r["$real?"]():$c)?$$($nesting,"Numeric")["$==="](theta):$b)?theta["$real?"]():$a)){}else{self.$raise($$($nesting,"TypeError"),"not a real")}return self.$new($rb_times(r,$$($nesting,"Math").$cos(theta)),$rb_times(r,$$($nesting,"Math").$sin(theta)))},$Complex_polar$2.$$arity=-2);self.$attr_reader("real","imag");Opal.def(self,"$initialize",$Complex_initialize$3=function $$initialize(real,imag){var self=this;if(imag==null){imag=0}self.real=real;return self.imag=imag},$Complex_initialize$3.$$arity=-2);Opal.def(self,"$coerce",$Complex_coerce$4=function $$coerce(other){var $a,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){return[other,self]}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return[$$($nesting,"Complex").$new(other,0),self]}else{return self.$raise($$($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}},$Complex_coerce$4.$$arity=1);Opal.def(self,"$==",$Complex_$eq_eq$5=function(other){var $a,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){return($a=self.real["$=="](other.$real()))?self.imag["$=="](other.$imag()):self.real["$=="](other.$real())}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return($a=self.real["$=="](other))?self.imag["$=="](0):self.real["$=="](other)}else{return other["$=="](self)}},$Complex_$eq_eq$5.$$arity=1);Opal.def(self,"$-@",$Complex_$minus$$6=function(){var self=this;return self.$Complex(self.real["$-@"](),self.imag["$-@"]())},$Complex_$minus$$6.$$arity=0);Opal.def(self,"$+",$Complex_$plus$7=function(other){var $a,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){return self.$Complex($rb_plus(self.real,other.$real()),$rb_plus(self.imag,other.$imag()))}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_plus(self.real,other),self.imag)}else{return self.$__coerced__("+",other)}},$Complex_$plus$7.$$arity=1);Opal.def(self,"$-",$Complex_$minus$8=function(other){var $a,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus(self.real,other.$real()),$rb_minus(self.imag,other.$imag()))}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_minus(self.real,other),self.imag)}else{return self.$__coerced__("-",other)}},$Complex_$minus$8.$$arity=1);Opal.def(self,"$*",$Complex_$$9=function(other){var $a,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus($rb_times(self.real,other.$real()),$rb_times(self.imag,other.$imag())),$rb_plus($rb_times(self.real,other.$imag()),$rb_times(self.imag,other.$real())))}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_times(self.real,other),$rb_times(self.imag,other))}else{return self.$__coerced__("*",other)}},$Complex_$$9.$$arity=1);Opal.def(self,"$/",$Complex_$slash$10=function(other){var $a,$b,$c,$d,self=this;if($truthy($$($nesting,"Complex")["$==="](other))){if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=$$($nesting,"Number")["$==="](self.real))?self.real["$nan?"]():$d)?$c:$truthy($d=$$($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$d)?$b:$truthy($c=$$($nesting,"Number")["$==="](other.$real()))?other.$real()["$nan?"]():$c)?$a:$truthy($b=$$($nesting,"Number")["$==="](other.$imag()))?other.$imag()["$nan?"]():$b)){return $$($nesting,"Complex").$new($$$($$($nesting,"Float"),"NAN"),$$$($$($nesting,"Float"),"NAN"))}else{return $rb_divide($rb_times(self,other.$conj()),other.$abs2())}}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex(self.real.$quo(other),self.imag.$quo(other))}else{return self.$__coerced__("/",other)}},$Complex_$slash$10.$$arity=1);Opal.def(self,"$**",$Complex_$$$11=function(other){var $a,$b,$c,$d,self=this,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if(other["$=="](0)){return $$($nesting,"Complex").$new(1,0)}if($truthy($$($nesting,"Complex")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;ore=other.$real();oim=other.$imag();nr=$$($nesting,"Math").$exp($rb_minus($rb_times(ore,$$($nesting,"Math").$log(r)),$rb_times(oim,theta)));ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,$$($nesting,"Math").$log(r)));return $$($nesting,"Complex").$polar(nr,ntheta)}else if($truthy($$($nesting,"Integer")["$==="](other))){if($truthy($rb_gt(other,0))){x=self;z=x;n=$rb_minus(other,1);while($truthy(n["$!="](0))){$c=n.$divmod(2),$b=Opal.to_ary($c),div=$b[0]==null?nil:$b[0],mod=$b[1]==null?nil:$b[1],$c;while(mod["$=="](0)){x=self.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag()));n=div;$d=n.$divmod(2),$c=Opal.to_ary($d),div=$c[0]==null?nil:$c[0],mod=$c[1]==null?nil:$c[1],$d}z=$rb_times(z,x);n=$rb_minus(n,1)}return z}else{return $rb_divide($$($nesting,"Rational").$new(1,1),self)["$**"](other["$-@"]())}}else if($truthy($truthy($a=$$($nesting,"Float")["$==="](other))?$a:$$($nesting,"Rational")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;return $$($nesting,"Complex").$polar(r["$**"](other),$rb_times(theta,other))}else{return self.$__coerced__("**",other)}},$Complex_$$$11.$$arity=1);Opal.def(self,"$abs",$Complex_abs$12=function $$abs(){var self=this;return $$($nesting,"Math").$hypot(self.real,self.imag)},$Complex_abs$12.$$arity=0);Opal.def(self,"$abs2",$Complex_abs2$13=function $$abs2(){var self=this;return $rb_plus($rb_times(self.real,self.real),$rb_times(self.imag,self.imag))},$Complex_abs2$13.$$arity=0);Opal.def(self,"$angle",$Complex_angle$14=function $$angle(){var self=this;return $$($nesting,"Math").$atan2(self.imag,self.real)},$Complex_angle$14.$$arity=0);Opal.alias(self,"arg","angle");Opal.def(self,"$conj",$Complex_conj$15=function $$conj(){var self=this;return self.$Complex(self.real,self.imag["$-@"]())},$Complex_conj$15.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.def(self,"$denominator",$Complex_denominator$16=function $$denominator(){var self=this;return self.real.$denominator().$lcm(self.imag.$denominator())},$Complex_denominator$16.$$arity=0);Opal.alias(self,"divide","/");Opal.def(self,"$eql?",$Complex_eql$ques$17=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=$$($nesting,"Complex")["$==="](other))?self.real.$class()["$=="](self.imag.$class()):$b)?self["$=="](other):$a},$Complex_eql$ques$17.$$arity=1);Opal.def(self,"$fdiv",$Complex_fdiv$18=function $$fdiv(other){var self=this;if($truthy($$($nesting,"Numeric")["$==="](other))){}else{self.$raise($$($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}return $rb_divide(self,other)},$Complex_fdiv$18.$$arity=1);Opal.def(self,"$finite?",$Complex_finite$ques$19=function(){var $a,self=this;return $truthy($a=self.real["$finite?"]())?self.imag["$finite?"]():$a},$Complex_finite$ques$19.$$arity=0);Opal.def(self,"$hash",$Complex_hash$20=function $$hash(){var self=this;return""+"Complex:"+self.real+":"+self.imag},$Complex_hash$20.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.def(self,"$infinite?",$Complex_infinite$ques$21=function(){var $a,self=this;return $truthy($a=self.real["$infinite?"]())?$a:self.imag["$infinite?"]()},$Complex_infinite$ques$21.$$arity=0);Opal.def(self,"$inspect",$Complex_inspect$22=function $$inspect(){var self=this;return""+"("+self+")"},$Complex_inspect$22.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.udef(self,"$"+"negative?");Opal.def(self,"$numerator",$Complex_numerator$23=function $$numerator(){var self=this,d=nil;d=self.$denominator();return self.$Complex($rb_times(self.real.$numerator(),$rb_divide(d,self.real.$denominator())),$rb_times(self.imag.$numerator(),$rb_divide(d,self.imag.$denominator())))},$Complex_numerator$23.$$arity=0);Opal.alias(self,"phase","arg");Opal.def(self,"$polar",$Complex_polar$24=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},$Complex_polar$24.$$arity=0);Opal.udef(self,"$"+"positive?");Opal.alias(self,"quo","/");Opal.def(self,"$rationalize",$Complex_rationalize$25=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy(self.imag["$!="](0))){self.$raise($$($nesting,"RangeError"),""+"can't' convert "+self+" into Rational")}return self.$real().$rationalize(eps)},$Complex_rationalize$25.$$arity=-1);Opal.def(self,"$real?",$Complex_real$ques$26=function(){var self=this;return false},$Complex_real$ques$26.$$arity=0);Opal.def(self,"$rect",$Complex_rect$27=function $$rect(){var self=this;return[self.real,self.imag]},$Complex_rect$27.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.def(self,"$to_f",$Complex_to_f$28=function $$to_f(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($$($nesting,"RangeError"),""+"can't convert "+self+" into Float")}return self.real.$to_f()},$Complex_to_f$28.$$arity=0);Opal.def(self,"$to_i",$Complex_to_i$29=function $$to_i(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($$($nesting,"RangeError"),""+"can't convert "+self+" into Integer")}return self.real.$to_i()},$Complex_to_i$29.$$arity=0);Opal.def(self,"$to_r",$Complex_to_r$30=function $$to_r(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($$($nesting,"RangeError"),""+"can't convert "+self+" into Rational")}return self.real.$to_r()},$Complex_to_r$30.$$arity=0);Opal.def(self,"$to_s",$Complex_to_s$31=function $$to_s(){var $a,$b,$c,self=this,result=nil;result=self.real.$inspect();result=$rb_plus(result,function(){if($truthy($truthy($a=$truthy($b=$truthy($c=$$($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$c)?$b:self.imag["$positive?"]())?$a:self.imag["$zero?"]())){return"+"}else{return"-"}return nil}());result=$rb_plus(result,self.imag.$abs().$inspect());if($truthy($truthy($a=$$($nesting,"Number")["$==="](self.imag))?$truthy($b=self.imag["$nan?"]())?$b:self.imag["$infinite?"]():$a)){result=$rb_plus(result,"*")}return $rb_plus(result,"i")},$Complex_to_s$31.$$arity=0);return Opal.const_set($nesting[0],"I",self.$new(0,1))})($nesting[0],$$($nesting,"Numeric"),$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_Complex$32;Opal.def(self,"$Complex",$Kernel_Complex$32=function $$Complex(real,imag){var self=this;if(imag==null){imag=nil}if($truthy(imag)){return $$($nesting,"Complex").$new(real,imag)}else{return $$($nesting,"Complex").$new(real,0)}},$Kernel_Complex$32.$$arity=-2)})($nesting[0],$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"String");var $nesting=[self].concat($parent_nesting),$String_to_c$33;return(Opal.def(self,"$to_c",$String_to_c$33=function $$to_c(){var self=this;var str=self,re=/[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/,match=str.match(re),real,imag,denominator;function isFloat(){return re.test(str)}function cutFloat(){var match=str.match(re);var number=match[0];str=str.slice(number.length);return number.replace(/_/g,"")}function cutNumber(){if(isFloat()){var numerator=parseFloat(cutFloat());if(str[0]==="/"){str=str.slice(1);if(isFloat()){var denominator=parseFloat(cutFloat());return self.$Rational(numerator,denominator)}else{str="/"+str;return numerator}}else{return numerator}}else{return null}}real=cutNumber();if(!real){if(str[0]==="i"){return self.$Complex(0,1)}if(str[0]==="-"&&str[1]==="i"){return self.$Complex(0,-1)}if(str[0]==="+"&&str[1]==="i"){return self.$Complex(0,1)}return self.$Complex(0,0)}imag=cutNumber();if(!imag){if(str[0]==="i"){return self.$Complex(0,real)}else{return self.$Complex(real,0)}}else{return self.$Complex(real,imag)}},$String_to_c$33.$$arity=0),nil)&&"to_c"}($nesting[0],null,$nesting)};Opal.modules["corelib/rational"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$to_i","$==","$raise","$<","$-@","$new","$gcd","$/","$nil?","$===","$reduce","$to_r","$equal?","$!","$coerce_to!","$to_f","$numerator","$denominator","$<=>","$-","$*","$__coerced__","$+","$Rational","$>","$**","$abs","$ceil","$with_precision","$floor","$<=","$truncate","$send","$convert"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rational");var $nesting=[self].concat($parent_nesting),$Rational_reduce$1,$Rational_convert$2,$Rational_initialize$3,$Rational_numerator$4,$Rational_denominator$5,$Rational_coerce$6,$Rational_$eq_eq$7,$Rational_$lt_eq_gt$8,$Rational_$plus$9,$Rational_$minus$10,$Rational_$$11,$Rational_$slash$12,$Rational_$$$13,$Rational_abs$14,$Rational_ceil$15,$Rational_floor$16,$Rational_hash$17,$Rational_inspect$18,$Rational_rationalize$19,$Rational_round$20,$Rational_to_f$21,$Rational_to_i$22,$Rational_to_r$23,$Rational_to_s$24,$Rational_truncate$25,$Rational_with_precision$26;self.$$prototype.num=self.$$prototype.den=nil;Opal.defs(self,"$reduce",$Rational_reduce$1=function $$reduce(num,den){var self=this,gcd=nil;num=num.$to_i();den=den.$to_i();if(den["$=="](0)){self.$raise($$($nesting,"ZeroDivisionError"),"divided by 0")}else if($truthy($rb_lt(den,0))){num=num["$-@"]();den=den["$-@"]()}else if(den["$=="](1)){return self.$new(num,den)}gcd=num.$gcd(den);return self.$new($rb_divide(num,gcd),$rb_divide(den,gcd))},$Rational_reduce$1.$$arity=2);Opal.defs(self,"$convert",$Rational_convert$2=function $$convert(num,den){var $a,$b,self=this;if($truthy($truthy($a=num["$nil?"]())?$a:den["$nil?"]())){self.$raise($$($nesting,"TypeError"),"cannot convert nil into Rational")}if($truthy($truthy($a=$$($nesting,"Integer")["$==="](num))?$$($nesting,"Integer")["$==="](den):$a)){return self.$reduce(num,den)}if($truthy($truthy($a=$truthy($b=$$($nesting,"Float")["$==="](num))?$b:$$($nesting,"String")["$==="](num))?$a:$$($nesting,"Complex")["$==="](num))){num=num.$to_r()}if($truthy($truthy($a=$truthy($b=$$($nesting,"Float")["$==="](den))?$b:$$($nesting,"String")["$==="](den))?$a:$$($nesting,"Complex")["$==="](den))){den=den.$to_r()}if($truthy($truthy($a=den["$equal?"](1))?$$($nesting,"Integer")["$==="](num)["$!"]():$a)){return $$($nesting,"Opal")["$coerce_to!"](num,$$($nesting,"Rational"),"to_r")}else if($truthy($truthy($a=$$($nesting,"Numeric")["$==="](num))?$$($nesting,"Numeric")["$==="](den):$a)){return $rb_divide(num,den)}else{return self.$reduce(num,den)}},$Rational_convert$2.$$arity=2);Opal.def(self,"$initialize",$Rational_initialize$3=function $$initialize(num,den){var self=this;self.num=num;return self.den=den},$Rational_initialize$3.$$arity=2);Opal.def(self,"$numerator",$Rational_numerator$4=function $$numerator(){var self=this;return self.num},$Rational_numerator$4.$$arity=0);Opal.def(self,"$denominator",$Rational_denominator$5=function $$denominator(){var self=this;return self.den},$Rational_denominator$5.$$arity=0);Opal.def(self,"$coerce",$Rational_coerce$6=function $$coerce(other){var self=this,$case=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){return[other,self]}else if($$($nesting,"Integer")["$==="]($case)){return[other.$to_r(),self]}else if($$($nesting,"Float")["$==="]($case)){return[other,self.$to_f()]}else{return nil}}()},$Rational_coerce$6.$$arity=1);Opal.def(self,"$==",$Rational_$eq_eq$7=function(other){var $a,self=this,$case=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){return($a=self.num["$=="](other.$numerator()))?self.den["$=="](other.$denominator()):self.num["$=="](other.$numerator())}else if($$($nesting,"Integer")["$==="]($case)){return($a=self.num["$=="](other))?self.den["$=="](1):self.num["$=="](other)}else if($$($nesting,"Float")["$==="]($case)){return self.$to_f()["$=="](other)}else{return other["$=="](self)}}()},$Rational_$eq_eq$7.$$arity=1);Opal.def(self,"$<=>",$Rational_$lt_eq_gt$8=function(other){var self=this,$case=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){return $rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()))["$<=>"](0)}else if($$($nesting,"Integer")["$==="]($case)){return $rb_minus(self.num,$rb_times(self.den,other))["$<=>"](0)}else if($$($nesting,"Float")["$==="]($case)){return self.$to_f()["$<=>"](other)}else{return self.$__coerced__("<=>",other)}}()},$Rational_$lt_eq_gt$8.$$arity=1);Opal.def(self,"$+",$Rational_$plus$9=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){num=$rb_plus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($$($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_plus(self.num,$rb_times(other,self.den)),self.den)}else if($$($nesting,"Float")["$==="]($case)){return $rb_plus(self.$to_f(),other)}else{return self.$__coerced__("+",other)}}()},$Rational_$plus$9.$$arity=1);Opal.def(self,"$-",$Rational_$minus$10=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){num=$rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($$($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_minus(self.num,$rb_times(other,self.den)),self.den)}else if($$($nesting,"Float")["$==="]($case)){return $rb_minus(self.$to_f(),other)}else{return self.$__coerced__("-",other)}}()},$Rational_$minus$10.$$arity=1);Opal.def(self,"$*",$Rational_$$11=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$numerator());den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($$($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_times(self.num,other),self.den)}else if($$($nesting,"Float")["$==="]($case)){return $rb_times(self.$to_f(),other)}else{return self.$__coerced__("*",other)}}()},$Rational_$$11.$$arity=1);Opal.def(self,"$/",$Rational_$slash$12=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($$($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$denominator());den=$rb_times(self.den,other.$numerator());return self.$Rational(num,den)}else if($$($nesting,"Integer")["$==="]($case)){if(other["$=="](0)){return $rb_divide(self.$to_f(),0)}else{return self.$Rational(self.num,$rb_times(self.den,other))}}else if($$($nesting,"Float")["$==="]($case)){return $rb_divide(self.$to_f(),other)}else{return self.$__coerced__("/",other)}}()},$Rational_$slash$12.$$arity=1);Opal.def(self,"$**",$Rational_$$$13=function(other){var $a,self=this,$case=nil;return function(){$case=other;if($$($nesting,"Integer")["$==="]($case)){if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return $$$($$($nesting,"Float"),"INFINITY")}else if($truthy($rb_gt(other,0))){return self.$Rational(self.num["$**"](other),self.den["$**"](other))}else if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other["$-@"]()),self.num["$**"](other["$-@"]()))}else{return self.$Rational(1,1)}}else if($$($nesting,"Float")["$==="]($case)){return self.$to_f()["$**"](other)}else if($$($nesting,"Rational")["$==="]($case)){if(other["$=="](0)){return self.$Rational(1,1)}else if(other.$denominator()["$=="](1)){if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other.$numerator().$abs()),self.num["$**"](other.$numerator().$abs()))}else{return self.$Rational(self.num["$**"](other.$numerator()),self.den["$**"](other.$numerator()))}}else if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return self.$raise($$($nesting,"ZeroDivisionError"),"divided by 0")}else{return self.$to_f()["$**"](other)}}else{return self.$__coerced__("**",other)}}()},$Rational_$$$13.$$arity=1);Opal.def(self,"$abs",$Rational_abs$14=function $$abs(){var self=this;return self.$Rational(self.num.$abs(),self.den.$abs())},$Rational_abs$14.$$arity=0);Opal.def(self,"$ceil",$Rational_ceil$15=function $$ceil(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$ceil()}else{return self.$with_precision("ceil",precision)}},$Rational_ceil$15.$$arity=-1);Opal.alias(self,"divide","/");Opal.def(self,"$floor",$Rational_floor$16=function $$floor(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$floor()}else{return self.$with_precision("floor",precision)}},$Rational_floor$16.$$arity=-1);Opal.def(self,"$hash",$Rational_hash$17=function $$hash(){var self=this;return""+"Rational:"+self.num+":"+self.den},$Rational_hash$17.$$arity=0);Opal.def(self,"$inspect",$Rational_inspect$18=function $$inspect(){var self=this;return""+"("+self+")"},$Rational_inspect$18.$$arity=0);Opal.alias(self,"quo","/");Opal.def(self,"$rationalize",$Rational_rationalize$19=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if(eps==null){return self}var e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e);var p0=0,p1=1,q0=1,q1=0,p2,q2;var c,k,t;while(true){c=a.$ceil();if($rb_le(c,b)){break}k=c-1;p2=k*p1+p0;q2=k*q1+q0;t=$rb_divide(1,$rb_minus(b,k));b=$rb_divide(1,$rb_minus(a,k));a=t;p0=p1;q0=q1;p1=p2;q1=q2}return self.$Rational(c*p1+p0,c*q1+q0)},$Rational_rationalize$19.$$arity=-1);Opal.def(self,"$round",$Rational_round$20=function $$round(precision){var self=this,num=nil,den=nil,approx=nil;if(precision==null){precision=0}if(precision["$=="](0)){}else{return self.$with_precision("round",precision)}if(self.num["$=="](0)){return 0}if(self.den["$=="](1)){return self.num}num=$rb_plus($rb_times(self.num.$abs(),2),self.den);den=$rb_times(self.den,2);approx=$rb_divide(num,den).$truncate();if($truthy($rb_lt(self.num,0))){return approx["$-@"]()}else{return approx}},$Rational_round$20.$$arity=-1);Opal.def(self,"$to_f",$Rational_to_f$21=function $$to_f(){var self=this;return $rb_divide(self.num,self.den)},$Rational_to_f$21.$$arity=0);Opal.def(self,"$to_i",$Rational_to_i$22=function $$to_i(){var self=this;return self.$truncate()},$Rational_to_i$22.$$arity=0);Opal.def(self,"$to_r",$Rational_to_r$23=function $$to_r(){var self=this;return self},$Rational_to_r$23.$$arity=0);Opal.def(self,"$to_s",$Rational_to_s$24=function $$to_s(){var self=this;return""+self.num+"/"+self.den},$Rational_to_s$24.$$arity=0);Opal.def(self,"$truncate",$Rational_truncate$25=function $$truncate(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){if($truthy($rb_lt(self.num,0))){return self.$ceil()}else{return self.$floor()}}else{return self.$with_precision("truncate",precision)}},$Rational_truncate$25.$$arity=-1);return(Opal.def(self,"$with_precision",$Rational_with_precision$26=function $$with_precision(method,precision){var self=this,p=nil,s=nil;if($truthy($$($nesting,"Integer")["$==="](precision))){}else{self.$raise($$($nesting,"TypeError"),"not an Integer")}p=10["$**"](precision);s=$rb_times(self,p);if($truthy($rb_lt(precision,1))){return $rb_divide(s.$send(method),p).$to_i()}else{return self.$Rational(s.$send(method),p)}},$Rational_with_precision$26.$$arity=2),nil)&&"with_precision"})($nesting[0],$$($nesting,"Numeric"),$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_Rational$27;Opal.def(self,"$Rational",$Kernel_Rational$27=function $$Rational(numerator,denominator){var self=this;if(denominator==null){denominator=1}return $$($nesting,"Rational").$convert(numerator,denominator)},$Kernel_Rational$27.$$arity=-2)})($nesting[0],$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"String");var $nesting=[self].concat($parent_nesting),$String_to_r$28;return(Opal.def(self,"$to_r",$String_to_r$28=function $$to_r(){var self=this;var str=self.trimLeft(),re=/^[+-]?[\d_]+(\.[\d_]+)?/,match=str.match(re),numerator,denominator;function isFloat(){return re.test(str)}function cutFloat(){var match=str.match(re);var number=match[0];str=str.slice(number.length);return number.replace(/_/g,"")}if(isFloat()){numerator=parseFloat(cutFloat());if(str[0]==="/"){str=str.slice(1);if(isFloat()){denominator=parseFloat(cutFloat());return self.$Rational(numerator,denominator)}else{return self.$Rational(numerator,1)}}else{return self.$Rational(numerator,1)}}else{return self.$Rational(0,1)}},$String_to_r$28.$$arity=0),nil)&&"to_r"}($nesting[0],null,$nesting)};Opal.modules["corelib/time"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$to_f","$nil?","$>","$<","$strftime","$year","$month","$day","$+","$round","$/","$-","$copy_instance_variables","$initialize_dup","$is_a?","$zero?","$wday","$utc?","$mon","$yday","$hour","$min","$sec","$rjust","$ljust","$zone","$to_s","$[]","$cweek_cyear","$isdst","$<=","$!=","$==","$ceil"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Time");var $nesting=[self].concat($parent_nesting),$Time_at$1,$Time_new$2,$Time_local$3,$Time_gm$4,$Time_now$5,$Time_$plus$6,$Time_$minus$7,$Time_$lt_eq_gt$8,$Time_$eq_eq$9,$Time_asctime$10,$Time_day$11,$Time_yday$12,$Time_isdst$13,$Time_dup$14,$Time_eql$ques$15,$Time_friday$ques$16,$Time_hash$17,$Time_hour$18,$Time_inspect$19,$Time_min$20,$Time_mon$21,$Time_monday$ques$22,$Time_saturday$ques$23,$Time_sec$24,$Time_succ$25,$Time_usec$26,$Time_zone$27,$Time_getgm$28,$Time_gmtime$29,$Time_gmt$ques$30,$Time_gmt_offset$31,$Time_strftime$32,$Time_sunday$ques$33,$Time_thursday$ques$34,$Time_to_a$35,$Time_to_f$36,$Time_to_i$37,$Time_tuesday$ques$38,$Time_wday$39,$Time_wednesday$ques$40,$Time_year$41,$Time_cweek_cyear$42;self.$include($$($nesting,"Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];Opal.defs(self,"$at",$Time_at$1=function $$at(seconds,frac){var self=this;var result;if($$($nesting,"Time")["$==="](seconds)){if(frac!==undefined){self.$raise($$($nesting,"TypeError"),"can't convert Time into an exact number")}result=new Date(seconds.getTime());result.is_utc=seconds.is_utc;return result}if(!seconds.$$is_number){seconds=$$($nesting,"Opal")["$coerce_to!"](seconds,$$($nesting,"Integer"),"to_int")}if(frac===undefined){return new Date(seconds*1e3)}if(!frac.$$is_number){frac=$$($nesting,"Opal")["$coerce_to!"](frac,$$($nesting,"Integer"),"to_int")}return new Date(seconds*1e3+frac/1e3)},$Time_at$1.$$arity=-2);function time_params(year,month,day,hour,min,sec){if(year.$$is_string){year=parseInt(year,10)}else{year=$$($nesting,"Opal")["$coerce_to!"](year,$$($nesting,"Integer"),"to_int")}if(month===nil){month=1}else if(!month.$$is_number){if(month["$respond_to?"]("to_str")){month=month.$to_str();switch(month.toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}}else{month=$$($nesting,"Opal")["$coerce_to!"](month,$$($nesting,"Integer"),"to_int")}}if(month<1||month>12){self.$raise($$($nesting,"ArgumentError"),""+"month out of range: "+month)}month=month-1;if(day===nil){day=1}else if(day.$$is_string){day=parseInt(day,10)}else{day=$$($nesting,"Opal")["$coerce_to!"](day,$$($nesting,"Integer"),"to_int")}if(day<1||day>31){self.$raise($$($nesting,"ArgumentError"),""+"day out of range: "+day)}if(hour===nil){hour=0}else if(hour.$$is_string){hour=parseInt(hour,10)}else{hour=$$($nesting,"Opal")["$coerce_to!"](hour,$$($nesting,"Integer"),"to_int")}if(hour<0||hour>24){self.$raise($$($nesting,"ArgumentError"),""+"hour out of range: "+hour)}if(min===nil){min=0}else if(min.$$is_string){min=parseInt(min,10)}else{min=$$($nesting,"Opal")["$coerce_to!"](min,$$($nesting,"Integer"),"to_int")}if(min<0||min>59){self.$raise($$($nesting,"ArgumentError"),""+"min out of range: "+min)}if(sec===nil){sec=0}else if(!sec.$$is_number){if(sec.$$is_string){sec=parseInt(sec,10)}else{sec=$$($nesting,"Opal")["$coerce_to!"](sec,$$($nesting,"Integer"),"to_int")}}if(sec<0||sec>60){self.$raise($$($nesting,"ArgumentError"),""+"sec out of range: "+sec)}return[year,month,day,hour,min,sec]}Opal.defs(self,"$new",$Time_new$2=function(year,month,day,hour,min,sec,utc_offset){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(utc_offset==null){utc_offset=nil}var args,result;if(year===undefined){return new Date}if(utc_offset!==nil){self.$raise($$($nesting,"ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time")}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},$Time_new$2.$$arity=-1);Opal.defs(self,"$local",$Time_local$3=function $$local(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},$Time_local$3.$$arity=-2);Opal.defs(self,"$gm",$Time_gm$4=function $$gm(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(Date.UTC(year,month,day,hour,min,0,sec*1e3));if(year<100){result.setUTCFullYear(year)}result.is_utc=true;return result},$Time_gm$4.$$arity=-2);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);Opal.alias(self,"mktime","local");return Opal.alias(self,"utc","gm")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$now",$Time_now$5=function $$now(){var self=this;return self.$new()},$Time_now$5.$$arity=0);Opal.def(self,"$+",$Time_$plus$6=function(other){var self=this;if($truthy($$($nesting,"Time")["$==="](other))){self.$raise($$($nesting,"TypeError"),"time + time?")}if(!other.$$is_number){other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()+other*1e3);result.is_utc=self.is_utc;return result},$Time_$plus$6.$$arity=1);Opal.def(self,"$-",$Time_$minus$7=function(other){var self=this;if($truthy($$($nesting,"Time")["$==="](other))){return(self.getTime()-other.getTime())/1e3}if(!other.$$is_number){other=$$($nesting,"Opal")["$coerce_to!"](other,$$($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()-other*1e3);result.is_utc=self.is_utc;return result},$Time_$minus$7.$$arity=1);Opal.def(self,"$<=>",$Time_$lt_eq_gt$8=function(other){var self=this,r=nil;if($truthy($$($nesting,"Time")["$==="](other))){return self.$to_f()["$<=>"](other.$to_f())}else{r=other["$<=>"](self);if($truthy(r["$nil?"]())){return nil}else if($truthy($rb_gt(r,0))){return-1}else if($truthy($rb_lt(r,0))){return 1}else{return 0}}},$Time_$lt_eq_gt$8.$$arity=1);Opal.def(self,"$==",$Time_$eq_eq$9=function(other){var $a,self=this;return $truthy($a=$$($nesting,"Time")["$==="](other))?self.$to_f()===other.$to_f():$a},$Time_$eq_eq$9.$$arity=1);Opal.def(self,"$asctime",$Time_asctime$10=function $$asctime(){var self=this;return self.$strftime("%a %b %e %H:%M:%S %Y")},$Time_asctime$10.$$arity=0);Opal.alias(self,"ctime","asctime");Opal.def(self,"$day",$Time_day$11=function $$day(){var self=this;return self.is_utc?self.getUTCDate():self.getDate()},$Time_day$11.$$arity=0);Opal.def(self,"$yday",$Time_yday$12=function $$yday(){var self=this,start_of_year=nil,start_of_day=nil,one_day=nil;start_of_year=$$($nesting,"Time").$new(self.$year()).$to_i();start_of_day=$$($nesting,"Time").$new(self.$year(),self.$month(),self.$day()).$to_i();one_day=86400;return $rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),one_day).$round(),1)},$Time_yday$12.$$arity=0);Opal.def(self,"$isdst",$Time_isdst$13=function $$isdst(){var self=this;var jan=new Date(self.getFullYear(),0,1),jul=new Date(self.getFullYear(),6,1);return self.getTimezoneOffset()"](other)["$zero?"]():$a},$Time_eql$ques$15.$$arity=1);Opal.def(self,"$friday?",$Time_friday$ques$16=function(){var self=this;return self.$wday()==5},$Time_friday$ques$16.$$arity=0);Opal.def(self,"$hash",$Time_hash$17=function $$hash(){var self=this;return"Time:"+self.getTime()},$Time_hash$17.$$arity=0);Opal.def(self,"$hour",$Time_hour$18=function $$hour(){var self=this;return self.is_utc?self.getUTCHours():self.getHours()},$Time_hour$18.$$arity=0);Opal.def(self,"$inspect",$Time_inspect$19=function $$inspect(){var self=this;if($truthy(self["$utc?"]())){return self.$strftime("%Y-%m-%d %H:%M:%S UTC")}else{return self.$strftime("%Y-%m-%d %H:%M:%S %z")}},$Time_inspect$19.$$arity=0);Opal.alias(self,"mday","day");Opal.def(self,"$min",$Time_min$20=function $$min(){var self=this;return self.is_utc?self.getUTCMinutes():self.getMinutes()},$Time_min$20.$$arity=0);Opal.def(self,"$mon",$Time_mon$21=function $$mon(){var self=this;return(self.is_utc?self.getUTCMonth():self.getMonth())+1},$Time_mon$21.$$arity=0);Opal.def(self,"$monday?",$Time_monday$ques$22=function(){var self=this;return self.$wday()==1},$Time_monday$ques$22.$$arity=0);Opal.alias(self,"month","mon");Opal.def(self,"$saturday?",$Time_saturday$ques$23=function(){var self=this;return self.$wday()==6},$Time_saturday$ques$23.$$arity=0);Opal.def(self,"$sec",$Time_sec$24=function $$sec(){var self=this;return self.is_utc?self.getUTCSeconds():self.getSeconds()},$Time_sec$24.$$arity=0);Opal.def(self,"$succ",$Time_succ$25=function $$succ(){var self=this;var result=new Date(self.getTime()+1e3);result.is_utc=self.is_utc;return result},$Time_succ$25.$$arity=0);Opal.def(self,"$usec",$Time_usec$26=function $$usec(){var self=this;return self.getMilliseconds()*1e3},$Time_usec$26.$$arity=0);Opal.def(self,"$zone",$Time_zone$27=function $$zone(){var self=this;var string=self.toString(),result;if(string.indexOf("(")==-1){result=string.match(/[A-Z]{3,4}/)[0]}else{result=string.match(/\((.+)\)(?:\s|$)/)[1]}if(result=="GMT"&&/(GMT\W*\d{4})/.test(string)){return RegExp.$1}else{return result}},$Time_zone$27.$$arity=0);Opal.def(self,"$getgm",$Time_getgm$28=function $$getgm(){var self=this;var result=new Date(self.getTime());result.is_utc=true;return result},$Time_getgm$28.$$arity=0);Opal.alias(self,"getutc","getgm");Opal.def(self,"$gmtime",$Time_gmtime$29=function $$gmtime(){var self=this;self.is_utc=true;return self},$Time_gmtime$29.$$arity=0);Opal.alias(self,"utc","gmtime");Opal.def(self,"$gmt?",$Time_gmt$ques$30=function(){var self=this;return self.is_utc===true},$Time_gmt$ques$30.$$arity=0);Opal.def(self,"$gmt_offset",$Time_gmt_offset$31=function $$gmt_offset(){var self=this;return self.is_utc?0:-self.getTimezoneOffset()*60},$Time_gmt_offset$31.$$arity=0);Opal.def(self,"$strftime",$Time_strftime$32=function $$strftime(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,function(full,flags,width,_,conv){var result="",zero=flags.indexOf("0")!==-1,pad=flags.indexOf("-")===-1,blank=flags.indexOf("_")!==-1,upcase=flags.indexOf("^")!==-1,invert=flags.indexOf("#")!==-1,colons=(flags.match(":")||[]).length;width=parseInt(width,10);if(zero&&blank){if(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank;result+=self.$min();break;case"S":zero=!blank;result+=self.$sec();break;case"L":zero=!blank;width=isNaN(width)?3:width;result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width;result+=self.getMilliseconds().toString().$rjust(3,"0");result=result.$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-";result+=hours<10?"0":"";result+=hours;if(colons>0){result+=":"}result+=minutes<10?"0":"";result+=minutes;if(colons>1){result+=":00"}break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,false));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}if(upcase){result=result.toUpperCase()}if(invert){result=result.replace(/[A-Z]/,function(c){c.toLowerCase()}).replace(/[a-z]/,function(c){c.toUpperCase()})}if(pad&&(zero||blank)){result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")}return result})},$Time_strftime$32.$$arity=1);Opal.def(self,"$sunday?",$Time_sunday$ques$33=function(){var self=this;return self.$wday()==0},$Time_sunday$ques$33.$$arity=0);Opal.def(self,"$thursday?",$Time_thursday$ques$34=function(){var self=this;return self.$wday()==4},$Time_thursday$ques$34.$$arity=0);Opal.def(self,"$to_a",$Time_to_a$35=function $$to_a(){var self=this;return[self.$sec(),self.$min(),self.$hour(),self.$day(),self.$month(),self.$year(),self.$wday(),self.$yday(),self.$isdst(),self.$zone()]},$Time_to_a$35.$$arity=0);Opal.def(self,"$to_f",$Time_to_f$36=function $$to_f(){var self=this;return self.getTime()/1e3},$Time_to_f$36.$$arity=0);Opal.def(self,"$to_i",$Time_to_i$37=function $$to_i(){var self=this;return parseInt(self.getTime()/1e3,10)},$Time_to_i$37.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.def(self,"$tuesday?",$Time_tuesday$ques$38=function(){var self=this;return self.$wday()==2},$Time_tuesday$ques$38.$$arity=0);Opal.alias(self,"tv_sec","to_i");Opal.alias(self,"tv_usec","usec");Opal.alias(self,"utc?","gmt?");Opal.alias(self,"gmtoff","gmt_offset");Opal.alias(self,"utc_offset","gmt_offset");Opal.def(self,"$wday",$Time_wday$39=function $$wday(){var self=this;return self.is_utc?self.getUTCDay():self.getDay()},$Time_wday$39.$$arity=0);Opal.def(self,"$wednesday?",$Time_wednesday$ques$40=function(){var self=this;return self.$wday()==3},$Time_wednesday$ques$40.$$arity=0);Opal.def(self,"$year",$Time_year$41=function $$year(){var self=this;return self.is_utc?self.getUTCFullYear():self.getFullYear()},$Time_year$41.$$arity=0);return(Opal.def(self,"$cweek_cyear",$Time_cweek_cyear$42=function $$cweek_cyear(){var $a,self=this,jan01=nil,jan01_wday=nil,first_monday=nil,year=nil,offset=nil,week=nil,dec31=nil,dec31_wday=nil;jan01=$$($nesting,"Time").$new(self.$year(),1,1);jan01_wday=jan01.$wday();first_monday=0;year=self.$year();if($truthy($truthy($a=$rb_le(jan01_wday,4))?jan01_wday["$!="](0):$a)){offset=$rb_minus(jan01_wday,1)}else{offset=$rb_minus($rb_minus(jan01_wday,7),1);if(offset["$=="](-8)){offset=-1}}week=$rb_divide($rb_plus(self.$yday(),offset),7).$ceil();if($truthy($rb_le(week,0))){return $$($nesting,"Time").$new($rb_minus(self.$year(),1),12,31).$cweek_cyear()}else if(week["$=="](53)){dec31=$$($nesting,"Time").$new(self.$year(),12,31);dec31_wday=dec31.$wday();if($truthy($truthy($a=$rb_le(dec31_wday,3))?dec31_wday["$!="](0):$a)){week=1;year=$rb_plus(year,1)}}return[week,year]},$Time_cweek_cyear$42.$$arity=0),nil)&&"cweek_cyear"}($nesting[0],Date,$nesting)};Opal.modules["corelib/struct"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$const_name!","$unshift","$map","$coerce_to!","$new","$each","$define_struct_attribute","$allocate","$initialize","$alias_method","$module_eval","$to_proc","$const_set","$==","$raise","$<<","$members","$define_method","$instance_eval","$class","$last","$>","$length","$-","$keys","$any?","$join","$[]","$[]=","$each_with_index","$hash","$===","$<","$-@","$size","$>=","$include?","$to_sym","$instance_of?","$__id__","$eql?","$enum_for","$name","$+","$each_pair","$inspect","$each_with_object","$flatten","$to_a","$respond_to?","$dig"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Struct");var $nesting=[self].concat($parent_nesting),$Struct_new$1,$Struct_define_struct_attribute$6,$Struct_members$9,$Struct_inherited$10,$Struct_initialize$12,$Struct_members$15,$Struct_hash$16,$Struct_$$$17,$Struct_$$$eq$18,$Struct_$eq_eq$19,$Struct_eql$ques$20,$Struct_each$21,$Struct_each_pair$24,$Struct_length$27,$Struct_to_a$28,$Struct_inspect$30,$Struct_to_h$32,$Struct_values_at$34,$Struct_dig$36;self.$include($$($nesting,"Enumerable"));Opal.defs(self,"$new",$Struct_new$1=function(const_name,$a,$b){var $iter=$Struct_new$1.$$p,block=$iter||nil,$post_args,$kwargs,args,keyword_init,$$2,$$3,self=this,klass=nil;if($iter)$Struct_new$1.$$p=null;if($iter)$Struct_new$1.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}args=$post_args;keyword_init=$kwargs.$$smap["keyword_init"];if(keyword_init==null){keyword_init=false}if($truthy(const_name)){try{const_name=$$($nesting,"Opal")["$const_name!"](const_name)}catch($err){if(Opal.rescue($err,[$$($nesting,"TypeError"),$$($nesting,"NameError")])){try{args.$unshift(const_name);const_name=nil}finally{Opal.pop_exception()}}else{throw $err}}}$send(args,"map",[],($$2=function(arg){var self=$$2.$$s||this;if(arg==null){arg=nil}return $$($nesting,"Opal")["$coerce_to!"](arg,$$($nesting,"String"),"to_str")},$$2.$$s=self,$$2.$$arity=1,$$2));klass=$send($$($nesting,"Class"),"new",[self],($$3=function(){var self=$$3.$$s||this,$$4;$send(args,"each",[],($$4=function(arg){var self=$$4.$$s||this;if(arg==null){arg=nil}return self.$define_struct_attribute(arg)},$$4.$$s=self,$$4.$$arity=1,$$4));return function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$new$5;Opal.def(self,"$new",$new$5=function($a){var $post_args,args,self=this,instance=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;instance=self.$allocate();instance.$$data={};$send(instance,"initialize",Opal.to_a(args));return instance},$new$5.$$arity=-1);return self.$alias_method("[]","new")}(Opal.get_singleton_class(self),$nesting)},$$3.$$s=self,$$3.$$arity=0,$$3));if($truthy(block)){$send(klass,"module_eval",[],block.$to_proc())}klass.$$keyword_init=keyword_init;if($truthy(const_name)){$$($nesting,"Struct").$const_set(const_name,klass)}return klass},$Struct_new$1.$$arity=-2);Opal.defs(self,"$define_struct_attribute",$Struct_define_struct_attribute$6=function $$define_struct_attribute(name){var $$7,$$8,self=this;if(self["$=="]($$($nesting,"Struct"))){self.$raise($$($nesting,"ArgumentError"),"you cannot define attributes to the Struct class")}self.$members()["$<<"](name);$send(self,"define_method",[name],($$7=function(){var self=$$7.$$s||this;return self.$$data[name]},$$7.$$s=self,$$7.$$arity=0,$$7));return $send(self,"define_method",[""+name+"="],($$8=function(value){var self=$$8.$$s||this;if(value==null){value=nil}return self.$$data[name]=value},$$8.$$s=self,$$8.$$arity=1,$$8))},$Struct_define_struct_attribute$6.$$arity=1);Opal.defs(self,"$members",$Struct_members$9=function $$members(){var $a,self=this;if(self.members==null)self.members=nil;if(self["$=="]($$($nesting,"Struct"))){self.$raise($$($nesting,"ArgumentError"),"the Struct class has no members")}return self.members=$truthy($a=self.members)?$a:[]},$Struct_members$9.$$arity=0);Opal.defs(self,"$inherited",$Struct_inherited$10=function $$inherited(klass){var $$11,self=this,members=nil;if(self.members==null)self.members=nil;members=self.members;return $send(klass,"instance_eval",[],($$11=function(){var self=$$11.$$s||this;return self.members=members},$$11.$$s=self,$$11.$$arity=0,$$11))},$Struct_inherited$10.$$arity=1);Opal.def(self,"$initialize",$Struct_initialize$12=function $$initialize($a){var $post_args,args,$b,$$13,$$14,self=this,kwargs=nil,extra=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy(self.$class().$$keyword_init)){kwargs=$truthy($b=args.$last())?$b:$hash2([],{});if($truthy($truthy($b=$rb_gt(args.$length(),1))?$b:args.length===1&&!kwargs.$$is_hash)){self.$raise($$($nesting,"ArgumentError"),""+"wrong number of arguments (given "+args.$length()+", expected 0)")}extra=$rb_minus(kwargs.$keys(),self.$class().$members());if($truthy(extra["$any?"]())){self.$raise($$($nesting,"ArgumentError"),""+"unknown keywords: "+extra.$join(", "))}return $send(self.$class().$members(),"each",[],($$13=function(name){var self=$$13.$$s||this,$writer=nil;if(name==null){name=nil}$writer=[name,kwargs["$[]"](name)];$send(self,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$13.$$s=self,$$13.$$arity=1,$$13))}else{if($truthy($rb_gt(args.$length(),self.$class().$members().$length()))){self.$raise($$($nesting,"ArgumentError"),"struct size differs")}return $send(self.$class().$members(),"each_with_index",[],($$14=function(name,index){var self=$$14.$$s||this,$writer=nil;if(name==null){name=nil}if(index==null){index=nil}$writer=[name,args["$[]"](index)];$send(self,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$14.$$s=self,$$14.$$arity=2,$$14))}},$Struct_initialize$12.$$arity=-1);Opal.def(self,"$members",$Struct_members$15=function $$members(){var self=this;return self.$class().$members()},$Struct_members$15.$$arity=0);Opal.def(self,"$hash",$Struct_hash$16=function $$hash(){var self=this;return $$($nesting,"Hash").$new(self.$$data).$hash()},$Struct_hash$16.$$arity=0);Opal.def(self,"$[]",$Struct_$$$17=function(name){var self=this;if($truthy($$($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise($$($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise($$($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy($$($nesting,"String")["$==="](name))){if(!self.$$data.hasOwnProperty(name)){self.$raise($$($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise($$($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=$$($nesting,"Opal")["$coerce_to!"](name,$$($nesting,"String"),"to_str");return self.$$data[name]},$Struct_$$$17.$$arity=1);Opal.def(self,"$[]=",$Struct_$$$eq$18=function(name,value){var self=this;if($truthy($$($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise($$($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise($$($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy($$($nesting,"String")["$==="](name))){if($truthy(self.$class().$members()["$include?"](name.$to_sym()))){}else{self.$raise($$($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise($$($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=$$($nesting,"Opal")["$coerce_to!"](name,$$($nesting,"String"),"to_str");return self.$$data[name]=value},$Struct_$$$eq$18.$$arity=2);Opal.def(self,"$==",$Struct_$eq_eq$19=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if($$($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$=="](b)){return false}}}return true}return _eqeq(self,other)},$Struct_$eq_eq$19.$$arity=1);Opal.def(self,"$eql?",$Struct_eql$ques$20=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if($$($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$eql?"](b)){return false}}}return true}return _eqeq(self,other)},$Struct_eql$ques$20.$$arity=1);Opal.def(self,"$each",$Struct_each$21=function $$each(){var $$22,$$23,$iter=$Struct_each$21.$$p,$yield=$iter||nil,self=this;if($iter)$Struct_each$21.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each"],($$22=function(){var self=$$22.$$s||this;return self.$size()},$$22.$$s=self,$$22.$$arity=0,$$22))}$send(self.$class().$members(),"each",[],($$23=function(name){var self=$$23.$$s||this;if(name==null){name=nil}return Opal.yield1($yield,self["$[]"](name))},$$23.$$s=self,$$23.$$arity=1,$$23));return self},$Struct_each$21.$$arity=0);Opal.def(self,"$each_pair",$Struct_each_pair$24=function $$each_pair(){var $$25,$$26,$iter=$Struct_each_pair$24.$$p,$yield=$iter||nil,self=this;if($iter)$Struct_each_pair$24.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each_pair"],($$25=function(){var self=$$25.$$s||this;return self.$size()},$$25.$$s=self,$$25.$$arity=0,$$25))}$send(self.$class().$members(),"each",[],($$26=function(name){var self=$$26.$$s||this;if(name==null){name=nil}return Opal.yield1($yield,[name,self["$[]"](name)])},$$26.$$s=self,$$26.$$arity=1,$$26));return self},$Struct_each_pair$24.$$arity=0);Opal.def(self,"$length",$Struct_length$27=function $$length(){var self=this;return self.$class().$members().$length()},$Struct_length$27.$$arity=0);Opal.alias(self,"size","length");Opal.def(self,"$to_a",$Struct_to_a$28=function $$to_a(){var $$29,self=this;return $send(self.$class().$members(),"map",[],($$29=function(name){var self=$$29.$$s||this;if(name==null){name=nil}return self["$[]"](name)},$$29.$$s=self,$$29.$$arity=1,$$29))},$Struct_to_a$28.$$arity=0);Opal.alias(self,"values","to_a");Opal.def(self,"$inspect",$Struct_inspect$30=function $$inspect(){var $a,$$31,self=this,result=nil;result="#");return result},$Struct_inspect$30.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.def(self,"$to_h",$Struct_to_h$32=function $$to_h(){var $$33,self=this;return $send(self.$class().$members(),"each_with_object",[$hash2([],{})],($$33=function(name,h){var self=$$33.$$s||this,$writer=nil;if(name==null){name=nil}if(h==null){h=nil}$writer=[name,self["$[]"](name)];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$33.$$s=self,$$33.$$arity=2,$$33))},$Struct_to_h$32.$$arity=0);Opal.def(self,"$values_at",$Struct_values_at$34=function $$values_at($a){var $post_args,args,$$35,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;args=$send(args,"map",[],($$35=function(arg){var self=$$35.$$s||this;if(arg==null){arg=nil}return arg.$$is_range?arg.$to_a():arg},$$35.$$s=self,$$35.$$arity=1,$$35)).$flatten();var result=[];for(var i=0,len=args.length;i>>1^(v&1?MATRIX_A:0)};function init(s){var mt={left:0,next:N,state:new Array(N)};init_genrand(mt,s);return mt}function init_genrand(mt,s){var j,i;mt.state[0]=s>>>0;for(j=1;j>30>>>0)+j;mt.state[j]&=4294967295}mt.left=1;mt.next=N}function next_state(mt){var p=0,_p=mt.state;var j;mt.left=N;mt.next=0;for(j=N-M+1;--j;p++)_p[p]=_p[p+M]^TWIST(_p[p+0],_p[p+1]);for(j=M;--j;p++)_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[p+1]);_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[0])}function genrand_int32(mt){var y;if(--mt.left<=0)next_state(mt);y=mt.state[mt.next++];y^=y>>>11;y^=y<<7&2636928640;y^=y<<15&4022730752;y^=y>>>18;return y>>>0}function int_pair_to_real_exclusive(a,b){a>>>=5;b>>>=6;return(a*67108864+b)*(1/9007199254740992)}function genrand_real(mt){var a=genrand_int32(mt),b=genrand_int32(mt);return int_pair_to_real_exclusive(a,b)}return{genrand_real:genrand_real,init:init}}();Opal.loaded(["corelib/random/MersenneTwister.js"]);Opal.modules["corelib/random/mersenne_twister"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$generator=","$-"]);self.$require("corelib/random/MersenneTwister");return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Random");var $nesting=[self].concat($parent_nesting),$writer=nil;var MAX_INT=Number.MAX_SAFE_INTEGER||Math.pow(2,53)-1;Opal.const_set($nesting[0],"MERSENNE_TWISTER_GENERATOR",{new_seed:function(){return Math.round(Math.random()*MAX_INT)},reseed:function(seed){return MersenneTwister.init(seed)},rand:function(mt){return MersenneTwister.genrand_real(mt)}});$writer=[$$($nesting,"MERSENNE_TWISTER_GENERATOR")];$send(self,"generator=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}($nesting[0],null,$nesting)};Opal.modules["corelib/unsupported"]=function(Opal){var $public$35,$private$36,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$raise","$warn","$%"]);var warnings={};function handle_unsupported_feature(message){switch(Opal.config.unsupported_features_severity){case"error":$$($nesting,"Kernel").$raise($$($nesting,"NotImplementedError"),message);break;case"warning":warn(message);break;default:}}function warn(string){if(warnings[string]){return}warnings[string]=true;self.$warn(string)}(function($base,$super,$parent_nesting){var self=$klass($base,$super,"String");var $nesting=[self].concat($parent_nesting),$String_$lt$lt$1,$String_capitalize$excl$2,$String_chomp$excl$3,$String_chop$excl$4,$String_downcase$excl$5,$String_gsub$excl$6,$String_lstrip$excl$7,$String_next$excl$8,$String_reverse$excl$9,$String_slice$excl$10,$String_squeeze$excl$11,$String_strip$excl$12,$String_sub$excl$13,$String_succ$excl$14,$String_swapcase$excl$15,$String_tr$excl$16,$String_tr_s$excl$17,$String_upcase$excl$18,$String_prepend$19,$String_$$$eq$20,$String_clear$21,$String_encode$excl$22,$String_unicode_normalize$excl$23;var ERROR="String#%s not supported. Mutable String methods are not supported in Opal.";Opal.def(self,"$<<",$String_$lt$lt$1=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("<<"))},$String_$lt$lt$1.$$arity=-1);Opal.def(self,"$capitalize!",$String_capitalize$excl$2=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("capitalize!"))},$String_capitalize$excl$2.$$arity=-1);Opal.def(self,"$chomp!",$String_chomp$excl$3=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("chomp!"))},$String_chomp$excl$3.$$arity=-1);Opal.def(self,"$chop!",$String_chop$excl$4=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("chop!"))},$String_chop$excl$4.$$arity=-1);Opal.def(self,"$downcase!",$String_downcase$excl$5=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("downcase!"))},$String_downcase$excl$5.$$arity=-1);Opal.def(self,"$gsub!",$String_gsub$excl$6=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("gsub!"))},$String_gsub$excl$6.$$arity=-1);Opal.def(self,"$lstrip!",$String_lstrip$excl$7=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("lstrip!"))},$String_lstrip$excl$7.$$arity=-1);Opal.def(self,"$next!",$String_next$excl$8=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("next!"))},$String_next$excl$8.$$arity=-1);Opal.def(self,"$reverse!",$String_reverse$excl$9=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("reverse!"))},$String_reverse$excl$9.$$arity=-1);Opal.def(self,"$slice!",$String_slice$excl$10=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("slice!"))},$String_slice$excl$10.$$arity=-1);Opal.def(self,"$squeeze!",$String_squeeze$excl$11=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("squeeze!"))},$String_squeeze$excl$11.$$arity=-1);Opal.def(self,"$strip!",$String_strip$excl$12=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("strip!"))},$String_strip$excl$12.$$arity=-1);Opal.def(self,"$sub!",$String_sub$excl$13=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("sub!"))},$String_sub$excl$13.$$arity=-1);Opal.def(self,"$succ!",$String_succ$excl$14=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("succ!"))},$String_succ$excl$14.$$arity=-1);Opal.def(self,"$swapcase!",$String_swapcase$excl$15=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("swapcase!"))},$String_swapcase$excl$15.$$arity=-1);Opal.def(self,"$tr!",$String_tr$excl$16=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("tr!"))},$String_tr$excl$16.$$arity=-1);Opal.def(self,"$tr_s!",$String_tr_s$excl$17=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("tr_s!"))},$String_tr_s$excl$17.$$arity=-1);Opal.def(self,"$upcase!",$String_upcase$excl$18=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("upcase!"))},$String_upcase$excl$18.$$arity=-1);Opal.def(self,"$prepend",$String_prepend$19=function $$prepend($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("prepend"))},$String_prepend$19.$$arity=-1);Opal.def(self,"$[]=",$String_$$$eq$20=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("[]="))},$String_$$$eq$20.$$arity=-1);Opal.def(self,"$clear",$String_clear$21=function $$clear($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("clear"))},$String_clear$21.$$arity=-1);Opal.def(self,"$encode!",$String_encode$excl$22=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("encode!"))},$String_encode$excl$22.$$arity=-1);return(Opal.def(self,"$unicode_normalize!",$String_unicode_normalize$excl$23=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),ERROR["$%"]("unicode_normalize!"))},$String_unicode_normalize$excl$23.$$arity=-1),nil)&&"unicode_normalize!"})($nesting[0],null,$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_freeze$24,$Kernel_frozen$ques$25;var ERROR="Object freezing is not supported by Opal";Opal.def(self,"$freeze",$Kernel_freeze$24=function $$freeze(){var self=this;handle_unsupported_feature(ERROR);return self},$Kernel_freeze$24.$$arity=0);Opal.def(self,"$frozen?",$Kernel_frozen$ques$25=function(){var self=this;handle_unsupported_feature(ERROR);return false},$Kernel_frozen$ques$25.$$arity=0)})($nesting[0],$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_taint$26,$Kernel_untaint$27,$Kernel_tainted$ques$28;var ERROR="Object tainting is not supported by Opal";Opal.def(self,"$taint",$Kernel_taint$26=function $$taint(){var self=this;handle_unsupported_feature(ERROR);return self},$Kernel_taint$26.$$arity=0);Opal.def(self,"$untaint",$Kernel_untaint$27=function $$untaint(){var self=this;handle_unsupported_feature(ERROR);return self},$Kernel_untaint$27.$$arity=0);Opal.def(self,"$tainted?",$Kernel_tainted$ques$28=function(){var self=this;handle_unsupported_feature(ERROR);return false},$Kernel_tainted$ques$28.$$arity=0)})($nesting[0],$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Module");var $nesting=[self].concat($parent_nesting),$Module_public$29,$Module_private_class_method$30,$Module_private_method_defined$ques$31,$Module_private_constant$32;Opal.def(self,"$public",$Module_public$29=function($a){var $post_args,methods,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);methods=$post_args;if(methods.length===0){self.$$module_function=false}return nil},$Module_public$29.$$arity=-1);Opal.alias(self,"private","public");Opal.alias(self,"protected","public");Opal.alias(self,"nesting","public");Opal.def(self,"$private_class_method",$Module_private_class_method$30=function $$private_class_method($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self},$Module_private_class_method$30.$$arity=-1);Opal.alias(self,"public_class_method","private_class_method");Opal.def(self,"$private_method_defined?",$Module_private_method_defined$ques$31=function(obj){var self=this;return false},$Module_private_method_defined$ques$31.$$arity=1);Opal.def(self,"$private_constant",$Module_private_constant$32=function $$private_constant($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$Module_private_constant$32.$$arity=-1);Opal.alias(self,"protected_method_defined?","private_method_defined?");Opal.alias(self,"public_instance_methods","instance_methods");Opal.alias(self,"public_instance_method","instance_method");return Opal.alias(self,"public_method_defined?","method_defined?")})($nesting[0],null,$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_private_methods$33;Opal.def(self,"$private_methods",$Kernel_private_methods$33=function $$private_methods($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return[]},$Kernel_private_methods$33.$$arity=-1);Opal.alias(self,"private_instance_methods","private_methods")})($nesting[0],$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_eval$34;Opal.def(self,"$eval",$Kernel_eval$34=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return self.$raise($$($nesting,"NotImplementedError"),""+"To use Kernel#eval, you must first require 'opal-parser'. "+(""+"See https://github.com/opal/opal/blob/"+$$($nesting,"RUBY_ENGINE_VERSION")+"/docs/opal_parser.md for details."))},$Kernel_eval$34.$$arity=-1)})($nesting[0],$nesting);Opal.defs(self,"$public",$public$35=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$public$35.$$arity=-1);return(Opal.defs(self,"$private",$private$36=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$private$36.$$arity=-1),nil)&&"private"};Opal.modules["opal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("opal/mini");self.$require("corelib/kernel/format");self.$require("corelib/string/encoding");self.$require("corelib/math");self.$require("corelib/complex");self.$require("corelib/rational");self.$require("corelib/time");self.$require("corelib/struct");self.$require("corelib/io");self.$require("corelib/main");self.$require("corelib/dir");self.$require("corelib/file");self.$require("corelib/process");self.$require("corelib/random");self.$require("corelib/random/mersenne_twister.js");return self.$require("corelib/unsupported")};Opal.modules["native"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2,$range=Opal.range,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$try_convert","$native?","$respond_to?","$to_n","$raise","$inspect","$Native","$proc","$map!","$end_with?","$define_method","$[]","$convert","$call","$to_proc","$new","$each","$native_reader","$native_writer","$extend","$warn","$include","$is_a?","$map","$to_a","$_Array","$method_missing","$bind","$instance_method","$slice","$-","$length","$[]=","$enum_for","$===","$>=","$<<","$each_pair","$_initialize","$name","$native_module"]);(function($base,$parent_nesting){var self=$module($base,"Native");var $nesting=[self].concat($parent_nesting),$Native_is_a$ques$1,$Native_try_convert$2,$Native_convert$3,$Native_call$4,$Native_proc$5,$Native_included$22;Opal.defs(self,"$is_a?",$Native_is_a$ques$1=function(object,klass){var self=this;try{return object instanceof self.$try_convert(klass)}catch(e){return false}},$Native_is_a$ques$1.$$arity=2);Opal.defs(self,"$try_convert",$Native_try_convert$2=function $$try_convert(value,default$){var self=this;if(default$==null){default$=nil}if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{return default$}},$Native_try_convert$2.$$arity=-2);Opal.defs(self,"$convert",$Native_convert$3=function $$convert(value){var self=this;if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{self.$raise($$($nesting,"ArgumentError"),""+value.$inspect()+" isn't native")}},$Native_convert$3.$$arity=1);Opal.defs(self,"$call",$Native_call$4=function $$call(obj,key,$a){var $iter=$Native_call$4.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Native_call$4.$$p=null;if($iter)$Native_call$4.$$p=null;$post_args=Opal.slice.call(arguments,2,arguments.length);args=$post_args;var prop=obj[key];if(prop instanceof Function){var converted=new Array(args.length);for(var i=0,l=args.length;i0){old=$post_args[0];$post_args.splice(0,1)}if(old==null){old=new$}as=$kwargs.$$smap["as"];if(as==null){as=nil}if($truthy(old["$end_with?"]("="))){return $send(self,"define_method",[new$],($$9=function(value){var self=$$9.$$s||this;if(self["native"]==null)self["native"]=nil;if(value==null){value=nil}self["native"][old["$[]"]($range(0,-2,false))]=$$($nesting,"Native").$convert(value);return value},$$9.$$s=self,$$9.$$arity=1,$$9))}else if($truthy(as)){return $send(self,"define_method",[new$],($$10=function($c){var self=$$10.$$s||this,$iter=$$10.$$p,block=$iter||nil,$post_args,args,value=nil;if(self["native"]==null)self["native"]=nil;if($iter)$$10.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;value=$send($$($nesting,"Native"),"call",[self["native"],old].concat(Opal.to_a(args)),block.$to_proc());if($truthy(value)){return as.$new(value.$to_n())}else{return nil}},$$10.$$s=self,$$10.$$arity=-1,$$10))}else{return $send(self,"define_method",[new$],($$11=function($c){var self=$$11.$$s||this,$iter=$$11.$$p,block=$iter||nil,$post_args,args;if(self["native"]==null)self["native"]=nil;if($iter)$$11.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send($$($nesting,"Native"),"call",[self["native"],old].concat(Opal.to_a(args)),block.$to_proc())},$$11.$$s=self,$$11.$$arity=-1,$$11))}},$Helpers_alias_native$8.$$arity=-2);Opal.def(self,"$native_reader",$Helpers_native_reader$12=function $$native_reader($a){var $post_args,names,$$13,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;return $send(names,"each",[],($$13=function(name){var self=$$13.$$s||this,$$14;if(name==null){name=nil}return $send(self,"define_method",[name],($$14=function(){var self=$$14.$$s||this;if(self["native"]==null)self["native"]=nil;return self.$Native(self["native"][name])},$$14.$$s=self,$$14.$$arity=0,$$14))},$$13.$$s=self,$$13.$$arity=1,$$13))},$Helpers_native_reader$12.$$arity=-1);Opal.def(self,"$native_writer",$Helpers_native_writer$15=function $$native_writer($a){var $post_args,names,$$16,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;return $send(names,"each",[],($$16=function(name){var self=$$16.$$s||this,$$17;if(name==null){name=nil}return $send(self,"define_method",[""+name+"="],($$17=function(value){var self=$$17.$$s||this;if(self["native"]==null)self["native"]=nil;if(value==null){value=nil}return self.$Native(self["native"][name]=value)},$$17.$$s=self,$$17.$$arity=1,$$17))},$$16.$$s=self,$$16.$$arity=1,$$16))},$Helpers_native_writer$15.$$arity=-1);Opal.def(self,"$native_accessor",$Helpers_native_accessor$18=function $$native_accessor($a){var $post_args,names,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;$send(self,"native_reader",Opal.to_a(names));return $send(self,"native_writer",Opal.to_a(names))},$Helpers_native_accessor$18.$$arity=-1)})($nesting[0],$nesting);(function($base,$parent_nesting){var self=$module($base,"Wrapper");var $nesting=[self].concat($parent_nesting),$Wrapper_initialize$19,$Wrapper_to_n$20,$Wrapper_included$21;Opal.def(self,"$initialize",$Wrapper_initialize$19=function $$initialize(native$){var self=this;if($truthy($$$("::","Kernel")["$native?"](native$))){}else{$$$("::","Kernel").$raise($$($nesting,"ArgumentError"),""+native$.$inspect()+" isn't native")}return self["native"]=native$},$Wrapper_initialize$19.$$arity=1);Opal.def(self,"$to_n",$Wrapper_to_n$20=function $$to_n(){var self=this;if(self["native"]==null)self["native"]=nil;return self["native"]},$Wrapper_to_n$20.$$arity=0);Opal.defs(self,"$included",$Wrapper_included$21=function $$included(klass){var self=this;return klass.$extend($$($nesting,"Helpers"))},$Wrapper_included$21.$$arity=1)})($nesting[0],$nesting);Opal.defs(self,"$included",$Native_included$22=function $$included(base){var self=this;self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead.");return base.$include($$($nesting,"Wrapper"))},$Native_included$22.$$arity=1)})($nesting[0],$nesting);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_native$ques$23,$Kernel_Native$24,$Kernel_Array$27;Opal.def(self,"$native?",$Kernel_native$ques$23=function(value){var self=this;return value==null||!value.$$class},$Kernel_native$ques$23.$$arity=1);Opal.def(self,"$Native",$Kernel_Native$24=function $$Native(obj){var $$25,$$26,$iter=$Kernel_Native$24.$$p,$yield=$iter||nil,self=this;if($iter)$Kernel_Native$24.$$p=null;if($truthy(obj==null)){return nil}else if($truthy(self["$native?"](obj))){return $$$($$($nesting,"Native"),"Object").$new(obj)}else if($truthy(obj["$is_a?"]($$($nesting,"Array")))){return $send(obj,"map",[],($$25=function(o){var self=$$25.$$s||this;if(o==null){o=nil}return self.$Native(o)},$$25.$$s=self,$$25.$$arity=1,$$25))}else if($truthy(obj["$is_a?"]($$($nesting,"Proc")))){return $send(self,"proc",[],($$26=function($a){var self=$$26.$$s||this,$iter=$$26.$$p,block=$iter||nil,$post_args,args;if($iter)$$26.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return self.$Native($send(obj,"call",Opal.to_a(args),block.$to_proc()))},$$26.$$s=self,$$26.$$arity=-1,$$26))}else{return obj}},$Kernel_Native$24.$$arity=1);Opal.alias(self,"_Array","Array");Opal.def(self,"$Array",$Kernel_Array$27=function $$Array(object,$a){var $iter=$Kernel_Array$27.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Kernel_Array$27.$$p=null;if($iter)$Kernel_Array$27.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if($truthy(self["$native?"](object))){return $send($$$($$($nesting,"Native"),"Array"),"new",[object].concat(Opal.to_a(args)),block.$to_proc()).$to_a()}return self.$_Array(object)},$Kernel_Array$27.$$arity=-2)})($nesting[0],$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Object");var $nesting=[self].concat($parent_nesting),$Object_$eq_eq$28,$Object_has_key$ques$29,$Object_each$30,$Object_$$$31,$Object_$$$eq$32,$Object_merge$excl$33,$Object_respond_to$ques$34,$Object_respond_to_missing$ques$35,$Object_method_missing$36,$Object_nil$ques$37,$Object_is_a$ques$38,$Object_instance_of$ques$39,$Object_class$40,$Object_to_a$41,$Object_inspect$42;self.$$prototype["native"]=nil;self.$include($$$($$$("::","Native"),"Wrapper"));Opal.def(self,"$==",$Object_$eq_eq$28=function(other){var self=this;return self["native"]===$$$("::","Native").$try_convert(other)},$Object_$eq_eq$28.$$arity=1);Opal.def(self,"$has_key?",$Object_has_key$ques$29=function(name){var self=this;return Opal.hasOwnProperty.call(self["native"],name)},$Object_has_key$ques$29.$$arity=1);Opal.alias(self,"key?","has_key?");Opal.alias(self,"include?","has_key?");Opal.alias(self,"member?","has_key?");Opal.def(self,"$each",$Object_each$30=function $$each($a){var $post_args,args,$iter=$Object_each$30.$$p,$yield=$iter||nil,self=this;if($iter)$Object_each$30.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($yield!==nil){for(var key in self["native"]){Opal.yieldX($yield,[key,self["native"][key]])}return self}else{return $send(self,"method_missing",["each"].concat(Opal.to_a(args)))}},$Object_each$30.$$arity=-1);Opal.def(self,"$[]",$Object_$$$31=function(key){var self=this;var prop=self["native"][key];if(prop instanceof Function){return prop}else{return $$$("::","Native").$call(self["native"],key)}},$Object_$$$31.$$arity=1);Opal.def(self,"$[]=",$Object_$$$eq$32=function(key,value){var self=this,native$=nil;native$=$$$("::","Native").$try_convert(value);if($truthy(native$===nil)){return self["native"][key]=value}else{return self["native"][key]=native$}},$Object_$$$eq$32.$$arity=2);Opal.def(self,"$merge!",$Object_merge$excl$33=function(other){var self=this;other=$$$("::","Native").$convert(other);for(var prop in other){self["native"][prop]=other[prop]}return self},$Object_merge$excl$33.$$arity=1);Opal.def(self,"$respond_to?",$Object_respond_to$ques$34=function(name,include_all){var self=this;if(include_all==null){include_all=false}return $$$("::","Kernel").$instance_method("respond_to?").$bind(self).$call(name,include_all)},$Object_respond_to$ques$34.$$arity=-2);Opal.def(self,"$respond_to_missing?",$Object_respond_to_missing$ques$35=function(name,include_all){var self=this;if(include_all==null){include_all=false}return Opal.hasOwnProperty.call(self["native"],name)},$Object_respond_to_missing$ques$35.$$arity=-2);Opal.def(self,"$method_missing",$Object_method_missing$36=function $$method_missing(mid,$a){var $iter=$Object_method_missing$36.$$p,block=$iter||nil,$post_args,args,self=this,$writer=nil;if($iter)$Object_method_missing$36.$$p=null;if($iter)$Object_method_missing$36.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;if(mid.charAt(mid.length-1)==="="){return $writer=[mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0)],$send(self,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}else{return $send($$$("::","Native"),"call",[self["native"],mid].concat(Opal.to_a(args)),block.$to_proc())}},$Object_method_missing$36.$$arity=-2);Opal.def(self,"$nil?",$Object_nil$ques$37=function(){var self=this;return false},$Object_nil$ques$37.$$arity=0);Opal.def(self,"$is_a?",$Object_is_a$ques$38=function(klass){var self=this;return Opal.is_a(self,klass)},$Object_is_a$ques$38.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.def(self,"$instance_of?",$Object_instance_of$ques$39=function(klass){var self=this;return self.$$class===klass},$Object_instance_of$ques$39.$$arity=1);Opal.def(self,"$class",$Object_class$40=function(){var self=this;return self.$$class},$Object_class$40.$$arity=0);Opal.def(self,"$to_a",$Object_to_a$41=function $$to_a(options){var $iter=$Object_to_a$41.$$p,block=$iter||nil,self=this;if($iter)$Object_to_a$41.$$p=null;if($iter)$Object_to_a$41.$$p=null;if(options==null){options=$hash2([],{})}return $send($$$($$$("::","Native"),"Array"),"new",[self["native"],options],block.$to_proc()).$to_a()},$Object_to_a$41.$$arity=-1);return(Opal.def(self,"$inspect",$Object_inspect$42=function $$inspect(){var self=this;return""+"#"},$Object_inspect$42.$$arity=0),nil)&&"inspect"})($$($nesting,"Native"),$$($nesting,"BasicObject"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Array");var $nesting=[self].concat($parent_nesting),$Array_initialize$43,$Array_each$44,$Array_$$$45,$Array_$$$eq$46,$Array_last$47,$Array_length$48,$Array_inspect$49;self.$$prototype.named=self.$$prototype["native"]=self.$$prototype.get=self.$$prototype.block=self.$$prototype.set=self.$$prototype.length=nil;self.$include($$$($$($nesting,"Native"),"Wrapper"));self.$include($$($nesting,"Enumerable"));Opal.def(self,"$initialize",$Array_initialize$43=function $$initialize(native$,options){var $iter=$Array_initialize$43.$$p,block=$iter||nil,$a,self=this;if($iter)$Array_initialize$43.$$p=null;if($iter)$Array_initialize$43.$$p=null;if(options==null){options=$hash2([],{})}$send(self,Opal.find_super_dispatcher(self,"initialize",$Array_initialize$43,false),[native$],null);self.get=$truthy($a=options["$[]"]("get"))?$a:options["$[]"]("access");self.named=options["$[]"]("named");self.set=$truthy($a=options["$[]"]("set"))?$a:options["$[]"]("access");self.length=$truthy($a=options["$[]"]("length"))?$a:"length";self.block=block;if($truthy(self.$length()==null)){return self.$raise($$($nesting,"ArgumentError"),"no length found on the array-like object")}else{return nil}},$Array_initialize$43.$$arity=-2);Opal.def(self,"$each",$Array_each$44=function $$each(){var $iter=$Array_each$44.$$p,block=$iter||nil,self=this;if($iter)$Array_each$44.$$p=null;if($iter)$Array_each$44.$$p=null;if($truthy(block)){}else{return self.$enum_for("each")}for(var i=0,length=self.$length();i0},$Input_key_down$ques$6.$$arity=1);Opal.defs(self,"$key_push?",$Input_key_push$ques$7=function(code){var $a,self=this;return(($a=$nesting[0].$$cvars["@@pressing_keys"])==null?nil:$a)[code]==(($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1},$Input_key_push$ques$7.$$arity=1);Opal.defs(self,"$key_release?",$Input_key_release$ques$8=function(code){var $a,self=this;return(($a=$nesting[0].$$cvars["@@pressing_keys"])==null?nil:$a)[code]==-((($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1)},$Input_key_release$ques$8.$$arity=1);Opal.const_set($nesting[0],"ON_KEYDOWN_",function(ev){$$($nesting,"Input").$_pressing_keys()[ev.code]=($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a;ev.preventDefault();ev.stopPropagation()});Opal.const_set($nesting[0],"ON_KEYUP_",function(ev){$$($nesting,"Input").$_pressing_keys()[ev.code]=-(($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a);ev.preventDefault();ev.stopPropagation()});Opal.defs(self,"$keyevent_target=",$Input_keyevent_target$eq$9=function(target){var $a,self=this;if($truthy(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a)){(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keydown",$$($nesting,"ON_KEYDOWN_"));(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keyup",$$($nesting,"ON_KEYUP_"))}Opal.class_variable_set($nesting[0],"@@keyevent_target",target);if((($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).tagName=="CANVAS"){(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).setAttribute("tabindex",0)}(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keydown",$$($nesting,"ON_KEYDOWN_"));(($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keyup",$$($nesting,"ON_KEYUP_"))},$Input_keyevent_target$eq$9.$$arity=1);Opal.defs(self,"$keyevent_target",$Input_keyevent_target$10=function $$keyevent_target(){var $a,self=this;return($a=$nesting[0].$$cvars["@@keyevent_target"])==null?nil:$a},$Input_keyevent_target$10.$$arity=0);Opal.defs(self,"$_init_mouse_events",$Input__init_mouse_events$11=function $$_init_mouse_events(){var $a,self=this;document.addEventListener("mousemove",function(ev){(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$a);(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$a)});document.addEventListener("mousedown",function(ev){(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$a);(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if(ev.buttons&k){(($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a}}});document.addEventListener("mouseup",function(ev){(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$a);(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$a);table={0:1,1:4,2:2,3:8,4:16};for(var k=1;k<=16;k<<=1){if((($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]){(($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[table[ev.button]]=-(($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)}}})},$Input__init_mouse_events$11.$$arity=0);Opal.defs(self,"$mouse_x",$Input_mouse_x$12=function $$mouse_x(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).x},$Input_mouse_x$12.$$arity=0);Opal.defs(self,"$mouse_y",$Input_mouse_y$13=function $$mouse_y(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@mouse_info"])==null?nil:$a).y},$Input_mouse_y$13.$$arity=0);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);Opal.alias(self,"mouse_pos_x","mouse_x");return Opal.alias(self,"mouse_pos_y","mouse_y")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$mouse_down?",$Input_mouse_down$ques$14=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_down?'")}return(($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]>0},$Input_mouse_down$ques$14.$$arity=1);Opal.defs(self,"$mouse_push?",$Input_mouse_push$ques$15=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_push?'")}return(($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1)},$Input_mouse_push$ques$15.$$arity=1);Opal.defs(self,"$mouse_release?",$Input_mouse_release$ques$16=function(mouse_code){var $a,self=this;if($truthy(mouse_code)){}else{self.$raise("missing argument of `mouse_release?'")}return(($a=$nesting[0].$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1)},$Input_mouse_release$ques$16.$$arity=1);Opal.defs(self,"$_init_touch_events",$Input__init_touch_events$17=function $$_init_touch_events(){var $a,$b,$c,self=this,new_touch=nil,$writer=nil;Opal.class_variable_set($nesting[0],"@@touches",$hash2([],{}));Opal.class_variable_set($nesting[0],"@@new_touches",[]);(($a=$nesting[0].$$cvars["@@canvas"])==null?nil:$a).addEventListener("touchmove",function(ev){ev.preventDefault();ev.stopPropagation();(($a=$nesting[0].$$cvars["@@touch_info"])==null?nil:$a).x=ev.changedTouches[0].pageX-(($a=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$a);(($a=$nesting[0].$$cvars["@@touch_info"])==null?nil:$a).y=ev.changedTouches[0].pageY-(($a=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$a);for(var touch of ev.changedTouches){const id=touch.identifier;const x=touch.pageX-(($a=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$a);const y=touch.pageY-(($a=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$a);$a=(($a=$nesting[0].$$cvars["@@touches"])==null?nil:$a)["$[]"](id),$a===nil||$a==null?nil:$send($a,"_move",[x,y])}});(($b=$nesting[0].$$cvars["@@canvas"])==null?nil:$b).addEventListener("touchstart",function(ev){ev.preventDefault();ev.stopPropagation();(($b=$nesting[0].$$cvars["@@touch_info"])==null?nil:$b).x=ev.changedTouches[0].pageX-(($b=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$b);(($b=$nesting[0].$$cvars["@@touch_info"])==null?nil:$b).y=ev.changedTouches[0].pageY-(($b=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$b);(($b=$nesting[0].$$cvars["@@pressing_touch"])==null?nil:$b)[0]=($b=$nesting[0].$$cvars["@@tick"])==null?nil:$b;for(var touch of ev.changedTouches){const id=touch.identifier;const x=touch.pageX-(($b=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$b);const y=touch.pageY-(($b=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$b);new_touch=$$($nesting,"Touch").$new(id,x,y),$writer=[id,new_touch],$send(($b=$nesting[0].$$cvars["@@touches"])==null?nil:$b,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)],(($b=$nesting[0].$$cvars["@@new_touches"])==null?nil:$b).$push(new_touch)}});(($b=$nesting[0].$$cvars["@@canvas"])==null?nil:$b).addEventListener("touchend",function(ev){ev.preventDefault();ev.stopPropagation();(($b=$nesting[0].$$cvars["@@touch_info"])==null?nil:$b).x=ev.changedTouches[0].pageX-(($b=$nesting[0].$$cvars["@@canvas_x"])==null?nil:$b);(($b=$nesting[0].$$cvars["@@touch_info"])==null?nil:$b).y=ev.changedTouches[0].pageY-(($b=$nesting[0].$$cvars["@@canvas_y"])==null?nil:$b);(($b=$nesting[0].$$cvars["@@pressing_touch"])==null?nil:$b)[0]=-(($b=$nesting[0].$$cvars["@@tick"])==null?nil:$b);for(var touch of ev.changedTouches){const id=touch.identifier;$b=(($b=$nesting[0].$$cvars["@@touches"])==null?nil:$b)["$[]"](id),$b===nil||$b==null?nil:$send($b,"_released",[($c=$nesting[0].$$cvars["@@tick"])==null?nil:$c])}})},$Input__init_touch_events$17.$$arity=0);Opal.defs(self,"$_update_touch_info",$Input__update_touch_info$18=function $$_update_touch_info(){var $a,$$19,self=this;return $send(($a=$nesting[0].$$cvars["@@touches"])==null?nil:$a,"delete_if",[],($$19=function(id,t){var self=$$19.$$s||this,$b,$c;if(id==null){id=nil}if(t==null){t=nil}return $truthy($b=t["$released?"]())?$rb_lt(t.$_released_at(),$rb_minus(($c=$nesting[0].$$cvars["@@tick"])==null?nil:$c,1)):$b},$$19.$$s=self,$$19.$$arity=2,$$19))},$Input__update_touch_info$18.$$arity=0);Opal.defs(self,"$touch_x",$Input_touch_x$20=function $$touch_x(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@touch_info"])==null?nil:$a).x},$Input_touch_x$20.$$arity=0);Opal.defs(self,"$touch_y",$Input_touch_y$21=function $$touch_y(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@touch_info"])==null?nil:$a).y},$Input_touch_y$21.$$arity=0);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);Opal.alias(self,"touch_pos_x","touch_x");return Opal.alias(self,"touch_pos_y","touch_y")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$touch_down?",$Input_touch_down$ques$22=function(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@pressing_touch"])==null?nil:$a)[0]>0},$Input_touch_down$ques$22.$$arity=0);Opal.defs(self,"$touch_push?",$Input_touch_push$ques$23=function(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@pressing_touch"])==null?nil:$a)[0]==-((($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1)},$Input_touch_push$ques$23.$$arity=0);Opal.defs(self,"$touch_release?",$Input_touch_release$ques$24=function(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@pressing_touch"])==null?nil:$a)[0]==-((($a=$nesting[0].$$cvars["@@tick"])==null?nil:$a)-1)},$Input_touch_release$ques$24.$$arity=0);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Touch");var $nesting=[self].concat($parent_nesting),$Touch_initialize$25,$Touch_released$ques$26,$Touch_inspect$27,$Touch__move$28,$Touch__released$29;self.$$prototype._released_at=nil;Opal.def(self,"$initialize",$Touch_initialize$25=function $$initialize(id,x,y){var self=this;self.id=id;self.$_move(x,y);self._released_at=nil;return self.data=$hash2([],{})},$Touch_initialize$25.$$arity=3);self.$attr_reader("id","x","y","data","_released_at");Opal.def(self,"$released?",$Touch_released$ques$26=function(){var self=this;return self._released_at["$!"]()["$!"]()},$Touch_released$ques$26.$$arity=0);Opal.def(self,"$inspect",$Touch_inspect$27=function $$inspect(){var self=this,rel=nil;rel=function(){if($truthy(self.$released_at())){return""+" released_at="+self.$released_at()}else{return""}return nil}();return""+"#"},$Touch_inspect$27.$$arity=0);Opal.def(self,"$_move",$Touch__move$28=function $$_move(x,y){var self=this;self.x=x;return self.y=y},$Touch__move$28.$$arity=2);return(Opal.def(self,"$_released",$Touch__released$29=function $$_released(tick){var self=this;return self._released_at=tick},$Touch__released$29.$$arity=1),nil)&&"_released"})($nesting[0],null,$nesting);Opal.defs(self,"$touches",$Input_touches$30=function $$touches(){var $a,self=this;return(($a=$nesting[0].$$cvars["@@touches"])==null?nil:$a).$values()},$Input_touches$30.$$arity=0);Opal.defs(self,"$new_touches",$Input_new_touches$31=function $$new_touches(){var $a,self=this,ret=nil;ret=($a=$nesting[0].$$cvars["@@new_touches"])==null?nil:$a;Opal.class_variable_set($nesting[0],"@@new_touches",[]);return ret},$Input_new_touches$31.$$arity=0)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/input/key_codes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Input");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"KeyCodes");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"K_ESCAPE","Escape");Opal.const_set($nesting[0],"K_1","Digit1");Opal.const_set($nesting[0],"K_2","Digit2");Opal.const_set($nesting[0],"K_3","Digit3");Opal.const_set($nesting[0],"K_4","Digit4");Opal.const_set($nesting[0],"K_5","Digit5");Opal.const_set($nesting[0],"K_6","Digit6");Opal.const_set($nesting[0],"K_7","Digit7");Opal.const_set($nesting[0],"K_8","Digit8");Opal.const_set($nesting[0],"K_9","Digit9");Opal.const_set($nesting[0],"K_0","Digit0");Opal.const_set($nesting[0],"K_MINUS","Minus");Opal.const_set($nesting[0],"K_EQUALS","Equal");Opal.const_set($nesting[0],"K_BACK","Backspace");Opal.const_set($nesting[0],"K_TAB","Tab");Opal.const_set($nesting[0],"K_Q","KeyQ");Opal.const_set($nesting[0],"K_W","KeyW");Opal.const_set($nesting[0],"K_E","KeyE");Opal.const_set($nesting[0],"K_R","KeyR");Opal.const_set($nesting[0],"K_T","KeyT");Opal.const_set($nesting[0],"K_Y","KeyY");Opal.const_set($nesting[0],"K_U","KeyU");Opal.const_set($nesting[0],"K_I","KeyI");Opal.const_set($nesting[0],"K_O","KeyO");Opal.const_set($nesting[0],"K_P","KeyP");Opal.const_set($nesting[0],"K_LBRACKET","BracketLeft");Opal.const_set($nesting[0],"K_RBRACKET","BracketRight");Opal.const_set($nesting[0],"K_RETURN","Enter");Opal.const_set($nesting[0],"K_ENTER","Enter");Opal.const_set($nesting[0],"K_LCONTROL","ControlLeft");Opal.const_set($nesting[0],"K_A","KeyA");Opal.const_set($nesting[0],"K_S","KeyS");Opal.const_set($nesting[0],"K_D","KeyD");Opal.const_set($nesting[0],"K_F","KeyF");Opal.const_set($nesting[0],"K_G","KeyG");Opal.const_set($nesting[0],"K_H","KeyH");Opal.const_set($nesting[0],"K_J","KeyJ");Opal.const_set($nesting[0],"K_K","KeyK");Opal.const_set($nesting[0],"K_L","KeyL");Opal.const_set($nesting[0],"K_SEMICOLON","Semicolon");Opal.const_set($nesting[0],"K_APOSTROPHE","Quote");Opal.const_set($nesting[0],"K_GRAVE","Backquote");Opal.const_set($nesting[0],"K_LSHIFT","ShiftLeft");Opal.const_set($nesting[0],"K_BACKSLASH","BackSlash");Opal.const_set($nesting[0],"K_Z","KeyZ");Opal.const_set($nesting[0],"K_X","KeyX");Opal.const_set($nesting[0],"K_C","KeyC");Opal.const_set($nesting[0],"K_V","KeyV");Opal.const_set($nesting[0],"K_B","KeyB");Opal.const_set($nesting[0],"K_N","KeyN");Opal.const_set($nesting[0],"K_M","KeyM");Opal.const_set($nesting[0],"K_COMMA","Comma");Opal.const_set($nesting[0],"K_PERIOD","Period");Opal.const_set($nesting[0],"K_SLASH","Slash");Opal.const_set($nesting[0],"K_RSHIFT","ShiftRight");Opal.const_set($nesting[0],"K_MULTIPLY","NumpadMultiply");Opal.const_set($nesting[0],"K_SPACE","Space");Opal.const_set($nesting[0],"K_F1","F1");Opal.const_set($nesting[0],"K_F2","F2");Opal.const_set($nesting[0],"K_F3","F3");Opal.const_set($nesting[0],"K_F4","F4");Opal.const_set($nesting[0],"K_F5","F5");Opal.const_set($nesting[0],"K_F6","F6");Opal.const_set($nesting[0],"K_F7","F7");Opal.const_set($nesting[0],"K_F8","F8");Opal.const_set($nesting[0],"K_F9","F9");Opal.const_set($nesting[0],"K_F10","F10");Opal.const_set($nesting[0],"K_NUMLOCK","NumLock");Opal.const_set($nesting[0],"K_SCROLL","ScrollLock");Opal.const_set($nesting[0],"K_NUMPAD7","Numpad7");Opal.const_set($nesting[0],"K_NUMPAD8","Numpad8");Opal.const_set($nesting[0],"K_NUMPAD9","Numpad9");Opal.const_set($nesting[0],"K_SUBTRACT","NumpadSubtract");Opal.const_set($nesting[0],"K_NUMPAD4","Numpad4");Opal.const_set($nesting[0],"K_NUMPAD5","Numpad5");Opal.const_set($nesting[0],"K_NUMPAD6","Numpad6");Opal.const_set($nesting[0],"K_ADD","NumpadAdd");Opal.const_set($nesting[0],"K_NUMPAD1","Numpad1");Opal.const_set($nesting[0],"K_NUMPAD2","Numpad2");Opal.const_set($nesting[0],"K_NUMPAD3","Numpad3");Opal.const_set($nesting[0],"K_NUMPAD0","Numpad0");Opal.const_set($nesting[0],"K_DECIMAL","NumpadDecimal");Opal.const_set($nesting[0],"K_F11","F11");Opal.const_set($nesting[0],"K_F12","F12");Opal.const_set($nesting[0],"K_F13","F13");Opal.const_set($nesting[0],"K_F14","F14");Opal.const_set($nesting[0],"K_F15","F15");Opal.const_set($nesting[0],"K_KANA","KanaMode");Opal.const_set($nesting[0],"K_CONVERT","Convert");Opal.const_set($nesting[0],"K_NOCONVERT","NonConvert");Opal.const_set($nesting[0],"K_YEN","IntlYen");Opal.const_set($nesting[0],"K_COLON","Colon");Opal.const_set($nesting[0],"K_UNDERLINE","IntlRo");Opal.const_set($nesting[0],"K_NUMPADENTER","NumpadEnter");Opal.const_set($nesting[0],"K_RCONTROL","ControlRight");Opal.const_set($nesting[0],"K_MUTE","VolumeMute");Opal.const_set($nesting[0],"K_VOLUMEDOWN","VolumeDown");Opal.const_set($nesting[0],"K_VOLUMEUP","VolumeUp");Opal.const_set($nesting[0],"K_WEBHOME","BrowserHome");Opal.const_set($nesting[0],"K_DIVIDE","NumpadDivide");Opal.const_set($nesting[0],"K_PAUSE","Pause");Opal.const_set($nesting[0],"K_HOME","Home");Opal.const_set($nesting[0],"K_UP","ArrowUp");Opal.const_set($nesting[0],"K_LEFT","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHT","ArrowRight");Opal.const_set($nesting[0],"K_END","End");Opal.const_set($nesting[0],"K_DOWN","ArrowDown");Opal.const_set($nesting[0],"K_INSERT","Insert");Opal.const_set($nesting[0],"K_DELETE","Delete");Opal.const_set($nesting[0],"K_WEBSEARCH","BrowserSearch");Opal.const_set($nesting[0],"K_WEBFAVORITES","BrowserFavorites");Opal.const_set($nesting[0],"K_WEBREFRESH","BrowserRefresh");Opal.const_set($nesting[0],"K_WEBSTOP","BrowserStop");Opal.const_set($nesting[0],"K_WEBFORWARD","BrowserForward");Opal.const_set($nesting[0],"K_WEBBACK","BrowserBack");Opal.const_set($nesting[0],"K_BACKSPACE","Backspace");Opal.const_set($nesting[0],"K_NUMPADSTAR","NumpadMultiply");Opal.const_set($nesting[0],"K_LALT","AltLeft");Opal.const_set($nesting[0],"K_CAPSLOCK","CapsLock");Opal.const_set($nesting[0],"K_NUMPADMINUS","NumpadSubtract");Opal.const_set($nesting[0],"K_NUMPADPLUS","NumpadAdd");Opal.const_set($nesting[0],"K_NUMPADPERIOD","NumpadDecimal");Opal.const_set($nesting[0],"K_NUMPADSLASH","NumpadDivide");Opal.const_set($nesting[0],"K_RALT","AltRight");Opal.const_set($nesting[0],"K_UPARROW","ArrowUp");Opal.const_set($nesting[0],"K_PGUP","PageUp");Opal.const_set($nesting[0],"K_LEFTARROW","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHTARROW","ArrowRight");Opal.const_set($nesting[0],"K_DOWNARROW","ArrowDown");Opal.const_set($nesting[0],"K_PGDN","PageDown")})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/remote_resource"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$new","$[]=","$-","$_klass_name","$[]","$raise","$inspect","$each","$!","$_load","$to_proc","$flat_map","$values","$call","$last","$split","$name"]);return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RemoteResource");var $nesting=[self].concat($parent_nesting),$RemoteResource$1,$RemoteResource$2,$RemoteResource$3,$RemoteResource_add_class$4,$RemoteResource_register$5,$RemoteResource_$$$6,$RemoteResource__load_resources$7,$RemoteResource__load$10,$RemoteResource__klass_name$11;Opal.class_variable_set($nesting[0],"@@resources",$send($$($nesting,"Hash"),"new",[],($RemoteResource$1=function(h,k){var self=$RemoteResource$1.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RemoteResource$1.$$s=self,$RemoteResource$1.$$arity=2,$RemoteResource$1)));Opal.class_variable_set($nesting[0],"@@promises",$send($$($nesting,"Hash"),"new",[],($RemoteResource$2=function(h,k){var self=$RemoteResource$2.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RemoteResource$2.$$s=self,$RemoteResource$2.$$arity=2,$RemoteResource$2)));Opal.class_variable_set($nesting[0],"@@instances",$send($$($nesting,"Hash"),"new",[],($RemoteResource$3=function(h,k){var self=$RemoteResource$3.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RemoteResource$3.$$s=self,$RemoteResource$3.$$arity=2,$RemoteResource$3)));Opal.class_variable_set($nesting[0],"@@klasses",$hash2([],{}));Opal.defs(self,"$add_class",$RemoteResource_add_class$4=function $$add_class(subklass){var $a,self=this,$writer=nil;$writer=[subklass.$_klass_name(),subklass];$send(($a=$nesting[0].$$cvars["@@klasses"])==null?nil:$a,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RemoteResource_add_class$4.$$arity=1);Opal.defs(self,"$register",$RemoteResource_register$5=function $$register(name,$a){var $iter=$RemoteResource_register$5.$$p,block=$iter||nil,$post_args,args,$b,$c,self=this,$writer=nil;if($iter)$RemoteResource_register$5.$$p=null;if($iter)$RemoteResource_register$5.$$p=null;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;$truthy($b=(($c=$nesting[0].$$cvars["@@resources"])==null?nil:$c)["$[]"](self.$_klass_name()))?$b:($writer=[self.$_klass_name(),$hash2([],{})],$send(($c=$nesting[0].$$cvars["@@resources"])==null?nil:$c,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]);$writer=[name,[block,args]];$send((($b=$nesting[0].$$cvars["@@resources"])==null?nil:$b)["$[]"](self.$_klass_name()),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RemoteResource_register$5.$$arity=-2);Opal.defs(self,"$[]",$RemoteResource_$$$6=function(name){var $a,self=this,ret=nil;if($truthy(ret=(($a=$nesting[0].$$cvars["@@instances"])==null?nil:$a)["$[]"](self.$_klass_name())["$[]"](name))){return ret}else{return self.$raise(""+self.$_klass_name()+" "+name.$inspect()+" is not registered")}},$RemoteResource_$$$6.$$arity=1);Opal.defs(self,"$_load_resources",$RemoteResource__load_resources$7=function $$_load_resources(){var $iter=$RemoteResource__load_resources$7.$$p,block=$iter||nil,$a,$$8,self=this,promises=nil;if($iter)$RemoteResource__load_resources$7.$$p=null;if($iter)$RemoteResource__load_resources$7.$$p=null;$send(($a=$nesting[0].$$cvars["@@resources"])==null?nil:$a,"each",[],($$8=function(klass_name,items){var self=$$8.$$s||this,$b,$$9,klass=nil;if(klass_name==null){klass_name=nil}if(items==null){items=nil}klass=(($b=$nesting[0].$$cvars["@@klasses"])==null?nil:$b)["$[]"](klass_name);return $send(items,"each",[],($$9=function(name,$mlhs_tmp1){var self=$$9.$$s||this,$c,$d,block2=nil,args=nil,instance=nil,promise=nil,$writer=nil;if(name==null){name=nil}if($mlhs_tmp1==null){$mlhs_tmp1=nil}$d=$mlhs_tmp1,$c=Opal.to_ary($d),block2=$c[0]==null?nil:$c[0],args=$c[1]==null?nil:$c[1],$d;if($truthy((($c=$nesting[0].$$cvars["@@promises"])==null?nil:$c)["$[]"](klass_name)["$[]"](name)["$!"]())){$d=$send(klass,"_load",Opal.to_a(args),block2.$to_proc()),$c=Opal.to_ary($d),instance=$c[0]==null?nil:$c[0],promise=$c[1]==null?nil:$c[1],$d;$writer=[name,instance];$send((($c=$nesting[0].$$cvars["@@instances"])==null?nil:$c)["$[]"](klass_name),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[name,promise];$send((($c=$nesting[0].$$cvars["@@promises"])==null?nil:$c)["$[]"](klass_name),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},$$9.$$s=self,$$9.$$arity=2,$$9.$$has_top_level_mlhs_arg=true,$$9))},$$8.$$s=self,$$8.$$arity=2,$$8));promises=$send((($a=$nesting[0].$$cvars["@@promises"])==null?nil:$a).$values(),"flat_map",[],"values".$to_proc());Promise.all(promises).then(function(){block.$call()})},$RemoteResource__load_resources$7.$$arity=0);Opal.defs(self,"$_load",$RemoteResource__load$10=function $$_load($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return self.$raise("override me")},$RemoteResource__load$10.$$arity=-1);return(Opal.defs(self,"$_klass_name",$RemoteResource__klass_name$11=function $$_klass_name(){var self=this;return self.$name().$split(/::/).$last()},$RemoteResource__klass_name$11.$$arity=0),nil)&&"_klass_name"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/image"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs0){color=$post_args[0];$post_args.splice(0,1)}if(color==null){color=$$($nesting,"C_DEFAULT")}canvas=$kwargs.$$smap["canvas"];if(canvas==null){canvas=nil}$c=[width,height],self.width=$c[0],self.height=$c[1],$c;self.canvas=$truthy($c=canvas)?$c:document.createElement("canvas");self.ctx=self.canvas.getContext("2d");self.$_resize(self.width,self.height);return self.$box_fill(0,0,self.width,self.height,color)},$Image_initialize$7.$$arity=-3);self.$attr_reader("ctx","canvas","width","height");Opal.def(self,"$_resize",$Image__resize$8=function $$_resize(w,h){var $a,self=this;$a=[w,h],self.width=$a[0],self.height=$a[1],$a;self.canvas.width=w;self.canvas.height=h},$Image__resize$8.$$arity=2);Opal.def(self,"$draw",$Image_draw$9=function $$draw(x,y,image){var self=this;self.ctx.drawImage(image.$canvas(),x,y);return self},$Image_draw$9.$$arity=3);Opal.def(self,"$draw_scale",$Image_draw_scale$10=function $$draw_scale(x,y,image,scale_x,scale_y,center_x,center_y){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}return self.$draw_ex(x,y,image,$hash2(["scale_x","scale_y","center_x","center_y"],{scale_x:scale_x,scale_y:scale_y,center_x:center_x,center_y:center_y}))},$Image_draw_scale$10.$$arity=-6);Opal.def(self,"$draw_rot",$Image_draw_rot$11=function $$draw_rot(x,y,image,angle,center_x,center_y){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}return self.$draw_ex(x,y,image,$hash2(["angle","center_x","center_y"],{angle:angle,center_x:center_x,center_y:center_y}))},$Image_draw_rot$11.$$arity=-5);Opal.const_set($nesting[0],"BLEND_TYPES",$hash2(["alpha","add"],{alpha:"source-over",add:"lighter"}));Opal.def(self,"$draw_ex",$Image_draw_ex$12=function $$draw_ex(x,y,image,options){var $a,self=this,scale_x=nil,scale_y=nil,center_x=nil,center_y=nil,alpha=nil,blend=nil,angle=nil,cx=nil,cy=nil;if(options==null){options=$hash2([],{})}scale_x=$truthy($a=options["$[]"]("scale_x"))?$a:1;scale_y=$truthy($a=options["$[]"]("scale_y"))?$a:1;center_x=$truthy($a=options["$[]"]("center_x"))?$a:$rb_divide(image.$width(),2);center_y=$truthy($a=options["$[]"]("center_y"))?$a:$rb_divide(image.$height(),2);alpha=$truthy($a=options["$[]"]("alpha"))?$a:255;blend=$truthy($a=options["$[]"]("blend"))?$a:"alpha";angle=$truthy($a=options["$[]"]("angle"))?$a:0;cx=$rb_plus(x,center_x);cy=$rb_plus(y,center_y);self.ctx.translate(cx,cy);self.ctx.rotate(angle*Math.PI/180);self.ctx.scale(scale_x,scale_y);self.ctx.save();self.ctx.globalAlpha=alpha/255;self.ctx.globalCompositeOperation=$$($nesting,"BLEND_TYPES")["$[]"](blend);self.ctx.drawImage(image.$canvas(),x-cx,y-cy);self.ctx.restore();self.ctx.setTransform(1,0,0,1,0,0);return self},$Image_draw_ex$12.$$arity=-4);Opal.def(self,"$draw_font",$Image_draw_font$13=function $$draw_font(x,y,string,font,color){var self=this,ctx=nil;if(color==null){color=[255,255,255]}ctx=self.ctx;ctx.font=font.$_spec_str();ctx.textBaseline="top";ctx.fillStyle=self.$_rgba(color);ctx.fillText(string,x,y);return self},$Image_draw_font$13.$$arity=-5);Opal.def(self,"$[]",$Image_$$$14=function(x,y){var self=this,ctx=nil,ret=nil;ctx=self.ctx;ret=nil;var pixel=ctx.getImageData(x,y,1,1);var rgba=pixel.data;ret=[rgba[3],rgba[0],rgba[1],rgba[2]];return ret},$Image_$$$14.$$arity=2);Opal.def(self,"$[]=",$Image_$$$eq$15=function(x,y,color){var self=this;return self.$box_fill(x,y,$rb_plus(x,1),$rb_plus(y,1),color)},$Image_$$$eq$15.$$arity=3);Opal.def(self,"$compare",$Image_compare$16=function $$compare(x,y,color){var self=this,ctx=nil,rgba1=nil,rgba2=nil,ret=nil;ctx=self.ctx;rgba1=self.$_rgba_ary(color);rgba2=nil;ret=nil;var pixel=ctx.getImageData(x,y,1,1);rgba2=pixel.data;ret=rgba1[0]==rgba2[0]&&rgba1[1]==rgba2[1]&&rgba1[2]==rgba2[2]&&rgba1[3]==rgba2[3];return ret},$Image_compare$16.$$arity=3);Opal.def(self,"$line",$Image_line$17=function $$line(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1+.5,y1+.5);ctx.lineTo(x2+.5,y2+.5);ctx.stroke();return self},$Image_line$17.$$arity=5);Opal.def(self,"$box",$Image_box$18=function $$box(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.rect(x1+.5,y1+.5,x2-x1,y2-y1);ctx.stroke();return self},$Image_box$18.$$arity=5);Opal.def(self,"$box_fill",$Image_box_fill$19=function $$box_fill(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.fillRect(x1,y1,x2-x1,y2-y1);return self},$Image_box_fill$19.$$arity=5);Opal.def(self,"$circle",$Image_circle$20=function $$circle(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.arc(x+.5,y+.5,r,0,Math.PI*2,false);ctx.stroke();return self},$Image_circle$20.$$arity=4);Opal.def(self,"$circle_fill",$Image_circle_fill$21=function $$circle_fill(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.arc(x,y,r,0,Math.PI*2,false);ctx.fill();return self},$Image_circle_fill$21.$$arity=4);Opal.def(self,"$triangle",$Image_triangle$22=function $$triangle(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1+.5,y1+.5);ctx.lineTo(x2+.5,y2+.5);ctx.lineTo(x3+.5,y3+.5);ctx.lineTo(x1+.5,y1+.5);ctx.stroke();return self},$Image_triangle$22.$$arity=7);Opal.def(self,"$triangle_fill",$Image_triangle_fill$23=function $$triangle_fill(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.fill();return self},$Image_triangle_fill$23.$$arity=7);Opal.def(self,"$fill",$Image_fill$24=function $$fill(color){var self=this;return self.$box_fill(0,0,$rb_minus(self.width,1),$rb_minus(self.height,1),color)},$Image_fill$24.$$arity=1);Opal.def(self,"$clear",$Image_clear$25=function $$clear(){var self=this;return self.$fill([0,0,0,0])},$Image_clear$25.$$arity=0);Opal.def(self,"$slice",$Image_slice$26=function $$slice(x,y,width,height){var self=this,newimg=nil,data=nil;newimg=$$($nesting,"Image").$new(width,height);data=self.$_image_data(x,y,width,height);newimg.$_put_image_data(data);return newimg},$Image_slice$26.$$arity=4);Opal.def(self,"$slice_tiles",$Image_slice_tiles$27=function $$slice_tiles(xcount,ycount){var $$28,self=this,tile_w=nil,tile_h=nil;tile_w=$rb_divide(self.width,xcount);tile_h=$rb_divide(self.height,ycount);return $send(Opal.Range.$new(0,ycount,true),"flat_map",[],($$28=function(v){var self=$$28.$$s||this,$$29;if(v==null){v=nil}return $send(Opal.Range.$new(0,xcount,true),"map",[],($$29=function(u){var self=$$29.$$s||this;if(u==null){u=nil}return self.$slice($rb_times(tile_w,u),$rb_times(tile_h,v),tile_w,tile_h)},$$29.$$s=self,$$29.$$arity=1,$$29))},$$28.$$s=self,$$28.$$arity=1,$$28))},$Image_slice_tiles$27.$$arity=2);Opal.def(self,"$set_color_key",$Image_set_color_key$30=function $$set_color_key(color){var $a,$b,self=this,r=nil,g=nil,b=nil,_=nil,data=nil;$b=self.$_rgba_ary(color),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],g=$a[1]==null?nil:$a[1],b=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],$b;data=self.$_image_data();var buf=data.data;for(var i=0;i44100)freq=44100;if(volume<0)volume=0;if(volume>255)volume=255;var vol=volume/255;var period=valuesPerSecond*1/freq;for(;n<(i+1)/n_ticks*n_values;n++){var phase=n%period/period;var value;switch(wave_type){case"sine":value=Math.sin(2*Math.PI*phase)*2-1;break;case"sawtooth":value=phase*2-1;break;case"triangle":value=phase<.25?0+phase*4:phase<.5?1-(phase-.25)*4:phase<.75?0-(phase-.5)*4:-1+(phase-.75)*4;break;case"square":value=phase<.5?1:-1;break;default:self.$raise($rb_plus("unknown wave_type: ",wave_type.$inspect()))}values[n]=value*vol}}snd["$decoded="](myArrayBuffer);resolve()});return[snd,snd_promise]},$SoundEffect__load$1.$$arity=-2);return(Opal.def(self,"$add",$SoundEffect_add$2=function $$add(wave_type,resolution){var self=this;if(wave_type==null){wave_type=$$($nesting,"WAVE_RECT")}if(resolution==null){resolution=1e3}return $$($nesting,"TODO")},$SoundEffect_add$2.$$arity=-1),nil)&&"add"})($nesting[0],$$($nesting,"Sound"),$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_checker"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;(function(){var intersect=function(x1,y1,x2,y2,x3,y3,x4,y4){return((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))};var check_line_line=function(x1,y1,x2,y2,x3,y3,x4,y4){return!(((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))>0||((x3-x4)*(y1-y3)+(y3-y4)*(x3-x1))*((x3-x4)*(y2-y3)+(y3-y4)*(x3-x2))>0)};var check_circle_line=function(x,y,r,x1,y1,x2,y2){var vx=x2-x1,vy=y2-y1;var cx=x-x1,cy=y-y1;if(vx==0&&vy==0)return CCk.check_point_circle(x,y,r,x1,y1);var n1=vx*cx+vy*cy;if(n1<0)return cx*cx+cy*cyn2){var len=(x2-x)*(x2-x)+(y2-y)*(y2-y);return len=(cx-px)*(cx-px)+(cy-py)*(cy-py)},check_point_straight_rect:function(x,y,x1,y1,x2,y2){return x>=x1&&y>=y1&&x=(ox-dx)*(ox-dx)+(oy-dy)*(oy-dy)},check_ellipse_ellipse:function(E1,E2){var DefAng=E1.fAngle-E2.fAngle;var Cos=Math.cos(DefAng);var Sin=Math.sin(DefAng);var nx=E2.fRad_X*Cos;var ny=-E2.fRad_X*Sin;var px=E2.fRad_Y*Sin;var py=E2.fRad_Y*Cos;var ox=Math.cos(E1.fAngle)*(E2.fCx-E1.fCx)+Math.sin(E1.fAngle)*(E2.fCy-E1.fCy);var oy=-Math.sin(E1.fAngle)*(E2.fCx-E1.fCx)+Math.cos(E1.fAngle)*(E2.fCy-E1.fCy);var rx_pow2=1/(E1.fRad_X*E1.fRad_X);var ry_pow2=1/(E1.fRad_Y*E1.fRad_Y);var A=rx_pow2*nx*nx+ry_pow2*ny*ny;var B=rx_pow2*px*px+ry_pow2*py*py;var D=2*rx_pow2*nx*px+2*ry_pow2*ny*py;var E=2*rx_pow2*nx*ox+2*ry_pow2*ny*oy;var F=2*rx_pow2*px*ox+2*ry_pow2*py*oy;var G=ox/E1.fRad_X*(ox/E1.fRad_X)+oy/E1.fRad_Y*(oy/E1.fRad_Y)-1;var tmp1=1/(D*D-4*A*B);var h=(F*D-2*E*B)*tmp1;var k=(E*D-2*A*F)*tmp1;var Th=B-A==0?0:Math.atan(D/(B-A))*.5;var CosTh=Math.cos(Th);var SinTh=Math.sin(Th);var A_tt=A*CosTh*CosTh+B*SinTh*SinTh-D*CosTh*SinTh;var B_tt=A*SinTh*SinTh+B*CosTh*CosTh+D*CosTh*SinTh;var KK=A*h*h+B*k*k+D*h*k-E*h-F*k+G>0?0:A*h*h+B*k*k+D*h*k-E*h-F*k+G;var Rx_tt=1+Math.sqrt(-KK/A_tt);var Ry_tt=1+Math.sqrt(-KK/B_tt);var x_tt=CosTh*h-SinTh*k;var y_tt=SinTh*h+CosTh*k;var JudgeValue=x_tt*x_tt/(Rx_tt*Rx_tt)+y_tt*y_tt/(Ry_tt*Ry_tt);return JudgeValue<=1},check_circle_tilted_rect:function(cx,cy,cr,x1,y1,x2,y2,x3,y3,x4,y4){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||CCk.check_point_triangle(cx,cy,x1,y1,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x4,y4,x1,y1)},check_circle_triangle:function(cx,cy,cr,x1,y1,x2,y2,x3,y3){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x1,y1)},check_rect_rect:function(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2){return ax1x2)x2=poss[i][0];if(poss[i][1]>y2)y2=poss[i][1]}return[[x1,y1],[x2,y2]]},$Base_aabb$7.$$arity=1),nil)&&"aabb"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Point");var $nesting=[self].concat($parent_nesting),$Point_initialize$8,$Point_type$9,$Point_collides$ques$10,$Point_absolute_pos$11;self.$$prototype.x=self.$$prototype.y=nil;Opal.def(self,"$initialize",$Point_initialize$8=function $$initialize(sprite,x,y){var $a,$iter=$Point_initialize$8.$$p,$yield=$iter||nil,self=this;if($iter)$Point_initialize$8.$$p=null;$a=[sprite,x,y],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Point_initialize$8,false),[],null)},$Point_initialize$8.$$arity=3);Opal.def(self,"$type",$Point_type$9=function $$type(){var self=this;return"Point"},$Point_type$9.$$arity=0);Opal.def(self,"$collides?",$Point_collides$ques$10=function(other){var $a,$b,self=this,$case=nil,x=nil,y=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return self.$absolute_pos()["$=="](other.$absolute_pos())}else if("Circle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;return Opal.DXOpal.CCk.check_point_circle(x,y,cx,cy,other.$r())}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_straight_rect(x,y,x1,y1,x2,y2)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_pos())),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_triangle(x,y,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},$Point_collides$ques$10.$$arity=1);return(Opal.def(self,"$absolute_pos",$Point_absolute_pos$11=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},$Point_absolute_pos$11.$$arity=0),nil)&&"absolute_pos"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Circle");var $nesting=[self].concat($parent_nesting),$Circle_initialize$12,$Circle_type$13,$Circle_circle$ques$14,$Circle_collides$ques$15,$Circle_absolute_pos$16,$Circle_absolute_norot_pos$17,$Circle_collides_circle$ques$18;self.$$prototype.sprite=self.$$prototype.r=self.$$prototype.x=self.$$prototype.y=nil;Opal.def(self,"$initialize",$Circle_initialize$12=function $$initialize(sprite,x,y,r){var $a,$iter=$Circle_initialize$12.$$p,$yield=$iter||nil,self=this;if($iter)$Circle_initialize$12.$$p=null;$a=[sprite,x,y,r],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],self.r=$a[3],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Circle_initialize$12,false),[],null)},$Circle_initialize$12.$$arity=4);self.$attr_reader("r");Opal.def(self,"$type",$Circle_type$13=function $$type(){var self=this;return"Circle"},$Circle_type$13.$$arity=0);Opal.def(self,"$circle?",$Circle_circle$ques$14=function(){var self=this;return self.sprite.$scale_x()["$=="](self.sprite.$scale_y())},$Circle_circle$ques$14.$$arity=0);Opal.def(self,"$collides?",$Circle_collides$ques$15=function(other){var $a,$b,self=this,$case=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil,x4=nil,y4=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return other["$collides?"](self)}else if("Circle"["$==="]($case)){return self["$collides_circle?"](other)}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),x4=$b[0]==null?nil:$b[0],y4=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_tilted_rect(cx,cy,self.r,x1,y1,x2,y2,x3,y3,x4,y4)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_triangle(cx,cy,self.r,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},$Circle_collides$ques$15.$$arity=1);Opal.def(self,"$absolute_pos",$Circle_absolute_pos$16=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},$Circle_absolute_pos$16.$$arity=0);Opal.def(self,"$absolute_norot_pos",$Circle_absolute_norot_pos$17=function $$absolute_norot_pos(){var self=this;return[$rb_plus(self.x,self.sprite.$x()),$rb_plus(self.y,self.sprite.$y())]},$Circle_absolute_norot_pos$17.$$arity=0);self.$private();return(Opal.def(self,"$collides_circle?",$Circle_collides_circle$ques$18=function(other){var $a,self=this,x1=nil,y1=nil,r1=nil,x2=nil,y2=nil,r2=nil,scale_x1=nil,scale_y1=nil,angle1=nil,scale_x2=nil,scale_y2=nil,angle2=nil,ret=nil;$a=[].concat(Opal.to_a(self.$absolute_pos())),x1=$a[0]==null?nil:$a[0],y1=$a[1]==null?nil:$a[1],$a;r1=self.r;$a=[].concat(Opal.to_a(other.$absolute_pos())),x2=$a[0]==null?nil:$a[0],y2=$a[1]==null?nil:$a[1],$a;r2=other.$r();if($truthy($truthy($a=self["$circle?"]())?other["$circle?"]():$a)){return Opal.DXOpal.CCk.check_circle_circle(x1,y1,self.r,x2,y2,other.$r())}else{if($truthy(self.sprite.$collision_sync())){scale_x1=self.sprite.$scale_x();scale_y1=self.sprite.$scale_y();angle1=$rb_divide($rb_times(self.sprite.$angle(),$$$($$($nesting,"Math"),"PI")),180)}else{scale_x1=1;scale_y1=1;angle1=0}if($truthy(other.$sprite().$collision_sync())){scale_x2=other.$sprite().$scale_x();scale_y2=other.$sprite().$scale_y();angle2=$rb_divide($rb_times(other.$sprite().$angle(),$$$($$($nesting,"Math"),"PI")),180)}else{scale_x2=1;scale_y2=1;angle2=0}ret=nil;var e1={fRad_X:scale_x1*r1,fRad_Y:scale_y1*r1,fAngle:angle1,fCx:x1,fCy:y1};var e2={fRad_X:scale_x2*r2,fRad_Y:scale_y2*r2,fAngle:angle2,fCx:x2,fCy:y2};ret=Opal.DXOpal.CCk.check_ellipse_ellipse(e1,e2);return ret}},$Circle_collides_circle$ques$18.$$arity=1),nil)&&"collides_circle?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rect");var $nesting=[self].concat($parent_nesting),$Rect_initialize$19,$Rect_type$20,$Rect_inspect$21,$Rect_collides$ques$22,$Rect_absolute_poss$23,$Rect_absolute_norot_poss$24;self.$$prototype.x1=self.$$prototype.y1=self.$$prototype.x2=self.$$prototype.y2=self.$$prototype.sprite=self.$$prototype.poss=nil;Opal.def(self,"$initialize",$Rect_initialize$19=function $$initialize(sprite,x1,y1,x2,y2){var $a,$iter=$Rect_initialize$19.$$p,$yield=$iter||nil,self=this;if($iter)$Rect_initialize$19.$$p=null;$a=[sprite,x1,y1,x2,y2],self.sprite=$a[0],self.x1=$a[1],self.y1=$a[2],self.x2=$a[3],self.y2=$a[4],$a;self.poss=[[x1,y1],[x2,y1],[x2,y2],[x1,y2]];return $send(self,Opal.find_super_dispatcher(self,"initialize",$Rect_initialize$19,false),[],null)},$Rect_initialize$19.$$arity=5);Opal.def(self,"$type",$Rect_type$20=function $$type(){var self=this;return"Rect"},$Rect_type$20.$$arity=0);Opal.def(self,"$inspect",$Rect_inspect$21=function $$inspect(){var self=this;return""+"#"},$Rect_inspect$21.$$arity=0);Opal.def(self,"$collides?",$Rect_collides$ques$22=function(other){var $a,$b,$c,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,ox3=nil,oy3=nil,ox4=nil,oy4=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)){return other["$collides?"](self)}else if("Rect"["$==="]($case)){$b=self.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(other.$absolute_poss(),self.sprite)),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}$b=other.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(self.$absolute_poss(),other.$sprite())),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}return true}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),ox4=$b[0]==null?nil:$b[0],oy4=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1,oy1,ox2,oy2,ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},$Rect_collides$ques$22.$$arity=1);Opal.def(self,"$absolute_poss",$Rect_absolute_poss$23=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},$Rect_absolute_poss$23.$$arity=0);return(Opal.def(self,"$absolute_norot_poss",$Rect_absolute_norot_poss$24=function $$absolute_norot_poss(){var self=this;return[[$rb_plus(self.x1,self.sprite.$x()),$rb_plus(self.y1,self.sprite.$y())],[$rb_plus(self.x2,self.sprite.$x()),$rb_plus(self.y2,self.sprite.$y())]]},$Rect_absolute_norot_poss$24.$$arity=0),nil)&&"absolute_norot_poss"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Triangle");var $nesting=[self].concat($parent_nesting),$Triangle_initialize$25,$Triangle_type$26,$Triangle_collides$ques$27,$Triangle_absolute_poss$28;self.$$prototype.poss=nil;Opal.def(self,"$initialize",$Triangle_initialize$25=function $$initialize(sprite,x1,y1,x2,y2,x3,y3){var $iter=$Triangle_initialize$25.$$p,$yield=$iter||nil,self=this;if($iter)$Triangle_initialize$25.$$p=null;self.sprite=sprite;self.poss=[[x1,y1],[x2,y2],[x3,y3]];return $send(self,Opal.find_super_dispatcher(self,"initialize",$Triangle_initialize$25,false),[],null)},$Triangle_initialize$25.$$arity=7);Opal.def(self,"$type",$Triangle_type$26=function $$type(){var self=this;return"Triangle"},$Triangle_type$26.$$arity=0);Opal.def(self,"$collides?",$Triangle_collides$ques$27=function(other){var $a,$b,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,ox3=nil,oy3=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)||"Rect"["$==="]($case)){return other["$collides?"](self)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;Opal.DXOpal.CCk.check_triangle_triangle(ox1,oy1,ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},$Triangle_collides$ques$27.$$arity=1);return(Opal.def(self,"$absolute_poss",$Triangle_absolute_poss$28=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},$Triangle_absolute_poss$28.$$arity=0),nil)&&"absolute_poss"})($nesting[0],$$($nesting,"Base"),$nesting)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$Array","$equal?","$select","$is_a?","$length","$===","$[]","$__send__","$nil?","$new","$width","$height","$attr_accessor","$attr_reader","$raise","$inspect","$x","$any?","$check","$_collides?","$_collision_area","$!","$_collidable?","$collides?"]);self.$require("dxopal/sprite/collision_area");return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Sprite");var $nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"CollisionCheck");var $nesting=[self].concat($parent_nesting),$CollisionCheck_shot$3,$CollisionCheck_hit$4,$CollisionCheck__init_collision_info$5,$CollisionCheck_collision$eq$6,$CollisionCheck_$eq_eq_eq$7,$CollisionCheck_check$8,$CollisionCheck__collides$ques$10,$CollisionCheck__collidable$ques$11;(function($base,$parent_nesting){var self=$module($base,"ClassMethods");var $nesting=[self].concat($parent_nesting),$ClassMethods_check$1;Opal.def(self,"$check",$ClassMethods_check$1=function $$check(offences,defences,shot,hit){var $$2,self=this,i=nil,j=nil,sprites=nil,n=nil;if(shot==null){shot="shot"}if(hit==null){hit="hit"}offences=self.$Array(offences);defences=self.$Array(defences);i=j=0;if($truthy(offences["$equal?"](defences))){sprites=$send(offences,"select",[],($$2=function(x){var self=$$2.$$s||this;if(x==null){x=nil}return x["$is_a?"]($$($nesting,"Sprite"))},$$2.$$s=self,$$2.$$arity=1,$$2));n=sprites.$length();for(var i=0;i{var[type,sprite,info]=$$($nesting,"Sprite").$_matter_sprites()["$[]"](body.id);switch(type){case"rectangle":var[width,height]=info;sprite["$_move_to_matter_body"](body.position.x,body.position.y);sprite["$angle="](body.angle/Math.PI*180);break;default:`self.$raise("" + "unknown type: " + (self.$type()))`}})},$Sprite_matter_tick$9.$$arity=1),nil)&&"matter_tick"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$extend","$include","$each","$!","$respond_to?","$vanished?","$update","$reject!","$nil?","$sort_by","$flatten","$to_proc","$draw","$/","$width","$height","$_init_collision_info","$attr_accessor","$attr_reader","$_move_matter_body","$-","$collision=","$raise","$draw_ex"]);self.$require("dxopal/sprite/collision_check");self.$require("dxopal/sprite/physics");return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Sprite");var $nesting=[self].concat($parent_nesting),$Sprite_update$1,$Sprite_clean$3,$Sprite_draw$5,$Sprite_initialize$7,$Sprite_x$eq$8,$Sprite_y$eq$9,$Sprite_image$10,$Sprite_image$eq$11,$Sprite_vanish$12,$Sprite_vanished$ques$13,$Sprite_draw$14;self.$$prototype.image=self.$$prototype._matter_body=self.$$prototype.collision=self.$$prototype.center_x=self.$$prototype.vanished=self.$$prototype.visible=self.$$prototype.x=self.$$prototype.y=self.$$prototype.scale_x=self.$$prototype.scale_y=self.$$prototype.alpha=self.$$prototype.blend=self.$$prototype.angle=self.$$prototype.center_y=nil;self.$extend($$$($$$($$$($$($nesting,"DXOpal"),"Sprite"),"CollisionCheck"),"ClassMethods"));self.$include($$$($$$($$($nesting,"DXOpal"),"Sprite"),"CollisionCheck"));self.$include($$$($$$($$($nesting,"DXOpal"),"Sprite"),"Physics"));Opal.defs(self,"$update",$Sprite_update$1=function $$update(sprites){var $$2,self=this;return $send(sprites,"each",[],($$2=function(sprite){var self=$$2.$$s||this,$a;if(sprite==null){sprite=nil}if($truthy(sprite["$respond_to?"]("update")["$!"]())){return nil}if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$update()},$$2.$$s=self,$$2.$$arity=1,$$2))},$Sprite_update$1.$$arity=1);Opal.defs(self,"$clean",$Sprite_clean$3=function $$clean(sprites){var $$4,self=this;return $send(sprites,"reject!",[],($$4=function(sprite){var self=$$4.$$s||this,$a;if(sprite==null){sprite=nil}return $truthy($a=sprite["$nil?"]())?$a:sprite["$vanished?"]()},$$4.$$s=self,$$4.$$arity=1,$$4))},$Sprite_clean$3.$$arity=1);Opal.defs(self,"$draw",$Sprite_draw$5=function $$draw(sprites){var $$6,self=this;return $send($send(sprites.$flatten(),"sort_by",[],"z".$to_proc()),"each",[],($$6=function(sprite){var self=$$6.$$s||this,$a;if(sprite==null){sprite=nil}if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$draw()},$$6.$$s=self,$$6.$$arity=1,$$6))},$Sprite_draw$5.$$arity=1);Opal.def(self,"$initialize",$Sprite_initialize$7=function $$initialize(x,y,image){var $a,self=this;if(x==null){x=0}if(y==null){y=0}if(image==null){image=nil}$a=[x,y,image],self.x=$a[0],self.y=$a[1],self.image=$a[2],$a;self.z=0;self.angle=0;self.scale_x=self.scale_y=1;if($truthy(image)){self.center_x=$rb_divide(image.$width(),2);self.center_y=$rb_divide(image.$height(),2)}self.visible=true;self.vanished=false;return self.$_init_collision_info(self.image)},$Sprite_initialize$7.$$arity=-1);self.$attr_accessor("z","visible");self.$attr_accessor("angle");self.$attr_accessor("scale_x","scale_y");self.$attr_accessor("center_x","center_y");self.$attr_accessor("alpha");self.$attr_accessor("blend");self.$attr_reader("x","y");Opal.def(self,"$x=",$Sprite_x$eq$8=function(newx){var self=this;self.x=newx;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},$Sprite_x$eq$8.$$arity=1);Opal.def(self,"$y=",$Sprite_y$eq$9=function(newy){var self=this;self.y=newy;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},$Sprite_y$eq$9.$$arity=1);Opal.def(self,"$image",$Sprite_image$10=function $$image(){var self=this;return self.image},$Sprite_image$10.$$arity=0);Opal.def(self,"$image=",$Sprite_image$eq$11=function(img){var self=this,$writer=nil;self.image=img;if($truthy(self.collision["$nil?"]())){$writer=[[0,0,$rb_minus(img.$width(),1),$rb_minus(img.$height(),1)]];$send(self,"collision=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(self.center_x["$nil?"]())){self.center_x=$rb_divide(img.$width(),2);return self.center_y=$rb_divide(img.$height(),2)}else{return nil}},$Sprite_image$eq$11.$$arity=1);Opal.def(self,"$vanish",$Sprite_vanish$12=function $$vanish(){var self=this;return self.vanished=true},$Sprite_vanish$12.$$arity=0);Opal.def(self,"$vanished?",$Sprite_vanished$ques$13=function(){var self=this;return self.vanished},$Sprite_vanished$ques$13.$$arity=0);return(Opal.def(self,"$draw",$Sprite_draw$14=function $$draw(){var self=this;if($truthy(self.image["$nil?"]())){self.$raise("image not set to Sprite")}if($truthy(self.visible["$!"]())){return nil}return $$($nesting,"Window").$draw_ex(self.x,self.y,self.image,$hash2(["scale_x","scale_y","alpha","blend","angle","center_x","center_y"],{scale_x:self.scale_x,scale_y:self.scale_y,alpha:self.alpha,blend:self.blend,angle:self.angle,center_x:self.center_x,center_y:self.center_y}))},$Sprite_draw$14.$$arity=0),nil)&&"draw"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/window"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$now","$_load_resources","$dump_error","$to_proc","$!","$_loop","$clear","$draw_pause_screen","$nil?","$raise","$loop","$draw_box_fill","$width","$height","$draw_font","$default","$_init","$/","$-","$+","$>=","$matter_enabled?","$matter_tick","$_on_tick","$box_fill","$sort","$==","$[]","$<=>","$each","$===","$draw","$drop","$draw_rot","$draw_scale","$draw_ex","$[]=","$line","$box","$circle","$circle_fill","$triangle","$triangle_fill","$width=","$height=","$new","$enqueue_draw","$push","$length"]);self.$require("dxopal/constants/colors");return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Window");var $nesting=[self].concat($parent_nesting),$Window_load_resources$1,$Window_loop$3,$Window_pause$5,$Window_paused$ques$6,$Window_resume$7,$Window_draw_pause_screen$8,$Window__loop$9,$Window__init$14,$Window__img$15,$Window_fps$16,$Window_fps$eq$17,$Window_real_fps$18,$Window_width$19,$Window_width$eq$20,$Window_height$21,$Window_height$eq$22,$Window_bgcolor$23,$Window_bgcolor$eq$24,$Window_draw$25,$Window_draw_scale$26,$Window_draw_rot$27,$Window_draw_ex$28,$Window_draw_font$29,$Window_draw_pixel$30,$Window_draw_line$31,$Window_draw_box$32,$Window_draw_box_fill$33,$Window_draw_circle$34,$Window_draw_circle_fill$35,$Window_draw_triangle$36,$Window_draw_triangle_fill$37,$Window_enqueue_draw$38;Opal.class_variable_set($nesting[0],"@@fps",60);Opal.class_variable_set($nesting[0],"@@fps_ts",nil);Opal.class_variable_set($nesting[0],"@@fps_ct",0);Opal.class_variable_set($nesting[0],"@@real_fps",0);Opal.class_variable_set($nesting[0],"@@real_fps_ct",1);Opal.class_variable_set($nesting[0],"@@real_fps_t",$$($nesting,"Time").$now());Opal.class_variable_set($nesting[0],"@@width",640);Opal.class_variable_set($nesting[0],"@@height",480);Opal.class_variable_set($nesting[0],"@@block",nil);Opal.class_variable_set($nesting[0],"@@paused",false);Opal.defs(self,"$load_resources",$Window_load_resources$1=function $$load_resources(){var $iter=$Window_load_resources$1.$$p,block=$iter||nil,$$2,self=this;if($iter)$Window_load_resources$1.$$p=null;if($iter)$Window_load_resources$1.$$p=null;return $send($$($nesting,"RemoteResource"),"_load_resources",[],($$2=function(){var self=$$2.$$s||this;return $send($$($nesting,"DXOpal"),"dump_error",[],block.$to_proc())},$$2.$$s=self,$$2.$$arity=0,$$2))},$Window_load_resources$1.$$arity=0);Opal.defs(self,"$loop",$Window_loop$3=function $$loop(){var $iter=$Window_loop$3.$$p,block=$iter||nil,$a,$$4,self=this,already_running=nil;if($iter)$Window_loop$3.$$p=null;if($iter)$Window_loop$3.$$p=null;already_running=(($a=$nesting[0].$$cvars["@@block"])==null?nil:$a)["$!"]()["$!"]();Opal.class_variable_set($nesting[0],"@@block",block);if($truthy(already_running)){return nil}return window.requestAnimationFrame(($$4=function(time){var self=$$4.$$s||this;if(time==null){time=nil}return self.$_loop(time)},$$4.$$s=self,$$4.$$arity=1,$$4))},$Window_loop$3.$$arity=0);Opal.defs(self,"$pause",$Window_pause$5=function $$pause(){var $a,self=this;Opal.class_variable_set($nesting[0],"@@paused",true);(($a=$nesting[0].$$cvars["@@draw_queue"])==null?nil:$a).$clear();return self.$draw_pause_screen()},$Window_pause$5.$$arity=0);Opal.defs(self,"$paused?",$Window_paused$ques$6=function(){var $a,self=this;return($a=$nesting[0].$$cvars["@@paused"])==null?nil:$a},$Window_paused$ques$6.$$arity=0);Opal.defs(self,"$resume",$Window_resume$7=function $$resume(){var $a,self=this;if($truthy((($a=$nesting[0].$$cvars["@@block"])==null?nil:$a)["$nil?"]())){self.$raise("Window.resume is called before Window.loop")}Opal.class_variable_set($nesting[0],"@@paused",false);return $send($$($nesting,"Window"),"loop",[],(($a=$nesting[0].$$cvars["@@block"])==null?nil:$a).$to_proc())},$Window_resume$7.$$arity=0);Opal.defs(self,"$draw_pause_screen",$Window_draw_pause_screen$8=function $$draw_pause_screen(){var self=this;$$($nesting,"Window").$draw_box_fill(0,0,$$($nesting,"Window").$width(),$$($nesting,"Window").$height(),$$($nesting,"C_BLACK"));return $$($nesting,"Window").$draw_font(0,0,"...PAUSE...",$$($nesting,"Font").$default(),$hash2(["color"],{color:$$($nesting,"C_WHITE")}))},$Window_draw_pause_screen$8.$$arity=0);Opal.defs(self,"$_loop",$Window__loop$9=function $$_loop(timestamp){var $a,$b,$$10,$$11,$$12,$$13,self=this,frame_msec=nil,passed_msec=nil,t=nil,sorted=nil;Opal.class_variable_set($nesting[0],"@@img",$truthy($a=($b=$nesting[0].$$cvars["@@img"])==null?nil:$b)?$a:self.$_init());frame_msec=$rb_divide(1e3,($a=$nesting[0].$$cvars["@@fps"])==null?nil:$a);Opal.class_variable_set($nesting[0],"@@fps_ts",$truthy($a=($b=$nesting[0].$$cvars["@@fps_ts"])==null?nil:$b)?$a:timestamp);passed_msec=$rb_minus(timestamp,($a=$nesting[0].$$cvars["@@fps_ts"])==null?nil:$a);Opal.class_variable_set($nesting[0],"@@fps_ts",timestamp);Opal.class_variable_set($nesting[0],"@@fps_ct",$rb_plus(($a=$nesting[0].$$cvars["@@fps_ct"])==null?nil:$a,passed_msec));if($truthy($rb_ge(($a=$nesting[0].$$cvars["@@fps_ct"])==null?nil:$a,frame_msec))){Opal.class_variable_set($nesting[0],"@@fps_ct",$rb_minus(($a=$nesting[0].$$cvars["@@fps_ct"])==null?nil:$a,frame_msec))}else{window.requestAnimationFrame(($$10=function(time){var self=$$10.$$s||this;if(time==null){time=nil}return self.$_loop(time)},$$10.$$s=self,$$10.$$arity=1,$$10));return nil}t=$$($nesting,"Time").$now();if($truthy($rb_ge($rb_minus(t,($a=$nesting[0].$$cvars["@@real_fps_t"])==null?nil:$a),1))){Opal.class_variable_set($nesting[0],"@@real_fps",($a=$nesting[0].$$cvars["@@real_fps_ct"])==null?nil:$a);Opal.class_variable_set($nesting[0],"@@real_fps_ct",1);Opal.class_variable_set($nesting[0],"@@real_fps_t",t)}else{Opal.class_variable_set($nesting[0],"@@real_fps_ct",$rb_plus(($a=$nesting[0].$$cvars["@@real_fps_ct"])==null?nil:$a,1))}if($truthy($$($nesting,"Sprite")["$matter_enabled?"]())){$$($nesting,"Sprite").$matter_tick(timestamp)}$$($nesting,"Input").$_on_tick();Opal.class_variable_set($nesting[0],"@@draw_queue",[]);if($truthy(($a=$nesting[0].$$cvars["@@paused"])==null?nil:$a)){$$($nesting,"Window").$draw_pause_screen()}else{$send($$($nesting,"DXOpal"),"dump_error",[],(($a=$nesting[0].$$cvars["@@block"])==null?nil:$a).$to_proc())}(($a=$nesting[0].$$cvars["@@img"])==null?nil:$a).$box_fill(0,0,($a=$nesting[0].$$cvars["@@width"])==null?nil:$a,($a=$nesting[0].$$cvars["@@height"])==null?nil:$a,($a=$nesting[0].$$cvars["@@bgcolor"])==null?nil:$a);sorted=$send(($a=$nesting[0].$$cvars["@@draw_queue"])==null?nil:$a,"sort",[],($$11=function(a,b){var self=$$11.$$s||this;if(a==null){a=nil}if(b==null){b=nil}if(a["$[]"](0)["$=="](b["$[]"](0))){return a["$[]"](1)["$<=>"](b["$[]"](1))}else{return a["$[]"](0)["$<=>"](b["$[]"](0))}},$$11.$$s=self,$$11.$$arity=2,$$11));$send(sorted,"each",[],($$12=function(item){var self=$$12.$$s||this,$c,$case=nil,$writer=nil;if(item==null){item=nil}return function(){$case=item["$[]"](2);if("image"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"draw",Opal.to_a(item.$drop(3)))}else if("image_rot"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"draw_rot",Opal.to_a(item.$drop(3)))}else if("image_scale"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"draw_scale",Opal.to_a(item.$drop(3)))}else if("draw_ex"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"draw_ex",Opal.to_a(item.$drop(3)))}else if("font"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"draw_font",Opal.to_a(item.$drop(3)))}else if("pixel"["$==="]($case)){$writer=[].concat(Opal.to_a(item.$drop(3)));$send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if("line"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"line",Opal.to_a(item.$drop(3)))}else if("box"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"box",Opal.to_a(item.$drop(3)))}else if("box_fill"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"box_fill",Opal.to_a(item.$drop(3)))}else if("circle"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"circle",Opal.to_a(item.$drop(3)))}else if("circle_fill"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"circle_fill",Opal.to_a(item.$drop(3)))}else if("triangle"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"triangle",Opal.to_a(item.$drop(3)))}else if("triangle_fill"["$==="]($case)){return $send(($c=$nesting[0].$$cvars["@@img"])==null?nil:$c,"triangle_fill",Opal.to_a(item.$drop(3)))}else{return nil}}()},$$12.$$s=self,$$12.$$arity=1,$$12));return window.requestAnimationFrame(($$13=function(time){var self=$$13.$$s||this;if(time==null){time=nil}return self.$_loop(time)},$$13.$$s=self,$$13.$$arity=1,$$13))},$Window__loop$9.$$arity=1);Opal.defs(self,"$_init",$Window__init$14=function $$_init(){var $a,self=this,canvas=nil,$writer=nil,img=nil;canvas=document.getElementById("dxopal-canvas");$writer=[($a=$nesting[0].$$cvars["@@width"])==null?nil:$a];$send(self,"width=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[($a=$nesting[0].$$cvars["@@height"])==null?nil:$a];$send(self,"height=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];img=$$($nesting,"Image").$new(self.$width(),self.$height(),$hash2(["canvas"],{canvas:canvas}));$$($nesting,"Input").$_init(canvas);return img},$Window__init$14.$$arity=0);Opal.defs(self,"$_img",$Window__img$15=function $$_img(){var $a,self=this;return($a=$nesting[0].$$cvars["@@img"])==null?nil:$a},$Window__img$15.$$arity=0);Opal.defs(self,"$fps",$Window_fps$16=function $$fps(){var $a,self=this;return($a=$nesting[0].$$cvars["@@fps"])==null?nil:$a},$Window_fps$16.$$arity=0);Opal.defs(self,"$fps=",$Window_fps$eq$17=function(w){var self=this;return Opal.class_variable_set($nesting[0],"@@fps",w)},$Window_fps$eq$17.$$arity=1);Opal.defs(self,"$real_fps",$Window_real_fps$18=function $$real_fps(){var $a,self=this;return($a=$nesting[0].$$cvars["@@real_fps"])==null?nil:$a},$Window_real_fps$18.$$arity=0);Opal.defs(self,"$width",$Window_width$19=function $$width(){var $a,self=this;return($a=$nesting[0].$$cvars["@@width"])==null?nil:$a},$Window_width$19.$$arity=0);Opal.defs(self,"$width=",$Window_width$eq$20=function(w){var $a,self=this,canvas=nil;canvas=document.getElementById("dxopal-canvas");Opal.class_variable_set($nesting[0],"@@width",$truthy($a=w)?$a:window.innerWidth);canvas.width=($a=$nesting[0].$$cvars["@@width"])==null?nil:$a;return canvas.style.width=($a=$nesting[0].$$cvars["@@width"])==null?nil:$a},$Window_width$eq$20.$$arity=1);Opal.defs(self,"$height",$Window_height$21=function $$height(){var $a,self=this;return($a=$nesting[0].$$cvars["@@height"])==null?nil:$a},$Window_height$21.$$arity=0);Opal.defs(self,"$height=",$Window_height$eq$22=function(h){var $a,self=this,canvas=nil;canvas=document.getElementById("dxopal-canvas");Opal.class_variable_set($nesting[0],"@@height",$truthy($a=h)?$a:window.innerHeight);canvas.height=($a=$nesting[0].$$cvars["@@height"])==null?nil:$a;return canvas.style.height=($a=$nesting[0].$$cvars["@@height"])==null?nil:$a},$Window_height$eq$22.$$arity=1);Opal.class_variable_set($nesting[0],"@@bgcolor",$$$($$$($$($nesting,"Constants"),"Colors"),"C_BLACK"));Opal.defs(self,"$bgcolor",$Window_bgcolor$23=function $$bgcolor(){var $a,self=this;return($a=$nesting[0].$$cvars["@@bgcolor"])==null?nil:$a},$Window_bgcolor$23.$$arity=0);Opal.defs(self,"$bgcolor=",$Window_bgcolor$eq$24=function(col){var self=this;return Opal.class_variable_set($nesting[0],"@@bgcolor",col)},$Window_bgcolor$eq$24.$$arity=1);Opal.defs(self,"$draw",$Window_draw$25=function $$draw(x,y,image,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"image",x,y,image)},$Window_draw$25.$$arity=-4);Opal.defs(self,"$draw_scale",$Window_draw_scale$26=function $$draw_scale(x,y,image,scale_x,scale_y,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_scale",x,y,image,scale_x,scale_y,center_x,center_y)},$Window_draw_scale$26.$$arity=-6);Opal.defs(self,"$draw_rot",$Window_draw_rot$27=function $$draw_rot(x,y,image,angle,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_rot",x,y,image,angle,center_x,center_y)},$Window_draw_rot$27.$$arity=-5);Opal.defs(self,"$draw_ex",$Window_draw_ex$28=function $$draw_ex(x,y,image,options){var $a,self=this;if(options==null){options=$hash2([],{})}return self.$enqueue_draw($truthy($a=options["$[]"]("z"))?$a:0,"draw_ex",x,y,image,options)},$Window_draw_ex$28.$$arity=-4);Opal.defs(self,"$draw_font",$Window_draw_font$29=function $$draw_font(x,y,string,font,option){var $a,self=this,z=nil,color=nil;if(option==null){option=$hash2([],{})}z=$truthy($a=option["$[]"]("z"))?$a:0;color=$truthy($a=option["$[]"]("color"))?$a:[255,255,255];return self.$enqueue_draw(z,"font",x,y,string,font,color)},$Window_draw_font$29.$$arity=-5);Opal.defs(self,"$draw_pixel",$Window_draw_pixel$30=function $$draw_pixel(x,y,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"pixel",x,y,color)},$Window_draw_pixel$30.$$arity=-4);Opal.defs(self,"$draw_line",$Window_draw_line$31=function $$draw_line(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"line",x1,y1,x2,y2,color)},$Window_draw_line$31.$$arity=-6);Opal.defs(self,"$draw_box",$Window_draw_box$32=function $$draw_box(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box",x1,y1,x2,y2,color)},$Window_draw_box$32.$$arity=-6);Opal.defs(self,"$draw_box_fill",$Window_draw_box_fill$33=function $$draw_box_fill(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box_fill",x1,y1,x2,y2,color)},$Window_draw_box_fill$33.$$arity=-6);Opal.defs(self,"$draw_circle",$Window_draw_circle$34=function $$draw_circle(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle",x,y,r,color)},$Window_draw_circle$34.$$arity=-5);Opal.defs(self,"$draw_circle_fill",$Window_draw_circle_fill$35=function $$draw_circle_fill(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle_fill",x,y,r,color)},$Window_draw_circle_fill$35.$$arity=-5);Opal.defs(self,"$draw_triangle",$Window_draw_triangle$36=function $$draw_triangle(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle",x1,y1,x2,y2,x3,y3,color)},$Window_draw_triangle$36.$$arity=-8);Opal.defs(self,"$draw_triangle_fill",$Window_draw_triangle_fill$37=function $$draw_triangle_fill(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle_fill",x1,y1,x2,y2,x3,y3,color)},$Window_draw_triangle_fill$37.$$arity=-8);Opal.defs(self,"$enqueue_draw",$Window_enqueue_draw$38=function $$enqueue_draw(z,$a){var $post_args,args,$b,self=this;$post_args=Opal.slice.call(arguments,1,arguments.length);args=$post_args;return(($b=$nesting[0].$$cvars["@@draw_queue"])==null?nil:$b).$push([z,(($b=$nesting[0].$$cvars["@@draw_queue"])==null?nil:$b).$length()].concat(Opal.to_a(args)))},$Window_enqueue_draw$38.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","1.5.2")}($nesting[0],$nesting)};Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$raise"]);return function($base,$parent_nesting){var self=$module($base,"PackUnpack");var $nesting=[self].concat($parent_nesting);var directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"];var modifiers=["!","_",">","<"];self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null;currentCount=0;currentModifiers=[];countSpecified=false}reset();function yieldAndReset(){if(currentDirective==null){reset();return}var directiveSupportsModifiers=/[sSiIlLqQjJ]/.test(currentDirective);if(!directiveSupportsModifiers&¤tModifiers.length>0){self.$raise($$($nesting,"ArgumentError"),""+"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ")}if(currentModifiers.indexOf("<")!==-1&¤tModifiers.indexOf(">")!==-1){self.$raise($$($nesting,"RangeError"),"Can't use both '<' and '>'")}if(!countSpecified){currentCount=1}if(currentModifiers.indexOf(">")!==-1){currentDirective=currentDirective+">"}callback(currentDirective,currentCount);reset()}for(var i=0;i>6,128|charcode&63)}else if(charcode<55296||charcode>=57344){utf8.push(224|charcode>>12,128|charcode>>6&63,128|charcode&63)}else{i++;charcode=65536+((charcode&1023)<<10|string.charCodeAt(i)&1023);utf8.push(240|charcode>>18,128|charcode>>12&63,128|charcode>>6&63,128|charcode&63)}}return utf8}function toNByteSigned(bytesCount,callback){return function(data){var unsignedBits=callback(data),bitsCount=bytesCount*8,limit=Math.pow(2,bitsCount);return unsignedBits.map(function(n){if(n>=limit/2){n-=limit}return n})}}function bytesToAsciiChars(callback){return function(data){var bytes=callback(data);return bytes.map(function(singleByte){return String.fromCharCode(singleByte)})}}function joinChars(callback){return function(data){var chars=callback(data);return chars.join("")}}function wrapIntoArray(callback){return function(data){var object=callback(data);return[object]}}function filterTrailingChars(chars){var charCodesToFilter=chars.map(function(s){return s.charCodeAt(0)});return function(callback){return function(data){var charCodes=callback(data);while(charCodesToFilter.indexOf(charCodes[charCodes.length-1])!==-1){charCodes=charCodes.slice(0,charCodes.length-1)}return charCodes}}}var filterTrailingZerosAndSpaces=filterTrailingChars(["\0"," "]);function invertChunks(callback){return function(data){var chunks=callback(data);return chunks.map(function(chunk){return chunk.reverse()})}}function uudecode(callback){return function(data){var bytes=callback(data);var stop=false;var i=0,length=0;var result=[];do{if(i45){return""}length+=n;while(n>0){var c1=bytes[i];var c2=bytes[i+1];var c3=bytes[i+2];var c4=bytes[i+3];var b1=(c1-32&63)<<2|(c2-32&63)>>4;var b2=(c2-32&63)<<4|(c3-32&63)>>2;var b3=(c3-32&63)<<6|c4-32&63;result.push(b1&255);result.push(b2&255);result.push(b3&255);i+=4;n-=3}++i}else{break}}while(true);return result.slice(0,length)}}function toBits(callback){return function(data){var bytes=callback(data);var bits=bytes.map(function(singleByte){return singleByte.toString(2)});return bits}}function decodeBERCompressedIntegers(callback){return function(data){var bytes=callback(data),result=[],buffer="";for(var i=0;i":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:decodeBERCompressedIntegers(identityFunction),D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:wrapIntoArray(joinChars(bytesToAsciiChars(filterTrailingZerosAndSpaces(identityFunction)))),a:wrapIntoArray(joinChars(bytesToAsciiChars(identityFunction))),Z:joinChars(bytesToAsciiChars(identityFunction)),B:joinChars(identityFunction),b:joinChars(identityFunction),H:joinChars(identityFunction),h:joinChars(identityFunction),u:joinChars(bytesToAsciiChars(uudecode(identityFunction))),M:qpdecode(joinChars(bytesToAsciiChars(identityFunction))),m:base64Decode(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){var chunk=bytes.slice(0,n);bytes=bytes.slice(n,bytes.length);return{chunk:chunk,rest:bytes}}}function readUnicodeCharChunk(bytes){function readByte(){var result=bytes[0];bytes=bytes.slice(1,bytes.length);return result}var c=readByte(),extraLength;if(c>>7==0){return{chunk:[c],rest:bytes}}if(c>>6==2){self.$raise($$($nesting,"ArgumentError"),"malformed UTF-8 character")}if(c>>5==6){extraLength=1}else if(c>>4==14){extraLength=2}else if(c>>3==30){extraLength=3}else if(c>>2==62){extraLength=4}else if(c>>1==126){extraLength=5}else{self.$raise("malformed UTF-8 character")}if(extraLength>bytes.length){expected=extraLength+1,given=bytes.length+1,self.$raise($$($nesting,"ArgumentError"),""+"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)")}var mask=(1<<8-extraLength-1)-1,result=c&mask;for(var i=0;i>6!=2){self.$raise("Invalid multibyte sequence")}result=result<<6|c&63}if(result<=65535){return{chunk:[result],rest:bytes}}else{result-=65536;var high=(result>>10&1023)+55296,low=(result&1023)+56320;return{chunk:[high,low],rest:bytes}}}function readUuencodingChunk(buffer){var length=buffer.indexOf(32);if(length===-1){return{chunk:buffer,rest:[]}}else{return{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}}}function readNBitsLSBFirst(buffer,count){var result="";while(count>0&&buffer.length>0){var singleByte=buffer[0],bitsToTake=Math.min(count,8),bytesToTake=Math.ceil(bitsToTake/8);buffer=buffer.slice(1,buffer.length);if(singleByte!=null){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0){var singleByte=buffer[0],bitsToTake=Math.min(count,8),bytesToTake=Math.ceil(bitsToTake/8);buffer=buffer.slice(1,buffer.length);if(singleByte!=null){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0){var singleByte=buffer[0],hex=singleByte.toString(16);buffer=buffer.slice(1,buffer.length);hex=Array(2-hex.length+1).join("0").concat(hex);if(count===1){result.push(hex[0]);count--}else{result.push(hex[0],hex[1]);count-=2}}return{chunk:result,rest:buffer}}function readHexCharsLowNibbleFirst(buffer,count){var result=[];while(count>0&&buffer.length>0){var singleByte=buffer[0],hex=singleByte.toString(16);buffer=buffer.slice(1,buffer.length);hex=Array(2-hex.length+1).join("0").concat(hex);if(count===1){result.push(hex[1]);count--}else{result.push(hex[1],hex[0]);count-=2}}return{chunk:result,rest:buffer}}function readNTimesAndMerge(callback){return function(buffer,count){var chunk=[],chunkData;if(count===Infinity){while(buffer.length>0){chunkData=callback(buffer);buffer=chunkData.rest;chunk=chunk.concat(chunkData.chunk)}}else{for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge(readUnicodeCharChunk),w:readNTimesAndMerge(readWhileFirstBitIsOne),D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:readNTimesAndMerge(readBytes(1)),a:readNTimesAndMerge(readBytes(1)),Z:readTillNullCharacter,B:readNBitsMSBFirst,b:readNBitsLSBFirst,H:readHexCharsHighNibbleFirst,h:readHexCharsLowNibbleFirst,u:readNTimesAndMerge(readUuencodingChunk),M:readAll,m:readAll,P:null,p:null};var autocompletion={C:true,S:true,L:true,Q:true,J:null,"S>":true,"L>":true,"Q>":true,c:true,s:true,l:true,q:true,j:null,"s>":true,"l>":true,"q>":true,n:null,N:null,v:null,V:null,U:false,w:false,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:false,a:false,Z:false,B:false,b:false,H:false,h:false,u:false,M:false,m:false,P:null,p:null};var optimized={"C*":handlers["C"],"c*":handlers["c"],"A*":handlers["A"],"a*":handlers["a"],"M*":wrapIntoArray(handlers["M"]),"m*":wrapIntoArray(handlers["m"]),"S*":handlers["S"],"s*":handlers["s"],"L*":handlers["L"],"l*":handlers["l"],"Q*":handlers["Q"],"q*":handlers["q"],"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective];handlers[newDirective]=handlers[existingDirective];autocompletion[newDirective]=autocompletion[existingDirective]}alias("S>","n");alias("L>","N");alias("S","v");alias("L","V");Opal.def(self,"$unpack",$String_unpack$1=function $$unpack(format){var self=this;format=$$($nesting,"Opal")["$coerce_to!"](format,$$($nesting,"String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];var buffer=utf16LEToBytes(self);var optimizedHandler=optimized[format];if(optimizedHandler){return optimizedHandler(buffer)}function autocomplete(array,size){while(array.length"},$Set_inspect$6.$$arity=0);Opal.def(self,"$==",$Set_$eq_eq$7=function(other){var $a,$$8,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$instance_of?"](self.$class()))){return self.hash["$=="](other.$instance_variable_get("@hash"))}else if($truthy($truthy($a=other["$is_a?"]($$($nesting,"Set")))?self.$size()["$=="](other.$size()):$a)){return $send(other,"all?",[],($$8=function(o){var self=$$8.$$s||this;if(self.hash==null)self.hash=nil;if(o==null){o=nil}return self.hash["$include?"](o)},$$8.$$s=self,$$8.$$arity=1,$$8))}else{return false}},$Set_$eq_eq$7.$$arity=1);Opal.def(self,"$add",$Set_add$9=function $$add(o){var self=this,$writer=nil;$writer=[o,true];$send(self.hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self},$Set_add$9.$$arity=1);Opal.alias(self,"<<","add");Opal.def(self,"$classify",$Set_classify$10=function $$classify(){var $iter=$Set_classify$10.$$p,block=$iter||nil,$$11,$$12,self=this,result=nil;if($iter)$Set_classify$10.$$p=null;if($iter)$Set_classify$10.$$p=null;if(block!==nil){}else{return self.$enum_for("classify")}result=$send($$($nesting,"Hash"),"new",[],($$11=function(h,k){var self=$$11.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,self.$class().$new()];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$11.$$s=self,$$11.$$arity=2,$$11));$send(self,"each",[],($$12=function(item){var self=$$12.$$s||this;if(item==null){item=nil}return result["$[]"](Opal.yield1(block,item)).$add(item)},$$12.$$s=self,$$12.$$arity=1,$$12));return result},$Set_classify$10.$$arity=0);Opal.def(self,"$collect!",$Set_collect$excl$13=function(){var $iter=$Set_collect$excl$13.$$p,block=$iter||nil,$$14,self=this,result=nil;if($iter)$Set_collect$excl$13.$$p=null;if($iter)$Set_collect$excl$13.$$p=null;if(block!==nil){}else{return self.$enum_for("collect!")}result=self.$class().$new();$send(self,"each",[],($$14=function(item){var self=$$14.$$s||this;if(item==null){item=nil}return result["$<<"](Opal.yield1(block,item))},$$14.$$s=self,$$14.$$arity=1,$$14));return self.$replace(result)},$Set_collect$excl$13.$$arity=0);Opal.alias(self,"map!","collect!");Opal.def(self,"$delete",$Set_delete$15=function(o){var self=this;self.hash.$delete(o);return self},$Set_delete$15.$$arity=1);Opal.def(self,"$delete?",$Set_delete$ques$16=function(o){var self=this;if($truthy(self["$include?"](o))){self.$delete(o);return self}else{return nil}},$Set_delete$ques$16.$$arity=1);Opal.def(self,"$delete_if",$Set_delete_if$17=function $$delete_if(){var $$18,$$19,$iter=$Set_delete_if$17.$$p,$yield=$iter||nil,self=this;if($iter)$Set_delete_if$17.$$p=null;if($yield!==nil){}else{return self.$enum_for("delete_if")}$send($send(self,"select",[],($$18=function(o){var self=$$18.$$s||this;if(o==null){o=nil}return Opal.yield1($yield,o)},$$18.$$s=self,$$18.$$arity=1,$$18)),"each",[],($$19=function(o){var self=$$19.$$s||this;if(self.hash==null)self.hash=nil;if(o==null){o=nil}return self.hash.$delete(o)},$$19.$$s=self,$$19.$$arity=1,$$19));return self},$Set_delete_if$17.$$arity=0);Opal.def(self,"$add?",$Set_add$ques$20=function(o){var self=this;if($truthy(self["$include?"](o))){return nil}else{return self.$add(o)}},$Set_add$ques$20.$$arity=1);Opal.def(self,"$each",$Set_each$21=function $$each(){var $iter=$Set_each$21.$$p,block=$iter||nil,self=this;if($iter)$Set_each$21.$$p=null;if($iter)$Set_each$21.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}$send(self.hash,"each_key",[],block.$to_proc());return self},$Set_each$21.$$arity=0);Opal.def(self,"$empty?",$Set_empty$ques$22=function(){var self=this;return self.hash["$empty?"]()},$Set_empty$ques$22.$$arity=0);Opal.def(self,"$eql?",$Set_eql$ques$23=function(other){var $$24,self=this;return self.hash["$eql?"]($send(other,"instance_eval",[],($$24=function(){var self=$$24.$$s||this;if(self.hash==null)self.hash=nil;return self.hash},$$24.$$s=self,$$24.$$arity=0,$$24)))},$Set_eql$ques$23.$$arity=1);Opal.def(self,"$clear",$Set_clear$25=function $$clear(){var self=this;self.hash.$clear();return self},$Set_clear$25.$$arity=0);Opal.def(self,"$include?",$Set_include$ques$26=function(o){var self=this;return self.hash["$include?"](o)},$Set_include$ques$26.$$arity=1);Opal.alias(self,"member?","include?");Opal.def(self,"$merge",$Set_merge$27=function $$merge(enum$){var $$28,self=this;$send(enum$,"each",[],($$28=function(item){var self=$$28.$$s||this;if(item==null){item=nil}return self.$add(item)},$$28.$$s=self,$$28.$$arity=1,$$28));return self},$Set_merge$27.$$arity=1);Opal.def(self,"$replace",$Set_replace$29=function $$replace(enum$){var self=this;self.$clear();self.$merge(enum$);return self},$Set_replace$29.$$arity=1);Opal.def(self,"$size",$Set_size$30=function $$size(){var self=this;return self.hash.$size()},$Set_size$30.$$arity=0);Opal.alias(self,"length","size");Opal.def(self,"$subtract",$Set_subtract$31=function $$subtract(enum$){var $$32,self=this;$send(enum$,"each",[],($$32=function(item){var self=$$32.$$s||this;if(item==null){item=nil}return self.$delete(item)},$$32.$$s=self,$$32.$$arity=1,$$32));return self},$Set_subtract$31.$$arity=1);Opal.def(self,"$|",$Set_$$33=function(enum$){var self=this;if($truthy(enum$["$respond_to?"]("each"))){}else{self.$raise($$($nesting,"ArgumentError"),"value must be enumerable")}return self.$dup().$merge(enum$)},$Set_$$33.$$arity=1);Opal.def(self,"$superset?",$Set_superset$ques$34=function(set){var $a,$$35,self=this;$truthy($a=set["$is_a?"]($$($nesting,"Set")))?$a:self.$raise($$($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(self.$size(),set.$size()))){return false}return $send(set,"all?",[],($$35=function(o){var self=$$35.$$s||this;if(o==null){o=nil}return self["$include?"](o)},$$35.$$s=self,$$35.$$arity=1,$$35))},$Set_superset$ques$34.$$arity=1);Opal.alias(self,">=","superset?");Opal.def(self,"$proper_superset?",$Set_proper_superset$ques$36=function(set){var $a,$$37,self=this;$truthy($a=set["$is_a?"]($$($nesting,"Set")))?$a:self.$raise($$($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(self.$size(),set.$size()))){return false}return $send(set,"all?",[],($$37=function(o){var self=$$37.$$s||this;if(o==null){o=nil}return self["$include?"](o)},$$37.$$s=self,$$37.$$arity=1,$$37))},$Set_proper_superset$ques$36.$$arity=1);Opal.alias(self,">","proper_superset?");Opal.def(self,"$subset?",$Set_subset$ques$38=function(set){var $a,$$39,self=this;$truthy($a=set["$is_a?"]($$($nesting,"Set")))?$a:self.$raise($$($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(set.$size(),self.$size()))){return false}return $send(self,"all?",[],($$39=function(o){var self=$$39.$$s||this;if(o==null){o=nil}return set["$include?"](o)},$$39.$$s=self,$$39.$$arity=1,$$39))},$Set_subset$ques$38.$$arity=1);Opal.alias(self,"<=","subset?");Opal.def(self,"$proper_subset?",$Set_proper_subset$ques$40=function(set){var $a,$$41,self=this;$truthy($a=set["$is_a?"]($$($nesting,"Set")))?$a:self.$raise($$($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(set.$size(),self.$size()))){return false}return $send(self,"all?",[],($$41=function(o){var self=$$41.$$s||this;if(o==null){o=nil}return set["$include?"](o)},$$41.$$s=self,$$41.$$arity=1,$$41))},$Set_proper_subset$ques$40.$$arity=1);Opal.alias(self,"<","proper_subset?");Opal.alias(self,"+","|");Opal.alias(self,"union","|");return(Opal.def(self,"$to_a",$Set_to_a$42=function $$to_a(){var self=this;return self.hash.$keys()},$Set_to_a$42.$$arity=0),nil)&&"to_a"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var self=$module($base,"Enumerable");var $nesting=[self].concat($parent_nesting),$Enumerable_to_set$43;Opal.def(self,"$to_set",$Enumerable_to_set$43=function $$to_set($a,$b){var $iter=$Enumerable_to_set$43.$$p,block=$iter||nil,$post_args,klass,args,self=this;if($iter)$Enumerable_to_set$43.$$p=null;if($iter)$Enumerable_to_set$43.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);if($post_args.length>0){klass=$post_args[0];$post_args.splice(0,1)}if(klass==null){klass=$$($nesting,"Set")}args=$post_args;return $send(klass,"new",[self].concat(Opal.to_a(args)),block.$to_proc())},$Enumerable_to_set$43.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["ast/node"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$to_sym","$freeze","$to_a","$assign_properties","$hash","$class","$eql?","$type","$children","$each","$instance_variable_set","$protected","$private","$==","$nil?","$original_dup","$send","$equal?","$respond_to?","$to_ast","$updated","$+","$*","$fancy_type","$is_a?","$to_sexp","$inspect","$map","$to_sexp_array","$gsub","$to_s"]);return function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Node");var $nesting=[self].concat($parent_nesting),$Node_initialize$1,$Node_eql$ques$2,$Node_assign_properties$3,$Node_dup$5,$Node_updated$6,$Node_$eq_eq$7,$Node_concat$8,$Node_append$9,$Node_to_sexp$10,$Node_inspect$12,$Node_to_ast$14,$Node_to_sexp_array$15,$Node_fancy_type$17;self.$$prototype.type=self.$$prototype.children=nil;self.$attr_reader("type");self.$attr_reader("children");Opal.alias(self,"to_a","children");self.$attr_reader("hash");Opal.def(self,"$initialize",$Node_initialize$1=function $$initialize(type,children,properties){var $a,self=this;if(children==null){children=[]}if(properties==null){properties=$hash2([],{})}$a=[type.$to_sym(),children.$to_a().$freeze()],self.type=$a[0],self.children=$a[1],$a;self.$assign_properties(properties);self.hash=[self.type,self.children,self.$class()].$hash();return self.$freeze()},$Node_initialize$1.$$arity=-2);Opal.def(self,"$eql?",$Node_eql$ques$2=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$class()["$eql?"](other.$class()))?self.type["$eql?"](other.$type()):$b)?self.children["$eql?"](other.$children()):$a},$Node_eql$ques$2.$$arity=1);Opal.def(self,"$assign_properties",$Node_assign_properties$3=function $$assign_properties(properties){var $$4,self=this;$send(properties,"each",[],($$4=function(name,value){var self=$$4.$$s||this;if(name==null){name=nil}if(value==null){value=nil}return self.$instance_variable_set(""+"@"+name,value)},$$4.$$s=self,$$4.$$arity=2,$$4));return nil},$Node_assign_properties$3.$$arity=1);self.$protected("assign_properties");Opal.alias(self,"original_dup","dup");self.$private("original_dup");Opal.def(self,"$dup",$Node_dup$5=function $$dup(){var self=this;return self},$Node_dup$5.$$arity=0);Opal.alias(self,"clone","dup");Opal.def(self,"$updated",$Node_updated$6=function $$updated(type,children,properties){var $a,$b,self=this,new_type=nil,new_children=nil,new_properties=nil,copy=nil;if(type==null){type=nil}if(children==null){children=nil}if(properties==null){properties=nil}new_type=$truthy($a=type)?$a:self.type;new_children=$truthy($a=children)?$a:self.children;new_properties=$truthy($a=properties)?$a:$hash2([],{});if($truthy($truthy($a=($b=self.type["$=="](new_type))?self.children["$=="](new_children):self.type["$=="](new_type))?properties["$nil?"]():$a)){return self}else{copy=self.$original_dup();copy.$send("initialize",new_type,new_children,new_properties);return copy}},$Node_updated$6.$$arity=-1);Opal.def(self,"$==",$Node_$eq_eq$7=function(other){var $a,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$respond_to?"]("to_ast"))){other=other.$to_ast();return($a=other.$type()["$=="](self.$type()))?other.$children()["$=="](self.$children()):other.$type()["$=="](self.$type())}else{return false}},$Node_$eq_eq$7.$$arity=1);Opal.def(self,"$concat",$Node_concat$8=function $$concat(array){var self=this;return self.$updated(nil,$rb_plus(self.children,array.$to_a()))},$Node_concat$8.$$arity=1);Opal.alias(self,"+","concat");Opal.def(self,"$append",$Node_append$9=function $$append(element){var self=this;return self.$updated(nil,$rb_plus(self.children,[element]))},$Node_append$9.$$arity=1);Opal.alias(self,"<<","append");Opal.def(self,"$to_sexp",$Node_to_sexp$10=function $$to_sexp(indent){var $$11,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"("+self.$fancy_type();$send(self.$children(),"each",[],($$11=function(child){var self=$$11.$$s||this;if(child==null){child=nil}if($truthy(child["$is_a?"]($$($nesting,"Node")))){return sexp=$rb_plus(sexp,""+"\n"+child.$to_sexp($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+" "+child.$inspect())}},$$11.$$s=self,$$11.$$arity=1,$$11));sexp=$rb_plus(sexp,")");return sexp},$Node_to_sexp$10.$$arity=-1);Opal.alias(self,"to_s","to_sexp");Opal.def(self,"$inspect",$Node_inspect$12=function $$inspect(indent){var $$13,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"s(:"+self.type;$send(self.$children(),"each",[],($$13=function(child){var self=$$13.$$s||this;if(child==null){child=nil}if($truthy(child["$is_a?"]($$($nesting,"Node")))){return sexp=$rb_plus(sexp,""+",\n"+child.$inspect($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+", "+child.$inspect())}},$$13.$$s=self,$$13.$$arity=1,$$13));sexp=$rb_plus(sexp,")");return sexp},$Node_inspect$12.$$arity=-1);Opal.def(self,"$to_ast",$Node_to_ast$14=function $$to_ast(){var self=this;return self},$Node_to_ast$14.$$arity=0);Opal.def(self,"$to_sexp_array",$Node_to_sexp_array$15=function $$to_sexp_array(){var $$16,self=this,children_sexp_arrs=nil;children_sexp_arrs=$send(self.$children(),"map",[],($$16=function(child){var self=$$16.$$s||this;if(child==null){child=nil}if($truthy(child["$is_a?"]($$($nesting,"Node")))){return child.$to_sexp_array()}else{return child}},$$16.$$s=self,$$16.$$arity=1,$$16));return[self.$type()].concat(Opal.to_a(children_sexp_arrs))},$Node_to_sexp_array$15.$$arity=0);self.$protected();return(Opal.def(self,"$fancy_type",$Node_fancy_type$17=function $$fancy_type(){var self=this;return self.type.$to_s().$gsub("_","-")},$Node_fancy_type$17.$$arity=0),nil)&&"fancy_type"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor/mixin"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$nil?","$to_ast","$type","$respond_to?","$send","$handler_missing","$map","$to_a","$process"]);return function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor");var $nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Mixin");var $nesting=[self].concat($parent_nesting),$Mixin_process$1,$Mixin_process_all$2,$Mixin_handler_missing$4;Opal.def(self,"$process",$Mixin_process$1=function $$process(node){var self=this,on_handler=nil,new_node=nil;if($truthy(node["$nil?"]())){return nil}node=node.$to_ast();on_handler=""+"on_"+node.$type();if($truthy(self["$respond_to?"](on_handler))){new_node=self.$send(on_handler,node)}else{new_node=self.$handler_missing(node)}if($truthy(new_node)){node=new_node}return node},$Mixin_process$1.$$arity=1);Opal.def(self,"$process_all",$Mixin_process_all$2=function $$process_all(nodes){var $$3,self=this;return $send(nodes.$to_a(),"map",[],($$3=function(node){var self=$$3.$$s||this;if(node==null){node=nil}return self.$process(node)},$$3.$$s=self,$$3.$$arity=1,$$3))},$Mixin_process_all$2.$$arity=1);Opal.def(self,"$handler_missing",$Mixin_handler_missing$4=function $$handler_missing(node){var self=this;return nil},$Mixin_handler_missing$4.$$arity=1)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$include"]);return function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor");var $nesting=[self].concat($parent_nesting);self.$require("ast/processor/mixin");return self.$include($$($nesting,"Mixin"))})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/sexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new"]);return function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Sexp");var $nesting=[self].concat($parent_nesting),$Sexp_s$1;Opal.def(self,"$s",$Sexp_s$1=function $$s(type,$a){var $post_args,children,self=this;$post_args=Opal.slice.call(arguments,1,arguments.length);children=$post_args;return $$($nesting,"Node").$new(type,children)},$Sexp_s$1.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["ast"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$require"]);return function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);self.$require("ast/node");self.$require("ast/processor");self.$require("ast/sexp")}($nesting[0],$nesting)};Opal.modules["parser/ast/node"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$[]","$frozen?","$dup","$node=","$-"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Node");var $nesting=[self].concat($parent_nesting),$Node_assign_properties$1;self.$attr_reader("location");Opal.alias(self,"loc","location");return(Opal.def(self,"$assign_properties",$Node_assign_properties$1=function $$assign_properties(properties){var self=this,location=nil,$writer=nil;if($truthy(location=properties["$[]"]("location"))){if($truthy(location["$frozen?"]())){location=location.$dup()}$writer=[self];$send(location,"node=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.location=location}else{return nil}},$Node_assign_properties$1.$$arity=1),nil)&&"assign_properties"})($nesting[0],$$$($$$("::","AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$attr_reader","$[]","$frozen?","$dup","$merge!","$loc","$line","$column"]);self.$require("ast");self.$require("parser/ast/node");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Node");var $nesting=[self].concat($parent_nesting),$Node_assign_properties$1,$Node_line$2,$Node_column$3;self.$$prototype.meta=nil;self.$attr_reader("meta");Opal.def(self,"$assign_properties",$Node_assign_properties$1=function $$assign_properties(properties){var $a,$iter=$Node_assign_properties$1.$$p,$yield=$iter||nil,self=this,meta=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Node_assign_properties$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(meta=properties["$[]"]("meta"))){if($truthy(meta["$frozen?"]())){meta=meta.$dup()}self.meta["$merge!"](meta)}else{self.meta=$truthy($a=self.meta)?$a:$hash2([],{})}return $send(self,Opal.find_super_dispatcher(self,"assign_properties",$Node_assign_properties$1,false),$zuper,$iter)},$Node_assign_properties$1.$$arity=1);Opal.def(self,"$line",$Node_line$2=function $$line(){var self=this;if($truthy(self.$loc())){return self.$loc().$line()}else{return nil}},$Node_line$2.$$arity=0);return(Opal.def(self,"$column",$Node_column$3=function $$column(){var self=this;if($truthy(self.$loc())){return self.$loc().$column()}else{return nil}},$Node_column$3.$$arity=0),nil)&&"column"})($nesting[0],$$$($$$($$$("::","Parser"),"AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["racc/parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var $a,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$send=Opal.send;Opal.add_stubs(["$[]","$class","$<","$size","$[]=","$-","$__send__","$_racc_setup","$raise","$_racc_init_sysvars","$catch","$!=","$next_token","$racc_read_token","$+","$>=","$==","$_racc_evalact","$!","$>","$push","$racc_shift","$-@","$_racc_do_reduce","$===","$racc_accept","$throw","$on_error","$<=","$pop","$racc_e_pop","$inspect","$racc_next_state","$*","$racc_reduce","$sprintf","$token_to_str","$print","$racc_token2str","$puts","$racc_print_stacks","$empty?","$each","$racc_print_states","$each_index"]);(function($base,$parent_nesting){var self=$module($base,"Racc");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ParseError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"StandardError"),$nesting)})($nesting[0],$nesting);if($truthy(($a=$$$("::","ParseError","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"ParseError",$$$($$($nesting,"Racc"),"ParseError"))}return function($base,$parent_nesting){var self=$module($base,"Racc");var $nesting=[self].concat($parent_nesting),$a;if($truthy(($a=$$($nesting,"Racc_No_Extensions","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"Racc_No_Extensions",false)}(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Parser");var $nesting=[self].concat($parent_nesting),$Parser_racc_runtime_type$1,$Parser__racc_setup$2,$Parser__racc_init_sysvars$3,$Parser_do_parse$4,$Parser_next_token$5,$Parser__racc_do_parse_rb$6,$Parser_yyparse$8,$Parser__racc_yyparse_rb$9,$Parser__racc_evalact$12,$Parser__racc_do_reduce$14,$Parser_on_error$15,$Parser_yyerror$16,$Parser_yyaccept$17,$Parser_yyerrok$18,$Parser_racc_read_token$19,$Parser_racc_shift$20,$Parser_racc_reduce$21,$Parser_racc_accept$23,$Parser_racc_e_pop$24,$Parser_racc_next_state$25,$Parser_racc_print_stacks$26,$Parser_racc_print_states$28,$Parser_racc_token2str$30,$Parser_token_to_str$31;self.$$prototype.yydebug=self.$$prototype.racc_debug_out=self.$$prototype.racc_error_status=self.$$prototype.racc_t=self.$$prototype.racc_vstack=self.$$prototype.racc_val=self.$$prototype.racc_state=self.$$prototype.racc_tstack=nil;Opal.const_set($nesting[0],"Racc_Runtime_Version","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb");Opal.const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb");Opal.const_set($nesting[0],"Racc_Runtime_Core_Version",$$($nesting,"Racc_Runtime_Core_Version_R"));Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision",$$($nesting,"Racc_Runtime_Core_Revision_R"));Opal.const_set($nesting[0],"Racc_Runtime_Type","ruby");Opal.defs($$($nesting,"Parser"),"$racc_runtime_type",$Parser_racc_runtime_type$1=function $$racc_runtime_type(){var self=this;return $$($nesting,"Racc_Runtime_Type")},$Parser_racc_runtime_type$1.$$arity=0);Opal.def(self,"$_racc_setup",$Parser__racc_setup$2=function $$_racc_setup(){var $a,$b,$c,self=this,arg=nil,$writer=nil;if($gvars.stderr==null)$gvars.stderr=nil;if($truthy($$$(self.$class(),"Racc_debug_parser"))){}else{self.yydebug=false}if($truthy(($a=self["yydebug"],$a!=null&&$a!==nil)?"instance-variable":nil)){}else{self.yydebug=false}if($truthy(self.yydebug)){if($truthy(($b=self["racc_debug_out"],$b!=null&&$b!==nil)?"instance-variable":nil)){}else{self.racc_debug_out=$gvars.stderr}self.racc_debug_out=$truthy($c=self.racc_debug_out)?$c:$gvars.stderr}arg=$$$(self.$class(),"Racc_arg");if($truthy($rb_lt(arg.$size(),14))){$writer=[13,true];$send(arg,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return arg},$Parser__racc_setup$2.$$arity=0);Opal.def(self,"$_racc_init_sysvars",$Parser__racc_init_sysvars$3=function $$_racc_init_sysvars(){var self=this;self.racc_state=[0];self.racc_tstack=[];self.racc_vstack=[];self.racc_t=nil;self.racc_val=nil;self.racc_read_next=true;self.racc_user_yyerror=false;return self.racc_error_status=0},$Parser__racc_init_sysvars$3.$$arity=0);Opal.def(self,"$do_parse",$Parser_do_parse$4=function $$do_parse(){var self=this;return self.$__send__($$($nesting,"Racc_Main_Parsing_Routine"),self.$_racc_setup(),false)},$Parser_do_parse$4.$$arity=0);Opal.def(self,"$next_token",$Parser_next_token$5=function $$next_token(){var self=this;return self.$raise($$($nesting,"NotImplementedError"),""+self.$class()+"#next_token is not defined")},$Parser_next_token$5.$$arity=0);Opal.def(self,"$_racc_do_parse_rb",$Parser__racc_do_parse_rb$6=function $$_racc_do_parse_rb(arg,in_debug){var $a,$b,$$7,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,tok=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();tok=act=i=nil;return $send(self,"catch",["racc_end_parse"],($$7=function(){var self=$$7.$$s||this,$c,$d,$e;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(self.racc_t==null)self.racc_t=nil;if(self.yydebug==null)self.yydebug=nil;if(self.racc_val==null)self.racc_val=nil;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){if($truthy(self.racc_read_next)){if($truthy(self.racc_t["$!="](0))){$e=self.$next_token(),$d=Opal.to_ary($e),tok=$d[0]==null?nil:$d[0],self.racc_val=$d[1]==null?nil:$d[1],$e;if($truthy(tok)){self.racc_t=$truthy($d=token_table["$[]"](tok))?$d:1}else{self.racc_t=0}if($truthy(self.yydebug)){self.$racc_read_token(self.racc_t,tok,self.racc_val)}self.racc_read_next=false}}i=$rb_plus(i,self.racc_t);if($truthy($truthy($d=$truthy($e=$rb_ge(i,0))?act=action_table["$[]"](i):$e)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$d)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},$$7.$$s=self,$$7.$$arity=0,$$7))},$Parser__racc_do_parse_rb$6.$$arity=2);Opal.def(self,"$yyparse",$Parser_yyparse$8=function $$yyparse(recv,mid){var self=this;return self.$__send__($$($nesting,"Racc_YY_Parse_Method"),recv,mid,self.$_racc_setup(),true)},$Parser_yyparse$8.$$arity=2);Opal.def(self,"$_racc_yyparse_rb",$Parser__racc_yyparse_rb$9=function $$_racc_yyparse_rb(recv,mid,arg,c_debug){var $a,$b,$$10,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();act=nil;i=nil;return $send(self,"catch",["racc_end_parse"],($$10=function(){var self=$$10.$$s||this,$c,$d,$$11;if(self.racc_state==null)self.racc_state=nil;while(!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){while($truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg))){}}return $send(recv,"__send__",[mid],($$11=function(tok,val){var self=$$11.$$s||this,$e,$f,$g,$h,$i;if(self.racc_t==null)self.racc_t=nil;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(tok==null){tok=nil}if(val==null){val=nil}if($truthy(tok)){self.racc_t=$truthy($e=token_table["$[]"](tok))?$e:1}else{self.racc_t=0}self.racc_val=val;self.racc_read_next=false;i=$rb_plus(i,self.racc_t);if($truthy($truthy($e=$truthy($f=$rb_ge(i,0))?act=action_table["$[]"](i):$f)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$e)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}while($truthy($truthy($f=$truthy($g=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$g:self.racc_read_next["$!"]())?$f:self.racc_t["$=="](0))){if($truthy($truthy($f=$truthy($g=$truthy($h=$truthy($i=i)?i=$rb_plus(i,self.racc_t):$i)?$rb_ge(i,0):$h)?act=action_table["$[]"](i):$g)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$f)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},$$11.$$s=self,$$11.$$arity=2,$$11))},$$10.$$s=self,$$10.$$arity=0,$$10))},$Parser__racc_yyparse_rb$9.$$arity=4);Opal.def(self,"$_racc_evalact",$Parser__racc_evalact$12=function $$_racc_evalact(act,arg){var $a,$b,$$13,$c,self=this,action_table=nil,action_check=nil,_=nil,action_pointer=nil,shift_n=nil,reduce_n=nil,code=nil,$case=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],shift_n=$a[11]==null?nil:$a[11],reduce_n=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],_=$a[14]==null?nil:$a[14],$b;if($truthy($truthy($a=$rb_gt(act,0))?$rb_lt(act,shift_n):$a)){if($truthy($rb_gt(self.racc_error_status,0))){if(self.racc_t["$=="](1)){}else{self.racc_error_status=$rb_minus(self.racc_error_status,1)}}self.racc_vstack.$push(self.racc_val);self.racc_state.$push(act);self.racc_read_next=true;if($truthy(self.yydebug)){self.racc_tstack.$push(self.racc_t);self.$racc_shift(self.racc_t,self.racc_tstack,self.racc_vstack)}}else if($truthy($truthy($a=$rb_lt(act,0))?$rb_gt(act,reduce_n["$-@"]()):$a)){code=$send(self,"catch",["racc_jump"],($$13=function(){var self=$$13.$$s||this;if(self.racc_state==null)self.racc_state=nil;self.racc_state.$push(self.$_racc_do_reduce(arg,act));return false},$$13.$$s=self,$$13.$$arity=0,$$13));if($truthy(code)){$case=code;if(1["$==="]($case)){self.racc_user_yyerror=true;return reduce_n["$-@"]()}else if(2["$==="]($case)){return shift_n}else{self.$raise("[Racc Bug] unknown jump code")}}}else if(act["$=="](shift_n)){if($truthy(self.yydebug)){self.$racc_accept()}self.$throw("racc_end_parse",self.racc_vstack["$[]"](0))}else if(act["$=="](reduce_n["$-@"]())){$case=self.racc_error_status;if((0)["$==="]($case)){if($truthy(arg["$[]"](21))){}else{self.$on_error(self.racc_t,self.racc_val,self.racc_vstack)}}else if(3["$==="]($case)){if(self.racc_t["$=="](0)){self.$throw("racc_end_parse",nil)}self.racc_read_next=true}self.racc_user_yyerror=false;self.racc_error_status=3;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){i=$rb_plus(i,1);if($truthy($truthy($b=$truthy($c=$rb_ge(i,0))?act=action_table["$[]"](i):$c)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$b)){break}}if($truthy($rb_le(self.racc_state.$size(),1))){self.$throw("racc_end_parse",nil)}self.racc_state.$pop();self.racc_vstack.$pop();if($truthy(self.yydebug)){self.racc_tstack.$pop();self.$racc_e_pop(self.racc_state,self.racc_tstack,self.racc_vstack)}}return act}else{self.$raise(""+"[Racc Bug] unknown action "+act.$inspect())}if($truthy(self.yydebug)){self.$racc_next_state(self.racc_state["$[]"](-1),self.racc_state)}return nil},$Parser__racc_evalact$12.$$arity=2);Opal.def(self,"$_racc_do_reduce",$Parser__racc_do_reduce$14=function $$_racc_do_reduce(arg,act){var $a,$b,self=this,_=nil,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,nt_base=nil,reduce_table=nil,use_result=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,reduce_to=nil,method_id=nil,void_array=nil,tmp_t=nil,tmp_v=nil,$writer=nil,k1=nil,curstate=nil;$b=arg,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],goto_table=$a[4]==null?nil:$a[4],goto_check=$a[5]==null?nil:$a[5],goto_default=$a[6]==null?nil:$a[6],goto_pointer=$a[7]==null?nil:$a[7],nt_base=$a[8]==null?nil:$a[8],reduce_table=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],use_result=$a[13]==null?nil:$a[13],$b;state=self.racc_state;vstack=self.racc_vstack;tstack=self.racc_tstack;i=$rb_times(act,-3);len=reduce_table["$[]"](i);reduce_to=reduce_table["$[]"]($rb_plus(i,1));method_id=reduce_table["$[]"]($rb_plus(i,2));void_array=[];if($truthy(self.yydebug)){tmp_t=tstack["$[]"](len["$-@"](),len)}tmp_v=vstack["$[]"](len["$-@"](),len);if($truthy(self.yydebug)){$writer=[len["$-@"](),len,void_array];$send(tstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=[len["$-@"](),len,void_array];$send(vstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[len["$-@"](),len,void_array];$send(state,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(use_result)){vstack.$push(self.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0)))}else{vstack.$push(self.$__send__(method_id,tmp_v,vstack))}tstack.$push(reduce_to);if($truthy(self.yydebug)){self.$racc_reduce(tmp_t,reduce_to,tstack,vstack)}k1=$rb_minus(reduce_to,nt_base);if($truthy(i=goto_pointer["$[]"](k1))){i=$rb_plus(i,state["$[]"](-1));if($truthy($truthy($a=$truthy($b=$rb_ge(i,0))?curstate=goto_table["$[]"](i):$b)?goto_check["$[]"](i)["$=="](k1):$a)){return curstate}}return goto_default["$[]"](k1)},$Parser__racc_do_reduce$14.$$arity=2);Opal.def(self,"$on_error",$Parser_on_error$15=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise($$($nesting,"ParseError"),self.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($a=self.$token_to_str(t))?$a:"?"))},$Parser_on_error$15.$$arity=3);Opal.def(self,"$yyerror",$Parser_yyerror$16=function $$yyerror(){var self=this;return self.$throw("racc_jump",1)},$Parser_yyerror$16.$$arity=0);Opal.def(self,"$yyaccept",$Parser_yyaccept$17=function $$yyaccept(){var self=this;return self.$throw("racc_jump",2)},$Parser_yyaccept$17.$$arity=0);Opal.def(self,"$yyerrok",$Parser_yyerrok$18=function $$yyerrok(){var self=this;return self.racc_error_status=0},$Parser_yyerrok$18.$$arity=0);Opal.def(self,"$racc_read_token",$Parser_racc_read_token$19=function $$racc_read_token(t,tok,val){var self=this;self.racc_debug_out.$print("read ");self.racc_debug_out.$print(tok.$inspect(),"(",self.$racc_token2str(t),") ");self.racc_debug_out.$puts(val.$inspect());return self.racc_debug_out.$puts()},$Parser_racc_read_token$19.$$arity=3);Opal.def(self,"$racc_shift",$Parser_racc_shift$20=function $$racc_shift(tok,tstack,vstack){var self=this;self.racc_debug_out.$puts(""+"shift "+self.$racc_token2str(tok));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_shift$20.$$arity=3);Opal.def(self,"$racc_reduce",$Parser_racc_reduce$21=function $$racc_reduce(toks,sim,tstack,vstack){var $$22,self=this,out=nil;out=self.racc_debug_out;out.$print("reduce ");if($truthy(toks["$empty?"]())){out.$print(" ")}else{$send(toks,"each",[],($$22=function(t){var self=$$22.$$s||this;if(t==null){t=nil}return out.$print(" ",self.$racc_token2str(t))},$$22.$$s=self,$$22.$$arity=1,$$22))}out.$puts(""+" --\x3e "+self.$racc_token2str(sim));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_reduce$21.$$arity=4);Opal.def(self,"$racc_accept",$Parser_racc_accept$23=function $$racc_accept(){var self=this;self.racc_debug_out.$puts("accept");return self.racc_debug_out.$puts()},$Parser_racc_accept$23.$$arity=0);Opal.def(self,"$racc_e_pop",$Parser_racc_e_pop$24=function $$racc_e_pop(state,tstack,vstack){var self=this;self.racc_debug_out.$puts("error recovering mode: pop token");self.$racc_print_states(state);self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_e_pop$24.$$arity=3);Opal.def(self,"$racc_next_state",$Parser_racc_next_state$25=function $$racc_next_state(curstate,state){var self=this;self.racc_debug_out.$puts(""+"goto "+curstate);self.$racc_print_states(state);return self.racc_debug_out.$puts()},$Parser_racc_next_state$25.$$arity=2);Opal.def(self,"$racc_print_stacks",$Parser_racc_print_stacks$26=function $$racc_print_stacks(t,v){var $$27,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(t,"each_index",[],($$27=function(i){var self=$$27.$$s||this;if(i==null){i=nil}return out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")},$$27.$$s=self,$$27.$$arity=1,$$27));return out.$puts(" ]")},$Parser_racc_print_stacks$26.$$arity=2);Opal.def(self,"$racc_print_states",$Parser_racc_print_states$28=function $$racc_print_states(s){var $$29,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(s,"each",[],($$29=function(st){var self=$$29.$$s||this;if(st==null){st=nil}return out.$print(" ",st)},$$29.$$s=self,$$29.$$arity=1,$$29));return out.$puts(" ]")},$Parser_racc_print_states$28.$$arity=1);Opal.def(self,"$racc_token2str",$Parser_racc_token2str$30=function $$racc_token2str(tok){var $a,self=this;return $truthy($a=$$$(self.$class(),"Racc_token_to_s_table")["$[]"](tok))?$a:self.$raise(""+"[Racc Bug] can't convert token "+tok+" to string")},$Parser_racc_token2str$30.$$arity=1);return(Opal.def(self,"$token_to_str",$Parser_token_to_str$31=function $$token_to_str(t){var self=this;return $$$(self.$class(),"Racc_token_to_s_table")["$[]"](t)},$Parser_token_to_str$31.$$arity=1),nil)&&"token_to_str"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","2.6.4.1")}($nesting[0],$nesting)};Opal.modules["racc/parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var $a,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$send=Opal.send;Opal.add_stubs(["$[]","$class","$<","$size","$[]=","$-","$__send__","$_racc_setup","$raise","$_racc_init_sysvars","$catch","$!=","$next_token","$racc_read_token","$+","$>=","$==","$_racc_evalact","$!","$>","$push","$racc_shift","$-@","$_racc_do_reduce","$===","$racc_accept","$throw","$on_error","$<=","$pop","$racc_e_pop","$inspect","$racc_next_state","$*","$racc_reduce","$sprintf","$token_to_str","$print","$racc_token2str","$puts","$racc_print_stacks","$empty?","$each","$racc_print_states","$each_index"]);(function($base,$parent_nesting){var self=$module($base,"Racc");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ParseError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"StandardError"),$nesting)})($nesting[0],$nesting);if($truthy(($a=$$$("::","ParseError","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"ParseError",$$$($$($nesting,"Racc"),"ParseError"))}return function($base,$parent_nesting){var self=$module($base,"Racc");var $nesting=[self].concat($parent_nesting),$a;if($truthy(($a=$$($nesting,"Racc_No_Extensions","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"Racc_No_Extensions",false)}(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Parser");var $nesting=[self].concat($parent_nesting),$Parser_racc_runtime_type$1,$Parser__racc_setup$2,$Parser__racc_init_sysvars$3,$Parser_do_parse$4,$Parser_next_token$5,$Parser__racc_do_parse_rb$6,$Parser_yyparse$8,$Parser__racc_yyparse_rb$9,$Parser__racc_evalact$12,$Parser__racc_do_reduce$14,$Parser_on_error$15,$Parser_yyerror$16,$Parser_yyaccept$17,$Parser_yyerrok$18,$Parser_racc_read_token$19,$Parser_racc_shift$20,$Parser_racc_reduce$21,$Parser_racc_accept$23,$Parser_racc_e_pop$24,$Parser_racc_next_state$25,$Parser_racc_print_stacks$26,$Parser_racc_print_states$28,$Parser_racc_token2str$30,$Parser_token_to_str$31;self.$$prototype.yydebug=self.$$prototype.racc_debug_out=self.$$prototype.racc_error_status=self.$$prototype.racc_t=self.$$prototype.racc_vstack=self.$$prototype.racc_val=self.$$prototype.racc_state=self.$$prototype.racc_tstack=nil;Opal.const_set($nesting[0],"Racc_Runtime_Version","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb");Opal.const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb");Opal.const_set($nesting[0],"Racc_Runtime_Core_Version",$$($nesting,"Racc_Runtime_Core_Version_R"));Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision",$$($nesting,"Racc_Runtime_Core_Revision_R"));Opal.const_set($nesting[0],"Racc_Runtime_Type","ruby");Opal.defs($$($nesting,"Parser"),"$racc_runtime_type",$Parser_racc_runtime_type$1=function $$racc_runtime_type(){var self=this;return $$($nesting,"Racc_Runtime_Type")},$Parser_racc_runtime_type$1.$$arity=0);Opal.def(self,"$_racc_setup",$Parser__racc_setup$2=function $$_racc_setup(){var $a,$b,$c,self=this,arg=nil,$writer=nil;if($gvars.stderr==null)$gvars.stderr=nil;if($truthy($$$(self.$class(),"Racc_debug_parser"))){}else{self.yydebug=false}if($truthy(($a=self["yydebug"],$a!=null&&$a!==nil)?"instance-variable":nil)){}else{self.yydebug=false}if($truthy(self.yydebug)){if($truthy(($b=self["racc_debug_out"],$b!=null&&$b!==nil)?"instance-variable":nil)){}else{self.racc_debug_out=$gvars.stderr}self.racc_debug_out=$truthy($c=self.racc_debug_out)?$c:$gvars.stderr}arg=$$$(self.$class(),"Racc_arg");if($truthy($rb_lt(arg.$size(),14))){$writer=[13,true];$send(arg,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return arg},$Parser__racc_setup$2.$$arity=0);Opal.def(self,"$_racc_init_sysvars",$Parser__racc_init_sysvars$3=function $$_racc_init_sysvars(){var self=this;self.racc_state=[0];self.racc_tstack=[];self.racc_vstack=[];self.racc_t=nil;self.racc_val=nil;self.racc_read_next=true;self.racc_user_yyerror=false;return self.racc_error_status=0},$Parser__racc_init_sysvars$3.$$arity=0);Opal.def(self,"$do_parse",$Parser_do_parse$4=function $$do_parse(){var self=this;return self.$__send__($$($nesting,"Racc_Main_Parsing_Routine"),self.$_racc_setup(),false)},$Parser_do_parse$4.$$arity=0);Opal.def(self,"$next_token",$Parser_next_token$5=function $$next_token(){var self=this;return self.$raise($$($nesting,"NotImplementedError"),""+self.$class()+"#next_token is not defined")},$Parser_next_token$5.$$arity=0);Opal.def(self,"$_racc_do_parse_rb",$Parser__racc_do_parse_rb$6=function $$_racc_do_parse_rb(arg,in_debug){var $a,$b,$$7,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,tok=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();tok=act=i=nil;return $send(self,"catch",["racc_end_parse"],($$7=function(){var self=$$7.$$s||this,$c,$d,$e;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(self.racc_t==null)self.racc_t=nil;if(self.yydebug==null)self.yydebug=nil;if(self.racc_val==null)self.racc_val=nil;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){if($truthy(self.racc_read_next)){if($truthy(self.racc_t["$!="](0))){$e=self.$next_token(),$d=Opal.to_ary($e),tok=$d[0]==null?nil:$d[0],self.racc_val=$d[1]==null?nil:$d[1],$e;if($truthy(tok)){self.racc_t=$truthy($d=token_table["$[]"](tok))?$d:1}else{self.racc_t=0}if($truthy(self.yydebug)){self.$racc_read_token(self.racc_t,tok,self.racc_val)}self.racc_read_next=false}}i=$rb_plus(i,self.racc_t);if($truthy($truthy($d=$truthy($e=$rb_ge(i,0))?act=action_table["$[]"](i):$e)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$d)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},$$7.$$s=self,$$7.$$arity=0,$$7))},$Parser__racc_do_parse_rb$6.$$arity=2);Opal.def(self,"$yyparse",$Parser_yyparse$8=function $$yyparse(recv,mid){var self=this;return self.$__send__($$($nesting,"Racc_YY_Parse_Method"),recv,mid,self.$_racc_setup(),true)},$Parser_yyparse$8.$$arity=2);Opal.def(self,"$_racc_yyparse_rb",$Parser__racc_yyparse_rb$9=function $$_racc_yyparse_rb(recv,mid,arg,c_debug){var $a,$b,$$10,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();act=nil;i=nil;return $send(self,"catch",["racc_end_parse"],($$10=function(){var self=$$10.$$s||this,$c,$d,$$11;if(self.racc_state==null)self.racc_state=nil;while(!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){while($truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg))){}}return $send(recv,"__send__",[mid],($$11=function(tok,val){var self=$$11.$$s||this,$e,$f,$g,$h,$i;if(self.racc_t==null)self.racc_t=nil;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(tok==null){tok=nil}if(val==null){val=nil}if($truthy(tok)){self.racc_t=$truthy($e=token_table["$[]"](tok))?$e:1}else{self.racc_t=0}self.racc_val=val;self.racc_read_next=false;i=$rb_plus(i,self.racc_t);if($truthy($truthy($e=$truthy($f=$rb_ge(i,0))?act=action_table["$[]"](i):$f)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$e)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}while($truthy($truthy($f=$truthy($g=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$g:self.racc_read_next["$!"]())?$f:self.racc_t["$=="](0))){if($truthy($truthy($f=$truthy($g=$truthy($h=$truthy($i=i)?i=$rb_plus(i,self.racc_t):$i)?$rb_ge(i,0):$h)?act=action_table["$[]"](i):$g)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$f)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},$$11.$$s=self,$$11.$$arity=2,$$11))},$$10.$$s=self,$$10.$$arity=0,$$10))},$Parser__racc_yyparse_rb$9.$$arity=4);Opal.def(self,"$_racc_evalact",$Parser__racc_evalact$12=function $$_racc_evalact(act,arg){var $a,$b,$$13,$c,self=this,action_table=nil,action_check=nil,_=nil,action_pointer=nil,shift_n=nil,reduce_n=nil,code=nil,$case=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],shift_n=$a[11]==null?nil:$a[11],reduce_n=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],_=$a[14]==null?nil:$a[14],$b;if($truthy($truthy($a=$rb_gt(act,0))?$rb_lt(act,shift_n):$a)){if($truthy($rb_gt(self.racc_error_status,0))){if(self.racc_t["$=="](1)){}else{self.racc_error_status=$rb_minus(self.racc_error_status,1)}}self.racc_vstack.$push(self.racc_val);self.racc_state.$push(act);self.racc_read_next=true;if($truthy(self.yydebug)){self.racc_tstack.$push(self.racc_t);self.$racc_shift(self.racc_t,self.racc_tstack,self.racc_vstack)}}else if($truthy($truthy($a=$rb_lt(act,0))?$rb_gt(act,reduce_n["$-@"]()):$a)){code=$send(self,"catch",["racc_jump"],($$13=function(){var self=$$13.$$s||this;if(self.racc_state==null)self.racc_state=nil;self.racc_state.$push(self.$_racc_do_reduce(arg,act));return false},$$13.$$s=self,$$13.$$arity=0,$$13));if($truthy(code)){$case=code;if(1["$==="]($case)){self.racc_user_yyerror=true;return reduce_n["$-@"]()}else if(2["$==="]($case)){return shift_n}else{self.$raise("[Racc Bug] unknown jump code")}}}else if(act["$=="](shift_n)){if($truthy(self.yydebug)){self.$racc_accept()}self.$throw("racc_end_parse",self.racc_vstack["$[]"](0))}else if(act["$=="](reduce_n["$-@"]())){$case=self.racc_error_status;if((0)["$==="]($case)){if($truthy(arg["$[]"](21))){}else{self.$on_error(self.racc_t,self.racc_val,self.racc_vstack)}}else if(3["$==="]($case)){if(self.racc_t["$=="](0)){self.$throw("racc_end_parse",nil)}self.racc_read_next=true}self.racc_user_yyerror=false;self.racc_error_status=3;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){i=$rb_plus(i,1);if($truthy($truthy($b=$truthy($c=$rb_ge(i,0))?act=action_table["$[]"](i):$c)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$b)){break}}if($truthy($rb_le(self.racc_state.$size(),1))){self.$throw("racc_end_parse",nil)}self.racc_state.$pop();self.racc_vstack.$pop();if($truthy(self.yydebug)){self.racc_tstack.$pop();self.$racc_e_pop(self.racc_state,self.racc_tstack,self.racc_vstack)}}return act}else{self.$raise(""+"[Racc Bug] unknown action "+act.$inspect())}if($truthy(self.yydebug)){self.$racc_next_state(self.racc_state["$[]"](-1),self.racc_state)}return nil},$Parser__racc_evalact$12.$$arity=2);Opal.def(self,"$_racc_do_reduce",$Parser__racc_do_reduce$14=function $$_racc_do_reduce(arg,act){var $a,$b,self=this,_=nil,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,nt_base=nil,reduce_table=nil,use_result=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,reduce_to=nil,method_id=nil,void_array=nil,tmp_t=nil,tmp_v=nil,$writer=nil,k1=nil,curstate=nil;$b=arg,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],goto_table=$a[4]==null?nil:$a[4],goto_check=$a[5]==null?nil:$a[5],goto_default=$a[6]==null?nil:$a[6],goto_pointer=$a[7]==null?nil:$a[7],nt_base=$a[8]==null?nil:$a[8],reduce_table=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],use_result=$a[13]==null?nil:$a[13],$b;state=self.racc_state;vstack=self.racc_vstack;tstack=self.racc_tstack;i=$rb_times(act,-3);len=reduce_table["$[]"](i);reduce_to=reduce_table["$[]"]($rb_plus(i,1));method_id=reduce_table["$[]"]($rb_plus(i,2));void_array=[];if($truthy(self.yydebug)){tmp_t=tstack["$[]"](len["$-@"](),len)}tmp_v=vstack["$[]"](len["$-@"](),len);if($truthy(self.yydebug)){$writer=[len["$-@"](),len,void_array];$send(tstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=[len["$-@"](),len,void_array];$send(vstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[len["$-@"](),len,void_array];$send(state,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(use_result)){vstack.$push(self.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0)))}else{vstack.$push(self.$__send__(method_id,tmp_v,vstack))}tstack.$push(reduce_to);if($truthy(self.yydebug)){self.$racc_reduce(tmp_t,reduce_to,tstack,vstack)}k1=$rb_minus(reduce_to,nt_base);if($truthy(i=goto_pointer["$[]"](k1))){i=$rb_plus(i,state["$[]"](-1));if($truthy($truthy($a=$truthy($b=$rb_ge(i,0))?curstate=goto_table["$[]"](i):$b)?goto_check["$[]"](i)["$=="](k1):$a)){return curstate}}return goto_default["$[]"](k1)},$Parser__racc_do_reduce$14.$$arity=2);Opal.def(self,"$on_error",$Parser_on_error$15=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise($$($nesting,"ParseError"),self.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($a=self.$token_to_str(t))?$a:"?"))},$Parser_on_error$15.$$arity=3);Opal.def(self,"$yyerror",$Parser_yyerror$16=function $$yyerror(){var self=this;return self.$throw("racc_jump",1)},$Parser_yyerror$16.$$arity=0);Opal.def(self,"$yyaccept",$Parser_yyaccept$17=function $$yyaccept(){var self=this;return self.$throw("racc_jump",2)},$Parser_yyaccept$17.$$arity=0);Opal.def(self,"$yyerrok",$Parser_yyerrok$18=function $$yyerrok(){var self=this;return self.racc_error_status=0},$Parser_yyerrok$18.$$arity=0);Opal.def(self,"$racc_read_token",$Parser_racc_read_token$19=function $$racc_read_token(t,tok,val){var self=this;self.racc_debug_out.$print("read ");self.racc_debug_out.$print(tok.$inspect(),"(",self.$racc_token2str(t),") ");self.racc_debug_out.$puts(val.$inspect());return self.racc_debug_out.$puts()},$Parser_racc_read_token$19.$$arity=3);Opal.def(self,"$racc_shift",$Parser_racc_shift$20=function $$racc_shift(tok,tstack,vstack){var self=this;self.racc_debug_out.$puts(""+"shift "+self.$racc_token2str(tok));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_shift$20.$$arity=3);Opal.def(self,"$racc_reduce",$Parser_racc_reduce$21=function $$racc_reduce(toks,sim,tstack,vstack){var $$22,self=this,out=nil;out=self.racc_debug_out;out.$print("reduce ");if($truthy(toks["$empty?"]())){out.$print(" ")}else{$send(toks,"each",[],($$22=function(t){var self=$$22.$$s||this;if(t==null){t=nil}return out.$print(" ",self.$racc_token2str(t))},$$22.$$s=self,$$22.$$arity=1,$$22))}out.$puts(""+" --\x3e "+self.$racc_token2str(sim));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_reduce$21.$$arity=4);Opal.def(self,"$racc_accept",$Parser_racc_accept$23=function $$racc_accept(){var self=this;self.racc_debug_out.$puts("accept");return self.racc_debug_out.$puts()},$Parser_racc_accept$23.$$arity=0);Opal.def(self,"$racc_e_pop",$Parser_racc_e_pop$24=function $$racc_e_pop(state,tstack,vstack){var self=this;self.racc_debug_out.$puts("error recovering mode: pop token");self.$racc_print_states(state);self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},$Parser_racc_e_pop$24.$$arity=3);Opal.def(self,"$racc_next_state",$Parser_racc_next_state$25=function $$racc_next_state(curstate,state){var self=this;self.racc_debug_out.$puts(""+"goto "+curstate);self.$racc_print_states(state);return self.racc_debug_out.$puts()},$Parser_racc_next_state$25.$$arity=2);Opal.def(self,"$racc_print_stacks",$Parser_racc_print_stacks$26=function $$racc_print_stacks(t,v){var $$27,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(t,"each_index",[],($$27=function(i){var self=$$27.$$s||this;if(i==null){i=nil}return out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")},$$27.$$s=self,$$27.$$arity=1,$$27));return out.$puts(" ]")},$Parser_racc_print_stacks$26.$$arity=2);Opal.def(self,"$racc_print_states",$Parser_racc_print_states$28=function $$racc_print_states(s){var $$29,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(s,"each",[],($$29=function(st){var self=$$29.$$s||this;if(st==null){st=nil}return out.$print(" ",st)},$$29.$$s=self,$$29.$$arity=1,$$29));return out.$puts(" ]")},$Parser_racc_print_states$28.$$arity=1);Opal.def(self,"$racc_token2str",$Parser_racc_token2str$30=function $$racc_token2str(tok){var $a,self=this;return $truthy($a=$$$(self.$class(),"Racc_token_to_s_table")["$[]"](tok))?$a:self.$raise(""+"[Racc Bug] can't convert token "+tok+" to string")},$Parser_racc_token2str$30.$$arity=1);return(Opal.def(self,"$token_to_str",$Parser_token_to_str$31=function $$token_to_str(t){var self=this;return $$$(self.$class(),"Racc_token_to_s_table")["$[]"](t)},$Parser_token_to_str$31.$$arity=1),nil)&&"token_to_str"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/messages"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$freeze"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","leading_zero_in_numparam","numparam_outside_block","too_large_numparam","ordinary_param_defined","invalid_escape_use","ambiguous_literal","ambiguous_prefix","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","useless_else","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",leading_zero_in_numparam:"leading zero is not allowed as a numbered parameter",numparam_outside_block:"numbered parameter outside block",too_large_numparam:"too large numbered parameter",ordinary_param_defined:"ordinary parameter is defined",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",useless_else:"else without rescue is useless",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze())}($nesting[0],$nesting)};Opal.modules["parser/deprecation"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy;Opal.add_stubs(["$attr_writer","$warn"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Deprecation");var $nesting=[self].concat($parent_nesting),$Deprecation_warn_of_deprecation$1;self.$attr_writer("warned_of_deprecation");Opal.def(self,"$warn_of_deprecation",$Deprecation_warn_of_deprecation$1=function $$warn_of_deprecation(){var $a,$b,self=this;if(self.warned_of_deprecation==null)self.warned_of_deprecation=nil;return self.warned_of_deprecation=$truthy($a=self.warned_of_deprecation)?$a:$truthy($b=self.$warn($$$(self,"DEPRECATION_WARNING")))?$b:true},$Deprecation_warn_of_deprecation$1.$$arity=0)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$updated","$process_all","$on_var","$!","$nil?","$process","$on_vasgn","$on_argument","$is_a?","$[]","$children","$process_regular_node","$warn"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor");var $nesting=[self].concat($parent_nesting),$Processor_process_regular_node$1,$Processor_on_var$2,$Processor_process_variable_node$3,$Processor_on_vasgn$4,$Processor_process_var_asgn_node$5,$Processor_on_op_asgn$6,$Processor_on_const$7,$Processor_on_casgn$8,$Processor_on_argument$9,$Processor_process_argument_node$10,$Processor_on_procarg0$11,$Processor_on_def$12,$Processor_on_defs$13,$Processor_on_send$14,$Processor_on_numblock$15,$Processor_process_variable_node$16,$Processor_process_var_asgn_node$17,$Processor_process_argument_node$18;Opal.def(self,"$process_regular_node",$Processor_process_regular_node$1=function $$process_regular_node(node){var self=this;return node.$updated(nil,self.$process_all(node))},$Processor_process_regular_node$1.$$arity=1);Opal.alias(self,"on_dstr","process_regular_node");Opal.alias(self,"on_dsym","process_regular_node");Opal.alias(self,"on_regexp","process_regular_node");Opal.alias(self,"on_xstr","process_regular_node");Opal.alias(self,"on_splat","process_regular_node");Opal.alias(self,"on_kwsplat","process_regular_node");Opal.alias(self,"on_array","process_regular_node");Opal.alias(self,"on_pair","process_regular_node");Opal.alias(self,"on_hash","process_regular_node");Opal.alias(self,"on_irange","process_regular_node");Opal.alias(self,"on_erange","process_regular_node");Opal.def(self,"$on_var",$Processor_on_var$2=function $$on_var(node){var self=this;return node},$Processor_on_var$2.$$arity=1);Opal.def(self,"$process_variable_node",$Processor_process_variable_node$3=function $$process_variable_node(node){var self=this;return self.$on_var(node)},$Processor_process_variable_node$3.$$arity=1);Opal.alias(self,"on_lvar","process_variable_node");Opal.alias(self,"on_ivar","process_variable_node");Opal.alias(self,"on_gvar","process_variable_node");Opal.alias(self,"on_cvar","process_variable_node");Opal.alias(self,"on_back_ref","process_variable_node");Opal.alias(self,"on_nth_ref","process_variable_node");Opal.def(self,"$on_vasgn",$Processor_on_vasgn$4=function $$on_vasgn(node){var $a,self=this,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[name,self.$process(value_node)])}else{return node}},$Processor_on_vasgn$4.$$arity=1);Opal.def(self,"$process_var_asgn_node",$Processor_process_var_asgn_node$5=function $$process_var_asgn_node(node){var self=this;return self.$on_vasgn(node)},$Processor_process_var_asgn_node$5.$$arity=1);Opal.alias(self,"on_lvasgn","process_var_asgn_node");Opal.alias(self,"on_ivasgn","process_var_asgn_node");Opal.alias(self,"on_gvasgn","process_var_asgn_node");Opal.alias(self,"on_cvasgn","process_var_asgn_node");Opal.alias(self,"on_and_asgn","process_regular_node");Opal.alias(self,"on_or_asgn","process_regular_node");Opal.def(self,"$on_op_asgn",$Processor_on_op_asgn$6=function $$on_op_asgn(node){var $a,self=this,var_node=nil,method_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),var_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[self.$process(var_node),method_name,self.$process(value_node)])},$Processor_on_op_asgn$6.$$arity=1);Opal.alias(self,"on_mlhs","process_regular_node");Opal.alias(self,"on_masgn","process_regular_node");Opal.def(self,"$on_const",$Processor_on_const$7=function $$on_const(node){var $a,self=this,scope_node=nil,name=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$a;return node.$updated(nil,[self.$process(scope_node),name])},$Processor_on_const$7.$$arity=1);Opal.def(self,"$on_casgn",$Processor_on_casgn$8=function $$on_casgn(node){var $a,self=this,scope_node=nil,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[self.$process(scope_node),name,self.$process(value_node)])}else{return node.$updated(nil,[self.$process(scope_node),name])}},$Processor_on_casgn$8.$$arity=1);Opal.alias(self,"on_args","process_regular_node");Opal.def(self,"$on_argument",$Processor_on_argument$9=function $$on_argument(node){var $a,self=this,arg_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),arg_name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[arg_name,self.$process(value_node)])}else{return node}},$Processor_on_argument$9.$$arity=1);Opal.def(self,"$process_argument_node",$Processor_process_argument_node$10=function $$process_argument_node(node){var self=this;return self.$on_argument(node)},$Processor_process_argument_node$10.$$arity=1);Opal.alias(self,"on_arg","process_argument_node");Opal.alias(self,"on_optarg","process_argument_node");Opal.alias(self,"on_restarg","process_argument_node");Opal.alias(self,"on_blockarg","process_argument_node");Opal.alias(self,"on_shadowarg","process_argument_node");Opal.alias(self,"on_kwarg","process_argument_node");Opal.alias(self,"on_kwoptarg","process_argument_node");Opal.alias(self,"on_kwrestarg","process_argument_node");Opal.def(self,"$on_procarg0",$Processor_on_procarg0$11=function $$on_procarg0(node){var self=this;if($truthy(node.$children()["$[]"](0)["$is_a?"]($$($nesting,"Symbol")))){return self.$on_argument(node)}else{return self.$process_regular_node(node)}},$Processor_on_procarg0$11.$$arity=1);Opal.alias(self,"on_arg_expr","process_regular_node");Opal.alias(self,"on_restarg_expr","process_regular_node");Opal.alias(self,"on_blockarg_expr","process_regular_node");Opal.alias(self,"on_block_pass","process_regular_node");Opal.alias(self,"on_module","process_regular_node");Opal.alias(self,"on_class","process_regular_node");Opal.alias(self,"on_sclass","process_regular_node");Opal.def(self,"$on_def",$Processor_on_def$12=function $$on_def(node){var $a,self=this,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],args_node=$a[1]==null?nil:$a[1],body_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[name,self.$process(args_node),self.$process(body_node)])},$Processor_on_def$12.$$arity=1);Opal.def(self,"$on_defs",$Processor_on_defs$13=function $$on_defs(node){var $a,self=this,definee_node=nil,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),definee_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],args_node=$a[2]==null?nil:$a[2],body_node=$a[3]==null?nil:$a[3],$a;return node.$updated(nil,[self.$process(definee_node),name,self.$process(args_node),self.$process(body_node)])},$Processor_on_defs$13.$$arity=1);Opal.alias(self,"on_undef","process_regular_node");Opal.alias(self,"on_alias","process_regular_node");Opal.def(self,"$on_send",$Processor_on_send$14=function $$on_send(node){var $a,self=this,receiver_node=nil,method_name=nil,arg_nodes=nil;$a=[].concat(Opal.to_a(node)),receiver_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],arg_nodes=$slice.call($a,2),$a;if($truthy(receiver_node)){receiver_node=self.$process(receiver_node)}return node.$updated(nil,[receiver_node,method_name].concat(Opal.to_a(self.$process_all(arg_nodes))))},$Processor_on_send$14.$$arity=1);Opal.alias(self,"on_csend","on_send");Opal.alias(self,"on_index","process_regular_node");Opal.alias(self,"on_indexasgn","process_regular_node");Opal.alias(self,"on_block","process_regular_node");Opal.alias(self,"on_lambda","process_regular_node");Opal.def(self,"$on_numblock",$Processor_on_numblock$15=function $$on_numblock(node){var $a,self=this,method_call=nil,max_numparam=nil,body=nil;$a=[].concat(Opal.to_a(node)),method_call=$a[0]==null?nil:$a[0],max_numparam=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[self.$process(method_call),max_numparam,self.$process(body)])},$Processor_on_numblock$15.$$arity=1);Opal.alias(self,"on_while","process_regular_node");Opal.alias(self,"on_while_post","process_regular_node");Opal.alias(self,"on_until","process_regular_node");Opal.alias(self,"on_until_post","process_regular_node");Opal.alias(self,"on_for","process_regular_node");Opal.alias(self,"on_return","process_regular_node");Opal.alias(self,"on_break","process_regular_node");Opal.alias(self,"on_next","process_regular_node");Opal.alias(self,"on_redo","process_regular_node");Opal.alias(self,"on_retry","process_regular_node");Opal.alias(self,"on_super","process_regular_node");Opal.alias(self,"on_yield","process_regular_node");Opal.alias(self,"on_defined?","process_regular_node");Opal.alias(self,"on_not","process_regular_node");Opal.alias(self,"on_and","process_regular_node");Opal.alias(self,"on_or","process_regular_node");Opal.alias(self,"on_if","process_regular_node");Opal.alias(self,"on_when","process_regular_node");Opal.alias(self,"on_case","process_regular_node");Opal.alias(self,"on_iflipflop","process_regular_node");Opal.alias(self,"on_eflipflop","process_regular_node");Opal.alias(self,"on_match_current_line","process_regular_node");Opal.alias(self,"on_match_with_lvasgn","process_regular_node");Opal.alias(self,"on_resbody","process_regular_node");Opal.alias(self,"on_rescue","process_regular_node");Opal.alias(self,"on_ensure","process_regular_node");Opal.alias(self,"on_begin","process_regular_node");Opal.alias(self,"on_kwbegin","process_regular_node");Opal.alias(self,"on_preexe","process_regular_node");Opal.alias(self,"on_postexe","process_regular_node");Opal.def(self,"$process_variable_node",$Processor_process_variable_node$16=function $$process_variable_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_variable_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_var instead.");return self.$on_var(node)},$Processor_process_variable_node$16.$$arity=1);Opal.def(self,"$process_var_asgn_node",$Processor_process_var_asgn_node$17=function $$process_var_asgn_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_var_asgn_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_vasgn instead.");return self.$on_vasgn(node)},$Processor_process_var_asgn_node$17.$$arity=1);return(Opal.def(self,"$process_argument_node",$Processor_process_argument_node$18=function $$process_argument_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_argument_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_argument instead.");return self.$on_argument(node)},$Processor_process_argument_node$18.$$arity=1),nil)&&"process_argument_node"})($nesting[0],$$$($$$("::","AST"),"Processor"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/meta"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send;Opal.add_stubs(["$freeze","$to_set","$map","$to_proc"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Meta");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"NODE_TYPES",$send(["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","root","lambda","indexasgn","index","procarg0","meth_ref","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","numparam"],"map",[],"to_sym".$to_proc()).$to_set().$freeze())})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/buffer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$attr_reader","$empty?","$=~","$start_with?","$freeze","$==","$[]","$nil?","$!=","$match","$find","$encoding","$recognize_encoding","$force_encoding","$encode","$to_s","$open","$read","$source=","$-","$raise","$frozen?","$dup","$reencode_string","$class","$valid_encoding?","$name","$raw_source=","$gsub","$!","$ascii_only?","$line_for","$+","$[]=","$to_a","$lines","$end_with?","$<<","$each","$chomp!","$fetch","$source_lines","$<=","$>","$size","$line_begins","$new","$-@","$source","$private","$index","$unshift","$length","$bsearch"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Buffer");var $nesting=[self].concat($parent_nesting),$Buffer_recognize_encoding$1,$Buffer_reencode_string$2,$Buffer_initialize$3,$Buffer_read$4,$Buffer_source$6,$Buffer_source$eq$7,$Buffer_raw_source$eq$8,$Buffer_slice$9,$Buffer_decompose_position$10,$Buffer_line_for_position$11,$Buffer_column_for_position$12,$Buffer_source_lines$13,$Buffer_source_line$15,$Buffer_line_range$16,$Buffer_source_range$17,$Buffer_last_line$18,$Buffer_line_begins$19,$Buffer_line_for$20;self.$$prototype.name=self.$$prototype.source=self.$$prototype.slice_source=self.$$prototype.first_line=self.$$prototype.line_for_position=self.$$prototype.column_for_position=self.$$prototype.lines=self.$$prototype.source_range=self.$$prototype.line_begins=nil;self.$attr_reader("name","first_line");Opal.const_set($nesting[0],"ENCODING_RE",new RegExp(""+"[\\s#](en)?coding\\s*[:=]\\s*"+"("+""+"(utf8-mac)"+"|"+""+"([A-Za-z0-9_-]+?)(-unix|-dos|-mac)"+"|"+"([A-Za-z0-9_-]+)"+")"+""));Opal.defs(self,"$recognize_encoding",$Buffer_recognize_encoding$1=function $$recognize_encoding(string){var $a,$b,self=this,first_line=nil,second_line=nil,encoding_line=nil,result=nil;if($truthy(string["$empty?"]())){return nil}string["$=~"](/^(.*)\n?(.*\n)?/);$a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)],first_line=$a[0],second_line=$a[1],$a;if($truthy(first_line["$start_with?"]("".$force_encoding("ASCII-8BIT").$freeze()))){return $$$($$($nesting,"Encoding"),"UTF_8")}else if(first_line["$[]"](0,2)["$=="]("#!".$force_encoding("ASCII-8BIT").$freeze())){encoding_line=second_line}else{encoding_line=first_line}if($truthy($truthy($a=encoding_line["$nil?"]())?$a:encoding_line["$[]"](0)["$!="]("#".$force_encoding("ASCII-8BIT")))){return nil}if($truthy(result=$$($nesting,"ENCODING_RE").$match(encoding_line))){return $$($nesting,"Encoding").$find($truthy($a=$truthy($b=result["$[]"](3))?$b:result["$[]"](4))?$a:result["$[]"](6))}else{return nil}},$Buffer_recognize_encoding$1.$$arity=1);Opal.defs(self,"$reencode_string",$Buffer_reencode_string$2=function $$reencode_string(input){var self=this,original_encoding=nil,detected_encoding=nil;original_encoding=input.$encoding();detected_encoding=self.$recognize_encoding(input.$force_encoding($$$($$($nesting,"Encoding"),"BINARY")));if($truthy(detected_encoding["$nil?"]())){return input.$force_encoding(original_encoding)}else if(detected_encoding["$=="]($$$($$($nesting,"Encoding"),"BINARY"))){return input}else{return input.$force_encoding(detected_encoding).$encode($$$($$($nesting,"Encoding"),"UTF_8"))}},$Buffer_reencode_string$2.$$arity=1);Opal.def(self,"$initialize",$Buffer_initialize$3=function $$initialize(name,first_line){var self=this;if(first_line==null){first_line=1}self.name=name.$to_s();self.source=nil;self.first_line=first_line;self.lines=nil;self.line_begins=nil;self.slice_source=nil;self.line_for_position=$hash2([],{});return self.column_for_position=$hash2([],{})},$Buffer_initialize$3.$$arity=-2);Opal.def(self,"$read",$Buffer_read$4=function $$read(){var $$5,self=this;$send($$($nesting,"File"),"open",[self.name,"rb".$force_encoding("ASCII-8BIT")],($$5=function(io){var self=$$5.$$s||this,$writer=nil;if(io==null){io=nil}$writer=[io.$read()];$send(self,"source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$5.$$s=self,$$5.$$arity=1,$$5));return self},$Buffer_read$4.$$arity=0);Opal.def(self,"$source",$Buffer_source$6=function $$source(){var self=this;if($truthy(self.source["$nil?"]())){self.$raise($$($nesting,"RuntimeError"),"Cannot extract source from uninitialized Source::Buffer".$force_encoding("ASCII-8BIT"))}return self.source},$Buffer_source$6.$$arity=0);Opal.def(self,"$source=",$Buffer_source$eq$7=function(input){var self=this,$writer=nil;if($truthy(input["$frozen?"]())){input=input.$dup()}input=self.$class().$reencode_string(input);if($truthy(input["$valid_encoding?"]())){}else{self.$raise($$($nesting,"EncodingError"),""+"invalid byte sequence in "+input.$encoding().$name())}$writer=[input];$send(self,"raw_source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$Buffer_source$eq$7.$$arity=1);Opal.def(self,"$raw_source=",$Buffer_raw_source$eq$8=function(input){var $a,$b,self=this;if($truthy(self.source)){self.$raise($$($nesting,"ArgumentError"),"Source::Buffer is immutable".$force_encoding("ASCII-8BIT"))}self.source=input.$gsub("\r\n".$force_encoding("ASCII-8BIT").$freeze(),"\n".$force_encoding("ASCII-8BIT").$freeze()).$freeze();if($truthy($truthy($a=$truthy($b=self.source["$ascii_only?"]()["$!"]())?self.source.$encoding()["$!="]($$$($$($nesting,"Encoding"),"UTF_32LE")):$b)?self.source.$encoding()["$!="]($$$($$($nesting,"Encoding"),"BINARY")):$a)){return self.slice_source=self.source.$encode($$$($$($nesting,"Encoding"),"UTF_32LE"))}else{return nil}},$Buffer_raw_source$eq$8.$$arity=1);Opal.def(self,"$slice",$Buffer_slice$9=function $$slice(range){var self=this;if($truthy(self.slice_source["$nil?"]())){return self.source["$[]"](range)}else{return self.slice_source["$[]"](range).$encode(self.source.$encoding())}},$Buffer_slice$9.$$arity=1);Opal.def(self,"$decompose_position",$Buffer_decompose_position$10=function $$decompose_position(position){var $a,$b,self=this,line_no=nil,line_begin=nil;$b=self.$line_for(position),$a=Opal.to_ary($b),line_no=$a[0]==null?nil:$a[0],line_begin=$a[1]==null?nil:$a[1],$b;return[$rb_plus(self.first_line,line_no),$rb_minus(position,line_begin)]},$Buffer_decompose_position$10.$$arity=1);Opal.def(self,"$line_for_position",$Buffer_line_for_position$11=function $$line_for_position(position){var $a,$b,$c,self=this,$writer=nil,line_no=nil,_=nil;return $truthy($a=self.line_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),line_no=$b[0]==null?nil:$b[0],_=$b[1]==null?nil:$b[1],$c,$rb_plus(self.first_line,line_no))],$send(self.line_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},$Buffer_line_for_position$11.$$arity=1);Opal.def(self,"$column_for_position",$Buffer_column_for_position$12=function $$column_for_position(position){var $a,$b,$c,self=this,$writer=nil,_=nil,line_begin=nil;return $truthy($a=self.column_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),_=$b[0]==null?nil:$b[0],line_begin=$b[1]==null?nil:$b[1],$c,$rb_minus(position,line_begin))],$send(self.column_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},$Buffer_column_for_position$12.$$arity=1);Opal.def(self,"$source_lines",$Buffer_source_lines$13=function $$source_lines(){var $a,$$14,self=this,lines=nil;return self.lines=$truthy($a=self.lines)?$a:(lines=self.source.$lines().$to_a(),function(){if($truthy(self.source["$end_with?"]("\n".$force_encoding("ASCII-8BIT").$freeze()))){return lines["$<<"]("".$force_encoding("ASCII-8BIT").$dup())}else{return nil}return nil}(),$send(lines,"each",[],($$14=function(line){var self=$$14.$$s||this;if(line==null){line=nil}line["$chomp!"]("\n".$force_encoding("ASCII-8BIT").$freeze());return line.$freeze()},$$14.$$s=self,$$14.$$arity=1,$$14)),lines.$freeze())},$Buffer_source_lines$13.$$arity=0);Opal.def(self,"$source_line",$Buffer_source_line$15=function $$source_line(lineno){var self=this;return self.$source_lines().$fetch($rb_minus(lineno,self.first_line)).$dup()},$Buffer_source_line$15.$$arity=1);Opal.def(self,"$line_range",$Buffer_line_range$16=function $$line_range(lineno){var $a,self=this,index=nil;index=$rb_plus($rb_minus(lineno,self.first_line),1);if($truthy($truthy($a=$rb_le(index,0))?$a:$rb_gt(index,self.$line_begins().$size()))){return self.$raise($$($nesting,"IndexError"),""+"Parser::Source::Buffer: range for line "+(""+lineno+" requested, valid line numbers are "+self.first_line+"..")+(""+$rb_minus($rb_plus(self.first_line,self.$line_begins().$size()),1)))}else if(index["$=="](self.$line_begins().$size())){return $$($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),self.source.$size())}else{return $$($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),$rb_minus(self.$line_begins()["$[]"]($rb_minus(index["$-@"](),1))["$[]"](1),1))}},$Buffer_line_range$16.$$arity=1);Opal.def(self,"$source_range",$Buffer_source_range$17=function $$source_range(){var $a,self=this;return self.source_range=$truthy($a=self.source_range)?$a:$$($nesting,"Range").$new(self,0,self.$source().$size())},$Buffer_source_range$17.$$arity=0);Opal.def(self,"$last_line",$Buffer_last_line$18=function $$last_line(){var self=this;return $rb_minus($rb_plus(self.$line_begins().$size(),self.first_line),1)},$Buffer_last_line$18.$$arity=0);self.$private();Opal.def(self,"$line_begins",$Buffer_line_begins$19=function $$line_begins(){var $a,self=this,index=nil;if($truthy(self.line_begins)){}else{$a=[[[0,0]],0],self.line_begins=$a[0],index=$a[1],$a;while($truthy(index=self.source.$index("\n".$force_encoding("ASCII-8BIT").$freeze(),index))){index=$rb_plus(index,1);self.line_begins.$unshift([self.line_begins.$length(),index])}}return self.line_begins},$Buffer_line_begins$19.$$arity=0);return(Opal.def(self,"$line_for",$Buffer_line_for$20=function $$line_for(position){var $$21,self=this;return $send(self.$line_begins(),"bsearch",[],($$21=function(line,line_begin){var self=$$21.$$s||this;if(line==null){line=nil}if(line_begin==null){line_begin=nil}return $rb_le(line_begin,position)},$$21.$$s=self,$$21.$$arity=2,$$21))},$Buffer_line_for$20.$$arity=1),nil)&&"line_for"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/range"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$include","$attr_reader","$<","$raise","$nil?","$freeze","$with","$-","$line_for_position","$alias_method","$column_for_position","$!=","$line","$begin","$end","$inspect","$column","$source_line","$slice","$begin_pos","$end_pos","$include?","$source","$to_a","$decompose_position","$join","$name","$+","$new","$min","$max","$disjoint?","$empty?","$>=","$!","$<=>","$contains?","$overlaps?","$==","$*","$is_a?","$source_buffer","$nonzero?"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Range");var $nesting=[self].concat($parent_nesting),$Range_initialize$1,$Range_begin$2,$Range_end$3,$Range_size$4,$Range_line$5,$Range_column$6,$Range_last_line$7,$Range_last_column$8,$Range_column_range$9,$Range_source_line$10,$Range_source$11,$Range_is$ques$12,$Range_to_a$13,$Range_to_s$14,$Range_with$15,$Range_adjust$16,$Range_resize$17,$Range_join$18,$Range_intersect$19,$Range_disjoint$ques$20,$Range_overlaps$ques$21,$Range_contains$ques$22,$Range_contained$ques$23,$Range_crossing$ques$24,$Range_empty$ques$25,$Range_$lt_eq_gt$26,$Range_inspect$27;self.$$prototype.begin_pos=self.$$prototype.end_pos=self.$$prototype.source_buffer=nil;self.$include($$($nesting,"Comparable"));self.$attr_reader("source_buffer");self.$attr_reader("begin_pos","end_pos");Opal.def(self,"$initialize",$Range_initialize$1=function $$initialize(source_buffer,begin_pos,end_pos){var $a,self=this;if($truthy($rb_lt(end_pos,begin_pos))){self.$raise($$($nesting,"ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos")}if($truthy(source_buffer["$nil?"]())){self.$raise($$($nesting,"ArgumentError"),"Parser::Source::Range: source_buffer must not be nil")}self.source_buffer=source_buffer;$a=[begin_pos,end_pos],self.begin_pos=$a[0],self.end_pos=$a[1],$a;return self.$freeze()},$Range_initialize$1.$$arity=3);Opal.def(self,"$begin",$Range_begin$2=function $$begin(){var self=this;return self.$with($hash2(["end_pos"],{end_pos:self.begin_pos}))},$Range_begin$2.$$arity=0);Opal.def(self,"$end",$Range_end$3=function $$end(){var self=this;return self.$with($hash2(["begin_pos"],{begin_pos:self.end_pos}))},$Range_end$3.$$arity=0);Opal.def(self,"$size",$Range_size$4=function $$size(){var self=this;return $rb_minus(self.end_pos,self.begin_pos)},$Range_size$4.$$arity=0);Opal.alias(self,"length","size");Opal.def(self,"$line",$Range_line$5=function $$line(){var self=this;return self.source_buffer.$line_for_position(self.begin_pos)},$Range_line$5.$$arity=0);self.$alias_method("first_line","line");Opal.def(self,"$column",$Range_column$6=function $$column(){var self=this;return self.source_buffer.$column_for_position(self.begin_pos)},$Range_column$6.$$arity=0);Opal.def(self,"$last_line",$Range_last_line$7=function $$last_line(){var self=this;return self.source_buffer.$line_for_position(self.end_pos)},$Range_last_line$7.$$arity=0);Opal.def(self,"$last_column",$Range_last_column$8=function $$last_column(){var self=this;return self.source_buffer.$column_for_position(self.end_pos)},$Range_last_column$8.$$arity=0);Opal.def(self,"$column_range",$Range_column_range$9=function $$column_range(){var self=this;if($truthy(self.$begin().$line()["$!="](self.$end().$line()))){self.$raise($$($nesting,"RangeError"),""+self.$inspect()+" spans more than one line")}return Opal.Range.$new(self.$begin().$column(),self.$end().$column(),true)},$Range_column_range$9.$$arity=0);Opal.def(self,"$source_line",$Range_source_line$10=function $$source_line(){var self=this;return self.source_buffer.$source_line(self.$line())},$Range_source_line$10.$$arity=0);Opal.def(self,"$source",$Range_source$11=function $$source(){var self=this;return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(),true))},$Range_source$11.$$arity=0);Opal.def(self,"$is?",$Range_is$ques$12=function($a){var $post_args,what,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);what=$post_args;return what["$include?"](self.$source())},$Range_is$ques$12.$$arity=-1);Opal.def(self,"$to_a",$Range_to_a$13=function $$to_a(){var self=this;return Opal.Range.$new(self.begin_pos,self.end_pos,true).$to_a()},$Range_to_a$13.$$arity=0);Opal.def(self,"$to_s",$Range_to_s$14=function $$to_s(){var $a,$b,self=this,line=nil,column=nil;$b=self.source_buffer.$decompose_position(self.begin_pos),$a=Opal.to_ary($b),line=$a[0]==null?nil:$a[0],column=$a[1]==null?nil:$a[1],$b;return[self.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")},$Range_to_s$14.$$arity=0);Opal.def(self,"$with",$Range_with$15=function($kwargs){var begin_pos,end_pos,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}begin_pos=$kwargs.$$smap["begin_pos"];if(begin_pos==null){begin_pos=self.begin_pos}end_pos=$kwargs.$$smap["end_pos"];if(end_pos==null){end_pos=self.end_pos}return $$($nesting,"Range").$new(self.source_buffer,begin_pos,end_pos)},$Range_with$15.$$arity=-1);Opal.def(self,"$adjust",$Range_adjust$16=function $$adjust($kwargs){var begin_pos,end_pos,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}begin_pos=$kwargs.$$smap["begin_pos"];if(begin_pos==null){begin_pos=0}end_pos=$kwargs.$$smap["end_pos"];if(end_pos==null){end_pos=0}return $$($nesting,"Range").$new(self.source_buffer,$rb_plus(self.begin_pos,begin_pos),$rb_plus(self.end_pos,end_pos))},$Range_adjust$16.$$arity=-1);Opal.def(self,"$resize",$Range_resize$17=function $$resize(new_size){var self=this;return self.$with($hash2(["end_pos"],{end_pos:$rb_plus(self.begin_pos,new_size)}))},$Range_resize$17.$$arity=1);Opal.def(self,"$join",$Range_join$18=function $$join(other){var self=this;return $$($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$min(),[self.end_pos,other.$end_pos()].$max())},$Range_join$18.$$arity=1);Opal.def(self,"$intersect",$Range_intersect$19=function $$intersect(other){var self=this;if($truthy(self["$disjoint?"](other))){return nil}else{return $$($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$max(),[self.end_pos,other.$end_pos()].$min())}},$Range_intersect$19.$$arity=1);Opal.def(self,"$disjoint?",$Range_disjoint$ques$20=function(other){var $a,self=this;if($truthy($truthy($a=self["$empty?"]())?other["$empty?"]():$a)){return self.begin_pos["$!="](other.$begin_pos())}else{return $truthy($a=$rb_ge(self.begin_pos,other.$end_pos()))?$a:$rb_ge(other.$begin_pos(),self.end_pos)}},$Range_disjoint$ques$20.$$arity=1);Opal.def(self,"$overlaps?",$Range_overlaps$ques$21=function(other){var self=this;return self["$disjoint?"](other)["$!"]()},$Range_overlaps$ques$21.$$arity=1);Opal.def(self,"$contains?",$Range_contains$ques$22=function(other){var self=this;return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](self.begin_pos),self.end_pos["$<=>"](other.$end_pos())),function(){if($truthy(other["$empty?"]())){return 2}else{return 1}return nil}())},$Range_contains$ques$22.$$arity=1);Opal.def(self,"$contained?",$Range_contained$ques$23=function(other){var self=this;return other["$contains?"](self)},$Range_contained$ques$23.$$arity=1);Opal.def(self,"$crossing?",$Range_crossing$ques$24=function(other){var self=this;if($truthy(self["$overlaps?"](other))){}else{return false}return $rb_times(self.begin_pos["$<=>"](other.$begin_pos()),self.end_pos["$<=>"](other.$end_pos()))["$=="](1)},$Range_crossing$ques$24.$$arity=1);Opal.def(self,"$empty?",$Range_empty$ques$25=function(){var self=this;return self.begin_pos["$=="](self.end_pos)},$Range_empty$ques$25.$$arity=0);Opal.def(self,"$<=>",$Range_$lt_eq_gt$26=function(other){var $a,self=this;if($truthy($truthy($a=other["$is_a?"]($$$($$$($$$("::","Parser"),"Source"),"Range")))?self.source_buffer["$=="](other.$source_buffer()):$a)){}else{return nil}return $truthy($a=self.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$a:self.end_pos["$<=>"](other.$end_pos())},$Range_$lt_eq_gt$26.$$arity=1);return(Opal.def(self,"$inspect",$Range_inspect$27=function $$inspect(){var self=this;return""+"#"},$Range_inspect$27.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$alias_method","$new","$associate","$associate_locations","$freeze","$source","$start_with?","$text","$==","$type","$is_a?","$location","$to_s","$expression","$inspect"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Comment");var $nesting=[self].concat($parent_nesting),$Comment_associate$1,$Comment_associate_locations$2,$Comment_initialize$3,$Comment_type$4,$Comment_inline$ques$5,$Comment_document$ques$6,$Comment_$eq_eq$7,$Comment_inspect$8;self.$$prototype.location=nil;self.$attr_reader("text");self.$attr_reader("location");self.$alias_method("loc","location");Opal.defs(self,"$associate",$Comment_associate$1=function $$associate(ast,comments){var self=this,associator=nil;associator=$$($nesting,"Associator").$new(ast,comments);return associator.$associate()},$Comment_associate$1.$$arity=2);Opal.defs(self,"$associate_locations",$Comment_associate_locations$2=function $$associate_locations(ast,comments){var self=this,associator=nil;associator=$$($nesting,"Associator").$new(ast,comments);return associator.$associate_locations()},$Comment_associate_locations$2.$$arity=2);Opal.def(self,"$initialize",$Comment_initialize$3=function $$initialize(range){var self=this;self.location=$$$($$$($$($nesting,"Parser"),"Source"),"Map").$new(range);self.text=range.$source().$freeze();return self.$freeze()},$Comment_initialize$3.$$arity=1);Opal.def(self,"$type",$Comment_type$4=function $$type(){var self=this;if($truthy(self.$text()["$start_with?"]("#".$freeze()))){return"inline"}else if($truthy(self.$text()["$start_with?"]("=begin".$freeze()))){return"document"}else{return nil}},$Comment_type$4.$$arity=0);Opal.def(self,"$inline?",$Comment_inline$ques$5=function(){var self=this;return self.$type()["$=="]("inline")},$Comment_inline$ques$5.$$arity=0);Opal.def(self,"$document?",$Comment_document$ques$6=function(){var self=this;return self.$type()["$=="]("document")},$Comment_document$ques$6.$$arity=0);Opal.def(self,"$==",$Comment_$eq_eq$7=function(other){var $a,self=this;return $truthy($a=other["$is_a?"]($$$($$($nesting,"Source"),"Comment")))?self.location["$=="](other.$location()):$a},$Comment_$eq_eq$7.$$arity=1);return(Opal.def(self,"$inspect",$Comment_inspect$8=function $$inspect(){var self=this;return""+"#"},$Comment_inspect$8.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment/associator"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$do_associate","$private","$new","$[]=","$-","$advance_comment","$advance_through_directives","$visit","$process_leading_comments","$location","$<=","$line","$last_line","$is_a?","$each","$children","$loc","$expression","$process_trailing_comments","$==","$type","$current_comment_before?","$associate_and_advance_comment","$current_comment_before_end?","$current_comment_decorates?","$+","$[]","$!","$end_pos","$begin_pos","$<<","$start_with?","$text","$freeze","$=~"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Associator");var $nesting=[self].concat($parent_nesting),$Associator_initialize$1,$Associator_associate$2,$Associator_associate_locations$3,$Associator_do_associate$4,$Associator_visit$6,$Associator_process_leading_comments$8,$Associator_process_trailing_comments$9,$Associator_advance_comment$10,$Associator_current_comment_before$ques$11,$Associator_current_comment_before_end$ques$12,$Associator_current_comment_decorates$ques$13,$Associator_associate_and_advance_comment$14,$Associator_advance_through_directives$15;self.$$prototype.skip_directives=self.$$prototype.ast=self.$$prototype.mapping=self.$$prototype.current_comment=self.$$prototype.comment_num=self.$$prototype.comments=self.$$prototype.map_using_locations=nil;self.$attr_accessor("skip_directives");Opal.def(self,"$initialize",$Associator_initialize$1=function $$initialize(ast,comments){var self=this;self.ast=ast;self.comments=comments;return self.skip_directives=true},$Associator_initialize$1.$$arity=2);Opal.def(self,"$associate",$Associator_associate$2=function $$associate(){var self=this;self.map_using_locations=false;return self.$do_associate()},$Associator_associate$2.$$arity=0);Opal.def(self,"$associate_locations",$Associator_associate_locations$3=function $$associate_locations(){var self=this;self.map_using_locations=true;return self.$do_associate()},$Associator_associate_locations$3.$$arity=0);self.$private();Opal.def(self,"$do_associate",$Associator_do_associate$4=function $$do_associate(){var $$5,self=this;self.mapping=$send($$($nesting,"Hash"),"new",[],($$5=function(h,k){var self=$$5.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,[]];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$5.$$s=self,$$5.$$arity=2,$$5));self.comment_num=-1;self.$advance_comment();if($truthy(self.skip_directives)){self.$advance_through_directives()}if($truthy(self.ast)){self.$visit(self.ast)}return self.mapping},$Associator_do_associate$4.$$arity=0);Opal.def(self,"$visit",$Associator_visit$6=function $$visit(node){var $a,$$7,self=this,node_loc=nil;self.$process_leading_comments(node);if($truthy(self.current_comment)){}else{return nil}node_loc=node.$location();if($truthy($truthy($a=$rb_le(self.current_comment.$location().$line(),node_loc.$last_line()))?$a:node_loc["$is_a?"]($$$($$($nesting,"Map"),"Heredoc")))){$send(node.$children(),"each",[],($$7=function(child){var self=$$7.$$s||this,$b,$c;if(child==null){child=nil}if($truthy($truthy($b=$truthy($c=child["$is_a?"]($$$($$($nesting,"AST"),"Node")))?child.$loc():$c)?child.$loc().$expression():$b)){}else{return nil}return self.$visit(child)},$$7.$$s=self,$$7.$$arity=1,$$7));return self.$process_trailing_comments(node)}else{return nil}},$Associator_visit$6.$$arity=1);Opal.def(self,"$process_leading_comments",$Associator_process_leading_comments$8=function $$process_leading_comments(node){var $a,self=this;if(node.$type()["$=="]("begin")){return nil}while($truthy(self["$current_comment_before?"](node))){self.$associate_and_advance_comment(node)}},$Associator_process_leading_comments$8.$$arity=1);Opal.def(self,"$process_trailing_comments",$Associator_process_trailing_comments$9=function $$process_trailing_comments(node){var $a,self=this;while($truthy(self["$current_comment_before_end?"](node))){self.$associate_and_advance_comment(node)}while($truthy(self["$current_comment_decorates?"](node))){self.$associate_and_advance_comment(node)}},$Associator_process_trailing_comments$9.$$arity=1);Opal.def(self,"$advance_comment",$Associator_advance_comment$10=function $$advance_comment(){var self=this;self.comment_num=$rb_plus(self.comment_num,1);return self.current_comment=self.comments["$[]"](self.comment_num)},$Associator_advance_comment$10.$$arity=0);Opal.def(self,"$current_comment_before?",$Associator_current_comment_before$ques$11=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$begin_pos())},$Associator_current_comment_before$ques$11.$$arity=1);Opal.def(self,"$current_comment_before_end?",$Associator_current_comment_before_end$ques$12=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$end_pos())},$Associator_current_comment_before_end$ques$12.$$arity=1);Opal.def(self,"$current_comment_decorates?",$Associator_current_comment_decorates$ques$13=function(node){var self=this;if($truthy(self.current_comment["$!"]())){return false}return self.current_comment.$location().$line()["$=="](node.$location().$last_line())},$Associator_current_comment_decorates$ques$13.$$arity=1);Opal.def(self,"$associate_and_advance_comment",$Associator_associate_and_advance_comment$14=function $$associate_and_advance_comment(node){var self=this,key=nil;key=function(){if($truthy(self.map_using_locations)){return node.$location()}else{return node}return nil}();self.mapping["$[]"](key)["$<<"](self.current_comment);return self.$advance_comment()},$Associator_associate_and_advance_comment$14.$$arity=1);Opal.const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/);return(Opal.def(self,"$advance_through_directives",$Associator_advance_through_directives$15=function $$advance_through_directives(){var $a,self=this;if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$start_with?"]("#!".$freeze()):$a)){self.$advance_comment()}if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"]($$($nesting,"MAGIC_COMMENT_RE")):$a)){self.$advance_comment()}if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"]($$$($$($nesting,"Buffer"),"ENCODING_RE")):$a)){return self.$advance_comment()}else{return nil}},$Associator_advance_through_directives$15.$$arity=0),nil)&&"advance_through_directives"})($$($nesting,"Comment"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=","$==","$[]","$all?","$intersect","$nil?","$max","$sort_by","$push","$join","$first","$max_by","$merge_replacements","$replace_actions","$disjoint?","$<","$process","$extend"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter");var $nesting=[self].concat($parent_nesting),$Rewriter_initialize$1,$Rewriter_remove$3,$Rewriter_insert_before$4,$Rewriter_wrap$5,$Rewriter_insert_before_multi$6,$Rewriter_insert_after$7,$Rewriter_insert_after_multi$8,$Rewriter_replace$9,$Rewriter_process$10,$Rewriter_transaction$12,$Rewriter_append$13,$Rewriter_record_insertion$16,$Rewriter_record_replace$17,$Rewriter_clobbered_position_mask$18,$Rewriter_adjacent_position_mask$19,$Rewriter_adjacent_insertion_mask$20,$Rewriter_clobbered_insertion$ques$21,$Rewriter_adjacent_insertions$ques$23,$Rewriter_adjacent_updates$ques$25,$Rewriter_replace_compatible_with_insertion$ques$27,$Rewriter_can_merge$ques$28,$Rewriter_merge_actions$30,$Rewriter_merge_actions$excl$33,$Rewriter_merge_replacements$34,$Rewriter_replace_actions$36,$Rewriter_raise_clobber_error$38,$Rewriter_in_transaction$ques$39,$Rewriter_active_queue$40,$Rewriter_active_clobber$41,$Rewriter_active_insertions$42,$Rewriter_active_clobber$eq$43,$Rewriter_active_insertions$eq$44,$Rewriter_adjacent$ques$45;self.$$prototype.diagnostics=self.$$prototype.insert_before_multi_order=self.$$prototype.insert_after_multi_order=self.$$prototype.source_buffer=self.$$prototype.queue=self.$$prototype.clobber=self.$$prototype.insertions=self.$$prototype.pending_queue=self.$$prototype.pending_clobber=self.$$prototype.pending_insertions=nil;self.$attr_reader("source_buffer");self.$attr_reader("diagnostics");Opal.def(self,"$initialize",$Rewriter_initialize$1=function $$initialize(source_buffer){var $$2,self=this,$writer=nil;self.$class().$warn_of_deprecation();self.diagnostics=$$$($$($nesting,"Diagnostic"),"Engine").$new();$writer=[$send(self,"lambda",[],($$2=function(diag){var self=$$2.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diag==null){diag=nil}return $gvars.stderr.$puts(diag.$render())},$$2.$$s=self,$$2.$$arity=1,$$2))];$send(self.diagnostics,"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;self.queue=[];self.clobber=0;self.insertions=0;self.insert_before_multi_order=0;self.insert_after_multi_order=0;self.pending_queue=nil;self.pending_clobber=nil;return self.pending_insertions=nil},$Rewriter_initialize$1.$$arity=1);Opal.def(self,"$remove",$Rewriter_remove$3=function $$remove(range){var self=this;return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range,"".$freeze()))},$Rewriter_remove$3.$$arity=1);Opal.def(self,"$insert_before",$Rewriter_insert_before$4=function $$insert_before(range,content){var self=this;return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$begin(),content))},$Rewriter_insert_before$4.$$arity=2);Opal.def(self,"$wrap",$Rewriter_wrap$5=function $$wrap(range,before,after){var self=this;self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$begin(),before));return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$end(),after))},$Rewriter_wrap$5.$$arity=3);Opal.def(self,"$insert_before_multi",$Rewriter_insert_before_multi$6=function $$insert_before_multi(range,content){var self=this;self.insert_before_multi_order=$rb_minus(self.insert_before_multi_order,1);return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$begin(),content,true,self.insert_before_multi_order))},$Rewriter_insert_before_multi$6.$$arity=2);Opal.def(self,"$insert_after",$Rewriter_insert_after$7=function $$insert_after(range,content){var self=this;return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$end(),content))},$Rewriter_insert_after$7.$$arity=2);Opal.def(self,"$insert_after_multi",$Rewriter_insert_after_multi$8=function $$insert_after_multi(range,content){var self=this;self.insert_after_multi_order=$rb_plus(self.insert_after_multi_order,1);return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range.$end(),content,true,self.insert_after_multi_order))},$Rewriter_insert_after_multi$8.$$arity=2);Opal.def(self,"$replace",$Rewriter_replace$9=function $$replace(range,content){var self=this;return self.$append($$$($$($nesting,"Rewriter"),"Action").$new(range,content))},$Rewriter_replace$9.$$arity=2);Opal.def(self,"$process",$Rewriter_process$10=function $$process(){var $$11,self=this,adjustment=nil,source=nil;if($truthy(self["$in_transaction?"]())){self.$raise(""+"Do not call "+self.$class()+"#"+"process"+" inside a transaction")}adjustment=0;source=self.source_buffer.$source().$dup();$send(self.queue.$sort(),"each",[],($$11=function(action){var self=$$11.$$s||this,begin_pos=nil,end_pos=nil,$writer=nil;if(action==null){action=nil}begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment);end_pos=$rb_plus(begin_pos,action.$range().$length());$writer=[Opal.Range.$new(begin_pos,end_pos,true),action.$replacement()];$send(source,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))},$$11.$$s=self,$$11.$$arity=1,$$11));return source},$Rewriter_process$10.$$arity=0);Opal.def(self,"$transaction",$Rewriter_transaction$12=function $$transaction(){var $iter=$Rewriter_transaction$12.$$p,$yield=$iter||nil,self=this;if($iter)$Rewriter_transaction$12.$$p=null;return function(){try{if($yield!==nil){}else{self.$raise(""+self.$class()+"#"+"transaction"+" requires block")}if($truthy(self["$in_transaction?"]())){self.$raise("Nested transaction is not supported")}self.pending_queue=self.queue.$dup();self.pending_clobber=self.clobber;self.pending_insertions=self.insertions;Opal.yieldX($yield,[]);self.queue=self.pending_queue;self.clobber=self.pending_clobber;self.insertions=self.pending_insertions;return self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()},$Rewriter_transaction$12.$$arity=0);self.$private();Opal.def(self,"$append",$Rewriter_append$13=function $$append(action){var $a,$$14,$$15,self=this,range=nil,conflicting=nil,adjacent=nil,insertions=nil;range=action.$range();if($truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]())){return self}if($truthy($truthy($a=action["$allow_multiple_insertions?"]()["$!"]())?conflicting=self["$clobbered_insertion?"](range):$a)){self.$raise_clobber_error(action,[conflicting])}self.$record_insertion(range);if($truthy(adjacent=self["$adjacent_updates?"](range))){conflicting=$send(adjacent,"find",[],($$14=function(a){var self=$$14.$$s||this,$b;if(a==null){a=nil}return $truthy($b=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$b},$$14.$$s=self,$$14.$$arity=1,$$14));if($truthy(conflicting)){self.$raise_clobber_error(action,[conflicting])}self["$merge_actions!"](action,adjacent)}else{self.$active_queue()["$<<"](action)}}else{if($truthy(insertions=self["$adjacent_insertions?"](range))){$send(insertions,"each",[],($$15=function(insertion){var self=$$15.$$s||this,$b;if(insertion==null){insertion=nil}if($truthy($truthy($b=range["$overlaps?"](insertion.$range()))?self["$replace_compatible_with_insertion?"](action,insertion)["$!"]():$b)){return self.$raise_clobber_error(action,[insertion])}else{action=self.$merge_actions(action,[insertion]);return self.$active_queue().$delete(insertion)}},$$15.$$s=self,$$15.$$arity=1,$$15))}if($truthy(adjacent=self["$adjacent_updates?"](range))){if($truthy(self["$can_merge?"](action,adjacent))){self.$record_replace(range);self["$merge_actions!"](action,adjacent)}else{self.$raise_clobber_error(action,adjacent)}}else{self.$record_replace(range);self.$active_queue()["$<<"](action)}}return self},$Rewriter_append$13.$$arity=1);Opal.def(self,"$record_insertion",$Rewriter_record_insertion$16=function $$record_insertion(range){var self=this,$writer=nil;$writer=[self.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))];$send(self,"active_insertions=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$Rewriter_record_insertion$16.$$arity=1);Opal.def(self,"$record_replace",$Rewriter_record_replace$17=function $$record_replace(range){var self=this,$writer=nil;$writer=[self.$active_clobber()["$|"](self.$clobbered_position_mask(range))];$send(self,"active_clobber=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$Rewriter_record_replace$17.$$arity=1);Opal.def(self,"$clobbered_position_mask",$Rewriter_clobbered_position_mask$18=function $$clobbered_position_mask(range){var self=this;return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())},$Rewriter_clobbered_position_mask$18.$$arity=1);Opal.def(self,"$adjacent_position_mask",$Rewriter_adjacent_position_mask$19=function $$adjacent_position_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))},$Rewriter_adjacent_position_mask$19.$$arity=1);Opal.def(self,"$adjacent_insertion_mask",$Rewriter_adjacent_insertion_mask$20=function $$adjacent_insertion_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())},$Rewriter_adjacent_insertion_mask$20.$$arity=1);Opal.def(self,"$clobbered_insertion?",$Rewriter_clobbered_insertion$ques$21=function(insertion){var $$22,self=this,insertion_pos=nil;insertion_pos=insertion.$begin_pos();if($truthy(self.$active_insertions()["$&"](1["$<<"](insertion_pos))["$!="](0))){return $send(self.$active_queue(),"find",[],($$22=function(a){var self=$$22.$$s||this,$a;if(a==null){a=nil}return $truthy($a=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$a},$$22.$$s=self,$$22.$$arity=1,$$22))}else{return nil}},$Rewriter_clobbered_insertion$ques$21.$$arity=1);Opal.def(self,"$adjacent_insertions?",$Rewriter_adjacent_insertions$ques$23=function(range){var $$24,self=this,result=nil;if($truthy(self.$active_insertions()["$&"](self.$adjacent_insertion_mask(range))["$!="](0))){result=$send(self.$active_queue(),"select",[],($$24=function(a){var self=$$24.$$s||this,$a;if(a==null){a=nil}return $truthy($a=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$a},$$24.$$s=self,$$24.$$arity=1,$$24));if($truthy(result["$empty?"]())){return nil}else{return result}}else{return nil}},$Rewriter_adjacent_insertions$ques$23.$$arity=1);Opal.def(self,"$adjacent_updates?",$Rewriter_adjacent_updates$ques$25=function(range){var $$26,self=this;if($truthy(self.$active_clobber()["$&"](self.$adjacent_position_mask(range))["$!="](0))){return $send(self.$active_queue(),"select",[],($$26=function(a){var self=$$26.$$s||this;if(a==null){a=nil}return self["$adjacent?"](range,a.$range())},$$26.$$s=self,$$26.$$arity=1,$$26))}else{return nil}},$Rewriter_adjacent_updates$ques$25.$$arity=1);Opal.def(self,"$replace_compatible_with_insertion?",$Rewriter_replace_compatible_with_insertion$ques$27=function(replace,insertion){var $a,$b,self=this,offset=nil;return $truthy($a=$truthy($b=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$b)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$a},$Rewriter_replace_compatible_with_insertion$ques$27.$$arity=2);Opal.def(self,"$can_merge?",$Rewriter_can_merge$ques$28=function(action,existing){var $$29,self=this,range=nil;range=action.$range();return $send(existing,"all?",[],($$29=function(other){var self=$$29.$$s||this,$a,overlap=nil,repl1_offset=nil,repl2_offset=nil,repl1_length=nil,repl2_length=nil,replacement1=nil,replacement2=nil;if(other==null){other=nil}overlap=range.$intersect(other.$range());if($truthy(overlap["$nil?"]())){return true}repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos());repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos());repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max();repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max();replacement1=$truthy($a=action.$replacement()["$[]"](repl1_offset,repl1_length))?$a:"".$freeze();replacement2=$truthy($a=other.$replacement()["$[]"](repl2_offset,repl2_length))?$a:"".$freeze();return replacement1["$=="](replacement2)},$$29.$$s=self,$$29.$$arity=1,$$29))},$Rewriter_can_merge$ques$28.$$arity=2);Opal.def(self,"$merge_actions",$Rewriter_merge_actions$30=function $$merge_actions(action,existing){var $$31,$$32,self=this,actions=nil,range=nil;actions=$send(existing.$push(action),"sort_by",[],($$31=function(a){var self=$$31.$$s||this;if(a==null){a=nil}return[a.$range().$begin_pos(),a.$range().$end_pos()]},$$31.$$s=self,$$31.$$arity=1,$$31));range=actions.$first().$range().$join($send(actions,"max_by",[],($$32=function(a){var self=$$32.$$s||this;if(a==null){a=nil}return a.$range().$end_pos()},$$32.$$s=self,$$32.$$arity=1,$$32)).$range());return $$$($$($nesting,"Rewriter"),"Action").$new(range,self.$merge_replacements(actions))},$Rewriter_merge_actions$30.$$arity=2);Opal.def(self,"$merge_actions!",$Rewriter_merge_actions$excl$33=function(action,existing){var self=this,new_action=nil;new_action=self.$merge_actions(action,existing);self.$active_queue().$delete(action);return self.$replace_actions(existing,new_action)},$Rewriter_merge_actions$excl$33.$$arity=2);Opal.def(self,"$merge_replacements",$Rewriter_merge_replacements$34=function $$merge_replacements(actions){var $$35,self=this,result=nil,prev_act=nil;result="".$dup();prev_act=nil;$send(actions,"each",[],($$35=function(act){var self=$$35.$$s||this,$a,prev_end=nil,offset=nil;if(act==null){act=nil}if($truthy($truthy($a=prev_act["$!"]())?$a:act.$range()["$disjoint?"](prev_act.$range()))){result["$<<"](act.$replacement())}else{prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max();offset=$rb_minus(prev_end,act.$range().$begin_pos());if($truthy($rb_lt(offset,act.$replacement().$size()))){result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,false)))}}return prev_act=act},$$35.$$s=self,$$35.$$arity=1,$$35));return result},$Rewriter_merge_replacements$34.$$arity=1);Opal.def(self,"$replace_actions",$Rewriter_replace_actions$36=function $$replace_actions(old,updated){var $$37,self=this;$send(old,"each",[],($$37=function(act){var self=$$37.$$s||this;if(act==null){act=nil}return self.$active_queue().$delete(act)},$$37.$$s=self,$$37.$$arity=1,$$37));return self.$active_queue()["$<<"](updated)},$Rewriter_replace_actions$36.$$arity=2);Opal.def(self,"$raise_clobber_error",$Rewriter_raise_clobber_error$38=function $$raise_clobber_error(action,existing){var self=this,diagnostic=nil;diagnostic=$$($nesting,"Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range());self.diagnostics.$process(diagnostic);diagnostic=$$($nesting,"Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range());self.diagnostics.$process(diagnostic);return self.$raise($$($nesting,"ClobberingError"),"Parser::Source::Rewriter detected clobbering")},$Rewriter_raise_clobber_error$38.$$arity=2);Opal.def(self,"$in_transaction?",$Rewriter_in_transaction$ques$39=function(){var self=this;return self.pending_queue["$nil?"]()["$!"]()},$Rewriter_in_transaction$ques$39.$$arity=0);Opal.def(self,"$active_queue",$Rewriter_active_queue$40=function $$active_queue(){var $a,self=this;return $truthy($a=self.pending_queue)?$a:self.queue},$Rewriter_active_queue$40.$$arity=0);Opal.def(self,"$active_clobber",$Rewriter_active_clobber$41=function $$active_clobber(){var $a,self=this;return $truthy($a=self.pending_clobber)?$a:self.clobber},$Rewriter_active_clobber$41.$$arity=0);Opal.def(self,"$active_insertions",$Rewriter_active_insertions$42=function $$active_insertions(){var $a,self=this;return $truthy($a=self.pending_insertions)?$a:self.insertions},$Rewriter_active_insertions$42.$$arity=0);Opal.def(self,"$active_clobber=",$Rewriter_active_clobber$eq$43=function(value){var self=this;if($truthy(self.pending_clobber)){return self.pending_clobber=value}else{return self.clobber=value}},$Rewriter_active_clobber$eq$43.$$arity=1);Opal.def(self,"$active_insertions=",$Rewriter_active_insertions$eq$44=function(value){var self=this;if($truthy(self.pending_insertions)){return self.pending_insertions=value}else{return self.insertions=value}},$Rewriter_active_insertions$eq$44.$$arity=1);Opal.def(self,"$adjacent?",$Rewriter_adjacent$ques$45=function(range1,range2){var $a,self=this;return $truthy($a=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$a},$Rewriter_adjacent$ques$45.$$arity=2);Opal.const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze());return self.$extend($$($nesting,"Deprecation"))})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter/action"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$include","$attr_reader","$alias_method","$freeze","$<=>","$begin_pos","$range","$zero?","$order","$==","$length","$empty?","$inspect"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Action");var $nesting=[self].concat($parent_nesting),$Action_initialize$1,$Action_$lt_eq_gt$2,$Action_to_s$3;self.$$prototype.range=self.$$prototype.replacement=nil;self.$include($$($nesting,"Comparable"));self.$attr_reader("range","replacement","allow_multiple_insertions","order");self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions");Opal.def(self,"$initialize",$Action_initialize$1=function $$initialize(range,replacement,allow_multiple_insertions,order){var self=this;if(replacement==null){replacement=""}if(allow_multiple_insertions==null){allow_multiple_insertions=false}if(order==null){order=0}self.range=range;self.replacement=replacement;self.allow_multiple_insertions=allow_multiple_insertions;self.order=order;return self.$freeze()},$Action_initialize$1.$$arity=-2);Opal.def(self,"$<=>",$Action_$lt_eq_gt$2=function(other){var self=this,result=nil;result=self.$range().$begin_pos()["$<=>"](other.$range().$begin_pos());if($truthy(result["$zero?"]())){}else{return result}return self.$order()["$<=>"](other.$order())},$Action_$lt_eq_gt$2.$$arity=1);return(Opal.def(self,"$to_s",$Action_to_s$3=function $$to_s(){var $a,self=this;if($truthy(($a=self.range.$length()["$=="](0))?self.replacement["$empty?"]():self.range.$length()["$=="](0))){return"do nothing"}else if(self.range.$length()["$=="](0)){return""+"insert "+self.replacement.$inspect()}else if($truthy(self.replacement["$empty?"]())){return""+"remove "+self.range.$length()+" character(s)"}else{return""+"replace "+self.range.$length()+" character(s) with "+self.replacement.$inspect()}},$Action_to_s$3.$$arity=0),nil)&&"to_s"})($$($nesting,"Rewriter"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/tree_rewriter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$truthy=Opal.truthy,$hash=Opal.hash;Opal.add_stubs(["$attr_reader","$new","$puts","$render","$consumer=","$-","$freeze","$check_policy_validity","$method","$adjust","$source_range","$combine","$to_s","$replace","$wrap","$dup","$source","$each","$ordered_replacements","$+","$begin_pos","$length","$[]=","$raise","$class","$warn_of_deprecation","$insert_before","$insert_after","$join","$extend","$private","$values","$empty?","$check_range_validity","$<","$>","$end_pos","$size","$==","$[]","$trigger_policy","$process"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter");var $nesting=[self].concat($parent_nesting),$TreeRewriter_initialize$1,$TreeRewriter_replace$3,$TreeRewriter_wrap$4,$TreeRewriter_remove$5,$TreeRewriter_insert_before$6,$TreeRewriter_insert_after$7,$TreeRewriter_process$8,$TreeRewriter_transaction$10,$TreeRewriter_in_transaction$ques$11,$TreeRewriter_insert_before_multi$12,$TreeRewriter_insert_after_multi$13,$TreeRewriter_check_policy_validity$14,$TreeRewriter_combine$15,$TreeRewriter_check_range_validity$16,$TreeRewriter_enforce_policy$17,$TreeRewriter_trigger_policy$18;self.$$prototype.diagnostics=self.$$prototype.source_buffer=self.$$prototype.enforcer=self.$$prototype.action_root=self.$$prototype.in_transaction=self.$$prototype.policy=nil;self.$attr_reader("source_buffer");self.$attr_reader("diagnostics");Opal.def(self,"$initialize",$TreeRewriter_initialize$1=function $$initialize(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$$2,self=this,$writer=nil,all_encompassing_range=nil;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}crossing_deletions=$kwargs.$$smap["crossing_deletions"];if(crossing_deletions==null){crossing_deletions="accept"}different_replacements=$kwargs.$$smap["different_replacements"];if(different_replacements==null){different_replacements="accept"}swallowed_insertions=$kwargs.$$smap["swallowed_insertions"];if(swallowed_insertions==null){swallowed_insertions="accept"}self.diagnostics=$$$($$($nesting,"Diagnostic"),"Engine").$new();$writer=[$lambda(($$2=function(diag){var self=$$2.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diag==null){diag=nil}return $gvars.stderr.$puts(diag.$render())},$$2.$$s=self,$$2.$$arity=1,$$2))];$send(self.diagnostics,"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;self.in_transaction=false;self.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze();self.$check_policy_validity();self.enforcer=self.$method("enforce_policy");all_encompassing_range=self.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1}));return self.action_root=$$$($$($nesting,"TreeRewriter"),"Action").$new(all_encompassing_range,self.enforcer)},$TreeRewriter_initialize$1.$$arity=-2);Opal.def(self,"$replace",$TreeRewriter_replace$3=function $$replace(range,content){var self=this;return self.$combine(range,$hash2(["replacement"],{replacement:content}))},$TreeRewriter_replace$3.$$arity=2);Opal.def(self,"$wrap",$TreeRewriter_wrap$4=function $$wrap(range,insert_before,insert_after){var self=this;return self.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))},$TreeRewriter_wrap$4.$$arity=3);Opal.def(self,"$remove",$TreeRewriter_remove$5=function $$remove(range){var self=this;return self.$replace(range,"".$freeze())},$TreeRewriter_remove$5.$$arity=1);Opal.def(self,"$insert_before",$TreeRewriter_insert_before$6=function $$insert_before(range,content){var self=this;return self.$wrap(range,content,nil)},$TreeRewriter_insert_before$6.$$arity=2);Opal.def(self,"$insert_after",$TreeRewriter_insert_after$7=function $$insert_after(range,content){var self=this;return self.$wrap(range,nil,content)},$TreeRewriter_insert_after$7.$$arity=2);Opal.def(self,"$process",$TreeRewriter_process$8=function $$process(){var $$9,self=this,source=nil,adjustment=nil;source=self.source_buffer.$source().$dup();adjustment=0;$send(self.action_root.$ordered_replacements(),"each",[],($$9=function(range,replacement){var self=$$9.$$s||this,begin_pos=nil,end_pos=nil,$writer=nil;if(range==null){range=nil}if(replacement==null){replacement=nil}begin_pos=$rb_plus(range.$begin_pos(),adjustment);end_pos=$rb_plus(begin_pos,range.$length());$writer=[Opal.Range.$new(begin_pos,end_pos,true),replacement];$send(source,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return adjustment=$rb_plus(adjustment,$rb_minus(replacement.$length(),range.$length()))},$$9.$$s=self,$$9.$$arity=2,$$9));return source},$TreeRewriter_process$8.$$arity=0);Opal.def(self,"$transaction",$TreeRewriter_transaction$10=function $$transaction(){var $iter=$TreeRewriter_transaction$10.$$p,$yield=$iter||nil,self=this,previous=nil,restore_root=nil;if($iter)$TreeRewriter_transaction$10.$$p=null;return function(){try{if($yield!==nil){}else{self.$raise(""+self.$class()+"#"+"transaction"+" requires block")}previous=self.in_transaction;self.in_transaction=true;restore_root=self.action_root;Opal.yieldX($yield,[]);restore_root=nil;return self}finally{(function(){if($truthy(restore_root)){return self.action_root=restore_root}else{return nil}return nil})(),self.in_transaction=previous}}()},$TreeRewriter_transaction$10.$$arity=0);Opal.def(self,"$in_transaction?",$TreeRewriter_in_transaction$ques$11=function(){var self=this;return self.in_transaction},$TreeRewriter_in_transaction$ques$11.$$arity=0);Opal.def(self,"$insert_before_multi",$TreeRewriter_insert_before_multi$12=function $$insert_before_multi(range,text){var self=this;self.$class().$warn_of_deprecation();return self.$insert_before(range,text)},$TreeRewriter_insert_before_multi$12.$$arity=2);Opal.def(self,"$insert_after_multi",$TreeRewriter_insert_after_multi$13=function $$insert_after_multi(range,text){var self=this;self.$class().$warn_of_deprecation();return self.$insert_after(range,text)},$TreeRewriter_insert_after_multi$13.$$arity=2);Opal.const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze());self.$extend($$($nesting,"Deprecation"));self.$private();Opal.const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze());Opal.def(self,"$check_policy_validity",$TreeRewriter_check_policy_validity$14=function $$check_policy_validity(){var self=this,invalid=nil;invalid=$rb_minus(self.policy.$values(),$$($nesting,"ACTIONS"));if($truthy(invalid["$empty?"]())){return nil}else{return self.$raise($$($nesting,"ArgumentError"),""+"Invalid policy: "+invalid.$join(", "))}},$TreeRewriter_check_policy_validity$14.$$arity=0);Opal.def(self,"$combine",$TreeRewriter_combine$15=function $$combine(range,attributes){var self=this,action=nil;range=self.$check_range_validity(range);action=$$$($$($nesting,"TreeRewriter"),"Action").$new(range,self.enforcer,attributes);self.action_root=self.action_root.$combine(action);return self},$TreeRewriter_combine$15.$$arity=2);Opal.def(self,"$check_range_validity",$TreeRewriter_check_range_validity$16=function $$check_range_validity(range){var $a,self=this;if($truthy($truthy($a=$rb_lt(range.$begin_pos(),0))?$a:$rb_gt(range.$end_pos(),self.source_buffer.$source().$size()))){self.$raise($$($nesting,"IndexError"),""+"The range "+range+" is outside the bounds of the source")}return range},$TreeRewriter_check_range_validity$16.$$arity=1);Opal.def(self,"$enforce_policy",$TreeRewriter_enforce_policy$17=function $$enforce_policy(event){var $iter=$TreeRewriter_enforce_policy$17.$$p,$yield=$iter||nil,self=this,values=nil;if($iter)$TreeRewriter_enforce_policy$17.$$p=null;if(self.policy["$[]"](event)["$=="]("accept")){return nil}if($truthy(values=Opal.yieldX($yield,[]))){}else{return nil}return self.$trigger_policy(event,Opal.to_hash(values))},$TreeRewriter_enforce_policy$17.$$arity=1);Opal.const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze());return(Opal.def(self,"$trigger_policy",$TreeRewriter_trigger_policy$18=function $$trigger_policy(event,$kwargs){var range,conflict,arguments$,$a,$b,self=this,action=nil,diag=nil,highlights=nil;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}range=$kwargs.$$smap["range"];if(range==null){range=self.$raise()}conflict=$kwargs.$$smap["conflict"];if(conflict==null){conflict=nil}arguments$=Opal.kwrestargs($kwargs,{range:true,conflict:true});action=$truthy($a=self.policy["$[]"](event))?$a:"raise";diag=$$$($$($nesting,"Parser"),"Diagnostic").$new($$($nesting,"POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range);self.diagnostics.$process(diag);if($truthy(conflict)){$b=conflict,$a=Opal.to_ary($b),range=$a[0]==null?nil:$a[0],highlights=$slice.call($a,1),$b;diag=$$$($$($nesting,"Parser"),"Diagnostic").$new($$($nesting,"POLICY_TO_LEVEL")["$[]"](action),""+event+"_conflict",arguments$,range,highlights);self.diagnostics.$process(diag)}if(action["$=="]("raise")){return self.$raise($$$($$($nesting,"Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering")}else{return nil}},$TreeRewriter_trigger_policy$18.$$arity=-2),nil)&&"trigger_policy"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$freeze","$insertion?","$replacement","$do_combine","$empty?","$<<","$begin","$concat","$flat_map","$sort_by","$to_proc","$end","$!","$insert_before","$insert_after","$protected","$swallow","$new","$class","$==","$range","$merge","$place_in_hierachy","$group_by","$relationship_with","$[]","$fuse_deletions","$with","$inject","$map","$contains?","$contained?","$disjoint?","$call","$call_enforcer_for_merge","$!=","$select"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Action");var $nesting=[self].concat($parent_nesting),$Action_initialize$1,$Action_combine$2,$Action_ordered_replacements$3,$Action_insertion$ques$4,$Action_with$5,$Action_do_combine$6,$Action_place_in_hierachy$7,$Action_fuse_deletions$9,$Action_relationship_with$10,$Action_merge$13,$Action_call_enforcer_for_merge$14,$Action_swallow$16;self.$$prototype.insert_before=self.$$prototype.range=self.$$prototype.replacement=self.$$prototype.children=self.$$prototype.insert_after=self.$$prototype.enforcer=nil;self.$attr_reader("range","replacement","insert_before","insert_after");Opal.def(self,"$initialize",$Action_initialize$1=function $$initialize(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}insert_before=$kwargs.$$smap["insert_before"];if(insert_before==null){insert_before=""}replacement=$kwargs.$$smap["replacement"];if(replacement==null){replacement=nil}insert_after=$kwargs.$$smap["insert_after"];if(insert_after==null){insert_after=""}children=$kwargs.$$smap["children"];if(children==null){children=[]}$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],self.range=$a[0],self.enforcer=$a[1],self.children=$a[2],self.insert_before=$a[3],self.replacement=$a[4],self.insert_after=$a[5],$a;return self.$freeze()},$Action_initialize$1.$$arity=-3);Opal.def(self,"$combine",$Action_combine$2=function $$combine(action){var $a,self=this;if($truthy($truthy($a=action["$insertion?"]())?$a:action.$replacement())){}else{return self}return self.$do_combine(action)},$Action_combine$2.$$arity=1);Opal.def(self,"$ordered_replacements",$Action_ordered_replacements$3=function $$ordered_replacements(){var self=this,reps=nil;reps=[];if($truthy(self.insert_before["$empty?"]())){}else{reps["$<<"]([self.range.$begin(),self.insert_before])}if($truthy(self.replacement)){reps["$<<"]([self.range,self.replacement])}reps.$concat($send($send(self.children,"sort_by",[],"range".$to_proc()),"flat_map",[],"ordered_replacements".$to_proc()));if($truthy(self.insert_after["$empty?"]())){}else{reps["$<<"]([self.range.$end(),self.insert_after])}return reps},$Action_ordered_replacements$3.$$arity=0);Opal.def(self,"$insertion?",$Action_insertion$ques$4=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$insert_before()["$empty?"]()["$!"]())?$b:self.$insert_after()["$empty?"]()["$!"]())?$a:$truthy($b=self.$replacement())?self.$replacement()["$empty?"]()["$!"]():$b},$Action_insertion$ques$4.$$arity=0);self.$protected();Opal.def(self,"$with",$Action_with$5=function($kwargs){var range,children,insert_before,replacement,insert_after,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}range=$kwargs.$$smap["range"];if(range==null){range=self.range}children=$kwargs.$$smap["children"];if(children==null){children=self.children}insert_before=$kwargs.$$smap["insert_before"];if(insert_before==null){insert_before=self.insert_before}replacement=$kwargs.$$smap["replacement"];if(replacement==null){replacement=self.replacement}insert_after=$kwargs.$$smap["insert_after"];if(insert_after==null){insert_after=self.insert_after}if($truthy(replacement)){children=self.$swallow(children)}return self.$class().$new(range,self.enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))},$Action_with$5.$$arity=-1);Opal.def(self,"$do_combine",$Action_do_combine$6=function $$do_combine(action){var self=this;if(action.$range()["$=="](self.range)){return self.$merge(action)}else{return self.$place_in_hierachy(action)}},$Action_do_combine$6.$$arity=1);Opal.def(self,"$place_in_hierachy",$Action_place_in_hierachy$7=function $$place_in_hierachy(action){var $$8,self=this,family=nil,extra_sibbling=nil;family=$send(self.children,"group_by",[],($$8=function(child){var self=$$8.$$s||this;if(child==null){child=nil}return child.$relationship_with(action)},$$8.$$s=self,$$8.$$arity=1,$$8));if($truthy(family["$[]"]("fusible"))){return self.$fuse_deletions(action,family["$[]"]("fusible"),[].concat(Opal.to_a(family["$[]"]("sibbling"))).concat(Opal.to_a(family["$[]"]("child"))))}else{extra_sibbling=function(){if($truthy(family["$[]"]("parent"))){return family["$[]"]("parent")["$[]"](0).$do_combine(action)}else if($truthy(family["$[]"]("child"))){return action.$with($hash2(["children"],{children:family["$[]"]("child")}))}else{return action}return nil}();return self.$with($hash2(["children"],{children:[].concat(Opal.to_a(family["$[]"]("sibbling"))).concat([extra_sibbling])}))}},$Action_place_in_hierachy$7.$$arity=1);Opal.def(self,"$fuse_deletions",$Action_fuse_deletions$9=function $$fuse_deletions(action,fusible,other_sibblings){var self=this,without_fusible=nil,fused_range=nil,fused_deletion=nil;without_fusible=self.$with($hash2(["children"],{children:other_sibblings}));fused_range=$send([action].concat(Opal.to_a(fusible)),"map",[],"range".$to_proc()).$inject("join");fused_deletion=action.$with($hash2(["range"],{range:fused_range}));return without_fusible.$do_combine(fused_deletion)},$Action_fuse_deletions$9.$$arity=3);Opal.def(self,"$relationship_with",$Action_relationship_with$10=function $$relationship_with(action){var $a,$$11,$$12,self=this;if($truthy($truthy($a=action.$range()["$=="](self.range))?$a:self.range["$contains?"](action.$range()))){return"parent"}else if($truthy(self.range["$contained?"](action.$range()))){return"child"}else if($truthy(self.range["$disjoint?"](action.$range()))){return"sibbling"}else if($truthy($truthy($a=action["$insertion?"]()["$!"]())?self["$insertion?"]()["$!"]():$a)){$send(self.enforcer,"call",["crossing_deletions"],($$11=function(){var self=$$11.$$s||this;if(self.range==null)self.range=nil;return $hash2(["range","conflict"],{range:action.$range(),conflict:self.range})},$$11.$$s=self,$$11.$$arity=0,$$11));return"fusible"}else{return $send(self.enforcer,"call",["crossing_insertions"],($$12=function(){var self=$$12.$$s||this;if(self.range==null)self.range=nil;return $hash2(["range","conflict"],{range:action.$range(),conflict:self.range})},$$12.$$s=self,$$12.$$arity=0,$$12))}},$Action_relationship_with$10.$$arity=1);Opal.def(self,"$merge",$Action_merge$13=function $$merge(action){var $a,self=this;self.$call_enforcer_for_merge(action);return self.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+self.$insert_before(),replacement:$truthy($a=action.$replacement())?$a:self.replacement,insert_after:""+self.$insert_after()+action.$insert_after()}))},$Action_merge$13.$$arity=1);Opal.def(self,"$call_enforcer_for_merge",$Action_call_enforcer_for_merge$14=function $$call_enforcer_for_merge(action){var $$15,self=this;return $send(self.enforcer,"call",["different_replacements"],($$15=function(){var self=$$15.$$s||this,$a,$b;if(self.replacement==null)self.replacement=nil;if(self.range==null)self.range=nil;if($truthy($truthy($a=$truthy($b=self.replacement)?action.$replacement():$b)?self.replacement["$!="](action.$replacement()):$a)){return $hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement})}else{return nil}},$$15.$$s=self,$$15.$$arity=0,$$15))},$Action_call_enforcer_for_merge$14.$$arity=1);return(Opal.def(self,"$swallow",$Action_swallow$16=function $$swallow(children){var $$17,self=this;$send(self.enforcer,"call",["swallowed_insertions"],($$17=function(){var self=$$17.$$s||this,insertions=nil;if(self.range==null)self.range=nil;insertions=$send(children,"select",[],"insertion?".$to_proc());if($truthy(insertions["$empty?"]())){return nil}else{return $hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}},$$17.$$s=self,$$17.$$arity=0,$$17));return[]},$Action_swallow$16.$$arity=1),nil)&&"swallow"})($$($nesting,"TreeRewriter"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$attr_reader","$freeze","$line","$alias_method","$column","$last_line","$last_column","$with","$update_expression","$==","$class","$reduce","$map","$instance_variables","$instance_variable_get","$send","$inject","$to_sym","$[]","$[]=","$-","$protected","$tap","$dup","$to_proc"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Map");var $nesting=[self].concat($parent_nesting),$Map_initialize$1,$Map_initialize_copy$2,$Map_node$eq$3,$Map_line$4,$Map_column$5,$Map_last_line$6,$Map_last_column$7,$Map_with_expression$8,$Map_$eq_eq$10,$Map_to_hash$12,$Map_with$14,$Map_update_expression$15;self.$$prototype.node=self.$$prototype.expression=nil;self.$attr_reader("node");self.$attr_reader("expression");Opal.def(self,"$initialize",$Map_initialize$1=function $$initialize(expression){var self=this;return self.expression=expression},$Map_initialize$1.$$arity=1);Opal.def(self,"$initialize_copy",$Map_initialize_copy$2=function $$initialize_copy(other){var $iter=$Map_initialize_copy$2.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Map_initialize_copy$2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize_copy",$Map_initialize_copy$2,false),$zuper,$iter);return self.node=nil},$Map_initialize_copy$2.$$arity=1);Opal.def(self,"$node=",$Map_node$eq$3=function(node){var self=this;self.node=node;self.$freeze();return self.node},$Map_node$eq$3.$$arity=1);Opal.def(self,"$line",$Map_line$4=function $$line(){var self=this;return self.expression.$line()},$Map_line$4.$$arity=0);self.$alias_method("first_line","line");Opal.def(self,"$column",$Map_column$5=function $$column(){var self=this;return self.expression.$column()},$Map_column$5.$$arity=0);Opal.def(self,"$last_line",$Map_last_line$6=function $$last_line(){var self=this;return self.expression.$last_line()},$Map_last_line$6.$$arity=0);Opal.def(self,"$last_column",$Map_last_column$7=function $$last_column(){var self=this;return self.expression.$last_column()},$Map_last_column$7.$$arity=0);Opal.def(self,"$with_expression",$Map_with_expression$8=function $$with_expression(expression_l){var $$9,self=this;return $send(self,"with",[],($$9=function(map){var self=$$9.$$s||this;if(map==null){map=nil}return map.$update_expression(expression_l)},$$9.$$s=self,$$9.$$arity=1,$$9))},$Map_with_expression$8.$$arity=1);Opal.def(self,"$==",$Map_$eq_eq$10=function(other){var $a,$$11,self=this;return($a=other.$class()["$=="](self.$class()))?$send(self.$instance_variables(),"map",[],($$11=function(ivar){var self=$$11.$$s||this;if(ivar==null){ivar=nil}return self.$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))},$$11.$$s=self,$$11.$$arity=1,$$11)).$reduce("&"):other.$class()["$=="](self.$class())},$Map_$eq_eq$10.$$arity=1);Opal.def(self,"$to_hash",$Map_to_hash$12=function $$to_hash(){var $$13,self=this;return $send(self.$instance_variables(),"inject",[$hash2([],{})],($$13=function(hash,ivar){var self=$$13.$$s||this,$writer=nil;if(hash==null){hash=nil}if(ivar==null){ivar=nil}if(ivar.$to_sym()["$=="]("@node")){return hash}$writer=[ivar["$[]"]($range(1,-1,false)).$to_sym(),self.$instance_variable_get(ivar)];$send(hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return hash},$$13.$$s=self,$$13.$$arity=2,$$13))},$Map_to_hash$12.$$arity=0);self.$protected();Opal.def(self,"$with",$Map_with$14=function(){var $iter=$Map_with$14.$$p,block=$iter||nil,self=this;if($iter)$Map_with$14.$$p=null;if($iter)$Map_with$14.$$p=null;return $send(self.$dup(),"tap",[],block.$to_proc())},$Map_with$14.$$arity=0);return(Opal.def(self,"$update_expression",$Map_update_expression$15=function $$update_expression(expression_l){var self=this;return self.expression=expression_l},$Map_update_expression$15.$$arity=1),nil)&&"update_expression"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/operator"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Operator");var $nesting=[self].concat($parent_nesting),$Operator_initialize$1;self.$attr_reader("operator");return(Opal.def(self,"$initialize",$Operator_initialize$1=function $$initialize(operator,expression){var $iter=$Operator_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Operator_initialize$1.$$p=null;self.operator=operator;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Operator_initialize$1,false),[expression],null)},$Operator_initialize$1.$$arity=2),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/collection"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Collection");var $nesting=[self].concat($parent_nesting),$Collection_initialize$1;self.$attr_reader("begin");self.$attr_reader("end");return(Opal.def(self,"$initialize",$Collection_initialize$1=function $$initialize(begin_l,end_l,expression_l){var $a,$iter=$Collection_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Collection_initialize$1.$$p=null;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Collection_initialize$1,false),[expression_l],null)},$Collection_initialize$1.$$arity=3),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/constant"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Constant");var $nesting=[self].concat($parent_nesting),$Constant_initialize$1,$Constant_with_operator$2,$Constant_update_operator$4;self.$attr_reader("double_colon");self.$attr_reader("name");self.$attr_reader("operator");Opal.def(self,"$initialize",$Constant_initialize$1=function $$initialize(double_colon,name,expression){var $a,$iter=$Constant_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Constant_initialize$1.$$p=null;$a=[double_colon,name],self.double_colon=$a[0],self.name=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Constant_initialize$1,false),[expression],null)},$Constant_initialize$1.$$arity=3);Opal.def(self,"$with_operator",$Constant_with_operator$2=function $$with_operator(operator_l){var $$3,self=this;return $send(self,"with",[],($$3=function(map){var self=$$3.$$s||this;if(map==null){map=nil}return map.$update_operator(operator_l)},$$3.$$s=self,$$3.$$arity=1,$$3))},$Constant_with_operator$2.$$arity=1);self.$protected();return(Opal.def(self,"$update_operator",$Constant_update_operator$4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},$Constant_update_operator$4.$$arity=1),nil)&&"update_operator"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/variable"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Variable");var $nesting=[self].concat($parent_nesting),$Variable_initialize$1,$Variable_with_operator$2,$Variable_update_operator$4;self.$attr_reader("name");self.$attr_reader("operator");Opal.def(self,"$initialize",$Variable_initialize$1=function $$initialize(name_l,expression_l){var $iter=$Variable_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Variable_initialize$1.$$p=null;if(expression_l==null){expression_l=name_l}self.name=name_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Variable_initialize$1,false),[expression_l],null)},$Variable_initialize$1.$$arity=-2);Opal.def(self,"$with_operator",$Variable_with_operator$2=function $$with_operator(operator_l){var $$3,self=this;return $send(self,"with",[],($$3=function(map){var self=$$3.$$s||this;if(map==null){map=nil}return map.$update_operator(operator_l)},$$3.$$s=self,$$3.$$arity=1,$$3))},$Variable_with_operator$2.$$arity=1);self.$protected();return(Opal.def(self,"$update_operator",$Variable_update_operator$4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},$Variable_update_operator$4.$$arity=1),nil)&&"update_operator"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/keyword"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Keyword");var $nesting=[self].concat($parent_nesting),$Keyword_initialize$1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("end");return(Opal.def(self,"$initialize",$Keyword_initialize$1=function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a,$iter=$Keyword_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Keyword_initialize$1.$$p=null;self.keyword=keyword_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Keyword_initialize$1,false),[expression_l],null)},$Keyword_initialize$1.$$arity=4),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/definition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$join"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Definition");var $nesting=[self].concat($parent_nesting),$Definition_initialize$1;self.$$prototype.keyword=self.$$prototype.end=nil;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("name");self.$attr_reader("end");return(Opal.def(self,"$initialize",$Definition_initialize$1=function $$initialize(keyword_l,operator_l,name_l,end_l){var $iter=$Definition_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Definition_initialize$1.$$p=null;self.keyword=keyword_l;self.operator=operator_l;self.name=name_l;self.end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Definition_initialize$1,false),[self.keyword.$join(self.end)],null)},$Definition_initialize$1.$$arity=4),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/send"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Send");var $nesting=[self].concat($parent_nesting),$Send_initialize$1,$Send_with_operator$2,$Send_update_operator$4;self.$attr_reader("dot");self.$attr_reader("selector");self.$attr_reader("operator");self.$attr_reader("begin");self.$attr_reader("end");Opal.def(self,"$initialize",$Send_initialize$1=function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a,$iter=$Send_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Send_initialize$1.$$p=null;self.dot=dot_l;self.selector=selector_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Send_initialize$1,false),[expression_l],null)},$Send_initialize$1.$$arity=5);Opal.def(self,"$with_operator",$Send_with_operator$2=function $$with_operator(operator_l){var $$3,self=this;return $send(self,"with",[],($$3=function(map){var self=$$3.$$s||this;if(map==null){map=nil}return map.$update_operator(operator_l)},$$3.$$s=self,$$3.$$arity=1,$$3))},$Send_with_operator$2.$$arity=1);self.$protected();return(Opal.def(self,"$update_operator",$Send_update_operator$4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},$Send_update_operator$4.$$arity=1),nil)&&"update_operator"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/index"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Index");var $nesting=[self].concat($parent_nesting),$Index_initialize$1,$Index_with_operator$2,$Index_update_operator$4;self.$attr_reader("begin");self.$attr_reader("end");self.$attr_reader("operator");Opal.def(self,"$initialize",$Index_initialize$1=function $$initialize(begin_l,end_l,expression_l){var $a,$iter=$Index_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Index_initialize$1.$$p=null;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;self.operator=nil;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Index_initialize$1,false),[expression_l],null)},$Index_initialize$1.$$arity=3);Opal.def(self,"$with_operator",$Index_with_operator$2=function $$with_operator(operator_l){var $$3,self=this;return $send(self,"with",[],($$3=function(map){var self=$$3.$$s||this;if(map==null){map=nil}return map.$update_operator(operator_l)},$$3.$$s=self,$$3.$$arity=1,$$3))},$Index_with_operator$2.$$arity=1);self.$protected();return(Opal.def(self,"$update_operator",$Index_update_operator$4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},$Index_update_operator$4.$$arity=1),nil)&&"update_operator"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/condition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Condition");var $nesting=[self].concat($parent_nesting),$Condition_initialize$1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("else");self.$attr_reader("end");return(Opal.def(self,"$initialize",$Condition_initialize$1=function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a,$iter=$Condition_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Condition_initialize$1.$$p=null;self.keyword=keyword_l;$a=[begin_l,else_l,end_l],self.begin=$a[0],self["else"]=$a[1],self.end=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Condition_initialize$1,false),[expression_l],null)},$Condition_initialize$1.$$arity=5),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/ternary"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Ternary");var $nesting=[self].concat($parent_nesting),$Ternary_initialize$1;self.$attr_reader("question");self.$attr_reader("colon");return(Opal.def(self,"$initialize",$Ternary_initialize$1=function $$initialize(question_l,colon_l,expression_l){var $a,$iter=$Ternary_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Ternary_initialize$1.$$p=null;$a=[question_l,colon_l],self.question=$a[0],self.colon=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Ternary_initialize$1,false),[expression_l],null)},$Ternary_initialize$1.$$arity=3),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/for"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"For");var $nesting=[self].concat($parent_nesting),$For_initialize$1;self.$attr_reader("keyword","in");self.$attr_reader("begin","end");return(Opal.def(self,"$initialize",$For_initialize$1=function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a,$iter=$For_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$For_initialize$1.$$p=null;$a=[keyword_l,in_l],self.keyword=$a[0],self["in"]=$a[1],$a;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$For_initialize$1,false),[expression_l],null)},$For_initialize$1.$$arity=5),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/rescue_body"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RescueBody");var $nesting=[self].concat($parent_nesting),$RescueBody_initialize$1;self.$attr_reader("keyword");self.$attr_reader("assoc");self.$attr_reader("begin");return(Opal.def(self,"$initialize",$RescueBody_initialize$1=function $$initialize(keyword_l,assoc_l,begin_l,expression_l){var $iter=$RescueBody_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$RescueBody_initialize$1.$$p=null;self.keyword=keyword_l;self.assoc=assoc_l;self.begin=begin_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",$RescueBody_initialize$1,false),[expression_l],null)},$RescueBody_initialize$1.$$arity=4),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/heredoc"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Heredoc");var $nesting=[self].concat($parent_nesting),$Heredoc_initialize$1;self.$attr_reader("heredoc_body");self.$attr_reader("heredoc_end");return(Opal.def(self,"$initialize",$Heredoc_initialize$1=function $$initialize(begin_l,body_l,end_l){var $iter=$Heredoc_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$Heredoc_initialize$1.$$p=null;self.heredoc_body=body_l;self.heredoc_end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Heredoc_initialize$1,false),[begin_l],null)},$Heredoc_initialize$1.$$arity=3),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ObjcKwarg");var $nesting=[self].concat($parent_nesting),$ObjcKwarg_initialize$1;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("argument");return(Opal.def(self,"$initialize",$ObjcKwarg_initialize$1=function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a,$iter=$ObjcKwarg_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$ObjcKwarg_initialize$1.$$p=null;$a=[keyword_l,operator_l,argument_l],self.keyword=$a[0],self.operator=$a[1],self.argument=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",$ObjcKwarg_initialize$1,false),[expression_l],null)},$ObjcKwarg_initialize$1.$$arity=4),nil)&&"initialize"})($$($nesting,"Map"),$$($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/syntax_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$message"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SyntaxError");var $nesting=[self].concat($parent_nesting),$SyntaxError_initialize$1;self.$attr_reader("diagnostic");return(Opal.def(self,"$initialize",$SyntaxError_initialize$1=function $$initialize(diagnostic){var $iter=$SyntaxError_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$SyntaxError_initialize$1.$$p=null;self.diagnostic=diagnostic;return $send(self,Opal.find_super_dispatcher(self,"initialize",$SyntaxError_initialize$1,false),[diagnostic.$message()],null)},$SyntaxError_initialize$1.$$arity=1),nil)&&"initialize"})($nesting[0],$$($nesting,"StandardError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/clobbering_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ClobberingError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"RuntimeError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$freeze","$attr_reader","$include?","$raise","$join","$inspect","$dup","$%","$[]","$==","$line","$last_line","$is?","$+","$message","$render_line","$first_line_only","$last_line_only","$-","$source_buffer","$decompose_position","$end_pos","$>","$private","$source_line","$*","$length","$each","$line_range","$intersect","$column_range","$size","$[]=","$!","$>=","$map","$name","$!=","$resize","$=~","$source","$adjust"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Diagnostic");var $nesting=[self].concat($parent_nesting),$Diagnostic_initialize$1,$Diagnostic_message$2,$Diagnostic_render$3,$Diagnostic_render_line$4,$Diagnostic_first_line_only$7,$Diagnostic_last_line_only$8;self.$$prototype.reason=self.$$prototype["arguments"]=self.$$prototype.location=self.$$prototype.level=self.$$prototype.highlights=nil;Opal.const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze());self.$attr_reader("level","reason","arguments");self.$attr_reader("location","highlights");Opal.def(self,"$initialize",$Diagnostic_initialize$1=function $$initialize(level,reason,arguments$,location,highlights){var $a,self=this;if(highlights==null){highlights=[]}if($truthy($$($nesting,"LEVELS")["$include?"](level))){}else{self.$raise($$($nesting,"ArgumentError"),""+(""+"Diagnostic#level must be one of "+$$($nesting,"LEVELS").$join(", ")+"; ")+(""+level.$inspect()+" provided."))}if($truthy(location)){}else{self.$raise("Expected a location")}self.level=level;self.reason=reason;self["arguments"]=($truthy($a=arguments$)?$a:$hash2([],{})).$dup().$freeze();self.location=location;self.highlights=highlights.$dup().$freeze();return self.$freeze()},$Diagnostic_initialize$1.$$arity=-5);Opal.def(self,"$message",$Diagnostic_message$2=function $$message(){var self=this;return $$($nesting,"MESSAGES")["$[]"](self.reason)["$%"](self["arguments"])},$Diagnostic_message$2.$$arity=0);Opal.def(self,"$render",$Diagnostic_render$3=function $$render(){var $a,$b,self=this,first_line=nil,last_line=nil,num_lines=nil,buffer=nil,last_lineno=nil,last_column=nil;if($truthy($truthy($a=self.location.$line()["$=="](self.location.$last_line()))?$a:self.location["$is?"]("\n"))){return $rb_plus([""+self.location+": "+self.level+": "+self.$message()],self.$render_line(self.location))}else{first_line=self.$first_line_only(self.location);last_line=self.$last_line_only(self.location);num_lines=$rb_plus($rb_minus(self.location.$last_line(),self.location.$line()),1);buffer=self.location.$source_buffer();$b=buffer.$decompose_position(self.location.$end_pos()),$a=Opal.to_ary($b),last_lineno=$a[0]==null?nil:$a[0],last_column=$a[1]==null?nil:$a[1],$b;return $rb_plus($rb_plus([""+self.location+"-"+last_lineno+":"+last_column+": "+self.level+": "+self.$message()],self.$render_line(first_line,$rb_gt(num_lines,2),false)),self.$render_line(last_line,false,true))}},$Diagnostic_render$3.$$arity=0);self.$private();Opal.def(self,"$render_line",$Diagnostic_render_line$4=function $$render_line(range,ellipsis,range_end){var $$5,$a,$$6,self=this,source_line=nil,highlight_line=nil,$writer=nil;if(ellipsis==null){ellipsis=false}if(range_end==null){range_end=false}source_line=range.$source_line();highlight_line=$rb_times(" ",source_line.$length());$send(self.highlights,"each",[],($$5=function(highlight){var self=$$5.$$s||this,line_range=nil,$writer=nil;if(highlight==null){highlight=nil}line_range=range.$source_buffer().$line_range(range.$line());if($truthy(highlight=highlight.$intersect(line_range))){$writer=[highlight.$column_range(),$rb_times("~",highlight.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},$$5.$$s=self,$$5.$$arity=1,$$5));if($truthy(range["$is?"]("\n"))){highlight_line=$rb_plus(highlight_line,"^")}else if($truthy($truthy($a=range_end["$!"]())?$rb_ge(range.$size(),1):$a)){$writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[range.$column_range(),$rb_times("~",range.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(ellipsis)){highlight_line=$rb_plus(highlight_line,"...")}return $send([source_line,highlight_line],"map",[],($$6=function(line){var self=$$6.$$s||this;if(line==null){line=nil}return""+range.$source_buffer().$name()+":"+range.$line()+": "+line},$$6.$$s=self,$$6.$$arity=1,$$6))},$Diagnostic_render_line$4.$$arity=-2);Opal.def(self,"$first_line_only",$Diagnostic_first_line_only$7=function $$first_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return range.$resize(range.$source()["$=~"](/\n/))}else{return range}},$Diagnostic_first_line_only$7.$$arity=1);return(Opal.def(self,"$last_line_only",$Diagnostic_last_line_only$8=function $$last_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)}))}else{return range}},$Diagnostic_last_line_only$8.$$arity=1),nil)&&"last_line_only"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic/engine"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$ignore?","$call","$raise?","$raise","$protected","$==","$level"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Engine");var $nesting=[self].concat($parent_nesting),$Engine_initialize$1,$Engine_process$2,$Engine_ignore$ques$3,$Engine_raise$ques$4;self.$$prototype.consumer=self.$$prototype.ignore_warnings=self.$$prototype.all_errors_are_fatal=nil;self.$attr_accessor("consumer");self.$attr_accessor("all_errors_are_fatal");self.$attr_accessor("ignore_warnings");Opal.def(self,"$initialize",$Engine_initialize$1=function $$initialize(consumer){var self=this;if(consumer==null){consumer=nil}self.consumer=consumer;self.all_errors_are_fatal=false;return self.ignore_warnings=false},$Engine_initialize$1.$$arity=-1);Opal.def(self,"$process",$Engine_process$2=function $$process(diagnostic){var self=this;if($truthy(self["$ignore?"](diagnostic))){}else if($truthy(self.consumer)){self.consumer.$call(diagnostic)}if($truthy(self["$raise?"](diagnostic))){self.$raise($$$($$($nesting,"Parser"),"SyntaxError"),diagnostic)}return self},$Engine_process$2.$$arity=1);self.$protected();Opal.def(self,"$ignore?",$Engine_ignore$ques$3=function(diagnostic){var $a,self=this;return $truthy($a=self.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$a},$Engine_ignore$ques$3.$$arity=1);return(Opal.def(self,"$raise?",$Engine_raise$ques$4=function(diagnostic){var $a,$b,self=this;return $truthy($a=$truthy($b=self.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$b)?$a:diagnostic.$level()["$=="]("fatal")},$Engine_raise$ques$4.$$arity=1),nil)&&"raise?"})($$($nesting,"Diagnostic"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/static_environment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$reset","$[]","$push","$dup","$pop","$add","$to_sym","$include?"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"StaticEnvironment");var $nesting=[self].concat($parent_nesting),$StaticEnvironment_initialize$1,$StaticEnvironment_reset$2,$StaticEnvironment_extend_static$3,$StaticEnvironment_extend_dynamic$4,$StaticEnvironment_unextend$5,$StaticEnvironment_declare$6,$StaticEnvironment_declared$ques$7;self.$$prototype.stack=self.$$prototype.variables=nil;Opal.def(self,"$initialize",$StaticEnvironment_initialize$1=function $$initialize(){var self=this;return self.$reset()},$StaticEnvironment_initialize$1.$$arity=0);Opal.def(self,"$reset",$StaticEnvironment_reset$2=function $$reset(){var self=this;self.variables=$$($nesting,"Set")["$[]"]();return self.stack=[]},$StaticEnvironment_reset$2.$$arity=0);Opal.def(self,"$extend_static",$StaticEnvironment_extend_static$3=function $$extend_static(){var self=this;self.stack.$push(self.variables);self.variables=$$($nesting,"Set")["$[]"]();return self},$StaticEnvironment_extend_static$3.$$arity=0);Opal.def(self,"$extend_dynamic",$StaticEnvironment_extend_dynamic$4=function $$extend_dynamic(){var self=this;self.stack.$push(self.variables);self.variables=self.variables.$dup();return self},$StaticEnvironment_extend_dynamic$4.$$arity=0);Opal.def(self,"$unextend",$StaticEnvironment_unextend$5=function $$unextend(){var self=this;self.variables=self.stack.$pop();return self},$StaticEnvironment_unextend$5.$$arity=0);Opal.def(self,"$declare",$StaticEnvironment_declare$6=function $$declare(name){var self=this;self.variables.$add(name.$to_sym());return self},$StaticEnvironment_declare$6.$$arity=1);return(Opal.def(self,"$declared?",$StaticEnvironment_declared$ques$7=function(name){var self=this;return self.variables["$include?"](name.$to_sym())},$StaticEnvironment_declared$ques$7.$$arity=1),nil)&&"declared?"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$!=","$emit_comment","$tok","$literal","$flush_string","$extend_content","$emit","$heredoc?","$saved_herebody_s=","$start_interp_brace","$[]=","$diagnostic","$range","$str_s","$gsub","$version?","$nest_and_try_closing","$heredoc_e","$pop_literal","$infer_indent_level","$words?","$!","$eof_codepoint?","$extend_space","$extend_string","$>=","$active?","$slice","$chr","$munge_escape?","$regexp?","$match","$squiggly_heredoc?","$supports_line_continuation_via_slash?","$scan","$join","$=~","$to_i","$stack_pop","$<","$in_block?","$in_lambda?","$can_have_numparams?","$register","$emit_table","$push_literal","$arg_or_cmdarg","$emit_do","$nil?","$declared?","$getbyte","$lexpop","$inspect","$end_with?","$empty?","$index","$call","$Float","$last","$to_f","$length","$lambda","$Rational","$Complex","$start_with?","$each","$encode_escape","$%","$end_interp_brace_and_try_closing","$saved_herebody_s","$next_state_for_literal","$rstrip","$&","$|","$include?","$lex_error","$protected","$force_encoding","$process","$backslash_delimited?","$interpolate?","$lex_en_interp_backslash_delimited_words","$lex_en_plain_backslash_delimited_words","$lex_en_plain_words","$lex_en_interp_backslash_delimited","$lex_en_plain_backslash_delimited","$dedent_level","$type","$lex_en_regexp_modifiers","$upcase"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lexer");var $nesting=[self].concat($parent_nesting),$Lexer_initialize$1,$Lexer_reset$2,$Lexer_source_buffer$eq$3,$Lexer_encoding$4,$Lexer_state$5,$Lexer_state$eq$6,$Lexer_push_cmdarg$7,$Lexer_pop_cmdarg$8,$Lexer_push_cond$9,$Lexer_pop_cond$10,$Lexer_max_numparam$11,$Lexer_dedent_level$12,$Lexer_advance$13,$Lexer_eof_codepoint$ques$43,$Lexer_version$ques$44,$Lexer_stack_pop$45,$Lexer_encode_escape$46,$Lexer_tok$47,$Lexer_range$48,$Lexer_emit$49,$Lexer_emit_table$50,$Lexer_emit_do$51,$Lexer_arg_or_cmdarg$52,$Lexer_emit_comment$53,$Lexer_diagnostic$54,$Lexer_push_literal$55,$Lexer_next_state_for_literal$56,$Lexer_literal$57,$Lexer_pop_literal$58,$Lexer$59,$writer=nil;self.$$prototype.source_buffer=self.$$prototype.source_pts=self.$$prototype.cs=self.$$prototype.cmdarg_stack=self.$$prototype.cmdarg=self.$$prototype.cond_stack=self.$$prototype.cond=self.$$prototype.max_numparam_stack=self.$$prototype.dedent_level=self.$$prototype.token_queue=self.$$prototype.p=self.$$prototype.command_start=self.$$prototype.herebody_s=self.$$prototype.sharp_s=self.$$prototype.ts=self.$$prototype.te=self.$$prototype.top=self.$$prototype.stack=self.$$prototype.version=self.$$prototype.escape_s=self.$$prototype.escape=self.$$prototype.context=self.$$prototype.act=self.$$prototype.static_env=self.$$prototype.lambda_stack=self.$$prototype.paren_nest=self.$$prototype.num_digits_s=self.$$prototype.num_suffix_s=self.$$prototype.num_base=self.$$prototype.num_xfrm=self.$$prototype.newline_s=self.$$prototype.eq_begin_s=self.$$prototype.cs_before_block_comment=self.$$prototype.in_kwarg=self.$$prototype.tokens=self.$$prototype.comments=self.$$prototype.diagnostics=self.$$prototype.literal_stack=nil;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_keys");return self.$private("_lex_trans_keys","_lex_trans_keys=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,26,0,127,58,58,58,58,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,122,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,10,10,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,46,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,26,0,35,9,32,36,123,0,127,48,57,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,65,122,0,122,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,58,46,46,48,101,48,95,9,92,9,92,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,46,9,46,46,46,10,61,10,10,10,101,10,110,10,100,10,10,0]];$send(self,"_lex_trans_keys=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_key_spans");return self.$private("_lex_key_spans","_lex_key_spans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,123,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,1,1,128,15,10,10,1,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,38,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,27,36,24,88,128,10,33,24,58,58,29,128,10,128,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,58,123,24,0,20,1,84,84,84,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,13,1,54,48,84,84,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,38,38,1,52,1,92,101,91,1]];$send(self,"_lex_key_spans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_index_offsets");return self.$private("_lex_index_offsets","_lex_index_offsets=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,688,767,861,889,917,964,1065,1093,1127,1129,1223,1302,1406,1535,1664,1793,1922,1969,2048,2127,2221,2249,2277,2324,2425,2453,2487,2489,2583,2662,2766,2895,3024,3153,3282,3411,3540,3669,3798,3927,4056,4185,4314,4443,4471,4600,4602,4604,4733,4735,4737,4739,4741,4870,4999,5128,5257,5386,5515,5644,5773,5902,6031,6160,6289,6418,6547,6676,6805,6934,7063,7065,7067,7069,7071,7081,7083,7085,7087,7089,7091,7093,7095,7097,7226,7228,7357,7442,7444,7529,7531,7533,7535,7537,7539,7541,7665,7667,7752,7837,7922,8007,8092,8094,8223,8352,8419,8421,8550,8679,8681,8683,8685,8687,8816,8904,8906,8953,9032,9111,9205,9233,9261,9308,9409,9437,9471,9473,9567,9646,9750,9879,10008,10137,10266,10395,10524,10526,10528,10657,10673,10684,10695,10697,10708,10719,10721,10723,10725,10727,10729,10731,10733,10862,10864,10949,11034,11119,11204,11289,11374,11376,11378,11417,11419,11516,11541,11542,11544,11546,11548,11573,11575,11577,11671,11696,11785,11914,11925,12047,12048,12049,12058,12067,12068,12069,12163,12164,12165,12166,12260,12262,12263,12264,12265,12359,12406,12500,12594,12595,12596,12690,12737,12739,12833,12910,12966,13022,13078,13079,13206,13333,13334,13461,13462,13589,13716,13843,13970,13971,14098,14225,14352,14479,14606,14733,14734,14735,14791,14792,14886,14975,15104,15115,15237,15238,15239,15248,15257,15258,15259,15353,15354,15355,15356,15450,15452,15453,15454,15455,15549,15596,15690,15784,15785,15786,15880,15927,15929,16023,16100,16156,16212,16268,16269,16396,16523,16524,16651,16652,16779,16906,17033,17160,17161,17288,17415,17542,17669,17796,17923,17924,17925,17981,17982,18076,18101,18129,18223,18251,18288,18377,18506,18517,18545,18582,18607,18696,18825,18836,18870,18895,18954,19013,19043,19172,19183,19312,19441,19570,19699,19828,19853,19854,19921,19923,19925,20054,20183,20194,20196,20198,20200,20202,20204,20207,20209,20276,20278,20281,20410,20539,20668,20797,20926,21055,21184,21186,21188,21317,21446,21575,21704,21833,21962,22091,22220,22349,22478,22607,22736,22865,22994,23123,23252,23381,23510,23639,23768,23897,24026,24155,24284,24413,24542,24671,24800,24929,25058,25187,25316,25445,25574,25703,25832,25961,26090,26219,26348,26477,26606,26735,26864,26993,27122,27251,27380,27509,27638,27767,27896,28025,28154,28283,28412,28541,28670,28799,28928,29057,29186,29315,29444,29573,29702,29831,29960,30089,30218,30347,30476,30605,30734,30863,30992,31121,31250,31379,31508,31637,31766,31895,31897,32026,32155,32180,32182,32184,32186,32187,32316,32445,32447,32448,32473,32474,32541,32543,32545,32547,32549,32551,32554,32556,32623,32625,32628,32757,32759,32761,32763,32891,33020,33083,33137,33191,33192,33246,33301,33303,33305,33307,33332,33333,33462,33463,33580,33581,33583,33585,33586,33640,33642,33644,33646,33671,33673,33802,33804,33806,33808,33810,33939,34068,34197,34198,34327,34329,34454,34479,34481,34483,34485,34486,34488,34489,34618,34747,34772,34773,34775,34777,34779,34780,34909,35038,35167,35296,35425,35554,35683,35812,35941,36070,36199,36328,36457,36586,36715,36844,36973,37102,37107,37108,37175,37177,37178,37179,37180,37205,37207,37232,37299,37301,37303,37362,37486,37511,37512,37533,37535,37620,37705,37790,37792,37794,37822,37951,38080,38082,38083,38150,38153,38154,38155,38156,38157,38224,38353,38364,38366,38368,38370,38373,38375,38377,38380,38509,38520,38649,38651,38653,38656,38657,38683,38714,38716,38718,38785,38788,38912,38913,39042,39171,39293,39294,39295,39304,39313,39314,39315,39409,39410,39411,39412,39506,39508,39509,39510,39511,39605,39652,39746,39840,39841,39842,39936,39983,39985,40079,40156,40212,40268,40324,40325,40452,40579,40580,40707,40708,40835,40962,41089,41216,41217,41344,41471,41598,41725,41852,41979,42106,42233,42360,42487,42614,42741,42868,42995,43122,43249,43376,43503,43630,43631,43632,43688,43689,43818,43947,44076,44077,44079,44080,44209,44338,44467,44596,44725,44854,44983,45112,45241,45370,45499,45628,45757,45886,46015,46144,46273,46402,46531,46660,46789,46918,47047,47176,47305,47434,47563,47692,47821,47950,48079,48208,48337,48466,48595,48724,48853,48982,49111,49240,49369,49498,49627,49756,49885,50014,50143,50272,50401,50530,50659,50788,50917,51046,51175,51304,51433,51562,51691,51820,51949,52016,52145,52274,52403,52532,52661,52790,52919,53048,53177,53306,53435,53564,53693,53822,53951,54080,54209,54338,54467,54596,54725,54854,54983,55112,55241,55242,55307,55401,55426,55427,55429,55431,55433,55434,55563,55692,55717,55718,55720,55722,55724,55725,55854,55983,55985,55986,56011,56012,56079,56081,56083,56212,56341,56352,56354,56379,56380,56381,56402,56405,56419,56421,56476,56525,56610,56695,56771,56839,56855,56914,56916,56917,56923,56924,56925,56993,57061,57129,57197,57208,57210,57211,57217,57219,57220,57221,57289,57357,57425,57493,57561,57629,57697,57765,57835,57903,57973,58041,58043,58046,58048,58115,58117,58120,58249,58378,58379,58508,58637,58766,58895,59024,59153,59154,59156,59157,59286,59415,59544,59673,59802,59931,60060,60189,60318,60447,60576,60705,60834,60963,61092,61221,61350,61479,61608,61737,61866,61995,62124,62253,62382,62511,62640,62769,62898,63027,63156,63285,63414,63543,63672,63801,63930,64015,64144,64273,64402,64531,64660,64789,64918,65047,65176,65305,65434,65563,65692,65821,65950,66079,66208,66337,66466,66595,66724,66853,66982,67111,67240,67369,67498,67627,67756,67885,68014,68143,68272,68401,68530,68659,68788,68917,69046,69175,69304,69433,69562,69691,69820,69949,70078,70207,70336,70465,70594,70723,70852,70981,71110,71239,71368,71497,71626,71755,71884,72013,72142,72271,72400,72401,72466,72467,72506,72545,72547,72600,72602,72695,72797,72889]];$send(self,"_lex_index_offsets=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_indicies");return self.$private("_lex_indicies","_lex_indicies=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,19,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,23,21,18,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,18,28,28,28,18,28,28,28,28,28,29,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,28,28,28,18,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,30,19,18,31,31,31,18,31,31,31,31,31,32,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,33,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,34,31,31,31,31,31,31,35,31,18,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,36,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,37,18,37,18,18,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,40,38,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,42,42,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,41,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,43,45,43,45,45,43,43,45,45,45,46,45,45,47,47,47,47,47,47,47,47,47,47,45,45,45,45,45,45,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,45,43,43,44,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,45,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,45,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,45,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,48,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,50,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,54,52,49,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,49,59,59,59,49,59,59,59,59,59,60,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,59,59,59,49,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,61,50,49,62,62,62,49,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,65,62,62,62,62,62,62,66,62,49,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,67,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,68,49,68,49,49,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,72,72,72,72,72,72,72,73,73,73,73,73,73,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,72,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,74,76,74,76,76,74,74,76,76,76,77,76,76,78,78,78,78,78,78,78,78,78,78,76,76,76,76,76,76,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,76,74,74,75,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,76,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,76,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,76,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,79,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,80,82,80,82,82,80,80,82,82,82,83,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,82,80,80,81,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,82,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,82,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,82,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,85,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,88,87,88,87,87,88,88,87,87,87,89,87,87,90,90,90,90,90,90,90,90,90,90,87,87,87,87,87,87,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,87,88,88,86,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,88,88,87,88,86,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,87,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,92,92,92,92,92,92,92,92,92,92,88,88,88,88,88,88,93,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,91,88,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,88,91,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,94,94,94,94,94,94,94,94,94,94,88,88,88,88,88,88,88,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,88,88,88,88,94,88,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,88,88,88,88,88,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,95,95,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,96,95,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,95,95,95,95,95,96,97,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,101,99,99,99,99,99,99,99,99,99,99,99,99,99,99,100,100,100,100,100,100,100,100,100,100,102,99,99,99,99,101,99,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,99,99,99,99,100,99,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,99,99,99,99,99,100,102,99,99,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,106,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,107,104,104,104,104,106,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,104,109,108,110,108,111,108,108,108,108,108,108,108,108,108,108,113,108,113,113,113,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,113,108,108,108,108,114,115,108,116,108,117,118,119,120,121,114,108,108,108,108,108,108,108,108,108,108,122,108,123,119,124,125,108,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,126,127,119,128,112,108,112,112,112,112,112,112,112,112,129,112,112,112,112,112,112,112,112,130,112,112,131,112,132,112,112,112,133,134,108,128,108,112,108,108,108,108,108,108,108,108,108,135,108,135,135,135,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,135,108,108,108,108,136,137,108,138,108,139,140,141,142,143,136,108,108,108,108,108,108,108,108,108,108,144,108,145,141,146,147,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,148,149,141,110,105,108,105,105,105,105,105,105,105,105,150,105,105,105,105,105,105,105,105,151,105,105,152,105,153,105,105,105,154,155,108,110,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,156,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,157,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,158,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,159,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,160,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,156,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,105,105,161,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,162,105,105,105,105,105,105,105,163,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,164,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,165,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,156,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,166,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,156,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,167,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,168,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,105,105,105,105,105,105,105,105,105,105,107,108,108,108,108,106,108,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,105,108,105,105,105,105,105,105,105,105,105,105,105,160,105,105,105,105,105,105,105,105,105,105,105,105,105,105,108,108,108,108,108,105,170,169,171,169,172,169,141,169,173,169,169,169,169,169,169,169,174,169,175,169,176,169,141,169,177,169,141,169,178,169,172,169,180,179,181,181,181,181,181,181,181,181,181,183,181,183,183,183,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,183,181,181,181,181,181,181,181,184,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,181,185,181,181,182,181,182,182,182,186,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,181,181,181,181,181,182,187,181,181,181,181,181,181,181,181,181,181,189,181,189,189,189,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,189,181,181,181,181,181,181,181,190,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,181,191,181,181,188,181,188,188,188,192,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,181,181,181,181,181,188,194,193,194,194,194,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,194,193,193,193,193,193,193,193,195,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,196,193,197,193,198,193,198,198,198,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,198,193,193,193,193,193,193,193,199,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,200,193,201,202,204,203,205,203,206,203,207,203,208,203,209,210,210,210,209,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,209,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,210,212,201,213,214,213,213,213,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,213,201,201,215,201,201,201,201,201,201,201,201,201,201,201,201,216,216,216,216,216,216,216,216,216,216,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,217,201,218,219,218,218,218,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,218,201,201,220,201,201,201,201,201,201,201,201,201,201,201,201,221,221,221,221,221,221,221,221,221,221,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,222,201,224,225,224,224,224,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,224,223,223,226,223,223,223,223,223,223,223,223,223,223,223,223,227,227,227,227,227,227,227,227,227,227,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,228,223,230,231,230,230,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,232,229,229,229,229,229,229,229,229,229,229,229,229,233,233,233,233,233,233,233,233,233,233,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,234,229,230,235,230,230,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,232,229,229,229,229,229,229,229,229,229,229,229,229,233,233,233,233,233,233,233,233,233,233,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,234,229,214,201,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,238,238,236,238,236,238,238,236,236,238,238,238,239,238,238,240,240,240,240,240,240,240,240,240,240,238,238,238,238,238,238,238,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,236,238,236,236,237,238,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,236,236,236,238,236,237,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,238,238,238,238,238,238,238,238,238,238,236,236,236,236,236,236,236,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,236,236,236,236,238,236,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,236,236,236,236,236,238,241,238,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,238,236,241,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,243,236,236,236,236,244,236,236,236,236,236,245,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,212,236,236,236,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,236,236,236,236,242,246,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,236,236,236,245,236,242,248,248,248,248,248,248,248,248,248,248,249,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248,248,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,247,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248,247,251,250,254,253,249,248,254,255,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,243,236,236,236,236,244,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,236,236,236,236,242,246,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,236,236,236,236,236,242,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,254,256,254,257,258,259,259,259,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,260,259,258,261,261,261,258,261,261,261,261,261,262,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,258,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,263,261,258,261,261,261,258,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,258,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,264,261,258,265,265,265,258,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,258,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,267,265,258,268,268,268,258,268,268,268,268,268,269,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,258,268,258,268,268,268,258,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,258,268,258,259,259,259,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,270,259,258,271,271,271,258,271,271,271,271,271,272,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,258,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,273,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,271,271,271,271,271,275,271,258,271,271,271,258,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,258,271,276,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,277,258,277,258,258,278,278,278,258,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,258,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,258,261,261,261,258,261,261,261,261,261,262,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,258,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,264,261,258,281,281,281,258,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,258,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282,282,282,282,282,282,282,282,281,281,281,281,281,281,281,282,282,282,282,282,282,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282,282,282,282,281,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,284,201,201,201,201,201,201,201,201,201,201,201,201,201,201,283,283,283,283,283,283,283,283,283,283,285,201,201,286,201,284,201,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,201,201,201,201,283,201,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,201,201,201,201,201,283,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,284,236,236,236,236,236,236,236,236,236,236,236,236,236,236,283,283,283,283,283,283,283,283,283,283,285,236,236,286,236,284,236,283,283,283,283,283,283,287,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,283,236,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,236,283,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,284,236,236,236,236,236,236,236,236,236,236,236,236,236,236,283,283,283,283,283,283,283,283,283,283,285,236,236,286,236,284,236,283,283,283,283,283,283,283,283,288,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,283,236,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,236,283,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,284,236,236,236,236,236,236,236,236,236,236,236,236,236,236,283,283,283,283,283,283,283,283,283,283,285,236,236,286,236,284,236,283,283,283,283,283,283,283,283,283,283,283,283,283,289,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,283,236,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,236,283,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,284,236,236,236,236,236,236,236,236,236,236,236,236,236,236,283,283,283,283,283,283,283,283,283,283,285,236,236,286,236,284,236,283,283,283,289,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,283,236,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,236,236,236,236,236,283,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291,291,291,291,291,291,291,291,291,293,290,290,290,290,292,290,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,290,290,290,290,291,290,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,290,290,290,290,290,291,293,290,290,294,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,296,296,296,296,296,296,296,296,296,296,295,295,295,295,295,295,295,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,295,295,295,295,296,295,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,295,295,295,295,295,296,298,297,298,297,297,299,299,299,299,299,299,299,299,299,299,297,299,299,299,299,299,299,299,299,299,299,297,300,300,300,300,300,300,300,300,300,300,297,302,301,303,303,303,303,303,303,303,303,303,303,301,304,304,304,304,304,304,304,304,304,304,301,306,305,307,305,308,305,309,305,311,310,312,310,313,310,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,314,314,314,314,314,314,314,314,314,314,295,295,295,295,295,295,295,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,295,295,295,295,314,295,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,295,295,295,295,295,314,315,301,316,317,316,316,316,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,316,301,301,318,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,319,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,320,301,321,322,321,321,321,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,321,301,301,323,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,324,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,325,301,327,328,327,327,327,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,327,326,326,329,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,330,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,331,326,333,334,333,333,333,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333,332,332,335,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,336,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,337,332,333,334,333,333,333,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333,332,332,335,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,338,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,337,332,333,339,333,333,333,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333,332,332,335,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,336,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,337,332,340,301,317,301,342,341,342,342,342,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,342,341,341,341,341,341,343,341,341,341,341,341,341,341,344,341,345,341,347,346,346,346,347,346,346,346,346,348,349,348,348,348,346,346,346,346,346,346,346,346,346,346,346,346,347,346,346,346,346,346,348,346,346,350,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,351,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,352,346,346,353,346,348,354,348,348,348,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,348,354,355,356,357,358,359,361,360,363,364,363,363,363,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,363,362,349,360,365,360,367,366,366,366,367,366,366,366,366,368,369,368,368,368,366,366,366,366,366,366,366,366,366,366,366,366,367,366,366,366,366,366,368,366,366,370,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,371,366,368,372,368,368,368,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,368,372,374,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,375,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,376,373,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,13,13,13,13,13,13,13,13,13,13,377,377,377,377,377,377,377,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,377,377,377,377,13,377,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,377,377,377,377,377,13,16,16,16,16,16,16,16,16,16,16,377,380,379,379,379,380,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,380,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,381,381,381,381,381,381,381,381,379,379,379,379,379,379,379,379,379,379,379,382,379,379,379,379,379,379,379,379,379,383,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,384,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,385,379,379,386,379,387,388,390,390,390,390,390,390,390,390,389,391,391,391,391,391,391,391,391,389,389,392,392,38,38,38,392,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,392,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,393,38,394,395,396,396,38,38,38,396,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,396,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,397,38,37,396,398,399,400,400,25,25,25,400,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,400,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,401,25,396,19,19,19,396,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,396,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,402,19,392,25,25,25,392,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,392,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,392,403,403,403,392,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,392,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,403,405,406,406,403,403,403,406,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,406,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,407,403,406,19,19,19,406,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,406,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,402,19,408,406,406,25,25,25,406,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,406,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,410,410,410,410,410,410,410,410,410,410,409,409,409,409,409,409,409,410,410,410,410,410,410,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,410,410,410,410,410,410,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,411,409,412,412,412,412,412,412,412,412,412,412,409,409,409,409,409,409,409,412,412,412,412,412,412,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,412,412,412,412,412,412,409,413,413,413,413,413,413,413,413,413,413,409,409,409,409,409,409,409,413,413,413,413,413,413,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,413,413,413,413,413,413,409,414,414,414,414,414,414,414,414,414,414,409,409,409,409,409,409,409,414,414,414,414,414,414,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,414,414,414,414,414,414,409,415,418,417,417,417,418,417,417,417,417,419,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,418,417,417,417,417,417,419,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,420,420,420,420,420,420,420,420,420,420,417,417,417,417,417,417,417,420,420,420,420,420,420,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,420,420,420,420,420,420,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,421,417,418,417,417,417,418,417,417,417,417,416,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,418,417,417,417,417,417,416,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,422,422,422,422,422,422,422,422,422,422,417,417,417,417,417,417,417,422,422,422,422,422,422,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,422,422,422,422,422,422,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,423,417,416,418,422,422,422,418,422,422,422,422,416,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,418,422,422,422,422,422,416,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,416,422,424,418,425,425,425,418,425,425,425,425,419,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,419,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,420,420,420,420,420,420,420,420,420,420,425,425,425,425,425,425,425,420,420,420,420,420,420,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,420,420,420,420,420,420,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,416,425,418,425,425,425,418,425,425,425,425,416,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,416,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,422,422,422,422,422,422,422,422,422,422,425,425,425,425,425,425,425,422,422,422,422,422,422,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,422,422,422,422,422,422,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,427,427,427,427,427,427,427,427,427,427,425,425,425,425,425,425,425,427,427,427,427,427,427,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,427,427,427,427,427,427,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,420,420,420,420,420,420,420,420,420,420,425,425,425,425,425,425,425,420,420,420,420,420,420,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,420,420,420,420,420,420,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,429,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,430,430,430,430,430,430,430,430,430,430,425,425,425,425,425,425,425,430,430,430,430,430,430,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,430,430,430,430,430,430,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,431,431,431,431,431,431,431,431,431,431,425,425,425,425,425,425,425,431,431,431,431,431,431,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,431,431,431,431,431,431,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,432,432,432,432,432,432,432,432,432,432,425,425,425,425,425,425,425,432,432,432,432,432,432,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,432,432,432,432,432,432,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,433,433,433,433,433,433,433,433,433,433,425,425,425,425,425,425,425,433,433,433,433,433,433,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,433,433,433,433,433,433,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,426,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,434,434,434,434,434,434,434,434,434,434,425,425,425,425,425,425,425,434,434,434,434,434,434,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,434,434,434,434,434,434,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,428,425,418,425,425,425,418,425,425,425,425,416,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,418,425,425,425,425,425,416,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,434,434,434,434,434,434,434,434,434,434,425,425,425,425,425,425,425,434,434,434,434,434,434,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,434,434,434,434,434,434,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,416,425,435,436,438,438,438,438,438,438,438,438,438,438,437,437,437,437,437,437,437,438,438,438,438,438,438,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,438,438,438,438,438,438,437,437,440,439,439,439,440,439,439,439,439,439,441,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,439,439,439,439,439,439,439,439,442,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,443,439,445,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,446,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,447,444,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,44,44,44,44,44,44,44,44,44,44,448,448,448,448,448,448,448,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,448,448,448,448,44,448,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,448,448,448,448,448,44,47,47,47,47,47,47,47,47,47,47,448,451,450,450,450,451,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,452,452,452,452,452,452,452,452,450,450,450,450,450,450,450,450,450,450,450,453,450,450,450,450,450,450,450,450,450,454,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,456,450,450,457,450,458,459,461,461,461,461,461,461,461,461,460,462,462,462,462,462,462,462,462,460,460,463,463,69,69,69,463,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,463,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,464,69,465,466,467,467,69,69,69,467,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,467,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,468,69,68,467,469,470,471,471,56,56,56,471,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,471,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,472,56,467,50,50,50,467,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,467,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,473,50,463,56,56,56,463,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,463,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,463,474,474,474,463,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,463,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,475,474,476,477,477,474,474,474,477,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,477,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,478,474,477,50,50,50,477,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,477,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,473,50,479,477,477,56,56,56,477,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,477,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,481,481,481,481,481,481,481,481,481,481,480,480,480,480,480,480,480,481,481,481,481,481,481,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,481,481,481,481,481,481,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,482,480,483,483,483,483,483,483,483,483,483,483,480,480,480,480,480,480,480,483,483,483,483,483,483,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,483,483,483,483,483,483,480,484,484,484,484,484,484,484,484,484,484,480,480,480,480,480,480,480,484,484,484,484,484,484,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,484,484,484,484,484,484,480,485,485,485,485,485,485,485,485,485,485,480,480,480,480,480,480,480,485,485,485,485,485,485,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,485,485,485,485,485,485,480,486,489,488,488,488,489,488,488,488,488,490,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,489,488,488,488,488,488,490,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,491,491,491,491,491,491,491,491,491,491,488,488,488,488,488,488,488,491,491,491,491,491,491,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,491,491,491,491,491,491,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,492,488,489,488,488,488,489,488,488,488,488,487,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,489,488,488,488,488,488,487,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,493,493,493,493,493,493,493,493,493,493,488,488,488,488,488,488,488,493,493,493,493,493,493,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,493,493,493,493,493,493,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,494,488,487,489,493,493,493,489,493,493,493,493,487,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,489,493,493,493,493,493,487,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,487,493,495,489,496,496,496,489,496,496,496,496,490,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,490,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,491,491,491,491,491,491,491,491,491,491,496,496,496,496,496,496,496,491,491,491,491,491,491,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,491,491,491,491,491,491,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,487,496,489,496,496,496,489,496,496,496,496,487,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,487,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,493,493,493,493,493,493,493,493,493,493,496,496,496,496,496,496,496,493,493,493,493,493,493,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,493,493,493,493,493,493,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,498,498,498,498,498,498,498,498,498,498,496,496,496,496,496,496,496,498,498,498,498,498,498,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,498,498,498,498,498,498,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,491,491,491,491,491,491,491,491,491,491,496,496,496,496,496,496,496,491,491,491,491,491,491,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,491,491,491,491,491,491,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,500,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,501,501,501,501,501,501,501,501,501,501,496,496,496,496,496,496,496,501,501,501,501,501,501,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,501,501,501,501,501,501,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,502,502,502,502,502,502,502,502,502,502,496,496,496,496,496,496,496,502,502,502,502,502,502,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,502,502,502,502,502,502,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,503,503,503,503,503,503,503,503,503,503,496,496,496,496,496,496,496,503,503,503,503,503,503,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,503,503,503,503,503,503,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,504,504,504,504,504,504,504,504,504,504,496,496,496,496,496,496,496,504,504,504,504,504,504,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,504,504,504,504,504,504,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,497,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,505,505,505,505,505,505,505,505,505,505,496,496,496,496,496,496,496,505,505,505,505,505,505,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,505,505,505,505,505,505,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,499,496,489,496,496,496,489,496,496,496,496,487,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,489,496,496,496,496,496,487,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,505,505,505,505,505,505,505,505,505,505,496,496,496,496,496,496,496,505,505,505,505,505,505,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,505,505,505,505,505,505,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,487,496,506,507,509,509,509,509,509,509,509,509,509,509,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,511,510,510,510,511,510,510,510,510,512,513,512,512,512,510,510,510,510,510,510,510,510,510,510,510,510,511,510,510,510,510,510,512,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,514,510,512,515,512,512,512,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,512,515,516,517,517,517,516,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,516,517,519,518,518,518,519,518,518,518,518,518,520,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,519,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,521,518,522,523,523,523,522,523,523,523,523,523,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,522,523,526,525,525,525,526,525,525,525,525,525,527,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,526,525,525,525,525,525,525,525,525,528,525,530,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,531,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,532,529,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,75,75,75,75,75,75,75,75,75,75,533,533,533,533,533,533,533,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,533,533,533,533,75,533,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,533,533,533,533,533,75,78,78,78,78,78,78,78,78,78,78,533,535,534,534,534,535,534,534,534,534,534,536,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,535,534,538,537,537,537,538,537,537,537,537,539,540,539,539,539,537,537,537,537,537,537,537,537,537,537,537,537,538,537,537,537,537,537,539,537,537,541,537,539,542,539,539,539,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,539,542,544,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,545,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,546,543,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,81,81,81,81,81,81,81,81,81,81,547,547,547,547,547,547,547,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,547,547,547,547,81,547,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,547,547,547,547,547,81,84,84,84,84,84,84,84,84,84,84,547,549,548,548,548,549,548,548,548,548,550,551,550,550,550,548,548,548,548,548,548,548,548,548,548,548,548,549,548,548,548,548,548,550,548,550,552,550,550,550,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,550,552,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,553,553,553,553,553,553,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,553,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,555,555,555,555,555,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,556,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,557,88,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,86,86,86,86,86,86,86,86,86,86,558,558,558,558,558,558,558,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,558,558,558,558,86,558,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,558,558,558,558,558,86,90,90,90,90,90,90,90,90,90,90,558,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,91,91,91,91,91,91,91,91,91,91,559,559,559,559,559,559,559,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,559,559,559,559,91,559,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,559,559,559,559,559,91,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,92,92,92,92,92,92,92,92,92,92,560,560,560,560,560,560,560,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,560,560,560,560,91,560,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,560,560,560,560,560,91,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,94,94,94,94,94,94,94,94,94,94,561,561,561,561,561,561,561,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,561,561,561,561,94,561,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,561,561,561,561,561,94,563,564,564,564,563,564,564,564,564,565,566,565,565,565,564,564,564,564,564,564,564,564,564,564,564,564,563,564,564,564,564,564,565,567,564,568,569,570,571,564,564,564,572,573,564,573,564,574,564,564,564,564,564,564,564,564,564,564,575,564,576,577,578,564,564,579,580,579,579,581,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,582,583,564,574,584,574,585,586,587,588,589,590,562,562,591,562,562,562,592,593,594,562,562,595,596,597,598,562,599,562,600,562,564,601,564,573,564,562,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,603,602,602,602,602,602,602,602,602,602,602,602,602,602,602,562,562,562,562,562,562,562,562,562,562,602,602,602,603,602,603,602,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,602,602,602,602,562,602,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,602,602,602,602,602,562,565,604,565,565,565,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,565,604,605,574,606,606,574,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,574,606,607,608,609,610,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,96,96,611,96,611,96,96,611,611,96,96,96,613,96,96,614,614,614,614,614,614,614,614,614,614,96,96,96,96,96,96,96,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,611,96,611,611,612,96,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,611,611,611,96,611,612,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,612,612,612,612,612,612,612,612,612,612,615,615,615,615,615,615,615,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,615,615,615,615,612,615,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,615,615,615,615,615,612,614,614,614,614,614,614,614,614,614,614,615,616,606,574,606,574,606,574,606,618,617,574,619,606,574,606,620,574,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,574,611,574,606,574,574,606,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,603,602,602,602,602,602,602,602,602,602,602,602,602,602,602,579,579,579,579,579,579,579,579,579,579,602,602,602,603,602,603,602,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,602,602,602,602,579,602,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,602,602,602,602,602,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,579,622,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,579,579,579,623,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,579,579,579,579,579,624,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,579,579,579,579,579,579,579,579,579,579,625,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,579,579,579,579,579,579,579,579,579,579,626,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,603,621,621,621,621,621,621,621,621,621,621,621,621,621,621,579,579,579,579,579,579,579,579,579,579,621,621,621,603,621,603,621,579,579,579,625,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,579,621,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,621,621,621,621,621,579,620,611,566,611,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,628,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,629,630,562,562,562,562,562,631,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,632,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,633,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,634,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,635,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,636,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,637,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,638,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,639,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,640,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,641,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,642,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,638,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,643,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,642,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,644,562,645,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,646,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,647,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,648,562,562,562,562,562,562,562,562,562,562,562,562,649,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,650,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,651,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,652,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,653,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,654,562,562,562,562,562,562,562,562,562,562,655,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,656,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,657,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,647,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,658,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,659,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,603,660,660,660,660,660,660,660,660,660,660,660,660,660,660,562,562,562,562,562,562,562,562,562,562,660,660,660,603,660,603,660,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,660,660,660,660,562,660,562,562,562,562,562,562,562,562,661,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,660,660,660,660,660,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,662,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,663,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,664,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,665,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,666,562,667,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,668,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,640,562,562,562,669,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,670,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,671,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,656,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,672,562,562,562,562,562,562,562,562,562,562,562,562,562,594,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,654,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,640,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,673,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,674,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,675,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,656,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,676,562,562,562,677,562,562,562,562,562,678,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,678,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,679,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,680,562,562,562,562,562,562,562,562,562,562,562,562,562,562,681,682,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,683,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,656,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,684,562,562,685,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,640,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,651,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,686,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,687,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,669,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,688,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,594,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,689,562,562,562,562,562,562,562,562,562,683,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,651,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,562,562,690,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,691,562,562,562,562,562,562,562,692,562,562,562,562,562,562,562,693,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,669,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,657,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,677,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,694,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,651,562,562,562,675,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,695,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,696,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,603,627,627,627,627,627,627,627,627,627,627,627,627,627,627,562,562,562,562,562,562,562,562,562,562,627,627,627,603,627,603,627,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,562,627,562,562,562,562,562,562,562,562,562,562,562,645,562,562,562,562,562,562,562,562,562,562,562,562,562,562,627,627,627,627,627,562,574,606,698,699,699,699,698,699,699,699,699,700,699,700,700,700,699,699,699,699,699,699,699,699,699,699,699,699,698,699,699,699,699,699,700,699,699,701,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,699,702,699,699,697,699,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,699,699,699,699,699,697,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,101,703,703,703,703,703,703,703,703,703,703,703,703,703,703,100,100,100,100,100,100,100,100,100,100,102,703,703,703,703,101,703,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,703,703,703,703,100,703,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,703,703,703,703,703,100,700,704,700,700,700,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,700,704,705,706,707,708,709,703,710,712,713,713,713,712,713,713,713,713,714,715,714,714,714,713,713,713,713,713,713,713,713,713,713,713,713,712,713,713,713,713,713,714,716,713,717,713,718,719,713,713,713,720,721,713,721,713,718,713,713,713,713,713,713,713,713,713,713,713,713,722,723,724,713,713,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,726,727,713,718,711,718,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,713,728,713,721,713,711,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,730,729,729,729,729,729,729,729,729,729,729,729,729,729,729,711,711,711,711,711,711,711,711,711,711,729,729,729,729,729,730,729,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,729,729,729,729,711,729,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,729,729,729,729,729,711,732,731,733,714,734,714,714,714,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,714,734,735,718,736,736,718,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,718,736,737,738,739,740,718,736,718,736,718,736,718,741,736,718,736,743,718,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,718,742,718,736,718,718,736,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,730,744,744,744,744,744,744,744,744,744,744,744,744,744,744,725,725,725,725,725,725,725,725,725,725,744,744,744,744,744,730,744,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,744,744,744,744,725,744,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,744,744,744,744,744,725,743,742,715,742,718,736,746,745,745,745,746,745,745,745,745,747,748,747,747,747,745,745,745,745,745,745,745,745,745,745,745,745,746,745,745,745,745,745,747,745,745,749,745,110,750,745,751,745,752,110,141,753,143,110,745,745,745,745,745,745,745,745,745,745,754,745,755,141,756,757,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,141,758,141,110,745,745,745,745,745,745,745,745,745,745,759,745,745,745,745,745,745,745,745,760,745,745,761,745,762,745,745,745,154,155,745,110,745,763,763,763,763,763,763,763,763,763,747,763,747,747,747,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,747,763,763,763,763,136,137,763,138,763,139,140,141,142,143,136,763,763,763,763,763,763,763,763,763,763,144,763,145,141,146,147,763,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,148,149,141,110,105,763,105,105,105,105,105,105,105,105,150,105,105,105,105,105,105,105,105,151,105,105,152,105,153,105,105,105,154,155,763,110,763,105,764,765,765,765,764,765,765,765,765,141,766,141,141,141,765,765,765,765,765,765,765,765,765,765,765,765,764,765,765,765,765,765,141,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,141,765,141,766,141,141,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,104,104,104,104,104,110,104,104,104,104,104,104,104,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,104,141,766,141,141,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,104,767,141,766,141,141,141,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,141,768,768,768,768,768,768,768,768,768,769,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,141,768,141,766,141,141,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,141,141,104,770,764,141,764,772,771,774,775,774,774,774,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,774,773,776,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,106,764,764,764,764,764,764,764,764,764,764,764,764,764,764,105,105,105,105,105,105,105,105,105,105,107,764,764,764,764,106,764,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,764,764,764,764,105,764,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,764,764,764,764,764,105,777,141,766,141,141,141,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,141,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,141,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,110,764,778,779,780,781,782,783,141,766,141,141,141,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,141,764,764,764,764,764,764,764,764,764,110,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,141,764,141,771,110,784,110,784,785,786,785,785,785,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,785,773,787,784,788,788,788,788,788,788,788,788,788,113,788,113,113,113,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,113,788,788,788,788,114,115,788,116,788,117,118,119,120,121,114,788,788,788,788,788,788,788,788,788,788,122,788,123,119,124,125,788,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,126,127,119,128,112,788,112,112,112,112,112,112,112,112,129,112,112,112,112,112,112,112,112,130,112,112,131,112,132,112,112,112,133,134,788,128,788,112,141,784,789,784,790,784,791,784,792,180,180,180,792,180,180,180,180,793,180,793,793,793,180,180,180,180,180,180,180,180,180,180,180,180,792,180,180,180,180,180,793,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,180,794,180,180,182,180,182,182,182,186,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,180,180,180,180,180,182,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,795,179,179,179,179,179,179,179,179,179,179,179,179,179,179,182,182,182,182,182,182,182,182,182,182,180,179,179,179,179,795,179,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,179,179,179,179,182,179,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,179,179,179,179,179,182,796,796,796,796,796,796,796,796,796,183,796,183,183,183,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,183,796,796,796,796,796,796,796,184,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,796,185,796,796,182,796,182,182,182,186,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,796,796,796,796,796,182,797,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,795,796,796,796,796,796,796,796,796,796,796,796,796,796,796,182,182,182,182,182,182,182,182,182,182,180,796,796,796,796,795,796,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,796,796,796,796,182,796,182,182,182,182,182,182,182,182,182,182,182,182,182,182,798,182,182,182,182,182,182,182,182,182,182,182,796,796,796,796,796,182,187,796,800,799,799,799,800,799,799,799,799,801,799,801,801,801,799,799,799,799,799,799,799,799,799,799,799,799,800,799,799,799,799,799,801,799,799,802,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,803,799,799,799,799,799,799,799,804,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,805,799,801,806,801,801,801,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,801,806,807,808,809,810,812,811,813,814,811,815,817,818,818,818,817,818,818,818,818,819,820,819,819,819,818,818,818,818,818,818,818,818,818,818,818,818,817,818,818,818,818,818,819,818,818,821,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,818,822,818,818,816,818,816,816,816,816,816,816,816,816,823,816,816,816,816,816,816,816,816,824,816,816,825,816,826,816,816,816,818,818,818,818,818,816,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,816,816,816,816,816,816,816,816,816,816,827,827,827,827,827,827,827,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,827,827,827,827,816,827,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,827,827,827,827,827,816,819,828,819,819,819,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,819,828,829,830,831,832,833,835,834,836,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,838,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,839,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,840,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,841,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,842,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,838,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,816,816,843,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,844,816,816,816,816,816,816,816,845,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,846,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,847,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,838,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,848,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,838,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,849,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,850,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,837,837,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,816,837,816,816,816,816,816,816,816,816,816,816,816,842,816,816,816,816,816,816,816,816,816,816,816,816,816,816,837,837,837,837,837,816,852,212,212,212,852,212,212,212,212,853,854,853,853,853,212,212,212,212,212,212,212,212,212,212,212,212,852,212,212,212,212,212,853,855,212,856,212,857,858,212,859,212,860,861,212,862,863,864,212,212,212,212,212,212,212,212,212,212,865,212,866,867,868,869,212,870,871,870,870,872,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,873,874,212,875,876,212,877,878,879,880,881,882,851,851,883,851,851,851,884,885,886,851,851,887,888,889,890,851,891,851,892,851,893,894,212,875,212,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,899,898,898,900,898,901,903,904,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,905,902,907,906,908,909,910,853,911,853,853,853,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,853,911,913,912,915,916,915,915,915,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,915,914,212,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,212,917,918,919,920,921,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,923,923,923,923,923,923,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,923,925,210,210,210,925,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,925,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,210,927,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,212,926,928,930,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,212,929,212,201,213,214,213,213,213,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,213,926,926,215,926,926,926,926,926,926,926,926,926,926,926,926,216,216,216,216,216,216,216,216,216,216,926,926,926,212,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,217,926,230,231,230,230,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,232,229,229,229,229,229,229,229,229,229,229,229,229,233,233,233,233,233,233,233,233,233,233,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,234,229,213,214,213,213,213,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,213,926,926,215,926,926,926,926,926,926,926,926,926,926,926,926,216,216,216,216,216,216,216,216,216,216,926,926,926,212,212,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,217,926,932,917,934,933,917,935,935,935,917,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,917,935,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,937,938,917,939,238,940,938,917,917,941,942,917,942,917,238,917,917,917,917,917,917,917,917,917,917,943,917,944,945,946,917,947,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,948,917,917,238,936,238,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,917,949,917,950,917,936,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,952,951,951,951,951,951,951,951,951,951,951,951,951,951,951,936,936,936,936,936,936,936,936,936,936,951,951,951,953,951,952,951,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,951,951,951,951,936,951,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,951,951,951,951,951,936,955,954,956,958,959,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,960,957,962,963,961,964,965,966,967,238,951,951,968,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,238,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,951,237,237,237,237,237,237,237,237,237,237,951,951,951,951,951,951,951,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,951,951,951,951,237,951,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,951,951,951,951,951,237,240,240,240,240,240,240,240,240,240,240,951,969,951,238,951,238,951,238,970,951,238,951,238,951,238,238,951,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,973,973,973,973,973,973,973,973,973,973,971,971,971,971,971,971,974,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,971,971,971,971,972,971,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,971,971,971,971,971,972,976,976,976,976,976,976,976,976,976,976,975,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,979,979,979,979,979,979,979,979,979,979,977,977,977,977,977,977,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,977,977,977,977,978,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,977,977,977,977,977,978,969,951,968,951,980,981,917,982,253,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,254,243,255,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,254,244,254,257,212,917,875,212,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,212,917,212,927,917,986,985,985,985,986,985,985,985,985,987,988,987,987,987,985,985,985,985,985,985,985,985,985,985,985,985,986,985,985,985,985,985,987,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,985,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,985,990,985,985,989,985,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,985,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,991,991,991,991,992,991,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,991,991,991,991,991,992,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,994,994,994,994,994,994,994,994,994,994,993,993,993,993,993,993,993,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,993,993,993,993,994,993,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,994,993,993,993,993,993,994,997,996,996,996,997,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,997,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,998,998,998,998,998,998,998,998,996,996,996,996,996,996,996,996,996,996,996,999,996,996,996,996,996,996,996,996,996,1e3,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,1001,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,1002,996,996,1003,996,1004,1005,1007,1007,1007,1007,1007,1007,1007,1007,1006,1008,1008,1008,1008,1008,1008,1008,1008,1006,1006,1009,1009,278,278,278,1009,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,1009,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,1010,278,1011,1012,1013,1013,278,278,278,1013,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,1013,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,1014,278,277,1013,1015,1016,1017,1017,265,265,265,1017,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1017,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1018,265,1013,259,259,259,1013,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,1013,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,1019,259,1009,265,265,265,1009,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1009,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,267,265,1009,1020,1020,1020,1009,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1009,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1021,1020,1022,1023,1023,1020,1020,1020,1023,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1023,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1024,1020,1023,259,259,259,1023,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,1023,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,1019,259,1025,1023,1023,265,265,265,1023,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1023,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,267,265,1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,1026,1026,1026,1026,1026,1026,1026,1027,1027,1027,1027,1027,1027,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1027,1027,1027,1027,1027,1027,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1028,1026,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1026,1026,1026,1026,1026,1026,1026,1029,1029,1029,1029,1029,1029,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1029,1029,1029,1029,1029,1029,1026,1030,1030,1030,1030,1030,1030,1030,1030,1030,1030,1026,1026,1026,1026,1026,1026,1026,1030,1030,1030,1030,1030,1030,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1030,1030,1030,1030,1030,1030,1026,1031,1031,1031,1031,1031,1031,1031,1031,1031,1031,1026,1026,1026,1026,1026,1026,1026,1031,1031,1031,1031,1031,1031,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1031,1031,1031,1031,1031,1031,1026,1032,1035,1034,1034,1034,1035,1034,1034,1034,1034,1036,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1035,1034,1034,1034,1034,1034,1036,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1034,1034,1034,1034,1034,1034,1034,1037,1037,1037,1037,1037,1037,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1037,1037,1037,1037,1037,1037,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1038,1034,1035,1034,1034,1034,1035,1034,1034,1034,1034,1033,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1035,1034,1034,1034,1034,1034,1033,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1034,1034,1034,1034,1034,1034,1034,1039,1039,1039,1039,1039,1039,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1039,1039,1039,1039,1039,1039,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1040,1034,1033,1035,1039,1039,1039,1035,1039,1039,1039,1039,1033,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1035,1039,1039,1039,1039,1039,1033,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1033,1039,1041,1035,1042,1042,1042,1035,1042,1042,1042,1042,1036,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1036,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1033,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1033,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1042,1042,1042,1042,1042,1042,1042,1039,1039,1039,1039,1039,1039,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1039,1039,1039,1039,1039,1039,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1045,1045,1045,1045,1045,1045,1045,1045,1045,1045,1042,1042,1042,1042,1042,1042,1042,1045,1045,1045,1045,1045,1045,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1045,1045,1045,1045,1045,1045,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1043,1043,1043,1043,1043,1043,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1047,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1048,1048,1048,1048,1048,1048,1048,1048,1048,1048,1042,1042,1042,1042,1042,1042,1042,1048,1048,1048,1048,1048,1048,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1048,1048,1048,1048,1048,1048,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1049,1049,1049,1049,1049,1049,1049,1049,1049,1049,1042,1042,1042,1042,1042,1042,1042,1049,1049,1049,1049,1049,1049,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1049,1049,1049,1049,1049,1049,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1050,1050,1050,1050,1050,1050,1050,1050,1050,1050,1042,1042,1042,1042,1042,1042,1042,1050,1050,1050,1050,1050,1050,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1050,1050,1050,1050,1050,1050,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1042,1042,1042,1042,1042,1042,1042,1051,1051,1051,1051,1051,1051,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1051,1051,1051,1051,1051,1051,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1044,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1033,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1033,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1054,1054,1054,1054,1054,1054,1054,1054,1054,1054,1042,1042,1042,1042,1042,1042,1042,1054,1054,1054,1054,1054,1054,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1054,1054,1054,1054,1054,1054,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1055,1055,1055,1055,1055,1055,1055,1055,1055,1055,1042,1042,1042,1042,1042,1042,1042,1055,1055,1055,1055,1055,1055,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1055,1055,1055,1055,1055,1055,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1056,1056,1056,1056,1056,1056,1056,1056,1056,1056,1042,1042,1042,1042,1042,1042,1042,1056,1056,1056,1056,1056,1056,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1056,1056,1056,1056,1056,1056,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1042,1042,1042,1042,1042,1042,1042,1057,1057,1057,1057,1057,1057,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1057,1057,1057,1057,1057,1057,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1058,1058,1058,1058,1058,1058,1058,1058,1058,1058,1042,1042,1042,1042,1042,1042,1042,1058,1058,1058,1058,1058,1058,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1058,1058,1058,1058,1058,1058,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1059,1059,1059,1059,1059,1059,1059,1059,1059,1059,1042,1042,1042,1042,1042,1042,1042,1059,1059,1059,1059,1059,1059,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1059,1059,1059,1059,1059,1059,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1042,1042,1042,1042,1042,1042,1042,1060,1060,1060,1060,1060,1060,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1060,1060,1060,1060,1060,1060,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1033,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1042,1042,1042,1042,1042,1042,1042,1061,1061,1061,1061,1061,1061,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1061,1061,1061,1061,1061,1061,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1042,1042,1042,1042,1042,1042,1042,1062,1062,1062,1062,1062,1062,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1062,1062,1062,1062,1062,1062,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1063,1063,1063,1063,1063,1063,1063,1063,1063,1063,1042,1042,1042,1042,1042,1042,1042,1063,1063,1063,1063,1063,1063,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1063,1063,1063,1063,1063,1063,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1042,1042,1042,1042,1042,1042,1042,1064,1064,1064,1064,1064,1064,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1064,1064,1064,1064,1064,1064,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1035,1042,1042,1042,1035,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1035,1042,1042,1042,1042,1042,1053,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1052,1052,1052,1052,1052,1052,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1046,1042,1065,1066,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,284,201,201,201,201,201,201,201,201,201,201,201,201,201,201,283,283,283,283,283,283,283,283,283,283,285,201,201,286,201,284,201,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,201,201,201,201,283,201,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,201,201,201,201,201,283,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,284,917,917,917,917,917,917,917,917,917,917,917,917,917,917,283,283,283,283,283,283,283,283,283,283,285,917,917,286,917,284,917,283,283,283,283,1069,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,917,917,917,917,283,917,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,917,917,917,917,917,283,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,284,917,917,917,917,917,917,917,917,917,917,917,917,917,917,283,283,283,283,283,283,283,283,283,283,285,917,917,286,917,284,917,283,283,283,283,283,283,283,283,283,283,283,283,283,1070,283,283,283,283,283,283,283,283,283,283,283,283,917,917,917,917,283,917,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,917,917,917,917,917,283,1071,1072,917,912,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,1073,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,1074,1075,851,851,851,851,851,1076,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,1077,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,1078,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1079,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,1080,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,1081,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,1082,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,1083,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,1084,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,1085,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,284,201,201,201,201,201,201,201,201,201,201,201,201,201,201,851,851,851,851,851,851,851,851,851,851,285,201,201,286,201,284,201,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,201,201,201,201,851,201,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,201,201,201,201,201,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,1086,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,1087,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,1083,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,1088,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,1087,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1089,851,1090,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,1091,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,1092,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1093,851,851,851,851,851,851,851,851,851,851,851,851,1094,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,1095,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,1096,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1097,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,1098,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,1099,851,851,851,851,851,851,851,851,851,851,1100,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1101,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,1102,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1092,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1103,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1104,851,1105,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1106,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1085,851,851,851,1103,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1107,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1108,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1101,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,1109,851,851,851,851,851,851,851,851,851,851,851,851,851,886,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1099,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,1110,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1111,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,1112,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1113,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1101,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1114,851,851,851,1115,851,851,851,851,851,1116,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1116,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1117,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,1118,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1119,1120,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,1121,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1122,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1123,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1126,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1127,1124,1124,1128,1124,1126,1124,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1125,1124,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1124,1125,903,1129,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,905,902,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1130,851,851,1131,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1085,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1096,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1132,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1133,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1103,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1134,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,886,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,1135,851,851,851,851,851,851,851,851,851,1136,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1096,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1101,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,1137,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,1138,851,851,851,851,851,851,851,1139,851,851,851,851,851,851,851,1140,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1103,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1141,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1142,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,1110,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,1143,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1110,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,1144,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1096,851,851,851,1145,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1146,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1110,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,1147,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,1148,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,895,895,895,895,895,895,895,895,895,896,895,896,896,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,896,284,895,895,895,895,895,895,895,895,895,895,895,895,895,895,851,851,851,851,851,851,851,851,851,851,285,895,895,286,895,284,895,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,897,895,895,851,895,851,851,851,851,851,851,851,851,851,851,851,1090,851,851,851,851,851,851,851,851,851,851,851,851,851,851,895,895,895,895,895,851,1149,212,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,927,917,1151,1150,1150,1150,1151,1150,1150,1150,1150,1152,1153,1152,1152,1152,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1151,1150,1150,1150,1150,1150,1152,1150,1150,1154,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1155,1150,1152,1156,1152,1152,1152,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1152,1156,1157,1158,1159,1160,1161,1163,1162,1164,1166,1167,1167,1167,1166,1167,1167,1167,1167,1168,1169,1168,1168,1168,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1166,1167,1167,1167,1167,1167,1168,1167,1170,1171,1167,1167,1167,1170,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1167,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1167,1172,1167,1167,1165,1167,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1167,1167,1167,1167,1167,1165,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,292,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,291,291,291,291,291,291,291,291,291,291,293,1173,1173,1173,1173,292,1173,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1173,1173,1173,1173,291,1173,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1173,1173,1173,1173,1173,291,1168,1174,1168,1168,1168,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1168,1174,1175,1176,1177,1178,1179,1180,1173,1181,1183,1184,1184,1184,1183,1184,1184,1184,1184,1185,1186,1185,1185,1185,1184,1184,1184,1184,1184,1184,1184,1184,1184,1184,1184,1184,1183,1184,1184,1184,1184,1184,1185,1187,1188,1189,1190,1191,1192,1188,1193,1194,1195,1191,1196,1197,1198,1191,1199,1200,1200,1200,1200,1200,1200,1200,1200,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1208,1208,1210,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1211,1212,1213,1191,1214,1188,1215,1216,1217,1218,1219,1220,1182,1182,1221,1182,1182,1182,1222,1223,1224,1182,1182,1225,1226,1227,1228,1182,1229,1182,1230,1182,1231,1232,1233,1234,1184,1182,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1235,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,301,301,301,301,301,1235,301,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,301,301,301,301,1182,301,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,301,301,301,301,301,1182,1237,1236,1238,1185,1239,1185,1185,1185,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1185,1239,1240,1242,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1242,1241,1243,1244,1245,1246,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,296,296,1247,296,1247,296,296,1247,1247,296,296,296,1248,296,296,1249,1249,1249,1249,1249,1249,1249,1249,1249,1249,296,296,296,296,296,296,296,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1247,296,1247,1247,314,296,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1247,1247,1247,296,1247,314,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,314,314,314,314,314,314,314,314,314,314,1250,1250,1250,1250,1250,1250,1250,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1250,1250,1250,1250,314,1250,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1250,1250,1250,1250,1250,314,1249,1249,1249,1249,1249,1249,1249,1249,1249,1249,1250,1251,301,1191,1252,1252,1252,1252,1252,1252,1252,1253,1252,1252,1252,1252,1252,1252,1252,1252,1252,1252,1252,1252,1252,1252,1251,1252,1254,1255,1191,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1251,1256,1251,1257,1252,1259,1258,300,300,300,300,300,300,300,300,300,300,1260,1258,1196,1261,300,300,300,300,300,300,300,300,300,300,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1263,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1264,1262,1262,1262,1262,1262,1263,1262,299,299,299,299,299,299,299,299,299,299,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,298,1262,1265,301,1265,1265,1265,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1265,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1266,301,1268,1267,1268,1268,1268,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1268,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1269,1267,1271,1270,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1270,1270,1270,1270,1270,1270,1270,1270,1273,1270,1274,1275,1270,1270,1270,1270,1270,1270,1270,1270,1270,1276,1270,1270,1270,1270,1270,1270,1270,1270,1277,1270,1270,1270,1270,1270,1270,1278,1270,1270,1273,1270,1274,1275,1270,1270,1270,1279,1270,1270,1270,1270,1270,1276,1270,1270,1280,1270,1270,1270,1270,1270,1277,1270,303,303,303,303,303,303,303,303,303,303,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1282,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1283,1281,1281,1281,1281,1281,1282,1281,1281,1281,1284,1281,1281,1281,1281,1281,1281,1281,1281,1285,1281,1286,301,1286,301,301,304,304,304,304,304,304,304,304,304,304,301,304,304,304,304,304,304,304,304,304,304,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1287,1286,1287,1287,1287,1287,1287,1287,1287,1287,1287,1288,1287,1290,1289,1291,1293,1292,1292,1292,1294,1292,1295,1296,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1278,1270,1270,1270,1270,1270,1270,1270,1270,1270,1279,1270,1270,1270,1270,1270,1270,1270,1270,1280,1270,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1298,1270,1270,1270,1270,1270,1270,1270,1270,1270,1279,1270,1270,1270,1270,1270,1270,1270,1270,1280,1270,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1301,1299,1299,1299,1299,1299,1299,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1304,1299,1299,1299,1299,1299,1299,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1306,1305,1307,1309,1308,1308,1308,1310,1308,1312,1311,1313,1314,1316,1316,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1315,1317,1315,1315,1315,1315,1315,1315,1315,1315,1315,1318,1315,1315,1315,1315,1315,1315,1315,1315,1319,1315,1320,1320,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1321,1299,1299,1299,1299,1299,1299,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1320,1320,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1304,1299,1299,1299,1299,1299,1299,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1324,1322,1322,1322,1322,1322,1322,1322,1322,1322,1325,1322,1322,1322,1322,1322,1322,1322,1322,1326,1322,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1327,1329,1327,1327,1327,1327,1327,1327,1327,1327,1327,1330,1327,1327,1327,1327,1327,1327,1327,1327,1331,1327,1333,1333,1333,1333,1333,1333,1333,1333,1333,1333,1332,1332,1332,1332,1332,1332,1332,1333,1333,1333,1333,1333,1333,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1334,1332,1333,1333,1333,1333,1333,1333,1332,1332,1335,1332,1332,1332,1332,1332,1332,1332,1332,1336,1332,1337,1337,1337,1337,1337,1337,1337,1337,1337,1337,1299,1299,1299,1299,1299,1299,1299,1337,1337,1337,1337,1337,1337,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1338,1299,1337,1337,1337,1337,1337,1337,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1337,1337,1337,1337,1337,1337,1337,1337,1337,1337,1299,1299,1299,1299,1299,1299,1299,1337,1337,1337,1337,1337,1337,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1304,1299,1337,1337,1337,1337,1337,1337,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1340,1339,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1342,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1343,1339,1339,1339,1339,1339,1342,1339,1339,1339,1344,1339,1339,1339,1339,1339,1339,1339,1339,1345,1339,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1339,1347,1339,1339,1339,1339,1339,1339,1339,1339,1339,1344,1339,1339,1339,1339,1339,1339,1339,1339,1345,1339,1348,1299,1349,1349,1349,1349,1349,1349,1349,1349,1349,1349,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1350,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1351,1299,1299,1299,1299,1299,1350,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1349,1349,1349,1349,1349,1349,1349,1349,1349,1349,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1304,1299,1299,1299,1299,1299,1299,1299,1299,1299,1302,1299,1299,1299,1299,1299,1299,1299,1299,1303,1299,1253,1261,1191,1352,1252,1242,1252,1353,1354,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1242,1261,1242,1252,1242,1191,1252,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,314,314,314,314,314,314,314,314,314,314,1247,1247,1247,1247,1247,1247,1355,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1247,1247,1247,1247,314,1247,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1247,1247,1247,1247,1247,314,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1235,301,301,301,301,301,301,301,301,301,301,301,301,301,301,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,301,301,301,301,1235,301,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,301,301,301,301,1208,301,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,301,301,301,301,301,1208,1357,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1208,1359,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1208,1208,1208,1360,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1208,1208,1208,1208,1208,1361,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1362,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1363,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1235,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1356,1358,1358,1358,1358,1235,1358,1208,1208,1208,1362,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1208,1358,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1358,1358,1358,1358,1358,1208,1364,1366,1365,1367,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1369,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1370,1371,1182,1182,1182,1182,1182,1372,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1373,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1374,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1375,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1376,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1377,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1378,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1379,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1380,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1381,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1382,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1383,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1384,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1385,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1386,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1387,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1383,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1388,1182,1389,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1390,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1391,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1392,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1394,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1395,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1396,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1397,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1398,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1399,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1400,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1401,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1402,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1403,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1404,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1405,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1406,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1407,1407,1407,1407,1407,1407,1407,1407,1407,316,317,316,316,316,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,316,1235,1407,318,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1407,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1407,1407,319,1407,1407,1235,1407,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1407,320,1407,1407,1182,1407,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1407,1407,1407,1407,1407,1182,333,334,333,333,333,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,333,332,332,335,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,338,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,337,332,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1409,1182,1182,1182,1182,1182,1182,1182,1182,1182,1410,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1411,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1235,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1412,1412,1412,1412,1412,1235,1412,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1412,1412,1412,1412,1182,1412,1182,1182,1182,1182,1182,1182,1182,1182,1413,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1412,1412,1412,1412,1412,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1414,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1415,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1416,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1417,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1418,1182,1419,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1420,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1393,1182,1182,1182,1421,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1386,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1422,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1423,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1403,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1424,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1224,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1425,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1426,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1386,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1427,1182,1182,1182,1182,1182,1182,1182,1393,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1428,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1429,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1430,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1403,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1431,1182,1182,1182,1432,1182,1182,1182,1182,1182,1433,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1434,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1400,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1386,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1435,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1436,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1437,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1438,1439,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1386,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1440,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1441,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1427,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1442,1182,1182,1443,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1386,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1444,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1400,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1445,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1446,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1447,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1386,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1448,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1449,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1435,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1450,1182,1182,1182,1182,1182,1182,1182,1182,1182,1451,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1397,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1426,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1452,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1453,1182,1182,1182,1182,1182,1182,1182,1454,1182,1182,1182,1182,1182,1182,1182,1455,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1456,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1392,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1457,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1458,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1427,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1459,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1427,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1460,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1397,1182,1182,1182,1461,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1462,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1427,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1463,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1464,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1465,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1235,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1235,1368,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1182,1368,1182,1182,1182,1435,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1368,1368,1368,1368,1368,1182,1466,1251,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1191,1241,1467,1469,1468,1469,1469,1469,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,1469,1468,1468,1468,1468,1468,1470,1468,1468,1468,1468,1468,1468,1468,344,1468,342,1471,342,342,342,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,1471,342,1471,1471,1471,1471,1471,343,1471,1471,1471,1471,1471,1471,1471,344,1471,345,1471,1473,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1474,1472,1473,1472,1473,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1476,1472,1473,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1477,1472,1473,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1478,1472,1480,1478,0]];$send(self,"_lex_indicies=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_targs");return self.$private("_lex_trans_targs","_lex_trans_targs=")})(Opal.get_singleton_class(self),$nesting);$writer=[[181,2,3,4,187,6,7,8,9,10,181,181,190,193,190,12,194,14,190,201,202,205,206,212,207,208,209,19,210,211,214,216,217,218,219,220,25,18,203,204,27,243,244,246,248,246,30,249,32,246,256,257,260,261,267,262,263,264,37,265,266,269,271,272,273,274,275,43,36,258,259,45,298,299,306,308,306,48,309,50,311,314,311,52,315,54,321,320,0,56,322,323,324,58,325,326,326,326,326,439,61,62,63,439,467,64,65,467,467,471,471,69,64,70,469,470,472,473,471,467,474,475,477,66,67,478,479,68,471,71,72,77,84,481,482,70,469,470,472,473,471,467,474,475,477,66,67,478,479,68,71,72,77,84,481,482,480,73,74,75,76,78,79,82,80,81,83,85,86,467,88,89,90,92,95,93,94,96,98,498,498,498,499,100,501,101,502,102,499,100,501,101,502,536,103,536,104,105,103,536,104,536,536,536,108,109,110,111,547,536,536,552,536,114,115,116,536,119,114,115,116,536,119,117,117,115,116,558,118,117,117,115,116,558,118,115,536,574,536,121,575,581,125,590,591,130,131,125,126,589,126,589,536,127,128,129,592,132,536,606,607,610,611,617,612,613,614,137,615,616,619,621,622,623,624,625,143,136,608,609,145,661,662,147,538,106,540,149,150,664,766,152,153,154,766,774,774,774,157,795,794,774,797,799,801,774,163,164,165,805,774,167,168,816,784,838,171,172,173,177,178,171,172,173,177,178,174,174,172,173,175,176,174,174,172,173,175,176,885,172,774,954,179,180,954,954,181,181,182,183,184,186,188,189,181,181,181,185,181,185,181,1,181,181,181,5,190,190,191,190,192,195,190,190,11,13,190,190,190,196,197,198,15,21,26,221,28,190,190,190,199,200,190,16,190,190,190,17,190,190,190,20,213,215,22,190,190,23,24,190,222,226,223,224,225,190,190,227,228,231,233,242,229,230,190,232,234,236,235,190,237,238,239,240,241,190,190,190,245,246,246,246,247,250,246,29,31,246,246,246,251,252,253,33,39,44,276,46,246,246,246,254,255,246,34,246,246,246,35,246,246,246,38,268,270,40,246,246,41,42,246,277,281,278,279,280,246,246,282,283,286,288,297,284,285,246,287,289,291,290,246,292,293,294,295,296,246,246,246,300,301,301,302,301,303,301,301,301,304,304,304,305,304,304,304,306,306,306,307,306,47,49,306,306,310,310,310,311,311,312,311,313,311,311,51,53,311,311,316,316,317,316,316,318,319,318,55,57,320,320,320,320,327,326,326,328,329,330,331,333,336,337,338,339,326,340,341,343,345,346,347,351,353,354,355,371,376,383,388,395,402,405,406,410,404,414,422,426,428,433,435,438,326,326,326,326,326,326,332,326,332,326,334,59,335,326,60,326,326,342,344,326,348,349,350,346,352,326,356,357,366,369,358,359,360,361,362,363,364,365,327,367,368,370,372,375,373,374,377,380,378,379,381,382,384,386,385,387,389,390,326,391,392,393,394,326,396,399,397,398,400,401,403,407,408,409,411,413,412,415,416,417,419,418,420,421,423,424,425,427,429,430,431,432,434,436,437,440,439,439,441,442,444,439,439,439,443,439,443,445,439,447,446,446,450,451,452,453,446,455,456,457,458,460,462,463,464,465,466,446,448,446,449,446,446,446,446,446,454,446,454,459,446,461,446,467,467,468,483,484,470,486,487,474,488,489,490,491,492,494,495,496,497,467,467,467,467,467,467,471,476,467,467,467,467,467,467,467,467,467,485,467,485,467,467,467,467,493,467,87,91,97,498,500,503,99,498,498,499,504,504,505,506,508,510,511,504,504,507,504,507,504,509,504,504,504,513,512,512,514,515,516,518,520,521,526,533,512,512,512,512,517,512,517,512,519,512,512,513,522,523,524,525,527,528,531,529,530,532,534,535,537,536,545,546,548,549,551,553,554,555,557,559,560,562,563,588,594,595,596,664,665,666,667,668,556,670,687,692,699,704,706,712,715,716,720,714,724,735,739,742,750,754,757,758,536,103,104,536,106,539,536,536,541,543,544,536,542,536,536,536,536,536,107,536,536,536,536,536,550,536,550,536,536,112,536,536,113,536,536,556,536,561,536,536,536,564,573,536,120,576,577,578,536,579,122,582,583,123,586,587,536,565,567,536,566,536,536,568,571,572,536,569,570,536,536,536,536,536,536,580,536,574,584,585,536,584,536,574,584,124,593,536,536,536,597,536,536,536,598,600,536,599,536,599,536,601,602,603,133,139,144,626,146,536,536,536,604,605,536,134,536,536,536,135,536,536,536,138,618,620,140,536,536,141,142,536,627,631,628,629,630,536,536,632,633,636,647,660,634,635,536,637,638,639,641,640,536,642,643,644,645,646,648,655,649,650,651,652,653,654,656,657,658,659,536,536,536,663,148,151,536,669,671,672,682,685,673,674,675,676,677,678,679,680,681,683,684,686,688,691,689,690,693,696,694,695,697,698,700,702,701,703,705,707,709,708,710,711,713,681,717,718,719,721,723,722,725,726,727,732,728,729,730,536,537,538,106,731,543,733,734,736,737,738,740,741,743,744,745,748,746,747,749,751,752,753,755,756,536,759,759,760,761,762,764,759,759,759,763,759,763,759,765,759,767,766,766,768,769,766,770,772,766,766,766,766,771,766,771,773,766,775,774,774,778,779,780,774,781,783,786,787,788,789,790,774,791,792,798,826,830,774,831,833,835,774,836,837,839,843,845,846,774,848,866,871,878,886,893,900,905,906,910,904,915,925,931,934,943,947,951,952,953,786,776,774,777,774,774,774,774,774,774,782,774,782,774,155,785,774,774,774,774,774,774,774,774,774,793,796,774,774,156,158,796,159,774,796,159,774,160,807,818,821,800,822,823,808,812,814,774,800,160,802,804,161,774,802,774,803,774,774,162,806,774,774,809,811,774,809,810,812,814,811,774,813,774,774,815,817,774,166,774,774,774,819,811,812,814,819,820,774,809,811,812,814,774,809,811,812,814,774,824,811,812,814,824,825,774,160,826,800,827,812,814,828,811,160,828,800,829,832,834,774,169,170,774,774,840,841,842,837,844,774,774,847,774,774,849,850,859,864,851,852,853,854,855,856,857,858,775,860,861,862,863,775,865,867,870,868,869,775,775,872,875,873,874,876,877,775,879,881,880,882,883,884,774,774,887,775,888,774,889,890,891,892,776,894,897,895,896,898,899,901,902,903,775,907,908,909,911,913,914,912,775,916,917,918,921,919,920,922,923,924,926,928,927,929,930,932,933,935,936,938,941,937,939,940,942,944,945,946,948,949,950,774,774,954,955,956,954,958,957,959,957,960,961,962,957,957]];$send(self,"_lex_trans_targs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_actions");return self.$private("_lex_trans_actions","_lex_trans_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,6,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,9,0,10,0,0,0,11,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,12,0,13,0,0,0,14,0,15,0,0,0,0,16,0,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,0,0,24,25,26,27,28,29,29,30,31,29,32,31,33,31,29,29,30,29,34,29,29,35,29,29,29,29,29,29,0,36,37,0,38,37,39,37,0,0,36,0,40,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,42,43,44,45,0,0,0,45,28,46,29,29,29,46,47,0,48,0,28,29,49,29,50,51,52,0,0,0,0,0,53,54,0,55,0,28,0,56,0,29,57,29,58,29,59,60,61,60,62,60,0,63,64,63,65,63,66,67,0,68,0,0,0,0,69,69,0,0,70,70,71,0,28,72,0,0,0,69,0,73,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,0,74,0,0,0,0,74,75,0,0,0,76,77,78,79,0,7,7,80,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,28,0,0,0,29,57,29,29,29,59,60,61,60,60,60,0,63,64,63,63,63,85,66,86,87,0,88,89,90,93,94,0,28,0,7,0,7,95,96,97,59,98,0,99,0,100,101,102,0,103,104,0,105,7,7,106,107,0,0,108,109,110,111,111,111,111,111,111,111,111,112,113,114,0,0,115,0,116,117,118,0,119,120,121,0,7,0,0,122,123,0,28,124,0,0,0,0,0,125,126,0,0,0,0,0,0,0,127,0,0,0,0,128,0,0,0,0,0,129,130,131,0,132,133,134,7,7,135,0,0,136,137,138,111,111,111,111,111,111,111,111,139,140,141,0,0,142,0,143,144,145,0,146,147,148,0,7,0,0,149,150,0,28,151,0,0,0,0,0,152,153,0,0,0,0,0,0,0,154,0,0,0,0,155,0,0,0,0,0,156,157,158,0,159,160,0,161,0,162,163,164,165,166,167,0,168,169,170,171,172,173,7,174,0,0,175,176,177,178,179,180,181,0,182,7,183,184,0,0,185,186,187,188,0,189,190,191,0,192,0,0,193,194,195,196,197,198,199,0,28,0,0,7,7,0,0,0,200,0,0,0,0,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,203,204,205,206,207,59,208,0,209,0,0,0,210,0,211,212,0,0,213,0,0,0,214,0,215,0,0,0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,0,0,0,0,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,219,0,0,0,220,221,222,59,223,0,28,224,0,225,226,0,28,0,0,227,0,0,0,0,0,0,0,0,0,0,228,0,229,0,230,231,232,233,234,59,235,0,0,236,0,237,238,239,240,28,0,27,0,0,27,0,0,0,0,0,0,7,7,7,241,242,243,244,245,246,247,0,248,249,250,251,252,253,254,255,256,59,257,0,258,259,260,261,262,263,0,0,0,264,7,7,0,265,266,267,268,269,0,0,0,0,0,270,271,59,272,0,273,28,274,275,276,277,278,279,0,28,0,0,0,0,0,0,280,281,282,283,59,284,0,285,28,286,287,288,0,0,0,0,0,0,0,0,0,0,0,0,289,290,0,8,0,0,7,291,0,0,291,291,0,0,7,292,0,292,0,292,292,292,0,0,292,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,292,293,294,294,295,296,0,297,298,0,74,0,299,0,300,301,302,303,304,29,305,306,307,308,309,59,310,0,311,312,0,313,314,0,315,316,291,317,0,318,319,320,0,0,321,0,0,0,0,322,0,0,0,0,0,0,0,323,0,0,324,0,325,326,0,0,0,327,0,0,328,329,330,331,332,333,0,334,335,335,0,336,0,337,338,338,0,0,339,340,341,0,342,343,344,0,7,345,346,347,0,348,111,111,111,111,111,111,111,111,349,350,351,0,0,352,0,353,354,355,0,356,357,358,0,7,0,0,359,360,0,28,361,0,0,0,0,0,362,363,0,0,0,0,0,0,0,364,0,0,0,0,0,365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,366,367,368,0,0,0,369,28,289,289,289,289,289,289,289,289,289,289,289,289,74,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,370,289,289,289,289,289,289,289,289,289,289,289,289,371,372,373,374,375,375,371,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,376,377,378,0,28,0,0,379,380,381,59,382,0,383,28,384,7,385,386,0,28,387,0,0,388,389,390,391,59,392,0,28,393,394,395,396,0,28,0,397,0,7,398,0,0,0,0,399,0,0,400,400,0,401,0,0,0,402,7,403,403,403,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405,406,407,0,408,409,410,411,412,413,59,414,0,415,0,0,416,417,418,419,420,421,422,423,424,0,425,426,427,0,0,428,0,429,430,29,431,432,433,0,0,434,0,0,433,435,435,436,437,0,438,439,0,440,441,442,0,443,444,0,0,445,446,433,433,447,0,0,448,448,0,449,0,450,451,7,0,452,0,453,454,455,456,456,457,457,0,0,458,459,459,460,460,461,462,462,463,463,464,465,465,466,466,0,0,467,468,469,470,471,472,472,469,471,473,400,474,0,0,0,475,0,0,476,477,403,403,403,478,403,479,480,28,481,482,0,0,0,0,0,0,0,0,0,0,0,0,483,0,0,0,0,478,0,0,0,0,0,484,485,0,0,0,0,0,0,486,0,0,0,0,0,485,487,488,0,489,0,490,0,0,0,0,491,0,0,0,0,0,0,0,0,0,492,0,0,0,0,0,0,0,491,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,493,494,495,7,88,496,0,497,0,498,0,0,0,499,500]];$send(self,"_lex_trans_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_to_state_actions");return self.$private("_lex_to_state_actions","_lex_to_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,91,0,91,0,0,0,91,91,0,0,0,0,91,0,91,0,91,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,91,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,91,0,0,0,0,0]];$send(self,"_lex_to_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_from_state_actions");return self.$private("_lex_from_state_actions","_lex_from_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,92,0,92,0,0,0,92,92,0,0,0,0,92,0,92,0,92,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,92,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,92,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,92,0,0,0,0,0]];$send(self,"_lex_from_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_eof_trans");return self.$private("_lex_eof_trans","_lex_eof_trans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,19,19,19,19,19,19,19,19,19,19,19,19,19,19,44,44,44,44,50,50,50,50,50,50,50,50,50,50,50,50,50,50,75,75,75,75,81,81,81,81,0,0,0,0,96,98,100,100,100,105,105,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,170,170,170,170,170,170,170,170,170,170,170,170,180,182,182,182,194,194,194,202,204,204,204,204,204,210,202,202,202,202,202,202,202,237,237,237,237,237,237,202,253,202,253,237,237,202,259,259,259,259,259,259,259,259,259,259,259,259,259,259,202,237,237,237,237,291,291,291,296,298,298,298,302,302,302,306,306,306,306,311,311,311,296,302,302,302,302,302,302,302,302,302,342,342,0,355,356,357,359,361,363,361,361,0,373,374,378,378,379,388,389,390,390,390,393,393,395,396,397,397,397,399,400,401,401,397,393,393,406,407,407,407,407,407,410,410,410,410,416,417,417,417,417,425,417,417,417,417,430,417,417,417,417,417,417,436,437,438,438,0,445,449,449,450,459,460,461,461,461,464,464,466,467,468,468,468,470,471,472,472,468,464,464,477,478,478,478,478,478,481,481,481,481,487,488,488,488,488,496,488,488,488,488,501,488,488,488,488,488,488,507,508,509,509,0,516,517,0,523,0,530,534,534,0,0,543,544,548,548,0,553,0,556,0,559,559,560,561,562,0,603,605,606,607,608,610,612,616,616,607,607,607,607,618,607,607,612,607,607,603,622,622,622,622,622,622,612,612,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,661,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,607,0,704,705,706,708,704,711,0,730,732,734,735,736,737,738,740,737,737,737,737,737,743,737,737,745,743,743,737,0,764,765,105,105,768,769,105,765,765,772,774,777,765,778,765,779,780,782,784,765,772,785,785,774,785,789,785,785,785,785,0,180,797,798,797,797,0,807,808,810,812,814,812,816,0,828,829,830,831,833,835,837,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,0,896,899,902,903,907,909,910,911,912,913,915,918,919,921,923,926,927,929,930,202,927,932,927,918,934,918,918,952,955,957,958,962,965,966,967,968,952,952,952,952,952,952,952,952,952,952,972,976,978,952,952,918,983,984,984,984,918,918,918,985,992,992,994,996,1005,1006,1007,1007,1007,1010,1010,1012,1013,1014,1014,1014,1016,1017,1018,1018,1014,1010,1010,1023,1024,1024,1024,1024,1024,1027,1027,1027,1027,1033,1034,1034,1034,1034,1042,1034,1034,1034,1034,1048,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1066,1067,1068,1068,202,918,918,1072,918,913,896,896,896,896,896,896,896,896,896,896,896,202,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,1125,903,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,1150,918,0,1157,1158,1159,1161,1163,1165,0,1174,1175,1176,1177,1179,1174,1182,0,302,1237,1239,1240,1241,1242,1244,1246,1248,1251,1251,302,1253,1255,1256,1257,1253,1259,1262,1263,1263,302,1268,1271,1282,302,1288,1290,1292,1293,1296,1297,1271,1271,1300,1300,1300,1306,1308,1309,1312,1314,1315,1316,1300,1300,1323,1328,1333,1300,1300,1340,1340,1300,1300,1262,1253,1253,1262,1253,1253,1248,302,1358,1359,1359,1359,1359,1359,1359,1365,1248,1368,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1408,1409,1369,1369,1413,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1467,1242,1468,0,1472,1472,0,1476,1476,1476,1476,1480]];$send(self,"_lex_eof_trans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_start")})(Opal.get_singleton_class(self),$nesting);$writer=[181];$send(self,"lex_start=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_error")})(Opal.get_singleton_class(self),$nesting);$writer=[0];$send(self,"lex_error=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_words")})(Opal.get_singleton_class(self),$nesting);$writer=[190];$send(self,"lex_en_interp_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_string")})(Opal.get_singleton_class(self),$nesting);$writer=[246];$send(self,"lex_en_interp_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_words")})(Opal.get_singleton_class(self),$nesting);$writer=[301];$send(self,"lex_en_plain_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_string")})(Opal.get_singleton_class(self),$nesting);$writer=[304];$send(self,"lex_en_plain_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[306];$send(self,"lex_en_interp_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[310];$send(self,"lex_en_plain_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[311];$send(self,"lex_en_interp_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[316];$send(self,"lex_en_plain_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_regexp_modifiers")})(Opal.get_singleton_class(self),$nesting);$writer=[318];$send(self,"lex_en_regexp_modifiers=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_variable")})(Opal.get_singleton_class(self),$nesting);$writer=[320];$send(self,"lex_en_expr_variable=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_fname")})(Opal.get_singleton_class(self),$nesting);$writer=[326];$send(self,"lex_en_expr_fname=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endfn")})(Opal.get_singleton_class(self),$nesting);$writer=[439];$send(self,"lex_en_expr_endfn=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[446];$send(self,"lex_en_expr_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_arg")})(Opal.get_singleton_class(self),$nesting);$writer=[467];$send(self,"lex_en_expr_arg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_cmdarg")})(Opal.get_singleton_class(self),$nesting);$writer=[498];$send(self,"lex_en_expr_cmdarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endarg")})(Opal.get_singleton_class(self),$nesting);$writer=[504];$send(self,"lex_en_expr_endarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_mid")})(Opal.get_singleton_class(self),$nesting);$writer=[512];$send(self,"lex_en_expr_mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_beg")})(Opal.get_singleton_class(self),$nesting);$writer=[536];$send(self,"lex_en_expr_beg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_labelarg")})(Opal.get_singleton_class(self),$nesting);$writer=[759];$send(self,"lex_en_expr_labelarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_value")})(Opal.get_singleton_class(self),$nesting);$writer=[766];$send(self,"lex_en_expr_value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_end")})(Opal.get_singleton_class(self),$nesting);$writer=[774];$send(self,"lex_en_expr_end=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_leading_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[954];$send(self,"lex_en_leading_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_comment")})(Opal.get_singleton_class(self),$nesting);$writer=[957];$send(self,"lex_en_line_comment=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_begin")})(Opal.get_singleton_class(self),$nesting);$writer=[181];$send(self,"lex_en_line_begin=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze());Opal.const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$($nesting,"Regexp"),"union",Opal.to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze());Opal.const_set($nesting[0],"NUMPARAM_MAX",100);self.$attr_reader("source_buffer");self.$attr_reader("max_numparam_stack");self.$attr_accessor("diagnostics");self.$attr_accessor("static_env");self.$attr_accessor("force_utf32");self.$attr_accessor("cond","cmdarg","in_kwarg","context");self.$attr_accessor("tokens","comments");Opal.def(self,"$initialize",$Lexer_initialize$1=function $$initialize(version){var self=this;self.version=version;self.static_env=nil;self.context=nil;self.tokens=nil;self.comments=nil;return self.$reset()},$Lexer_initialize$1.$$arity=1);Opal.def(self,"$reset",$Lexer_reset$2=function $$reset(reset_state){var self=this;if(reset_state==null){reset_state=true}if($truthy(reset_state)){self.cs=self.$class().$lex_en_line_begin();self.cond=$$($nesting,"StackState").$new("cond");self.cmdarg=$$($nesting,"StackState").$new("cmdarg");self.cond_stack=[];self.cmdarg_stack=[]}self.force_utf32=false;self.source_pts=nil;self.p=0;self.ts=nil;self.te=nil;self.act=0;self.stack=[];self.top=0;self.token_queue=[];self.literal_stack=[];self.eq_begin_s=nil;self.sharp_s=nil;self.newline_s=nil;self.num_base=nil;self.num_digits_s=nil;self.num_suffix_s=nil;self.num_xfrm=nil;self.escape_s=nil;self.escape=nil;self.herebody_s=nil;self.paren_nest=0;self.lambda_stack=[];self.dedent_level=nil;self.command_start=true;self.in_kwarg=false;self.cs_before_block_comment=self.$class().$lex_en_line_begin();return self.max_numparam_stack=$$($nesting,"MaxNumparamStack").$new()},$Lexer_reset$2.$$arity=-1);Opal.def(self,"$source_buffer=",$Lexer_source_buffer$eq$3=function(source_buffer){var self=this,source=nil;self.source_buffer=source_buffer;if($truthy(self.source_buffer)){source=self.source_buffer.$source();if(source.$encoding()["$=="]($$$($$($nesting,"Encoding"),"UTF_8"))){self.source_pts=source.$unpack("U*")}else{self.source_pts=source.$unpack("C*")}if(self.source_pts["$[]"](0)["$=="](65279)){return self.p=1}else{return nil}}else{return self.source_pts=nil}},$Lexer_source_buffer$eq$3.$$arity=1);Opal.def(self,"$encoding",$Lexer_encoding$4=function $$encoding(){var self=this;return self.source_buffer.$source().$encoding()},$Lexer_encoding$4.$$arity=0);Opal.const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()}));Opal.def(self,"$state",$Lexer_state$5=function $$state(){var self=this;return $$($nesting,"LEX_STATES").$invert().$fetch(self.cs,self.cs)},$Lexer_state$5.$$arity=0);Opal.def(self,"$state=",$Lexer_state$eq$6=function(state){var self=this;return self.cs=$$($nesting,"LEX_STATES").$fetch(state)},$Lexer_state$eq$6.$$arity=1);Opal.def(self,"$push_cmdarg",$Lexer_push_cmdarg$7=function $$push_cmdarg(){var self=this;self.cmdarg_stack.$push(self.cmdarg);return self.cmdarg=$$($nesting,"StackState").$new(""+"cmdarg."+self.cmdarg_stack.$count())},$Lexer_push_cmdarg$7.$$arity=0);Opal.def(self,"$pop_cmdarg",$Lexer_pop_cmdarg$8=function $$pop_cmdarg(){var self=this;return self.cmdarg=self.cmdarg_stack.$pop()},$Lexer_pop_cmdarg$8.$$arity=0);Opal.def(self,"$push_cond",$Lexer_push_cond$9=function $$push_cond(){var self=this;self.cond_stack.$push(self.cond);return self.cond=$$($nesting,"StackState").$new(""+"cond."+self.cond_stack.$count())},$Lexer_push_cond$9.$$arity=0);Opal.def(self,"$pop_cond",$Lexer_pop_cond$10=function $$pop_cond(){var self=this;return self.cond=self.cond_stack.$pop()},$Lexer_pop_cond$10.$$arity=0);Opal.def(self,"$max_numparam",$Lexer_max_numparam$11=function $$max_numparam(){var self=this;return self.max_numparam_stack.$top()},$Lexer_max_numparam$11.$$arity=0);Opal.def(self,"$dedent_level",$Lexer_dedent_level$12=function $$dedent_level(){var $a,self=this,dedent_level=nil;$a=[self.dedent_level,nil],dedent_level=$a[0],self.dedent_level=$a[1],$a;return dedent_level},$Lexer_dedent_level$12.$$arity=0);Opal.def(self,"$advance",$Lexer_advance$13=function $$advance(){var $a,$b,$c,$$14,$$15,$$16,$$17,$$18,$$19,$$20,$$21,$$22,$$23,$$24,$$25,$$26,$$27,$$28,$$29,$$30,$$31,$$32,$$33,$$34,$$35,$$36,$$37,$$38,$$39,$$40,$$41,$$42,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,pe=nil,p=nil,eof=nil,cmd_state=nil,testEof=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_acts=nil,_nacts=nil,_goto_level=nil,_resume=nil,_eof_trans=nil,_again=nil,_test_eof=nil,_out=nil,$case=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,escaped_char=nil,unknown_options=nil,value=nil,type=nil,delimiter=nil,escape=nil,ident=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}klass=self.$class();_lex_trans_keys=klass.$send("_lex_trans_keys");_lex_key_spans=klass.$send("_lex_key_spans");_lex_index_offsets=klass.$send("_lex_index_offsets");_lex_indicies=klass.$send("_lex_indicies");_lex_trans_targs=klass.$send("_lex_trans_targs");_lex_trans_actions=klass.$send("_lex_trans_actions");_lex_to_state_actions=klass.$send("_lex_to_state_actions");_lex_from_state_actions=klass.$send("_lex_from_state_actions");_lex_eof_trans=klass.$send("_lex_eof_trans");pe=$rb_plus(self.source_pts.$size(),2);$a=[self.p,pe],p=$a[0],eof=$a[1],$a;cmd_state=self.command_start;self.command_start=false;testEof=false;$b=nil,$a=Opal.to_ary($b),_slen=$a[0]==null?nil:$a[0],_trans=$a[1]==null?nil:$a[1],_keys=$a[2]==null?nil:$a[2],_inds=$a[3]==null?nil:$a[3],_acts=$a[4]==null?nil:$a[4],_nacts=$a[5]==null?nil:$a[5],$b;_goto_level=0;_resume=10;_eof_trans=15;_again=20;_test_eof=30;_out=40;while($truthy(true)){if($truthy($rb_le(_goto_level,0))){if(p["$=="](pe)){_goto_level=_test_eof;continue}if(self.cs["$=="](0)){_goto_level=_out;continue}}if($truthy($rb_le(_goto_level,_resume))){$case=_lex_from_state_actions["$[]"](self.cs);if(92["$==="]($case)){self.ts=p}_keys=self.cs["$<<"](1);_inds=_lex_index_offsets["$[]"](self.cs);_slen=_lex_key_spans["$[]"](self.cs);_wide=$truthy($b=self.source_pts["$[]"](p))?$b:0;_trans=function(){if($truthy($truthy($b=$truthy($c=$rb_gt(_slen,0))?$rb_le(_lex_trans_keys["$[]"](_keys),_wide):$c)?$rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))):$b)){return _lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys)))}else{return _lex_indicies["$[]"]($rb_plus(_inds,_slen))}return nil}()}if($truthy($rb_le(_goto_level,_eof_trans))){self.cs=_lex_trans_targs["$[]"](_trans);if($truthy(_lex_trans_actions["$[]"](_trans)["$!="](0))){$case=_lex_trans_actions["$[]"](_trans);if(28["$==="]($case)){self.newline_s=p}else if(111["$==="]($case)){self.escape_s=p;self.escape=nil}else if(29["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}}else if(59["$==="]($case)){self.sharp_s=$rb_minus(p,1)}else if(63["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(296["$==="]($case)){tm=p}else if(36["$==="]($case)){tm=p}else if(38["$==="]($case)){tm=p}else if(40["$==="]($case)){tm=p}else if(70["$==="]($case)){heredoc_e=p}else if(335["$==="]($case)){tm=$rb_minus(p,1);diag_msg="ivar_name"}else if(338["$==="]($case)){tm=$rb_minus(p,2);diag_msg="cvar_name"}else if(346["$==="]($case)){self.escape=nil}else if(375["$==="]($case)){tm=p}else if(294["$==="]($case)){ident_tok=self.$tok();ident_ts=self.ts;ident_te=self.te}else if(465["$==="]($case)){self.num_base=16;self.num_digits_s=p}else if(459["$==="]($case)){self.num_base=10;self.num_digits_s=p}else if(462["$==="]($case)){self.num_base=8;self.num_digits_s=p}else if(456["$==="]($case)){self.num_base=2;self.num_digits_s=p}else if(471["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts}else if(433["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts}else if(448["$==="]($case)){self.num_suffix_s=p}else if(441["$==="]($case)){self.num_suffix_s=p}else if(438["$==="]($case)){self.num_suffix_s=p}else if(88["$==="]($case)){tm=p}else if(7["$==="]($case)){self.te=$rb_plus(p,1)}else if(108["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(5["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(104["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(103["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(109["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(106["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(107["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(6["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(4["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(136["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(10["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(133["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(132["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(137["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(135["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(11["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(9["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(160["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(159["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(162["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(163["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(166["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(165["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(168["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(175["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(13["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(172["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(171["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(176["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(174["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(12["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(178["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(177["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(185["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(15["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(181["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(180["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(186["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(183["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(184["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(14["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(188["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(187["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=759}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(190["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(191["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(192["$==="]($case)){self.te=p;p=$rb_minus(p,1);unknown_options=self.$tok().$scan(/[^imxouesn]/);if($truthy(unknown_options["$any?"]())){self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()}))}self.$emit("tREGEXP_OPT");self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(16["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(193["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(196["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@@[0-9]/))){self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tCVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(195["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy($rb_lt(self.version,27))){self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()}))}value=self.$tok()["$[]"]($range(1,-1,false));if(value["$[]"](0)["$=="]("0")){self.$diagnostic("error","leading_zero_in_numparam",nil,self.$range(self.ts,self.te))}if($truthy($rb_gt(value.$to_i(),$$($nesting,"NUMPARAM_MAX")))){self.$diagnostic("error","too_large_numparam",nil,self.$range(self.ts,self.te))}if($truthy($truthy($b=self.context["$in_block?"]()["$!"]())?self.context["$in_lambda?"]()["$!"]():$b)){self.$diagnostic("error","numparam_outside_block",nil,self.$range(self.ts,self.te))}if($truthy(self.max_numparam_stack["$can_have_numparams?"]()["$!"]())){self.$diagnostic("error","ordinary_param_defined",nil,self.$range(self.ts,self.te))}self.max_numparam_stack.$register(value.$to_i());self.$emit("tNUMPARAM",self.$tok()["$[]"]($range(1,-1,false)));self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(194["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@[0-9]/))){self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tIVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(217["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"KEYWORDS_BEGIN"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(203["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tIDENTIFIER");self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(18["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(200["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(212["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(20["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self["$version?"](23))){$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else{p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}}else if(199["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(198["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(216["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"KEYWORDS_BEGIN"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(213["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(215["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(210["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(206["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(211["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(204["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(209["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(19["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(17["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(202["$==="]($case)){$case=self.act;if(40["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS_BEGIN"));self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(41["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(42["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(22["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=759;p=$rb_plus(p,1);_goto_level=_out;continue}else if(219["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(218["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(221["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(220["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(21["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(227["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}else if(226["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(225["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(237["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}else if(228["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}else if(233["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}else if(231["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(236["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(260["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(243["$==="]($case)){self.te=$rb_plus(p,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=536;_goto_level=_again;continue}else if(249["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(24["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=536;_goto_level=_again;continue}else if(251["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=774;_goto_level=_again;continue}else if(39["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(238["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(239["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(250["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(246["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=536;_goto_level=_again;continue}else if(248["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(242["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(241["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(259["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(25["$==="]($case)){p=$rb_minus(self.te,1)}else if(41["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(23["$==="]($case)){$case=self.act;if(68["$==="]($case)){p=$rb_minus(self.te,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=536;_goto_level=_again;continue}else if(69["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=536;_goto_level=_again;continue}else if(74["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else{p=$rb_minus(self.te,1)}}else if(43["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=467;_goto_level=_again;continue}else if(264["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(265["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=467;_goto_level=_again;continue}else if(44["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=467;_goto_level=_again;continue}else if(42["$==="]($case)){$case=self.act;if(81["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self.cond["$active?"]())){self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te)}else{self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(82["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=467;_goto_level=_again;continue}}else if(275["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_do(true);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(268["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(269["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(270["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(273["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(279["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(278["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(287["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=536;_goto_level=_again;continue}else if(281["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(285["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(280["$==="]($case)){$case=self.act;if(89["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(90["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=536;_goto_level=_again;continue}}else if(56["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=$rb_minus(p,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(320["$==="]($case)){self.te=$rb_plus(p,1);type=delimiter=self.$tok()["$[]"](0).$chr();p=$rb_minus(p,1);self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(312["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(54["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(333["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));self.cs=326;_goto_level=_again;continue}else if(321["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(332["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2)));self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(68["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(343["$==="]($case)){self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(342["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(322["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(51["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);if($truthy(self["$version?"](18))){ident=self.$tok(self.ts,$rb_minus(self.te,2));self.$emit(function(){if($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))){return"tCONSTANT"}else{return"tIDENTIFIER"}return nil}(),ident,self.ts,$rb_minus(self.te,2));p=$rb_minus(p,1);if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](ident):$b)){self.cs=774}else{self.cs=self.$arg_or_cmdarg(cmd_state)}}else{self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));self.cs=759}p=$rb_plus(p,1);_goto_level=_out;continue}else if(319["$==="]($case)){self.te=$rb_plus(p,1);if($truthy($rb_ge(self.version,27))){self.$emit("tBDOT3")}else{self.$emit("tDOT3")}self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(48["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te);p=$rb_minus(ident_te,1);if($truthy($truthy($b=$truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](ident_tok):$c)?$rb_lt(self.version,25):$b)){self.cs=439}else{self.cs=498}p=$rb_plus(p,1);_goto_level=_out;continue}else if(306["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs_before_block_comment=self.cs;self.cs=181;_goto_level=_again;continue}else if(55["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(290["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(317["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=$rb_minus(p,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(316["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSTAR","*".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(313["$==="]($case)){self.te=p;p=$rb_minus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(311["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(340["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(323["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(336["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy($rb_ge(self.version,27))){self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te))}else{self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=self.ts}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(341["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(347["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(314["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(318["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy($rb_ge(self.version,27))){self.$emit("tBDOT2")}else{self.$emit("tDOT2")}self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(293["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(303["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(305["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs_before_block_comment=self.cs;self.cs=181;_goto_level=_again;continue}else if(308["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(53["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(72["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(73["$==="]($case)){p=$rb_minus(self.te,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(47["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(52["$==="]($case)){p=$rb_minus(self.te,1)}else if(67["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(50["$==="]($case)){$case=self.act;if(95["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=$rb_minus(p,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(102["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(117["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=512;p=$rb_plus(p,1);_goto_level=_out;continue}else if(118["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS_BEGIN"));self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(122["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(123["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(127["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}}else if(377["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(378["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(379["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(383["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(76["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(387["$==="]($case)){self.te=$rb_plus(p,1);self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts);_goto_level=_again;continue}else if(386["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(385["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(389["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(388["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(75["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=536;_goto_level=_again;continue}else if(423["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2));self.lambda_stack.$push(self.paren_nest);self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else if(86["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(397["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts,nil,false,false,true);_goto_level=_again;continue}else if(78["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(419["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(475["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;_goto_level=_again;continue}else if(412["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(404["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));if($truthy($rb_lt(self.version,24))){self.cond.$lexpop();self.cmdarg.$lexpop()}else{self.cond.$pop();self.cmdarg.$pop()}if($truthy($truthy($b=self.$tok()["$=="]("}".$freeze()))?$b:self.$tok()["$=="]("]".$freeze()))){if($truthy($rb_ge(self.version,25))){self.cs=774}else{self.cs=504}}p=$rb_plus(p,1);_goto_level=_out;continue}else if(417["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1)));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(402["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tEH","?".$freeze());self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(399["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(401["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSEMI",";".$freeze());self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(480["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1)));p=$rb_minus(p,1)}else if(396["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(395["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(490["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=326;p=$rb_plus(p,1);_goto_level=_out;continue}else if(488["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(487["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"KEYWORDS"));self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(427["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("error","no_dot_digit_literal")}else if(477["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}else if(416["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=320;_goto_level=_again;continue}else if(424["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(482["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(422["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;_goto_level=_again;continue}else if(418["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(411["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(426["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(409["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(415["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(84["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(79["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","no_dot_digit_literal")}else if(83["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(77["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(80["$==="]($case)){$case=self.act;if(140["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=326;p=$rb_plus(p,1);_goto_level=_out;continue}else if(142["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(144["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(145["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=512;p=$rb_plus(p,1);_goto_level=_out;continue}else if(146["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));if($truthy($truthy($b=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$b)){self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(147["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){}else{self.cs=self.$arg_or_cmdarg(cmd_state)}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(148["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(149["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(153["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(155["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}else if(158["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tDOT",".",self.ts,$rb_plus(self.ts,1));self.$emit("tCOLON",":",$rb_plus(self.ts,1),$rb_plus(self.ts,2));p=$rb_plus($rb_minus(p,self.$tok().$length()),2);self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(159["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(160["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(161["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}else if(163["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(164["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(90["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=774;_goto_level=_again;continue}else if(495["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=181;p=$rb_plus(p,1);_goto_level=_out;continue}else if(496["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=181;p=$rb_plus(p,1);_goto_level=_out;continue}else if(87["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=181;p=$rb_plus(p,1);_goto_level=_out;continue}else if(499["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=self.cs_before_block_comment;_goto_level=_again;continue}else if(498["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())))}else if(101["$==="]($case)){self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=957;_goto_level=_again;continue}else if(2["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(93["$==="]($case)){self.te=$rb_plus(p,1);cmd_state=true;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(94["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(95["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(100["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.eq_begin_s=self.ts;self.cs=957;_goto_level=_again;continue}else if(99["$==="]($case)){self.te=p;p=$rb_minus(p,1);cmd_state=true;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(1["$==="]($case)){p=$rb_minus(self.te,1);cmd_state=true;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(66["$==="]($case)){self.newline_s=p;self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(105["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(134["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(161["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(167["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(173["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(179["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(182["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(189["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(261["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(252["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=774;_goto_level=_again;continue}else if(244["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(344["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(307["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs_before_block_comment=self.cs;self.cs=181;_goto_level=_again;continue}else if(500["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=self.cs_before_block_comment;_goto_level=_again;continue}else if(497["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1)}else if(102["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=957;_goto_level=_again;continue}else if(3["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(451["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$14=function(chars){var self=$$14.$$s||this;if(chars==null){chars=nil}return self.$emit("tRATIONAL",self.$Rational(chars))},$$14.$$s=self,$$14.$$arity=1,$$14));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(449["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$15=function(chars){var self=$$15.$$s||this;if(chars==null){chars=nil}return self.$emit("tIMAGINARY",self.$Complex(0,chars))},$$15.$$s=self,$$15.$$arity=1,$$15));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(454["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$16=function(chars){var self=$$16.$$s||this;if(chars==null){chars=nil}return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},$$16.$$s=self,$$16.$$arity=1,$$16));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(452["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$17=function(chars){var self=$$17.$$s||this;if(self.ts==null)self.ts=nil;if(self.te==null)self.te=nil;if(chars==null){chars=nil}self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2));return p=$rb_minus(p,2)},$$17.$$s=self,$$17.$$arity=1,$$17));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(450["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$18=function(chars){var self=$$18.$$s||this;if(self.ts==null)self.ts=nil;if(self.te==null)self.te=nil;if(chars==null){chars=nil}self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2));return p=$rb_minus(p,2)},$$18.$$s=self,$$18.$$arity=1,$$18));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(453["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$19=function(chars){var self=$$19.$$s||this;if(self.ts==null)self.ts=nil;if(self.te==null)self.te=nil;if(chars==null){chars=nil}self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6));return p=$rb_minus(p,6)},$$19.$$s=self,$$19.$$arity=1,$$19));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(442["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$20=function(chars){var self=$$20.$$s||this;if(chars==null){chars=nil}return self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))},$$20.$$s=self,$$20.$$arity=1,$$20));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(443["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$21=function(chars){var self=$$21.$$s||this;if(self.ts==null)self.ts=nil;if(self.te==null)self.te=nil;if(chars==null){chars=nil}self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2));return p=$rb_minus(p,2)},$$21.$$s=self,$$21.$$arity=1,$$21));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(444["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$22=function(chars){var self=$$22.$$s||this;if(chars==null){chars=nil}return self.$emit("tRATIONAL",self.$Rational(chars))},$$22.$$s=self,$$22.$$arity=1,$$22));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(446["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$23=function(chars){var self=$$23.$$s||this;if(chars==null){chars=nil}return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},$$23.$$s=self,$$23.$$arity=1,$$23));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(445["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],($$24=function(chars){var self=$$24.$$s||this;if(self.ts==null)self.ts=nil;if(self.te==null)self.te=nil;if(chars==null){chars=nil}self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6));return p=$rb_minus(p,6)},$$24.$$s=self,$$24.$$arity=1,$$24));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(128["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);if($truthy($rb_lt(self.version,24))){if($truthy($truthy($b=codepoints["$start_with?"](" "))?$b:codepoints["$start_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3)))}if($truthy(spaces_p=codepoints.$index(/[ \t]{2}/))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2)))}if($truthy($truthy($b=codepoints["$end_with?"](" "))?$b:codepoints["$end_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))}}(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],($$25=function($mlhs_tmp1){var self=$$25.$$s||this,$d,$e,codepoint_str=nil,spaces=nil,codepoint=nil;if(self.escape==null)self.escape=nil;if($mlhs_tmp1==null){$mlhs_tmp1=nil}$e=$mlhs_tmp1,$d=Opal.to_ary($e),codepoint_str=$d[0]==null?nil:$d[0],spaces=$d[1]==null?nil:$d[1],$e;if($truthy(spaces)){return codepoint_s=$rb_plus(codepoint_s,spaces.$length())}else{codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length())}},$$25.$$s=self,$$25.$$brk=$brk,$$25.$$arity=1,$$25.$$has_top_level_mlhs_arg=true,$$25))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(155["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);if($truthy($rb_lt(self.version,24))){if($truthy($truthy($b=codepoints["$start_with?"](" "))?$b:codepoints["$start_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3)))}if($truthy(spaces_p=codepoints.$index(/[ \t]{2}/))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2)))}if($truthy($truthy($b=codepoints["$end_with?"](" "))?$b:codepoints["$end_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))}}(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],($$26=function($mlhs_tmp1){var self=$$26.$$s||this,$d,$e,codepoint_str=nil,spaces=nil,codepoint=nil;if(self.escape==null)self.escape=nil;if($mlhs_tmp1==null){$mlhs_tmp1=nil}$e=$mlhs_tmp1,$d=Opal.to_ary($e),codepoint_str=$d[0]==null?nil:$d[0],spaces=$d[1]==null?nil:$d[1],$e;if($truthy(spaces)){return codepoint_s=$rb_plus(codepoint_s,spaces.$length())}else{codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length())}},$$26.$$s=self,$$26.$$brk=$brk,$$26.$$arity=1,$$26.$$has_top_level_mlhs_arg=true,$$26))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(365["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);if($truthy($rb_lt(self.version,24))){if($truthy($truthy($b=codepoints["$start_with?"](" "))?$b:codepoints["$start_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3)))}if($truthy(spaces_p=codepoints.$index(/[ \t]{2}/))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2)))}if($truthy($truthy($b=codepoints["$end_with?"](" "))?$b:codepoints["$end_with?"]("\t"))){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))}}(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],($$27=function($mlhs_tmp1){var self=$$27.$$s||this,$d,$e,codepoint_str=nil,spaces=nil,codepoint=nil;if(self.escape==null)self.escape=nil;if($mlhs_tmp1==null){$mlhs_tmp1=nil}$e=$mlhs_tmp1,$d=Opal.to_ary($e),codepoint_str=$d[0]==null?nil:$d[0],spaces=$d[1]==null?nil:$d[1],$e;if($truthy(spaces)){return codepoint_s=$rb_plus(codepoint_s,spaces.$length())}else{codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length())}},$$27.$$s=self,$$27.$$brk=$brk,$$27.$$arity=1,$$27.$$has_top_level_mlhs_arg=true,$$27))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(139["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(349["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(142["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(352["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(117["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(144["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(354["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(114["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(141["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(351["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(131["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(158["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(368["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(130["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(157["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(367["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(125["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(152["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(362["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(124["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(151["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(361["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(129["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(156["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(366["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(126["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(153["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(363["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(140["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(350["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(164["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(169["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(57["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.newline_s=p}else if(30["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(32["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(34["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(205["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(224["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(232["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(33["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(263["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(255["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(274["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(286["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(282["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(58["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=$rb_plus(p,1);self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=$rb_minus(p,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(49["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=$rb_plus(p,1);self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te);p=$rb_minus(ident_te,1);if($truthy($truthy($b=$truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](ident_tok):$c)?$rb_lt(self.version,25):$b)){self.cs=439}else{self.cs=498}p=$rb_plus(p,1);_goto_level=_out;continue}else if(304["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(384["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(380["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);if($truthy(self.in_kwarg)){p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else{self.cs=181;_goto_level=_again;continue}}else if(393["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(390["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=181;_goto_level=_again;continue}else if(429["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.$emit("tDOT",".",self.ts,$rb_plus(self.ts,1));self.$emit("tCOLON",":",$rb_plus(self.ts,1),$rb_plus(self.ts,2));p=$rb_plus($rb_minus(p,self.$tok().$length()),2);self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(481["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(410["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=954;_goto_level=_again;continue}else if(96["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(254["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)}else{self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te)}self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(276["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE_ARG","{".$freeze())}self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(376["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.command_start=true;self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE","{".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(493["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(494["$==="]($case)){current_literal=self.$literal();if($truthy(current_literal)){if($truthy(current_literal.$end_interp_brace_and_try_closing())){if($truthy(self["$version?"](18,19))){self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p);self.cond.$lexpop();self.cmdarg.$lexpop()}else{self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p)}if($truthy(current_literal.$saved_herebody_s())){self.herebody_s=current_literal.$saved_herebody_s()}p=$rb_minus(p,1);self.cs=self.$next_state_for_literal(current_literal);p=$rb_plus(p,1);_goto_level=_out;continue}}self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));if($truthy($rb_lt(self.version,24))){self.cond.$lexpop();self.cmdarg.$lexpop()}else{self.cond.$pop();self.cmdarg.$pop()}if($truthy($truthy($b=self.$tok()["$=="]("}".$freeze()))?$b:self.$tok()["$=="]("]".$freeze()))){if($truthy($rb_ge(self.version,25))){self.cs=774}else{self.cs=504}}p=$rb_plus(p,1);_goto_level=_out;continue}else if(60["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(64["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(208["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(223["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(235["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(257["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(272["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(284["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(310["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(382["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(392["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(414["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(98["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(229["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(324["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(295["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(407["$==="]($case)){tm=p;$case=self.act;if(140["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=326;p=$rb_plus(p,1);_goto_level=_out;continue}else if(142["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(144["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(145["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));self.cs=512;p=$rb_plus(p,1);_goto_level=_out;continue}else if(146["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));if($truthy($truthy($b=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$b)){self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(147["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){}else{self.cs=self.$arg_or_cmdarg(cmd_state)}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(148["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(149["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(153["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(155["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}else if(158["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tDOT",".",self.ts,$rb_plus(self.ts,1));self.$emit("tCOLON",":",$rb_plus(self.ts,1),$rb_plus(self.ts,2));p=$rb_plus($rb_minus(p,self.$tok().$length()),2);self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(159["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=446;p=$rb_plus(p,1);_goto_level=_out;continue}else if(160["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(161["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}else if(163["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(164["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(230["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(325["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(297["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(408["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=467;p=$rb_plus(p,1);_goto_level=_out;continue}else if(326["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(298["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(327["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(299["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(331["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(302["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(330["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(301["$==="]($case)){tm=$rb_minus(p,2);$case=self.act;if(95["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=$rb_minus(p,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(102["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(117["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=512;p=$rb_plus(p,1);_goto_level=_out;continue}else if(118["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table($$($nesting,"KEYWORDS_BEGIN"));self.command_start=true;self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(122["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(123["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=439;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg(cmd_state);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(127["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}}else if(328["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(300["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=774;_goto_level=_again;continue}else if(329["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(476["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(253["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te);self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(369["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(479["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK2","[".$freeze());self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(245["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);if($truthy(self["$version?"](18))){self.command_start=true}self.te=p;p=$rb_minus(p,1);if($truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(258["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);if($truthy(self["$version?"](18))){self.command_start=true}self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN2","(".$freeze());self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(266["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);if($truthy(self["$version?"](18))){self.command_start=true}self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);if($truthy(self["$version?"](18))){self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(315["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);if($truthy(self["$version?"](18))){self.command_start=true}self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN","(".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(420["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);if($truthy(self["$version?"](18))){self.command_start=true}self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else if(421["$==="]($case)){self.paren_nest=$rb_minus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit_table($$($nesting,"PUNCTUATION"));if($truthy($rb_lt(self.version,24))){self.cond.$lexpop();self.cmdarg.$lexpop()}else{self.cond.$pop();self.cmdarg.$pop()}if($truthy($truthy($b=self.$tok()["$=="]("}".$freeze()))?$b:self.$tok()["$=="]("]".$freeze()))){if($truthy($rb_ge(self.version,25))){self.cs=774}else{self.cs=504}}p=$rb_plus(p,1);_goto_level=_out;continue}else if(71["$==="]($case)){heredoc_e=p;self.newline_s=p}else if(339["$==="]($case)){new_herebody_s=p;self.te=p;p=$rb_minus(p,1);self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m);indent=$truthy($b=(($c=$gvars["~"])===nil?nil:$c["$[]"](1))["$empty?"]()["$!"]())?$b:(($c=$gvars["~"])===nil?nil:$c["$[]"](2))["$empty?"]()["$!"]();dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"]();type=function(){if($truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())){return'<<"'.$freeze()}else{return $rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3))}return nil}();delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4);if($truthy($rb_ge(self.version,27))){if($truthy($truthy($b=$rb_gt(delimiter.$count("\n"),0))?$b:$rb_gt(delimiter.$count("\r"),0))){self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}}else if($truthy($rb_ge(self.version,24))){if($truthy($rb_gt(delimiter.$count("\n"),0))){if($truthy(delimiter["$end_with?"]("\n"))){self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1)));delimiter=delimiter.$rstrip()}else{self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}}}if($truthy($truthy($b=dedent_body)?self["$version?"](18,19,20,21,22):$b)){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2));p=$rb_plus(self.ts,1);self.cs=536;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body);self.herebody_s=$truthy($b=self.herebody_s)?$b:new_herebody_s;p=$rb_minus(self.herebody_s,1)}}else if(334["$==="]($case)){tm=$rb_minus(p,1);diag_msg="ivar_name";self.te=p;p=$rb_minus(p,1);if($truthy($rb_ge(self.version,27))){self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te))}else{self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=self.ts}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(337["$==="]($case)){tm=$rb_minus(p,2);diag_msg="cvar_name";self.te=p;p=$rb_minus(p,1);if($truthy($rb_ge(self.version,27))){self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te))}else{self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1));p=self.ts}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(345["$==="]($case)){self.escape=nil;self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(372["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=512;p=$rb_plus(p,1);_goto_level=_out;continue}else if(466["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p}else if(460["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p}else if(463["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p}else if(457["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p}else if(472["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(435["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(473["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$28=function(chars){var self=$$28.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$28.$$s=self,$$28.$$arity=1,$$28))}else if(89["$==="]($case)){tm=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=774;_goto_level=_again;continue}else if(8["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p}else if(439["$==="]($case)){self.te=$rb_plus(p,1);self.num_suffix_s=p}else if(214["$==="]($case)){self.te=$rb_plus(p,1);self.act=40}else if(201["$==="]($case)){self.te=$rb_plus(p,1);self.act=41}else if(197["$==="]($case)){self.te=$rb_plus(p,1);self.act=42}else if(26["$==="]($case)){self.te=$rb_plus(p,1);self.act=68}else if(247["$==="]($case)){self.te=$rb_plus(p,1);self.act=69}else if(27["$==="]($case)){self.te=$rb_plus(p,1);self.act=74}else if(240["$==="]($case)){self.te=$rb_plus(p,1);self.act=75}else if(267["$==="]($case)){self.te=$rb_plus(p,1);self.act=81}else if(45["$==="]($case)){self.te=$rb_plus(p,1);self.act=82}else if(288["$==="]($case)){self.te=$rb_plus(p,1);self.act=89}else if(277["$==="]($case)){self.te=$rb_plus(p,1);self.act=90}else if(69["$==="]($case)){self.te=$rb_plus(p,1);self.act=102}else if(291["$==="]($case)){self.te=$rb_plus(p,1);self.act=116}else if(371["$==="]($case)){self.te=$rb_plus(p,1);self.act=117}else if(370["$==="]($case)){self.te=$rb_plus(p,1);self.act=118}else if(74["$==="]($case)){self.te=$rb_plus(p,1);self.act=122}else if(289["$==="]($case)){self.te=$rb_plus(p,1);self.act=123}else if(292["$==="]($case)){self.te=$rb_plus(p,1);self.act=127}else if(489["$==="]($case)){self.te=$rb_plus(p,1);self.act=140}else if(484["$==="]($case)){self.te=$rb_plus(p,1);self.act=141}else if(492["$==="]($case)){self.te=$rb_plus(p,1);self.act=143}else if(485["$==="]($case)){self.te=$rb_plus(p,1);self.act=144}else if(486["$==="]($case)){self.te=$rb_plus(p,1);self.act=145}else if(491["$==="]($case)){self.te=$rb_plus(p,1);self.act=146}else if(483["$==="]($case)){self.te=$rb_plus(p,1);self.act=147}else if(478["$==="]($case)){self.te=$rb_plus(p,1);self.act=148}else if(400["$==="]($case)){self.te=$rb_plus(p,1);self.act=149}else if(437["$==="]($case)){self.te=$rb_plus(p,1);self.act=152}else if(82["$==="]($case)){self.te=$rb_plus(p,1);self.act=153}else if(403["$==="]($case)){self.te=$rb_plus(p,1);self.act=155}else if(428["$==="]($case)){self.te=$rb_plus(p,1);self.act=158}else if(425["$==="]($case)){self.te=$rb_plus(p,1);self.act=159}else if(394["$==="]($case)){self.te=$rb_plus(p,1);self.act=160}else if(406["$==="]($case)){self.te=$rb_plus(p,1);self.act=161}else if(398["$==="]($case)){self.te=$rb_plus(p,1);self.act=163}else if(405["$==="]($case)){self.te=$rb_plus(p,1);self.act=164}else if(170["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}self.escape_s=p;self.escape=nil}else if(118["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(145["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(355["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(123["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(150["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(360["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(116["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(143["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(353["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(122["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(149["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(359["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(120["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(147["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(357["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(127["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(154["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(364["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(110["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(138["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(348["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(61["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(207["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(222["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(234["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(256["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=774;_goto_level=_again;continue}else if(271["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(283["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(309["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(381["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(391["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(413["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(97["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(468["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$29=function(chars){var self=$$29.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$29.$$s=self,$$29.$$arity=1,$$29))}else if(432["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$30=function(chars){var self=$$30.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$30.$$s=self,$$30.$$arity=1,$$30))}else if(447["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$31=function(chars){var self=$$31.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$31.$$s=self,$$31.$$arity=1,$$31));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(440["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$32=function(chars){var self=$$32.$$s||this;if(chars==null){chars=nil}return self.$emit("tFLOAT",self.$Float(chars))},$$32.$$s=self,$$32.$$arity=1,$$32));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(436["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$33=function(chars){var self=$$33.$$s||this;if(chars==null){chars=nil}return self.$emit("tFLOAT",self.$Float(chars))},$$33.$$s=self,$$33.$$arity=1,$$33));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(262["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p;self.act=75}else if(81["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p;self.act=158}else if(35["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=74}else if(46["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=82}else if(430["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=158}else if(65["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.act=95}else if(85["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.act=142}else if(37["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=69}else if(374["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=122}else if(373["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=123}else if(469["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.act=149}else if(121["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(148["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(358["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=$$($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(119["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(146["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?$$($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy($truthy($b=current_literal["$squiggly_heredoc?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else if($truthy($truthy($b=current_literal["$supports_line_continuation_via_slash?"]())?escaped_char["$=="]("\n".$freeze()):$b)){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(356["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();if($truthy($truthy($b=$rb_ge(self.version,27))?$truthy($c=$range(0,8,false)["$include?"](self.escape.$ord()))?$c:$range(14,31,false)["$include?"](self.escape.$ord()):$b)){self.$diagnostic("fatal","invalid_escape")}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){self.$emit("tINTEGER",value.$getbyte(0))}else{self.$emit("tCHARACTER",value)}self.cs=774;p=$rb_plus(p,1);_goto_level=_out;continue}else if(464["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$34=function(chars){var self=$$34.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$34.$$s=self,$$34.$$arity=1,$$34));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(458["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$35=function(chars){var self=$$35.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$35.$$s=self,$$35.$$arity=1,$$35));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(461["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$36=function(chars){var self=$$36.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$36.$$s=self,$$36.$$arity=1,$$36));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(455["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$37=function(chars){var self=$$37.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$37.$$s=self,$$37.$$arity=1,$$37));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(467["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$38=function(chars){var self=$$38.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$38.$$s=self,$$38.$$arity=1,$$38));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(431["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$39=function(chars){var self=$$39.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$39.$$s=self,$$39.$$arity=1,$$39));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($b=$truthy($c=digits["$empty?"]())?self.num_base["$=="](8):$c)?self["$version?"](18):$b)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($b=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(31["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p;self.act=69}else if(62["$==="]($case)){self.te=$rb_plus(p,1);self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.act=95}else if(474["$==="]($case)){self.te=$rb_plus(p,1);self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$40=function(chars){var self=$$40.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$40.$$s=self,$$40.$$arity=1,$$40));self.act=151}else if(470["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$41=function(chars){var self=$$41.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$41.$$s=self,$$41.$$arity=1,$$41));self.act=151}else if(434["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],($$42=function(chars){var self=$$42.$$s||this;if(chars==null){chars=nil}return self.$emit("tINTEGER",chars)},$$42.$$s=self,$$42.$$arity=1,$$42));self.act=151}}}if($truthy($rb_le(_goto_level,_again))){$case=_lex_to_state_actions["$[]"](self.cs);if(91["$==="]($case)){self.ts=nil}if(self.cs["$=="](0)){_goto_level=_out;continue}p=$rb_plus(p,1);if($truthy(p["$!="](pe))){_goto_level=_resume;continue}}if($truthy($rb_le(_goto_level,_test_eof))){if(p["$=="](eof)){if($truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0))){_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1);_goto_level=_eof_trans;continue}}}if($truthy($rb_le(_goto_level,_out))){break}}self.p=p;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}else if(self.cs["$=="](klass.$lex_error())){return[false,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]}else{eof=self.source_pts.$size();return[false,["$eof".$freeze(),self.$range(eof,eof)]]}},$Lexer_advance$13.$$arity=0);self.$protected();Opal.def(self,"$eof_codepoint?",$Lexer_eof_codepoint$ques$43=function(point){var self=this;return[4,26,0]["$include?"](point)},$Lexer_eof_codepoint$ques$43.$$arity=1);Opal.def(self,"$version?",$Lexer_version$ques$44=function($a){var $post_args,versions,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);versions=$post_args;return versions["$include?"](self.version)},$Lexer_version$ques$44.$$arity=-1);Opal.def(self,"$stack_pop",$Lexer_stack_pop$45=function $$stack_pop(){var self=this;self.top=$rb_minus(self.top,1);return self.stack["$[]"](self.top)},$Lexer_stack_pop$45.$$arity=0);Opal.def(self,"$encode_escape",$Lexer_encode_escape$46=function $$encode_escape(ord){var self=this;return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding())},$Lexer_encode_escape$46.$$arity=1);Opal.def(self,"$tok",$Lexer_tok$47=function $$tok(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return self.source_buffer.$slice(Opal.Range.$new(s,e,true))},$Lexer_tok$47.$$arity=-1);Opal.def(self,"$range",$Lexer_range$48=function $$range(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return $$$($$$($$($nesting,"Parser"),"Source"),"Range").$new(self.source_buffer,s,e)},$Lexer_range$48.$$arity=-1);Opal.def(self,"$emit",$Lexer_emit$49=function $$emit(type,value,s,e){var self=this,token=nil;if(value==null){value=self.$tok()}if(s==null){s=self.ts}if(e==null){e=self.te}token=[type,[value,self.$range(s,e)]];self.token_queue.$push(token);if($truthy(self.tokens)){self.tokens.$push(token)}return token},$Lexer_emit$49.$$arity=-2);Opal.def(self,"$emit_table",$Lexer_emit_table$50=function $$emit_table(table,s,e){var self=this,value=nil;if(s==null){s=self.ts}if(e==null){e=self.te}value=self.$tok(s,e);return self.$emit(table["$[]"](value),value,s,e)},$Lexer_emit_table$50.$$arity=-2);Opal.def(self,"$emit_do",$Lexer_emit_do$51=function $$emit_do(do_block){var $a,self=this;if(do_block==null){do_block=false}if($truthy(self.cond["$active?"]())){return self.$emit("kDO_COND","do".$freeze())}else if($truthy($truthy($a=self.cmdarg["$active?"]())?$a:do_block)){return self.$emit("kDO_BLOCK","do".$freeze())}else{return self.$emit("kDO","do".$freeze())}},$Lexer_emit_do$51.$$arity=-1);Opal.def(self,"$arg_or_cmdarg",$Lexer_arg_or_cmdarg$52=function $$arg_or_cmdarg(cmd_state){var self=this;if($truthy(cmd_state)){return self.$class().$lex_en_expr_cmdarg()}else{return self.$class().$lex_en_expr_arg()}},$Lexer_arg_or_cmdarg$52.$$arity=1);Opal.def(self,"$emit_comment",$Lexer_emit_comment$53=function $$emit_comment(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}if($truthy(self.comments)){self.comments.$push($$$($$$($$($nesting,"Parser"),"Source"),"Comment").$new(self.$range(s,e)))}if($truthy(self.tokens)){self.tokens.$push(["tCOMMENT",[self.$tok(s,e),self.$range(s,e)]])}return nil},$Lexer_emit_comment$53.$$arity=-1);Opal.def(self,"$diagnostic",$Lexer_diagnostic$54=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(arguments$==null){arguments$=nil}if(location==null){location=self.$range()}if(highlights==null){highlights=[]}return self.diagnostics.$process($$$($$($nesting,"Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))},$Lexer_diagnostic$54.$$arity=-3);Opal.def(self,"$push_literal",$Lexer_push_literal$55=function $$push_literal($a){var $post_args,args,self=this,new_literal=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;new_literal=$send($$($nesting,"Literal"),"new",[self].concat(Opal.to_a(args)));self.literal_stack.$push(new_literal);return self.$next_state_for_literal(new_literal)},$Lexer_push_literal$55.$$arity=-1);Opal.def(self,"$next_state_for_literal",$Lexer_next_state_for_literal$56=function $$next_state_for_literal(literal){var $a,self=this;if($truthy($truthy($a=literal["$words?"]())?literal["$backslash_delimited?"]():$a)){if($truthy(literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited_words()}else{return self.$class().$lex_en_plain_backslash_delimited_words()}}else if($truthy($truthy($a=literal["$words?"]())?literal["$backslash_delimited?"]()["$!"]():$a)){if($truthy(literal["$interpolate?"]())){return self.$class().$lex_en_interp_words()}else{return self.$class().$lex_en_plain_words()}}else if($truthy($truthy($a=literal["$words?"]()["$!"]())?literal["$backslash_delimited?"]():$a)){if($truthy(literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited()}else{return self.$class().$lex_en_plain_backslash_delimited()}}else if($truthy(literal["$interpolate?"]())){return self.$class().$lex_en_interp_string()}else{return self.$class().$lex_en_plain_string()}},$Lexer_next_state_for_literal$56.$$arity=1);Opal.def(self,"$literal",$Lexer_literal$57=function $$literal(){var self=this;return self.literal_stack.$last()},$Lexer_literal$57.$$arity=0);Opal.def(self,"$pop_literal",$Lexer_pop_literal$58=function $$pop_literal(){var self=this,old_literal=nil;old_literal=self.literal_stack.$pop();self.dedent_level=old_literal.$dedent_level();if(old_literal.$type()["$=="]("tREGEXP_BEG")){return self.$class().$lex_en_regexp_modifiers()}else{return self.$class().$lex_en_expr_end()}},$Lexer_pop_literal$58.$$arity=0);Opal.const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&.",".:"],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT",".:":"tMETHREF"}));Opal.const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"}));Opal.const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"}));Opal.const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"}));return $send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],($Lexer$59=function(keyword){var self=$Lexer$59.$$s||this;if(keyword==null){keyword=nil}$writer=[keyword,($writer=[keyword,""+"k"+keyword.$upcase()],$send($$($nesting,"KEYWORDS"),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])];$send($$($nesting,"KEYWORDS_BEGIN"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$Lexer$59.$$s=self,$Lexer$59.$$arity=1,$Lexer$59))}($$($nesting,"Parser"),null,$nesting)};Opal.modules["parser/lexer/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$attr_accessor","$coerce_encoding","$include?","$send","$+","$[]","$fetch","$==","$!","$heredoc?","$start_with?","$freeze","$clear_buffer","$emit_start_tok","$type","$words?","$=~","$delimiter?","$-","$extend_space","$!=","$flush_string","$emit","$each_char","$===","$%","$nil?","$>","$<<","$empty?","$extend_content","$protected","$lstrip","$b","$dup","$force_encoding","$encoding","$source","$source_buffer","$length"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Literal");var $nesting=[self].concat($parent_nesting),$Literal_initialize$1,$Literal_interpolate$ques$2,$Literal_words$ques$3,$Literal_regexp$ques$4,$Literal_heredoc$ques$5,$Literal_plain_heredoc$ques$6,$Literal_squiggly_heredoc$ques$7,$Literal_backslash_delimited$ques$8,$Literal_type$9,$Literal_munge_escape$ques$10,$Literal_nest_and_try_closing$11,$Literal_infer_indent_level$12,$Literal_start_interp_brace$14,$Literal_end_interp_brace_and_try_closing$15,$Literal_extend_string$16,$Literal_flush_string$17,$Literal_extend_content$18,$Literal_extend_space$19,$Literal_supports_line_continuation_via_slash$ques$20,$Literal_delimiter$ques$21,$Literal_coerce_encoding$22,$Literal_clear_buffer$23,$Literal_emit_start_tok$24,$Literal_emit$25;self.$$prototype.lexer=self.$$prototype.start_tok=self.$$prototype.str_type=self.$$prototype.monolithic=self.$$prototype.interpolate=self.$$prototype.heredoc_e=self.$$prototype.dedent_body=self.$$prototype.end_delim=self.$$prototype.start_delim=self.$$prototype.nesting=self.$$prototype.label_allowed=self.$$prototype.buffer=self.$$prototype.str_s=self.$$prototype.interp_braces=self.$$prototype.buffer_s=self.$$prototype.buffer_e=self.$$prototype.space_emitted=self.$$prototype.indent=nil;Opal.const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":")".$force_encoding("ASCII-8BIT"),"[":"]".$force_encoding("ASCII-8BIT"),"{":"}".$force_encoding("ASCII-8BIT"),"<":">".$force_encoding("ASCII-8BIT")}));Opal.const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",false],"<<'":["tSTRING_BEG",false],"%q":["tSTRING_BEG",false],'"':["tSTRING_BEG",true],'<<"':["tSTRING_BEG",true],"%":["tSTRING_BEG",true],"%Q":["tSTRING_BEG",true],"%w":["tQWORDS_BEG",false],"%W":["tWORDS_BEG",true],"%i":["tQSYMBOLS_BEG",false],"%I":["tSYMBOLS_BEG",true],":'":["tSYMBEG",false],"%s":["tSYMBEG",false],':"':["tSYMBEG",true],"/":["tREGEXP_BEG",true],"%r":["tREGEXP_BEG",true],"%x":["tXSTRING_BEG",true],"`":["tXSTRING_BEG",true],"<<`":["tXSTRING_BEG",true]}));self.$attr_reader("heredoc_e","str_s","dedent_level");self.$attr_accessor("saved_herebody_s");Opal.def(self,"$initialize",$Literal_initialize$1=function $$initialize(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,self=this;if(heredoc_e==null){heredoc_e=nil}if(indent==null){indent=false}if(dedent_body==null){dedent_body=false}if(label_allowed==null){label_allowed=false}self.lexer=lexer;self.nesting=1;str_type=self.$coerce_encoding(str_type);delimiter=self.$coerce_encoding(delimiter);if($truthy($$($nesting,"TYPES")["$include?"](str_type))){}else{lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),self.lexer.$send("range",str_s,$rb_plus(str_s,2)))}self.str_type=str_type;self.str_s=str_s;$b=$$($nesting,"TYPES")["$[]"](str_type),$a=Opal.to_ary($b),self.start_tok=$a[0]==null?nil:$a[0],self.interpolate=$a[1]==null?nil:$a[1],$b;self.start_delim=function(){if($truthy($$($nesting,"DELIMITERS")["$include?"](delimiter))){return delimiter}else{return nil}return nil}();self.end_delim=$$($nesting,"DELIMITERS").$fetch(delimiter,delimiter);self.heredoc_e=heredoc_e;self.indent=indent;self.label_allowed=label_allowed;self.dedent_body=dedent_body;self.dedent_level=nil;self.interp_braces=0;self.space_emitted=true;self.monolithic=$truthy($a=($b=self.start_tok["$=="]("tSTRING_BEG"))?["'".$force_encoding("ASCII-8BIT"),'"'.$force_encoding("ASCII-8BIT")]["$include?"](str_type):self.start_tok["$=="]("tSTRING_BEG"))?self["$heredoc?"]()["$!"]():$a;if($truthy(self.str_type["$start_with?"]("%".$force_encoding("ASCII-8BIT").$freeze()))){self.str_type=$rb_plus(self.str_type,delimiter)}self.$clear_buffer();if($truthy(self.monolithic)){return nil}else{return self.$emit_start_tok()}},$Literal_initialize$1.$$arity=-5);Opal.def(self,"$interpolate?",$Literal_interpolate$ques$2=function(){var self=this;return self.interpolate},$Literal_interpolate$ques$2.$$arity=0);Opal.def(self,"$words?",$Literal_words$ques$3=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.$type()["$=="]("tWORDS_BEG"))?$c:self.$type()["$=="]("tQWORDS_BEG"))?$b:self.$type()["$=="]("tSYMBOLS_BEG"))?$a:self.$type()["$=="]("tQSYMBOLS_BEG")},$Literal_words$ques$3.$$arity=0);Opal.def(self,"$regexp?",$Literal_regexp$ques$4=function(){var self=this;return self.$type()["$=="]("tREGEXP_BEG")},$Literal_regexp$ques$4.$$arity=0);Opal.def(self,"$heredoc?",$Literal_heredoc$ques$5=function(){var self=this;return self.heredoc_e["$!"]()["$!"]()},$Literal_heredoc$ques$5.$$arity=0);Opal.def(self,"$plain_heredoc?",$Literal_plain_heredoc$ques$6=function(){var $a,self=this;return $truthy($a=self["$heredoc?"]())?self.dedent_body["$!"]():$a},$Literal_plain_heredoc$ques$6.$$arity=0);Opal.def(self,"$squiggly_heredoc?",$Literal_squiggly_heredoc$ques$7=function(){var $a,self=this;return $truthy($a=self["$heredoc?"]())?self.dedent_body:$a},$Literal_squiggly_heredoc$ques$7.$$arity=0);Opal.def(self,"$backslash_delimited?",$Literal_backslash_delimited$ques$8=function(){var self=this;return self.end_delim["$=="]("\\".$force_encoding("ASCII-8BIT").$freeze())},$Literal_backslash_delimited$ques$8.$$arity=0);Opal.def(self,"$type",$Literal_type$9=function $$type(){var self=this;return self.start_tok},$Literal_type$9.$$arity=0);Opal.def(self,"$munge_escape?",$Literal_munge_escape$ques$10=function(character){var $a,self=this;character=self.$coerce_encoding(character);if($truthy($truthy($a=self["$words?"]())?character["$=~"](/[ \t\v\r\f\n]/):$a)){return true}else{return["\\".$force_encoding("ASCII-8BIT").$freeze(),self.start_delim,self.end_delim]["$include?"](character)}},$Literal_munge_escape$ques$10.$$arity=1);Opal.def(self,"$nest_and_try_closing",$Literal_nest_and_try_closing$11=function $$nest_and_try_closing(delimiter,ts,te,lookahead){var $a,$b,$c,$d,self=this;if(lookahead==null){lookahead=nil}delimiter=self.$coerce_encoding(delimiter);if($truthy($truthy($a=self.start_delim)?self.start_delim["$=="](delimiter):$a)){self.nesting=$rb_plus(self.nesting,1)}else if($truthy(self["$delimiter?"](delimiter))){self.nesting=$rb_minus(self.nesting,1)}if(self.nesting["$=="](0)){if($truthy(self["$words?"]())){self.$extend_space(ts,ts)}if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=lookahead)?self.label_allowed:$d)?lookahead["$[]"](0)["$=="](":".$force_encoding("ASCII-8BIT")):$c)?lookahead["$[]"](1)["$!="](":".$force_encoding("ASCII-8BIT")):$b)?self.start_tok["$=="]("tSTRING_BEG"):$a)){self.$flush_string();return self.$emit("tLABEL_END",self.end_delim,ts,$rb_plus(te,1))}else if($truthy(self.monolithic)){return self.$emit("tSTRING",self.buffer,self.str_s,te)}else{if($truthy(self["$heredoc?"]())){}else{self.$flush_string()}return self.$emit("tSTRING_END",self.end_delim,ts,te)}}else{return nil}},$Literal_nest_and_try_closing$11.$$arity=-4);Opal.def(self,"$infer_indent_level",$Literal_infer_indent_level$12=function $$infer_indent_level(line){var $$13,self=this,indent_level=nil;if($truthy(self.dedent_body["$!"]())){return nil}indent_level=0;return function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],($$13=function(char$){var self=$$13.$$s||this,$a,$case=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null){char$=nil}return function(){$case=char$;if(" "["$==="]($case)){return indent_level=$rb_plus(indent_level,1)}else if("\t"["$==="]($case)){return indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8)))}else{if($truthy($truthy($a=self.dedent_level["$nil?"]())?$a:$rb_gt(self.dedent_level,indent_level))){self.dedent_level=indent_level}Opal.brk(nil,$brk)}}()},$$13.$$s=self,$$13.$$brk=$brk,$$13.$$arity=1,$$13))}catch(err){if(err===$brk){return err.$v}else{throw err}}}()},$Literal_infer_indent_level$12.$$arity=1);Opal.def(self,"$start_interp_brace",$Literal_start_interp_brace$14=function $$start_interp_brace(){var self=this;return self.interp_braces=$rb_plus(self.interp_braces,1)},$Literal_start_interp_brace$14.$$arity=0);Opal.def(self,"$end_interp_brace_and_try_closing",$Literal_end_interp_brace_and_try_closing$15=function $$end_interp_brace_and_try_closing(){var self=this;self.interp_braces=$rb_minus(self.interp_braces,1);return self.interp_braces["$=="](0)},$Literal_end_interp_brace_and_try_closing$15.$$arity=0);Opal.def(self,"$extend_string",$Literal_extend_string$16=function $$extend_string(string,ts,te){var $a,self=this;self.buffer_s=$truthy($a=self.buffer_s)?$a:ts;self.buffer_e=te;return self.buffer["$<<"](string)},$Literal_extend_string$16.$$arity=3);Opal.def(self,"$flush_string",$Literal_flush_string$17=function $$flush_string(){var self=this;if($truthy(self.monolithic)){self.$emit_start_tok();self.monolithic=false}if($truthy(self.buffer["$empty?"]())){return nil}else{self.$emit("tSTRING_CONTENT",self.buffer,self.buffer_s,self.buffer_e);self.$clear_buffer();return self.$extend_content()}},$Literal_flush_string$17.$$arity=0);Opal.def(self,"$extend_content",$Literal_extend_content$18=function $$extend_content(){var self=this;return self.space_emitted=false},$Literal_extend_content$18.$$arity=0);Opal.def(self,"$extend_space",$Literal_extend_space$19=function $$extend_space(ts,te){var self=this;self.$flush_string();if($truthy(self.space_emitted)){return nil}else{self.$emit("tSPACE",nil,ts,te);return self.space_emitted=true}},$Literal_extend_space$19.$$arity=2);Opal.def(self,"$supports_line_continuation_via_slash?",$Literal_supports_line_continuation_via_slash$ques$20=function(){var $a,self=this;return $truthy($a=self["$words?"]()["$!"]())?self.interpolate:$a},$Literal_supports_line_continuation_via_slash$ques$20.$$arity=0);self.$protected();Opal.def(self,"$delimiter?",$Literal_delimiter$ques$21=function(delimiter){var self=this;if($truthy(self.indent)){return self.end_delim["$=="](delimiter.$lstrip())}else{return self.end_delim["$=="](delimiter)}},$Literal_delimiter$ques$21.$$arity=1);Opal.def(self,"$coerce_encoding",$Literal_coerce_encoding$22=function $$coerce_encoding(string){var self=this;return string.$b()},$Literal_coerce_encoding$22.$$arity=1);Opal.def(self,"$clear_buffer",$Literal_clear_buffer$23=function $$clear_buffer(){var self=this;self.buffer="".$force_encoding("ASCII-8BIT").$dup();self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding());self.buffer_s=nil;return self.buffer_e=nil},$Literal_clear_buffer$23.$$arity=0);Opal.def(self,"$emit_start_tok",$Literal_emit_start_tok$24=function $$emit_start_tok(){var $a,self=this,str_e=nil;str_e=$truthy($a=self.heredoc_e)?$a:$rb_plus(self.str_s,self.str_type.$length());return self.$emit(self.start_tok,self.str_type,self.str_s,str_e)},$Literal_emit_start_tok$24.$$arity=0);return(Opal.def(self,"$emit",$Literal_emit$25=function $$emit(token,type,s,e){var self=this;return self.lexer.$send("emit",token,type,s,e)},$Literal_emit$25.$$arity=4),nil)&&"emit"})($$($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/stack_state"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$freeze","$clear","$|","$<<","$&","$>>","$==","$[]","$to_s"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"StackState");var $nesting=[self].concat($parent_nesting),$StackState_initialize$1,$StackState_clear$2,$StackState_push$3,$StackState_pop$4,$StackState_lexpop$5,$StackState_active$ques$6,$StackState_empty$ques$7,$StackState_to_s$8;self.$$prototype.stack=self.$$prototype.name=nil;Opal.def(self,"$initialize",$StackState_initialize$1=function $$initialize(name){var self=this;self.name=name.$freeze();return self.$clear()},$StackState_initialize$1.$$arity=1);Opal.def(self,"$clear",$StackState_clear$2=function $$clear(){var self=this;return self.stack=0},$StackState_clear$2.$$arity=0);Opal.def(self,"$push",$StackState_push$3=function $$push(bit){var self=this,bit_value=nil;bit_value=function(){if($truthy(bit)){return 1}else{return 0}return nil}();self.stack=self.stack["$<<"](1)["$|"](bit_value);return bit},$StackState_push$3.$$arity=1);Opal.def(self,"$pop",$StackState_pop$4=function $$pop(){var self=this,bit_value=nil;bit_value=self.stack["$&"](1);self.stack=self.stack["$>>"](1);return bit_value["$=="](1)},$StackState_pop$4.$$arity=0);Opal.def(self,"$lexpop",$StackState_lexpop$5=function $$lexpop(){var self=this;self.stack=self.stack["$>>"](1)["$|"](self.stack["$&"](1));return self.stack["$[]"](0)["$=="](1)},$StackState_lexpop$5.$$arity=0);Opal.def(self,"$active?",$StackState_active$ques$6=function(){var self=this;return self.stack["$[]"](0)["$=="](1)},$StackState_active$ques$6.$$arity=0);Opal.def(self,"$empty?",$StackState_empty$ques$7=function(){var self=this;return self.stack["$=="](0)},$StackState_empty$ques$7.$$arity=0);Opal.def(self,"$to_s",$StackState_to_s$8=function $$to_s(){var self=this;return""+"["+self.stack.$to_s(2)+" <= "+self.name+"]"},$StackState_to_s$8.$$arity=0);return Opal.alias(self,"inspect","to_s")})($$($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/dedenter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$-","$length","$each_with_index","$chars","$==","$slice!","$+","$insert","$>=","$===","$%"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Dedenter");var $nesting=[self].concat($parent_nesting),$Dedenter_initialize$1,$Dedenter_dedent$2,$Dedenter_interrupt$4;self.$$prototype.at_line_begin=nil;Opal.def(self,"$initialize",$Dedenter_initialize$1=function $$initialize(dedent_level){var self=this;self.dedent_level=dedent_level;self.at_line_begin=true;return self.indent_level=0},$Dedenter_initialize$1.$$arity=1);Opal.def(self,"$dedent",$Dedenter_dedent$2=function $$dedent(string){var $$3,self=this,space_begin=nil,space_end=nil,offset=nil,last_index=nil,escape=nil,_at_line_begin=nil;space_begin=space_end=offset=0;last_index=$rb_minus(string.$length(),1);escape=false;_at_line_begin=nil;$send(string.$chars(),"each_with_index",[],($$3=function(char$,index){var self=$$3.$$s||this,$a,$case=nil;if(self.at_line_begin==null)self.at_line_begin=nil;if(self.indent_level==null)self.indent_level=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null){char$=nil}if(index==null){index=nil}if(char$["$=="]("\\")){escape=true;string["$slice!"]($rb_minus(index,offset));offset=$rb_plus(offset,1);_at_line_begin=self.at_line_begin;return self.at_line_begin=false}else if($truthy(escape)){if(char$["$=="]("\n")){string["$slice!"]($rb_minus(index,offset));offset=$rb_plus(offset,1);self.at_line_begin=true;space_begin=space_end=$rb_minus(index,offset);self.indent_level=0}else if(char$["$=="]("n")){string["$slice!"]($rb_minus(index,offset));string.$insert($rb_minus(index,offset),"\n")}else{self.at_line_begin=_at_line_begin;escape=false;return $$3.apply(null,$slice.call(arguments))}return escape=false}else if($truthy(self.at_line_begin)){if($truthy($truthy($a=char$["$=="]("\n"))?$a:$rb_ge(self.indent_level,self.dedent_level))){string["$slice!"](Opal.Range.$new(space_begin,space_end,true));offset=$rb_plus(offset,$rb_minus(space_end,space_begin));self.at_line_begin=false}return function(){$case=char$;if(" "["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,1);return space_end=$rb_plus(space_end,1)}else if("\t"["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,$rb_minus(8,self.indent_level["$%"](8)));return space_end=$rb_plus(space_end,1)}else{return nil}}()}else if($truthy(($a=char$["$=="]("\n"))?index["$=="](last_index):char$["$=="]("\n"))){self.at_line_begin=true;self.indent_level=0;return space_begin=space_end=$rb_plus($rb_minus(index,offset),1)}else{return nil}},$$3.$$s=self,$$3.$$arity=2,$$3));if($truthy(self.at_line_begin)){string["$slice!"](Opal.Range.$new(space_begin,space_end,false))}return nil},$Dedenter_dedent$2.$$arity=1);return(Opal.def(self,"$interrupt",$Dedenter_interrupt$4=function $$interrupt(){var self=this;return self.at_line_begin=false},$Dedenter_interrupt$4.$$arity=0),nil)&&"interrupt"})($$($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/max_numparam_stack"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$set","$>=","$top","$max","$last","$push","$pop","$private"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"MaxNumparamStack");var $nesting=[self].concat($parent_nesting),$MaxNumparamStack_initialize$1,$MaxNumparamStack_cant_have_numparams$excl$2,$MaxNumparamStack_can_have_numparams$ques$3,$MaxNumparamStack_register$4,$MaxNumparamStack_top$5,$MaxNumparamStack_push$6,$MaxNumparamStack_pop$7,$MaxNumparamStack_set$8;self.$$prototype.stack=nil;Opal.def(self,"$initialize",$MaxNumparamStack_initialize$1=function $$initialize(){var self=this;return self.stack=[]},$MaxNumparamStack_initialize$1.$$arity=0);Opal.def(self,"$cant_have_numparams!",$MaxNumparamStack_cant_have_numparams$excl$2=function(){var self=this;return self.$set(-1)},$MaxNumparamStack_cant_have_numparams$excl$2.$$arity=0);Opal.def(self,"$can_have_numparams?",$MaxNumparamStack_can_have_numparams$ques$3=function(){var self=this;return $rb_ge(self.$top(),0)},$MaxNumparamStack_can_have_numparams$ques$3.$$arity=0);Opal.def(self,"$register",$MaxNumparamStack_register$4=function $$register(numparam){var self=this;return self.$set([self.$top(),numparam].$max())},$MaxNumparamStack_register$4.$$arity=1);Opal.def(self,"$top",$MaxNumparamStack_top$5=function $$top(){var self=this;return self.stack.$last()},$MaxNumparamStack_top$5.$$arity=0);Opal.def(self,"$push",$MaxNumparamStack_push$6=function $$push(){var self=this;return self.stack.$push(0)},$MaxNumparamStack_push$6.$$arity=0);Opal.def(self,"$pop",$MaxNumparamStack_pop$7=function $$pop(){var self=this;return self.stack.$pop()},$MaxNumparamStack_pop$7.$$arity=0);self.$private();return(Opal.def(self,"$set",$MaxNumparamStack_set$8=function $$set(value){var self=this;self.stack.$pop();return self.stack.$push(value)},$MaxNumparamStack_set$8.$$arity=1),nil)&&"set"})($$($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/builders/default"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$attr_accessor","$n0","$token_map","$numeric","$n","$value","$new","$loc","$private","$===","$+@","$-@","$updated","$join","$expression","$string_value","$delimited_string_map","$unquoted_map","$collapse_string_parts?","$nil?","$first","$children","$string_map","$prefix_string_map","$to_sym","$collection_map","$==","$version","$empty?","$diagnostic","$!","$type","$dedent","$each","$interrupt","$map","$uniq","$sort","$each_char","$to_proc","$static_regexp","$message","$<<","$regexp_map","$unary_op_map","$binary_op_map","$!=","$%","$size","$last","$each_slice","$pair_keyword_map","$pair_quoted_map","$symbol_compose","$range_map","$variable_map","$to_i","$name","$source_buffer","$dup","$line","$emit_encoding","$class","$declared?","$static_env","$var_send_map","$constant_map","$dynamic_const_definition_allowed?","$context","$declare","$with_expression","$with_operator","$join_exprs","$[]","$module_definition_map","$definition_map","$keyword_map","$check_duplicate_args","$arg_prefix_map","$kwarg_map","$emit_procarg0","$emit_arg_inside_procarg0","$location","$resize","$-","$end","$call_type_for_dot","$send_map","$emit_lambda","$expr_map","$keyword","$include?","$block_map","$array","$+","$emit_index","$index_map","$send_index_map","$send_binary_op_map","$static_regexp_node","$names","$send_unary_op_map","$check_condition","$condition_map","$keyword_mod_map","$ternary_map","$for_map","$>","$count","$rescue_body_map","$any?","$eh_keyword_map","$push","$none?","$one?","$begin","$<=","$check_duplicate_arg","$is_a?","$[]=","$arg_name_collides?","$with","$begin_pos","$end_pos","$adjust","$start_with?","$static_string","$encode","$valid_encoding?","$process","$diagnostics","$send"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Default");var $nesting=[self].concat($parent_nesting),$Default_initialize$2,$Default_nil$3,$Default_true$4,$Default_false$5,$Default_integer$6,$Default_float$7,$Default_rational$8,$Default_complex$9,$Default_numeric$10,$Default_unary_num$11,$Default___LINE__$12,$Default_string$13,$Default_string_internal$14,$Default_string_compose$15,$Default_character$16,$Default___FILE__$17,$Default_symbol$18,$Default_symbol_internal$19,$Default_symbol_compose$20,$Default_xstring_compose$21,$Default_dedent_string$22,$Default_regexp_options$24,$Default_regexp_compose$25,$Default_array$26,$Default_splat$27,$Default_word$28,$Default_words_compose$29,$Default_symbols_compose$30,$Default_pair$32,$Default_pair_list_18$33,$Default_pair_keyword$35,$Default_pair_quoted$36,$Default_kwsplat$37,$Default_associate$38,$Default_range_inclusive$39,$Default_range_exclusive$40,$Default_self$41,$Default_ident$42,$Default_ivar$43,$Default_gvar$44,$Default_cvar$45,$Default_numparam$46,$Default_back_ref$47,$Default_nth_ref$48,$Default_accessible$49,$Default_const$50,$Default_const_global$51,$Default_const_fetch$52,$Default___ENCODING__$53,$Default_assignable$54,$Default_const_op_assignable$55,$Default_assign$56,$Default_op_assign$57,$Default_multi_lhs$58,$Default_multi_assign$59,$Default_def_class$60,$Default_def_sclass$61,$Default_def_module$62,$Default_def_method$63,$Default_def_singleton$64,$Default_undef_method$65,$Default_alias$66,$Default_args$67,$Default_numargs$68,$Default_arg$69,$Default_optarg$70,$Default_restarg$71,$Default_kwarg$72,$Default_kwoptarg$73,$Default_kwrestarg$74,$Default_kwnilarg$75,$Default_shadowarg$76,$Default_blockarg$77,$Default_procarg0$78,$Default_arg_expr$79,$Default_restarg_expr$80,$Default_blockarg_expr$81,$Default_objc_kwarg$82,$Default_objc_restarg$83,$Default_call_type_for_dot$84,$Default_call_method$85,$Default_call_lambda$86,$Default_block$87,$Default_block_pass$88,$Default_objc_varargs$89,$Default_attr_asgn$90,$Default_index$91,$Default_index_asgn$92,$Default_binary_op$93,$Default_match_op$94,$Default_unary_op$96,$Default_not_op$97,$Default_method_ref$98,$Default_logical_op$99,$Default_condition$100,$Default_condition_mod$101,$Default_ternary$102,$Default_when$103,$Default_case$104,$Default_loop$105,$Default_loop_mod$106,$Default_for$107,$Default_keyword_cmd$108,$Default_preexe$109,$Default_postexe$110,$Default_rescue_body$111,$Default_begin_body$112,$Default_compstmt$113,$Default_begin$114,$Default_begin_keyword$115,$Default_check_condition$116,$Default_check_duplicate_args$117,$Default_check_duplicate_arg$119,$Default_arg_name_collides$ques$120,$Default_n$121,$Default_n0$122,$Default_join_exprs$123,$Default_token_map$124,$Default_delimited_string_map$125,$Default_prefix_string_map$126,$Default_unquoted_map$127,$Default_pair_keyword_map$128,$Default_pair_quoted_map$129,$Default_expr_map$130,$Default_collection_map$131,$Default_string_map$132,$Default_regexp_map$133,$Default_constant_map$134,$Default_variable_map$135,$Default_binary_op_map$136,$Default_unary_op_map$137,$Default_range_map$138,$Default_arg_prefix_map$139,$Default_kwarg_map$140,$Default_module_definition_map$141,$Default_definition_map$142,$Default_send_map$143,$Default_var_send_map$144,$Default_send_binary_op_map$145,$Default_send_unary_op_map$146,$Default_index_map$147,$Default_send_index_map$148,$Default_block_map$149,$Default_keyword_map$150,$Default_keyword_mod_map$151,$Default_condition_map$152,$Default_ternary_map$153,$Default_for_map$154,$Default_rescue_body_map$155,$Default_eh_keyword_map$156,$Default_static_string$157,$Default_static_regexp$159,$Default_static_regexp_node$160,$Default_collapse_string_parts$ques$161,$Default_value$162,$Default_string_value$163,$Default_loc$164,$Default_diagnostic$165;self.$$prototype.parser=self.$$prototype.emit_file_line_as_literals=nil;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_lambda")})(Opal.get_singleton_class(self),$nesting);self.emit_lambda=false;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_procarg0")})(Opal.get_singleton_class(self),$nesting);self.emit_procarg0=false;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_encoding")})(Opal.get_singleton_class(self),$nesting);self.emit_encoding=false;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_index")})(Opal.get_singleton_class(self),$nesting);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_arg_inside_procarg0")})(Opal.get_singleton_class(self),$nesting);self.emit_index=false;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$modernize$1;return(Opal.def(self,"$modernize",$modernize$1=function $$modernize(){var self=this;self.emit_lambda=true;self.emit_procarg0=true;self.emit_encoding=true;self.emit_index=true;return self.emit_arg_inside_procarg0=true},$modernize$1.$$arity=0),nil)&&"modernize"})(Opal.get_singleton_class(self),$nesting);self.$attr_accessor("parser");self.$attr_accessor("emit_file_line_as_literals");Opal.def(self,"$initialize",$Default_initialize$2=function $$initialize(){var self=this;return self.emit_file_line_as_literals=true},$Default_initialize$2.$$arity=0);Opal.def(self,"$nil",$Default_nil$3=function $$nil(nil_t){var self=this;return self.$n0("nil",self.$token_map(nil_t))},$Default_nil$3.$$arity=1);Opal.def(self,"$true",$Default_true$4=function(true_t){var self=this;return self.$n0("true",self.$token_map(true_t))},$Default_true$4.$$arity=1);Opal.def(self,"$false",$Default_false$5=function(false_t){var self=this;return self.$n0("false",self.$token_map(false_t))},$Default_false$5.$$arity=1);Opal.def(self,"$integer",$Default_integer$6=function $$integer(integer_t){var self=this;return self.$numeric("int",integer_t)},$Default_integer$6.$$arity=1);Opal.def(self,"$float",$Default_float$7=function(float_t){var self=this;return self.$numeric("float",float_t)},$Default_float$7.$$arity=1);Opal.def(self,"$rational",$Default_rational$8=function $$rational(rational_t){var self=this;return self.$numeric("rational",rational_t)},$Default_rational$8.$$arity=1);Opal.def(self,"$complex",$Default_complex$9=function $$complex(complex_t){var self=this;return self.$numeric("complex",complex_t)},$Default_complex$9.$$arity=1);Opal.def(self,"$numeric",$Default_numeric$10=function $$numeric(kind,token){var self=this;return self.$n(kind,[self.$value(token)],$$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(nil,self.$loc(token)))},$Default_numeric$10.$$arity=2);self.$private("numeric");Opal.def(self,"$unary_num",$Default_unary_num$11=function $$unary_num(unary_t,numeric){var $a,self=this,value=nil,operator_loc=nil,$case=nil;$a=[].concat(Opal.to_a(numeric)),value=$a[0]==null?nil:$a[0],$a;operator_loc=self.$loc(unary_t);$case=self.$value(unary_t);if("+"["$==="]($case)){value=value["$+@"]()}else if("-"["$==="]($case)){value=value["$-@"]()}return numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))},$Default_unary_num$11.$$arity=2);Opal.def(self,"$__LINE__",$Default___LINE__$12=function $$__LINE__(__LINE__t){var self=this;return self.$n0("__LINE__",self.$token_map(__LINE__t))},$Default___LINE__$12.$$arity=1);Opal.def(self,"$string",$Default_string$13=function $$string(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$delimited_string_map(string_t))},$Default_string$13.$$arity=1);Opal.def(self,"$string_internal",$Default_string_internal$14=function $$string_internal(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$unquoted_map(string_t))},$Default_string_internal$14.$$arity=1);Opal.def(self,"$string_compose",$Default_string_compose$15=function $$string_compose(begin_t,parts,end_t){var $a,self=this;if($truthy(self["$collapse_string_parts?"](parts))){if($truthy($truthy($a=begin_t["$nil?"]())?end_t["$nil?"]():$a)){return parts.$first()}else{return self.$n("str",parts.$first().$children(),self.$string_map(begin_t,parts,end_t))}}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))}},$Default_string_compose$15.$$arity=3);Opal.def(self,"$character",$Default_character$16=function $$character(char_t){var self=this;return self.$n("str",[self.$string_value(char_t)],self.$prefix_string_map(char_t))},$Default_character$16.$$arity=1);Opal.def(self,"$__FILE__",$Default___FILE__$17=function $$__FILE__(__FILE__t){var self=this;return self.$n0("__FILE__",self.$token_map(__FILE__t))},$Default___FILE__$17.$$arity=1);Opal.def(self,"$symbol",$Default_symbol$18=function $$symbol(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$prefix_string_map(symbol_t))},$Default_symbol$18.$$arity=1);Opal.def(self,"$symbol_internal",$Default_symbol_internal$19=function $$symbol_internal(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$unquoted_map(symbol_t))},$Default_symbol_internal$19.$$arity=1);Opal.def(self,"$symbol_compose",$Default_symbol_compose$20=function $$symbol_compose(begin_t,parts,end_t){var $a,self=this,str=nil;if($truthy(self["$collapse_string_parts?"](parts))){str=parts.$first();return self.$n("sym",[str.$children().$first().$to_sym()],self.$collection_map(begin_t,str.$loc().$expression(),end_t))}else if($truthy(($a=self.parser.$version()["$=="](18))?parts["$empty?"]():self.parser.$version()["$=="](18))){return self.$diagnostic("error","empty_symbol",nil,self.$loc(begin_t).$join(self.$loc(end_t)))}else{return self.$n("dsym",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))}},$Default_symbol_compose$20.$$arity=3);Opal.def(self,"$xstring_compose",$Default_xstring_compose$21=function $$xstring_compose(begin_t,parts,end_t){var self=this;return self.$n("xstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))},$Default_xstring_compose$21.$$arity=3);Opal.def(self,"$dedent_string",$Default_dedent_string$22=function $$dedent_string(node,dedent_level){var $a,$$23,self=this,dedenter=nil,str=nil;if($truthy(dedent_level["$nil?"]()["$!"]())){dedenter=$$$($$($nesting,"Lexer"),"Dedenter").$new(dedent_level);if(node.$type()["$=="]("str")){str=node.$children().$first();dedenter.$dedent(str)}else if($truthy($truthy($a=node.$type()["$=="]("dstr"))?$a:node.$type()["$=="]("xstr"))){$send(node.$children(),"each",[],($$23=function(str_node){var self=$$23.$$s||this;if(str_node==null){str_node=nil}if(str_node.$type()["$=="]("str")){str=str_node.$children().$first();return dedenter.$dedent(str)}else{return dedenter.$interrupt()}},$$23.$$s=self,$$23.$$arity=1,$$23))}}return node},$Default_dedent_string$22.$$arity=2);Opal.def(self,"$regexp_options",$Default_regexp_options$24=function $$regexp_options(regopt_t){var self=this,options=nil;options=$send(self.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc());return self.$n("regopt",options,self.$token_map(regopt_t))},$Default_regexp_options$24.$$arity=1);Opal.def(self,"$regexp_compose",$Default_regexp_compose$25=function $$regexp_compose(begin_t,parts,end_t,options){var self=this,e=nil;try{self.$static_regexp(parts,options)}catch($err){if(Opal.rescue($err,[$$($nesting,"RegexpError")])){e=$err;try{self.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),self.$loc(begin_t).$join(self.$loc(end_t)))}finally{Opal.pop_exception()}}else{throw $err}}return self.$n("regexp",parts["$<<"](options),self.$regexp_map(begin_t,end_t,options))},$Default_regexp_compose$25.$$arity=4);Opal.def(self,"$array",$Default_array$26=function $$array(begin_t,elements,end_t){var self=this;return self.$n("array",elements,self.$collection_map(begin_t,elements,end_t))},$Default_array$26.$$arity=3);Opal.def(self,"$splat",$Default_splat$27=function $$splat(star_t,arg){var self=this;if(arg==null){arg=nil}if($truthy(arg["$nil?"]())){return self.$n0("splat",self.$unary_op_map(star_t))}else{return self.$n("splat",[arg],self.$unary_op_map(star_t,arg))}},$Default_splat$27.$$arity=-2);Opal.def(self,"$word",$Default_word$28=function $$word(parts){var self=this;if($truthy(self["$collapse_string_parts?"](parts))){return parts.$first()}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$collection_map(nil,parts,nil))}},$Default_word$28.$$arity=1);Opal.def(self,"$words_compose",$Default_words_compose$29=function $$words_compose(begin_t,parts,end_t){var self=this;return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},$Default_words_compose$29.$$arity=3);Opal.def(self,"$symbols_compose",$Default_symbols_compose$30=function $$symbols_compose(begin_t,parts,end_t){var $$31,self=this;parts=$send(parts,"map",[],($$31=function(part){var self=$$31.$$s||this,$a,$case=nil,value=nil;if(part==null){part=nil}return function(){$case=part.$type();if("str"["$==="]($case)){$a=[].concat(Opal.to_a(part)),value=$a[0]==null?nil:$a[0],$a;return part.$updated("sym",[value.$to_sym()])}else if("dstr"["$==="]($case)){return part.$updated("dsym")}else{return part}}()},$$31.$$s=self,$$31.$$arity=1,$$31));return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},$Default_symbols_compose$30.$$arity=3);Opal.def(self,"$pair",$Default_pair$32=function $$pair(key,assoc_t,value){var self=this;return self.$n("pair",[key,value],self.$binary_op_map(key,assoc_t,value))},$Default_pair$32.$$arity=3);Opal.def(self,"$pair_list_18",$Default_pair_list_18$33=function $$pair_list_18(list){var $$34,self=this;if($truthy(list.$size()["$%"](2)["$!="](0))){return self.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression())}else{return $send(list.$each_slice(2),"map",[],($$34=function(key,value){var self=$$34.$$s||this;if(key==null){key=nil}if(value==null){value=nil}return self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))},$$34.$$s=self,$$34.$$arity=2,$$34))}},$Default_pair_list_18$33.$$arity=1);Opal.def(self,"$pair_keyword",$Default_pair_keyword$35=function $$pair_keyword(key_t,value){var $a,$b,self=this,key_map=nil,pair_map=nil,key=nil;$b=self.$pair_keyword_map(key_t,value),$a=Opal.to_ary($b),key_map=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$n("sym",[self.$value(key_t).$to_sym()],key_map);return self.$n("pair",[key,value],pair_map)},$Default_pair_keyword$35.$$arity=2);Opal.def(self,"$pair_quoted",$Default_pair_quoted$36=function $$pair_quoted(begin_t,parts,end_t,value){var $a,$b,self=this,pair_map=nil,key=nil;$b=self.$pair_quoted_map(begin_t,end_t,value),$a=Opal.to_ary($b),end_t=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$symbol_compose(begin_t,parts,end_t);return self.$n("pair",[key,value],pair_map)},$Default_pair_quoted$36.$$arity=4);Opal.def(self,"$kwsplat",$Default_kwsplat$37=function $$kwsplat(dstar_t,arg){var self=this;return self.$n("kwsplat",[arg],self.$unary_op_map(dstar_t,arg))},$Default_kwsplat$37.$$arity=2);Opal.def(self,"$associate",$Default_associate$38=function $$associate(begin_t,pairs,end_t){var self=this;return self.$n("hash",[].concat(Opal.to_a(pairs)),self.$collection_map(begin_t,pairs,end_t))},$Default_associate$38.$$arity=3);Opal.def(self,"$range_inclusive",$Default_range_inclusive$39=function $$range_inclusive(lhs,dot2_t,rhs){var self=this;return self.$n("irange",[lhs,rhs],self.$range_map(lhs,dot2_t,rhs))},$Default_range_inclusive$39.$$arity=3);Opal.def(self,"$range_exclusive",$Default_range_exclusive$40=function $$range_exclusive(lhs,dot3_t,rhs){var self=this;return self.$n("erange",[lhs,rhs],self.$range_map(lhs,dot3_t,rhs))},$Default_range_exclusive$40.$$arity=3);Opal.def(self,"$self",$Default_self$41=function $$self(token){var self=this;return self.$n0("self",self.$token_map(token))},$Default_self$41.$$arity=1);Opal.def(self,"$ident",$Default_ident$42=function $$ident(token){var self=this;return self.$n("ident",[self.$value(token).$to_sym()],self.$variable_map(token))},$Default_ident$42.$$arity=1);Opal.def(self,"$ivar",$Default_ivar$43=function $$ivar(token){var self=this;return self.$n("ivar",[self.$value(token).$to_sym()],self.$variable_map(token))},$Default_ivar$43.$$arity=1);Opal.def(self,"$gvar",$Default_gvar$44=function $$gvar(token){var self=this;return self.$n("gvar",[self.$value(token).$to_sym()],self.$variable_map(token))},$Default_gvar$44.$$arity=1);Opal.def(self,"$cvar",$Default_cvar$45=function $$cvar(token){var self=this;return self.$n("cvar",[self.$value(token).$to_sym()],self.$variable_map(token))},$Default_cvar$45.$$arity=1);Opal.def(self,"$numparam",$Default_numparam$46=function $$numparam(token){var self=this;return self.$n("numparam",[self.$value(token).$to_i()],self.$variable_map(token))},$Default_numparam$46.$$arity=1);Opal.def(self,"$back_ref",$Default_back_ref$47=function $$back_ref(token){var self=this;return self.$n("back_ref",[self.$value(token).$to_sym()],self.$token_map(token))},$Default_back_ref$47.$$arity=1);Opal.def(self,"$nth_ref",$Default_nth_ref$48=function $$nth_ref(token){var self=this;return self.$n("nth_ref",[self.$value(token)],self.$token_map(token))},$Default_nth_ref$48.$$arity=1);Opal.def(self,"$accessible",$Default_accessible$49=function $$accessible(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("__FILE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup())}else{return node}}else if("__LINE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup())}else{return node}}else if("__ENCODING__"["$==="]($case)){if($truthy(self.$class().$emit_encoding()["$!"]())){return self.$n("const",[self.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup())}else{return node}}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;if($truthy(self.parser.$static_env()["$declared?"](name))){return node.$updated("lvar")}else{$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;return self.$n("send",[nil,name],self.$var_send_map(node))}}else{return node}}()},$Default_accessible$49.$$arity=1);Opal.def(self,"$const",$Default_const$50=function(name_t){var self=this;return self.$n("const",[nil,self.$value(name_t).$to_sym()],self.$constant_map(nil,nil,name_t))},$Default_const$50.$$arity=1);Opal.def(self,"$const_global",$Default_const_global$51=function $$const_global(t_colon3,name_t){var self=this,cbase=nil;cbase=self.$n0("cbase",self.$token_map(t_colon3));return self.$n("const",[cbase,self.$value(name_t).$to_sym()],self.$constant_map(cbase,t_colon3,name_t))},$Default_const_global$51.$$arity=2);Opal.def(self,"$const_fetch",$Default_const_fetch$52=function $$const_fetch(scope,t_colon2,name_t){var self=this;return self.$n("const",[scope,self.$value(name_t).$to_sym()],self.$constant_map(scope,t_colon2,name_t))},$Default_const_fetch$52.$$arity=3);Opal.def(self,"$__ENCODING__",$Default___ENCODING__$53=function $$__ENCODING__(__ENCODING__t){var self=this;return self.$n0("__ENCODING__",self.$token_map(__ENCODING__t))},$Default___ENCODING__$53.$$arity=1);Opal.def(self,"$assignable",$Default_assignable$54=function $$assignable(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("cvar"["$==="]($case)){return node.$updated("cvasgn")}else if("ivar"["$==="]($case)){return node.$updated("ivasgn")}else if("gvar"["$==="]($case)){return node.$updated("gvasgn")}else if("const"["$==="]($case)){if($truthy(self.parser.$context()["$dynamic_const_definition_allowed?"]())){}else{self.$diagnostic("error","dynamic_const",nil,node.$loc().$expression())}return node.$updated("casgn")}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;self.parser.$static_env().$declare(name);return node.$updated("lvasgn")}else if("nil"["$==="]($case)||"self"["$==="]($case)||"true"["$==="]($case)||"false"["$==="]($case)||"__FILE__"["$==="]($case)||"__LINE__"["$==="]($case)||"__ENCODING__"["$==="]($case)){return self.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression())}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,node.$loc().$expression())}else{return nil}}()},$Default_assignable$54.$$arity=1);Opal.def(self,"$const_op_assignable",$Default_const_op_assignable$55=function $$const_op_assignable(node){var self=this;return node.$updated("casgn")},$Default_const_op_assignable$55.$$arity=1);Opal.def(self,"$assign",$Default_assign$56=function $$assign(lhs,eql_t,rhs){var self=this;return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs,rhs))}))},$Default_assign$56.$$arity=3);Opal.def(self,"$op_assign",$Default_op_assign$57=function $$op_assign(lhs,op_t,rhs){var self=this,$case=nil,operator=nil,source_map=nil;return function(){$case=lhs.$type();if("gvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"lvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"send"["$==="]($case)||"csend"["$==="]($case)||"index"["$==="]($case)){operator=self.$value(op_t)["$[]"]($range(0,-1,false)).$to_sym();source_map=lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs,rhs));if(lhs.$type()["$=="]("index")){lhs=lhs.$updated("indexasgn")}return function(){$case=operator;if("&&"["$==="]($case)){return self.$n("and_asgn",[lhs,rhs],source_map)}else if("||"["$==="]($case)){return self.$n("or_asgn",[lhs,rhs],source_map)}else{return self.$n("op_asgn",[lhs,operator,rhs],source_map)}}()}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression())}else{return nil}}()},$Default_op_assign$57.$$arity=3);Opal.def(self,"$multi_lhs",$Default_multi_lhs$58=function $$multi_lhs(begin_t,items,end_t){var self=this;return self.$n("mlhs",[].concat(Opal.to_a(items)),self.$collection_map(begin_t,items,end_t))},$Default_multi_lhs$58.$$arity=3);Opal.def(self,"$multi_assign",$Default_multi_assign$59=function $$multi_assign(lhs,eql_t,rhs){var self=this;return self.$n("masgn",[lhs,rhs],self.$binary_op_map(lhs,eql_t,rhs))},$Default_multi_assign$59.$$arity=3);Opal.def(self,"$def_class",$Default_def_class$60=function $$def_class(class_t,name,lt_t,superclass,body,end_t){var self=this;return self.$n("class",[name,superclass,body],self.$module_definition_map(class_t,name,lt_t,end_t))},$Default_def_class$60.$$arity=6);Opal.def(self,"$def_sclass",$Default_def_sclass$61=function $$def_sclass(class_t,lshft_t,expr,body,end_t){var self=this;return self.$n("sclass",[expr,body],self.$module_definition_map(class_t,nil,lshft_t,end_t))},$Default_def_sclass$61.$$arity=5);Opal.def(self,"$def_module",$Default_def_module$62=function $$def_module(module_t,name,body,end_t){var self=this;return self.$n("module",[name,body],self.$module_definition_map(module_t,name,nil,end_t))},$Default_def_module$62.$$arity=4);Opal.def(self,"$def_method",$Default_def_method$63=function $$def_method(def_t,name_t,args,body,end_t){var self=this;return self.$n("def",[self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,nil,name_t,end_t))},$Default_def_method$63.$$arity=5);Opal.def(self,"$def_singleton",$Default_def_singleton$64=function $$def_singleton(def_t,definee,dot_t,name_t,args,body,end_t){var self=this,$case=nil;return function(){$case=definee.$type();if("int"["$==="]($case)||"str"["$==="]($case)||"dstr"["$==="]($case)||"sym"["$==="]($case)||"dsym"["$==="]($case)||"regexp"["$==="]($case)||"array"["$==="]($case)||"hash"["$==="]($case)){return self.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression())}else{return self.$n("defs",[definee,self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,dot_t,name_t,end_t))}}()},$Default_def_singleton$64.$$arity=7);Opal.def(self,"$undef_method",$Default_undef_method$65=function $$undef_method(undef_t,names){var self=this;return self.$n("undef",[].concat(Opal.to_a(names)),self.$keyword_map(undef_t,nil,names,nil))},$Default_undef_method$65.$$arity=2);Opal.def(self,"$alias",$Default_alias$66=function $$alias(alias_t,to,from){var self=this;return self.$n("alias",[to,from],self.$keyword_map(alias_t,nil,[to,from],nil))},$Default_alias$66.$$arity=3);Opal.def(self,"$args",$Default_args$67=function $$args(begin_t,args,end_t,check_args){var self=this;if(check_args==null){check_args=true}if($truthy(check_args)){args=self.$check_duplicate_args(args)}return self.$n("args",args,self.$collection_map(begin_t,args,end_t))},$Default_args$67.$$arity=-4);Opal.def(self,"$numargs",$Default_numargs$68=function $$numargs(max_numparam){var self=this;return self.$n("numargs",[max_numparam],nil)},$Default_numargs$68.$$arity=1);Opal.def(self,"$arg",$Default_arg$69=function $$arg(name_t){var self=this;return self.$n("arg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},$Default_arg$69.$$arity=1);Opal.def(self,"$optarg",$Default_optarg$70=function $$optarg(name_t,eql_t,value){var self=this;return self.$n("optarg",[self.$value(name_t).$to_sym(),value],self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression())))},$Default_optarg$70.$$arity=3);Opal.def(self,"$restarg",$Default_restarg$71=function $$restarg(star_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("restarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(star_t,name_t))}else{return self.$n0("restarg",self.$arg_prefix_map(star_t))}},$Default_restarg$71.$$arity=-2);Opal.def(self,"$kwarg",$Default_kwarg$72=function $$kwarg(name_t){var self=this;return self.$n("kwarg",[self.$value(name_t).$to_sym()],self.$kwarg_map(name_t))},$Default_kwarg$72.$$arity=1);Opal.def(self,"$kwoptarg",$Default_kwoptarg$73=function $$kwoptarg(name_t,value){var self=this;return self.$n("kwoptarg",[self.$value(name_t).$to_sym(),value],self.$kwarg_map(name_t,value))},$Default_kwoptarg$73.$$arity=2);Opal.def(self,"$kwrestarg",$Default_kwrestarg$74=function $$kwrestarg(dstar_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("kwrestarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(dstar_t,name_t))}else{return self.$n0("kwrestarg",self.$arg_prefix_map(dstar_t))}},$Default_kwrestarg$74.$$arity=-2);Opal.def(self,"$kwnilarg",$Default_kwnilarg$75=function $$kwnilarg(dstar_t,nil_t){var self=this;return self.$n0("kwnilarg",self.$arg_prefix_map(dstar_t,nil_t))},$Default_kwnilarg$75.$$arity=2);Opal.def(self,"$shadowarg",$Default_shadowarg$76=function $$shadowarg(name_t){var self=this;return self.$n("shadowarg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},$Default_shadowarg$76.$$arity=1);Opal.def(self,"$blockarg",$Default_blockarg$77=function $$blockarg(amper_t,name_t){var self=this;return self.$n("blockarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(amper_t,name_t))},$Default_blockarg$77.$$arity=2);Opal.def(self,"$procarg0",$Default_procarg0$78=function $$procarg0(arg){var $a,self=this;if($truthy(self.$class().$emit_procarg0())){if($truthy(($a=arg.$type()["$=="]("arg"))?self.$class().$emit_arg_inside_procarg0():arg.$type()["$=="]("arg"))){return self.$n("procarg0",[arg],$$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression()))}else{return arg.$updated("procarg0")}}else{return arg}},$Default_procarg0$78.$$arity=1);Opal.def(self,"$arg_expr",$Default_arg_expr$79=function $$arg_expr(expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("arg")}else{return self.$n("arg_expr",[expr],expr.$loc().$dup())}},$Default_arg_expr$79.$$arity=1);Opal.def(self,"$restarg_expr",$Default_restarg_expr$80=function $$restarg_expr(star_t,expr){var self=this;if(expr==null){expr=nil}if($truthy(expr["$nil?"]())){return self.$n0("restarg",self.$token_map(star_t))}else if(expr.$type()["$=="]("lvasgn")){return expr.$updated("restarg")}else{return self.$n("restarg_expr",[expr],expr.$loc().$dup())}},$Default_restarg_expr$80.$$arity=-2);Opal.def(self,"$blockarg_expr",$Default_blockarg_expr$81=function $$blockarg_expr(amper_t,expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("blockarg")}else{return self.$n("blockarg_expr",[expr],expr.$loc().$dup())}},$Default_blockarg_expr$81.$$arity=2);Opal.def(self,"$objc_kwarg",$Default_objc_kwarg$82=function $$objc_kwarg(kwname_t,assoc_t,name_t){var self=this,kwname_l=nil,operator_l=nil;kwname_l=self.$loc(kwname_t);if($truthy(assoc_t["$nil?"]())){kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1));operator_l=kwname_l.$end().$resize(1)}else{operator_l=self.$loc(assoc_t)}return self.$n("objc_kwarg",[self.$value(kwname_t).$to_sym(),self.$value(name_t).$to_sym()],$$$($$$($$($nesting,"Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,self.$loc(name_t),kwname_l.$join(self.$loc(name_t))))},$Default_objc_kwarg$82.$$arity=3);Opal.def(self,"$objc_restarg",$Default_objc_restarg$83=function $$objc_restarg(star_t,name){var self=this;if(name==null){name=nil}if($truthy(name["$nil?"]())){return self.$n0("restarg",self.$arg_prefix_map(star_t))}else if(name.$type()["$=="]("arg")){return name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(self.$loc(star_t))}))}else{return self.$n("objc_restarg",[name],self.$unary_op_map(star_t,name))}},$Default_objc_restarg$83.$$arity=-2);Opal.def(self,"$call_type_for_dot",$Default_call_type_for_dot$84=function $$call_type_for_dot(dot_t){var $a,self=this;if($truthy($truthy($a=dot_t["$nil?"]()["$!"]())?self.$value(dot_t)["$=="]("anddot"):$a)){return"csend"}else{return"send"}},$Default_call_type_for_dot$84.$$arity=1);Opal.def(self,"$call_method",$Default_call_method$85=function $$call_method(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var self=this,type=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}type=self.$call_type_for_dot(dot_t);if($truthy(selector_t["$nil?"]())){return self.$n(type,[receiver,"call"].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t))}else{return self.$n(type,[receiver,self.$value(selector_t).$to_sym()].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}},$Default_call_method$85.$$arity=-4);Opal.def(self,"$call_lambda",$Default_call_lambda$86=function $$call_lambda(lambda_t){var self=this;if($truthy(self.$class().$emit_lambda())){return self.$n0("lambda",self.$expr_map(self.$loc(lambda_t)))}else{return self.$n("send",[nil,"lambda"],self.$send_map(nil,nil,lambda_t))}},$Default_call_lambda$86.$$arity=1);Opal.def(self,"$block",$Default_block$87=function $$block(method_call,begin_t,args,body,end_t){var $a,self=this,_receiver=nil,_selector=nil,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;$a=[].concat(Opal.to_a(method_call)),_receiver=$a[0]==null?nil:$a[0],_selector=$a[1]==null?nil:$a[1],call_args=$slice.call($a,2),$a;if(method_call.$type()["$=="]("yield")){self.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[self.$loc(begin_t)])}last_arg=call_args.$last();if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("block_pass"):$a)){self.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[self.$loc(begin_t)])}if(args.$type()["$=="]("numargs")){block_type="numblock";args=args.$children()["$[]"](0)}else{block_type="block"}if($truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))){return self.$n(block_type,[method_call,args,body],self.$block_map(method_call.$loc().$expression(),begin_t,end_t))}else{$a=[].concat(Opal.to_a(method_call)),actual_send=$a[0]==null?nil:$a[0],$a;block=self.$n(block_type,[actual_send,args,body],self.$block_map(actual_send.$loc().$expression(),begin_t,end_t));return self.$n(method_call.$type(),[block],method_call.$loc().$with_expression(self.$join_exprs(method_call,block)))}},$Default_block$87.$$arity=5);Opal.def(self,"$block_pass",$Default_block_pass$88=function $$block_pass(amper_t,arg){var self=this;return self.$n("block_pass",[arg],self.$unary_op_map(amper_t,arg))},$Default_block_pass$88.$$arity=2);Opal.def(self,"$objc_varargs",$Default_objc_varargs$89=function $$objc_varargs(pair,rest_of_varargs){var $a,self=this,value=nil,first_vararg=nil,vararg_array=nil;$a=[].concat(Opal.to_a(pair)),value=$a[0]==null?nil:$a[0],first_vararg=$a[1]==null?nil:$a[1],$a;vararg_array=self.$array(nil,[first_vararg].concat(Opal.to_a(rest_of_varargs)),nil).$updated("objc_varargs");return pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))},$Default_objc_varargs$89.$$arity=2);Opal.def(self,"$attr_asgn",$Default_attr_asgn$90=function $$attr_asgn(receiver,dot_t,selector_t){var self=this,method_name=nil,type=nil;method_name=$rb_plus(self.$value(selector_t),"=").$to_sym();type=self.$call_type_for_dot(dot_t);return self.$n(type,[receiver,method_name],self.$send_map(receiver,dot_t,selector_t))},$Default_attr_asgn$90.$$arity=3);Opal.def(self,"$index",$Default_index$91=function $$index(receiver,lbrack_t,indexes,rbrack_t){var self=this;if($truthy(self.$class().$emit_index())){return self.$n("index",[receiver].concat(Opal.to_a(indexes)),self.$index_map(receiver,lbrack_t,rbrack_t))}else{return self.$n("send",[receiver,"[]"].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))}},$Default_index$91.$$arity=4);Opal.def(self,"$index_asgn",$Default_index_asgn$92=function $$index_asgn(receiver,lbrack_t,indexes,rbrack_t){var self=this;if($truthy(self.$class().$emit_index())){return self.$n("indexasgn",[receiver].concat(Opal.to_a(indexes)),self.$index_map(receiver,lbrack_t,rbrack_t))}else{return self.$n("send",[receiver,"[]="].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))}},$Default_index_asgn$92.$$arity=4);Opal.def(self,"$binary_op",$Default_binary_op$93=function $$binary_op(receiver,operator_t,arg){var self=this,source_map=nil,operator=nil,method_call=nil;source_map=self.$send_binary_op_map(receiver,operator_t,arg);if(self.parser.$version()["$=="](18)){operator=self.$value(operator_t);if(operator["$=="]("!=")){method_call=self.$n("send",[receiver,"==",arg],source_map)}else if(operator["$=="]("!~")){method_call=self.$n("send",[receiver,"=~",arg],source_map)}if($truthy(["!=","!~"]["$include?"](operator))){return self.$n("not",[method_call],self.$expr_map(source_map.$expression()))}}return self.$n("send",[receiver,self.$value(operator_t).$to_sym(),arg],source_map)},$Default_binary_op$93.$$arity=3);Opal.def(self,"$match_op",$Default_match_op$94=function $$match_op(receiver,match_t,arg){var $$95,self=this,source_map=nil,regexp=nil;source_map=self.$send_binary_op_map(receiver,match_t,arg);if($truthy(regexp=self.$static_regexp_node(receiver))){$send(regexp.$names(),"each",[],($$95=function(name){var self=$$95.$$s||this;if(self.parser==null)self.parser=nil;if(name==null){name=nil}return self.parser.$static_env().$declare(name)},$$95.$$s=self,$$95.$$arity=1,$$95));return self.$n("match_with_lvasgn",[receiver,arg],source_map)}else{return self.$n("send",[receiver,"=~",arg],source_map)}},$Default_match_op$94.$$arity=3);Opal.def(self,"$unary_op",$Default_unary_op$96=function $$unary_op(op_t,receiver){var self=this,$case=nil,method=nil;$case=self.$value(op_t);if("+"["$==="]($case)||"-"["$==="]($case)){method=$rb_plus(self.$value(op_t),"@")}else{method=self.$value(op_t)}return self.$n("send",[receiver,method.$to_sym()],self.$send_unary_op_map(op_t,receiver))},$Default_unary_op$96.$$arity=2);Opal.def(self,"$not_op",$Default_not_op$97=function $$not_op(not_t,begin_t,receiver,end_t){var self=this,nil_node=nil;if(begin_t==null){begin_t=nil}if(receiver==null){receiver=nil}if(end_t==null){end_t=nil}if(self.parser.$version()["$=="](18)){return self.$n("not",[self.$check_condition(receiver)],self.$unary_op_map(not_t,receiver))}else if($truthy(receiver["$nil?"]())){nil_node=self.$n0("begin",self.$collection_map(begin_t,nil,end_t));return self.$n("send",[nil_node,"!"],self.$send_unary_op_map(not_t,nil_node))}else{return self.$n("send",[self.$check_condition(receiver),"!"],self.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}},$Default_not_op$97.$$arity=-2);Opal.def(self,"$method_ref",$Default_method_ref$98=function $$method_ref(receiver,dot_t,selector_t){var self=this;return self.$n("meth_ref",[receiver,self.$value(selector_t).$to_sym()],self.$send_map(receiver,dot_t,selector_t,nil,[],nil))},$Default_method_ref$98.$$arity=3);Opal.def(self,"$logical_op",$Default_logical_op$99=function $$logical_op(type,lhs,op_t,rhs){var self=this;return self.$n(type,[lhs,rhs],self.$binary_op_map(lhs,op_t,rhs))},$Default_logical_op$99.$$arity=4);Opal.def(self,"$condition",$Default_condition$100=function $$condition(cond_t,cond,then_t,if_true,else_t,if_false,end_t){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))},$Default_condition$100.$$arity=7);Opal.def(self,"$condition_mod",$Default_condition_mod$101=function $$condition_mod(if_true,if_false,cond_t,cond){var $a,self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$keyword_mod_map($truthy($a=if_true)?$a:if_false,cond_t,cond))},$Default_condition_mod$101.$$arity=4);Opal.def(self,"$ternary",$Default_ternary$102=function $$ternary(cond,question_t,if_true,colon_t,if_false){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$ternary_map(cond,question_t,if_true,colon_t,if_false))},$Default_ternary$102.$$arity=5);Opal.def(self,"$when",$Default_when$103=function $$when(when_t,patterns,then_t,body){var self=this,children=nil;children=patterns["$<<"](body);return self.$n("when",children,self.$keyword_map(when_t,then_t,children,nil))},$Default_when$103.$$arity=4);Opal.def(self,"$case",$Default_case$104=function(case_t,expr,when_bodies,else_t,else_body,end_t){var self=this;return self.$n("case",[expr].concat(Opal.to_a(when_bodies["$<<"](else_body))),self.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))},$Default_case$104.$$arity=6);Opal.def(self,"$loop",$Default_loop$105=function $$loop(type,keyword_t,cond,do_t,body,end_t){var self=this;return self.$n(type,[self.$check_condition(cond),body],self.$keyword_map(keyword_t,do_t,nil,end_t))},$Default_loop$105.$$arity=6);Opal.def(self,"$loop_mod",$Default_loop_mod$106=function $$loop_mod(type,body,keyword_t,cond){var self=this;if(body.$type()["$=="]("kwbegin")){type=""+type+"_post"}return self.$n(type,[self.$check_condition(cond),body],self.$keyword_mod_map(body,keyword_t,cond))},$Default_loop_mod$106.$$arity=4);Opal.def(self,"$for",$Default_for$107=function(for_t,iterator,in_t,iteratee,do_t,body,end_t){var self=this;return self.$n("for",[iterator,iteratee,body],self.$for_map(for_t,in_t,do_t,end_t))},$Default_for$107.$$arity=7);Opal.def(self,"$keyword_cmd",$Default_keyword_cmd$108=function $$keyword_cmd(type,keyword_t,lparen_t,args,rparen_t){var $a,self=this,last_arg=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}if($truthy(($a=type["$=="]("yield"))?$rb_gt(args.$count(),0):type["$=="]("yield"))){last_arg=args.$last();if(last_arg.$type()["$=="]("block_pass")){self.$diagnostic("error","block_given_to_yield",nil,self.$loc(keyword_t),[last_arg.$loc().$expression()])}}return self.$n(type,args,self.$keyword_map(keyword_t,lparen_t,args,rparen_t))},$Default_keyword_cmd$108.$$arity=-3);Opal.def(self,"$preexe",$Default_preexe$109=function $$preexe(preexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("preexe",[compstmt],self.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))},$Default_preexe$109.$$arity=4);Opal.def(self,"$postexe",$Default_postexe$110=function $$postexe(postexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("postexe",[compstmt],self.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))},$Default_postexe$110.$$arity=4);Opal.def(self,"$rescue_body",$Default_rescue_body$111=function $$rescue_body(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){var self=this;return self.$n("resbody",[exc_list,exc_var,compound_stmt],self.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))},$Default_rescue_body$111.$$arity=6);Opal.def(self,"$begin_body",$Default_begin_body$112=function $$begin_body(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var self=this,statements=nil;if(rescue_bodies==null){rescue_bodies=[]}if(else_t==null){else_t=nil}if(else_==null){else_=nil}if(ensure_t==null){ensure_t=nil}if(ensure_==null){ensure_=nil}if($truthy(rescue_bodies["$any?"]())){if($truthy(else_t)){compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[else_]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_))}else{compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[nil]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil))}}else if($truthy(else_t)){statements=[];if($truthy(compound_stmt["$nil?"]()["$!"]())){if(compound_stmt.$type()["$=="]("begin")){statements=$rb_plus(statements,compound_stmt.$children())}else{statements.$push(compound_stmt)}}statements.$push(self.$n("begin",[else_],self.$collection_map(else_t,[else_],nil)));compound_stmt=self.$n("begin",statements,self.$collection_map(nil,statements,nil))}if($truthy(ensure_t)){compound_stmt=self.$n("ensure",[compound_stmt,ensure_],self.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))}return compound_stmt},$Default_begin_body$112.$$arity=-2);Opal.def(self,"$compstmt",$Default_compstmt$113=function $$compstmt(statements){var self=this;return function(){if($truthy(statements["$none?"]())){return nil}else if($truthy(statements["$one?"]())){return statements.$first()}else{return self.$n("begin",statements,self.$collection_map(nil,statements,nil))}}()},$Default_compstmt$113.$$arity=1);Opal.def(self,"$begin",$Default_begin$114=function $$begin(begin_t,body,end_t){var $a,$b,$c,self=this;if($truthy(body["$nil?"]())){return self.$n0("begin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=body.$type()["$=="]("mlhs"))?$a:$truthy($b=($c=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$b)){return self.$n(body.$type(),body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("begin",[body],self.$collection_map(begin_t,[body],end_t))}},$Default_begin$114.$$arity=3);Opal.def(self,"$begin_keyword",$Default_begin_keyword$115=function $$begin_keyword(begin_t,body,end_t){var $a,$b,self=this;if($truthy(body["$nil?"]())){return self.$n0("kwbegin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=($b=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$a)){return self.$n("kwbegin",body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("kwbegin",[body],self.$collection_map(begin_t,[body],end_t))}},$Default_begin_keyword$115.$$arity=3);self.$private();Opal.def(self,"$check_condition",$Default_check_condition$116=function $$check_condition(cond){var $a,self=this,$case=nil,lhs=nil,rhs=nil,type=nil;return function(){$case=cond.$type();if("masgn"["$==="]($case)){if($truthy($rb_le(self.parser.$version(),23))){return self.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression())}else{return cond}}else if("begin"["$==="]($case)){if(cond.$children().$count()["$=="](1)){return cond.$updated(nil,[self.$check_condition(cond.$children().$last())])}else{return cond}}else if("and"["$==="]($case)||"or"["$==="]($case)||"irange"["$==="]($case)||"erange"["$==="]($case)){$a=[].concat(Opal.to_a(cond)),lhs=$a[0]==null?nil:$a[0],rhs=$a[1]==null?nil:$a[1],$a;type=function(){$case=cond.$type();if("irange"["$==="]($case)){return"iflipflop"}else if("erange"["$==="]($case)){return"eflipflop"}else{return nil}}();if($truthy($truthy($a=["and","or"]["$include?"](cond.$type()))?self.parser.$version()["$=="](18):$a)){return cond}else{return cond.$updated(type,[self.$check_condition(lhs),self.$check_condition(rhs)])}}else if("regexp"["$==="]($case)){return self.$n("match_current_line",[cond],self.$expr_map(cond.$loc().$expression()))}else{return cond}}()},$Default_check_condition$116.$$arity=1);Opal.def(self,"$check_duplicate_args",$Default_check_duplicate_args$117=function $$check_duplicate_args(args,map){var $$118,self=this;if(map==null){map=$hash2([],{})}return $send(args,"each",[],($$118=function(this_arg){var self=$$118.$$s||this,$case=nil;if(this_arg==null){this_arg=nil}return function(){$case=this_arg.$type();if("arg"["$==="]($case)||"optarg"["$==="]($case)||"restarg"["$==="]($case)||"blockarg"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)||"shadowarg"["$==="]($case)){return self.$check_duplicate_arg(this_arg,map)}else if("procarg0"["$==="]($case)){if($truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$($nesting,"Symbol")))){return self.$check_duplicate_arg(this_arg,map)}else{return self.$check_duplicate_args(this_arg.$children(),map)}}else if("mlhs"["$==="]($case)){return self.$check_duplicate_args(this_arg.$children(),map)}else{return nil}}()},$$118.$$s=self,$$118.$$arity=1,$$118))},$Default_check_duplicate_args$117.$$arity=-2);Opal.def(self,"$check_duplicate_arg",$Default_check_duplicate_arg$119=function $$check_duplicate_arg(this_arg,map){var $a,self=this,this_name=nil,that_arg=nil,that_name=nil,$writer=nil;if(map==null){map=$hash2([],{})}$a=[].concat(Opal.to_a(this_arg)),this_name=$a[0]==null?nil:$a[0],$a;that_arg=map["$[]"](this_name);$a=[].concat(Opal.to_a(that_arg)),that_name=$a[0]==null?nil:$a[0],$a;if($truthy(that_arg["$nil?"]())){$writer=[this_name,this_arg];$send(map,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if($truthy(self["$arg_name_collides?"](this_name,that_name))){return self.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()])}else{return nil}},$Default_check_duplicate_arg$119.$$arity=-2);Opal.def(self,"$arg_name_collides?",$Default_arg_name_collides$ques$120=function(this_name,that_name){var $a,$b,self=this,$case=nil;return function(){$case=self.parser.$version();if(18["$==="]($case)){return this_name["$=="](that_name)}else if(19["$==="]($case)){return $truthy($a=this_name["$!="]("_"))?this_name["$=="](that_name):$a}else{return $truthy($a=$truthy($b=this_name)?this_name["$[]"](0)["$!="]("_"):$b)?this_name["$=="](that_name):$a}}()},$Default_arg_name_collides$ques$120.$$arity=2);Opal.def(self,"$n",$Default_n$121=function $$n(type,children,source_map){var self=this;return $$$($$($nesting,"AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))},$Default_n$121.$$arity=3);Opal.def(self,"$n0",$Default_n0$122=function $$n0(type,source_map){var self=this;return self.$n(type,[],source_map)},$Default_n0$122.$$arity=2);Opal.def(self,"$join_exprs",$Default_join_exprs$123=function $$join_exprs(left_expr,right_expr){var self=this;return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())},$Default_join_exprs$123.$$arity=2);Opal.def(self,"$token_map",$Default_token_map$124=function $$token_map(token){var self=this;return $$$($$($nesting,"Source"),"Map").$new(self.$loc(token))},$Default_token_map$124.$$arity=1);Opal.def(self,"$delimited_string_map",$Default_delimited_string_map$125=function $$delimited_string_map(string_t){var self=this,str_range=nil,begin_l=nil,end_l=nil;str_range=self.$loc(string_t);begin_l=str_range.$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)}));end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)}));return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(begin_l,end_l,self.$loc(string_t))},$Default_delimited_string_map$125.$$arity=1);Opal.def(self,"$prefix_string_map",$Default_prefix_string_map$126=function $$prefix_string_map(symbol){var self=this,str_range=nil,begin_l=nil;str_range=self.$loc(symbol);begin_l=str_range.$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)}));return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(begin_l,nil,self.$loc(symbol))},$Default_prefix_string_map$126.$$arity=1);Opal.def(self,"$unquoted_map",$Default_unquoted_map$127=function $$unquoted_map(token){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(nil,nil,self.$loc(token))},$Default_unquoted_map$127.$$arity=1);Opal.def(self,"$pair_keyword_map",$Default_pair_keyword_map$128=function $$pair_keyword_map(key_t,value_e){var self=this,key_range=nil,key_l=nil,colon_l=nil;key_range=self.$loc(key_t);key_l=key_range.$adjust($hash2(["end_pos"],{end_pos:-1}));colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)}));return[$$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]},$Default_pair_keyword_map$128.$$arity=2);Opal.def(self,"$pair_quoted_map",$Default_pair_quoted_map$129=function $$pair_quoted_map(begin_t,end_t,value_e){var self=this,end_l=nil,quote_l=nil,colon_l=nil;end_l=self.$loc(end_t);quote_l=end_l.$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)}));colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)}));return[[self.$value(end_t),quote_l],$$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(colon_l,self.$loc(begin_t).$join(value_e.$loc().$expression()))]},$Default_pair_quoted_map$129.$$arity=3);Opal.def(self,"$expr_map",$Default_expr_map$130=function $$expr_map(loc){var self=this;return $$$($$($nesting,"Source"),"Map").$new(loc)},$Default_expr_map$130.$$arity=1);Opal.def(self,"$collection_map",$Default_collection_map$131=function $$collection_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t["$nil?"]())?$a:end_t["$nil?"]())){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}else if($truthy(begin_t["$nil?"]()["$!"]())){expr_l=self.$loc(begin_t)}else if($truthy(end_t["$nil?"]()["$!"]())){expr_l=self.$loc(end_t)}}else{expr_l=self.$loc(begin_t).$join(self.$loc(end_t))}return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),expr_l)},$Default_collection_map$131.$$arity=3);Opal.def(self,"$string_map",$Default_string_map$132=function $$string_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t)?self.$value(begin_t)["$start_with?"]("<<"):$a)){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}else{expr_l=self.$loc(end_t).$begin()}return $$$($$$($$($nesting,"Source"),"Map"),"Heredoc").$new(self.$loc(begin_t),expr_l,self.$loc(end_t))}else{return self.$collection_map(begin_t,parts,end_t)}},$Default_string_map$132.$$arity=3);Opal.def(self,"$regexp_map",$Default_regexp_map$133=function $$regexp_map(begin_t,end_t,options_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),self.$loc(begin_t).$join(options_e.$loc().$expression()))},$Default_regexp_map$133.$$arity=3);Opal.def(self,"$constant_map",$Default_constant_map$134=function $$constant_map(scope,colon2_t,name_t){var self=this,expr_l=nil;if($truthy(scope["$nil?"]())){expr_l=self.$loc(name_t)}else{expr_l=scope.$loc().$expression().$join(self.$loc(name_t))}return $$$($$$($$($nesting,"Source"),"Map"),"Constant").$new(self.$loc(colon2_t),self.$loc(name_t),expr_l)},$Default_constant_map$134.$$arity=3);Opal.def(self,"$variable_map",$Default_variable_map$135=function $$variable_map(name_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t))},$Default_variable_map$135.$$arity=1);Opal.def(self,"$binary_op_map",$Default_binary_op_map$136=function $$binary_op_map(left_e,op_t,right_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),self.$join_exprs(left_e,right_e))},$Default_binary_op_map$136.$$arity=3);Opal.def(self,"$unary_op_map",$Default_unary_op_map$137=function $$unary_op_map(op_t,arg_e){var self=this,expr_l=nil;if(arg_e==null){arg_e=nil}if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(arg_e.$loc().$expression())}return $$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),expr_l)},$Default_unary_op_map$137.$$arity=-2);Opal.def(self,"$range_map",$Default_range_map$138=function $$range_map(start_e,op_t,end_e){var $a,self=this,expr_l=nil;if($truthy($truthy($a=start_e)?end_e:$a)){expr_l=self.$join_exprs(start_e,end_e)}else if($truthy(start_e)){expr_l=start_e.$loc().$expression().$join(self.$loc(op_t))}else if($truthy(end_e)){expr_l=self.$loc(op_t).$join(end_e.$loc().$expression())}return $$$($$$($$($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),expr_l)},$Default_range_map$138.$$arity=3);Opal.def(self,"$arg_prefix_map",$Default_arg_prefix_map$139=function $$arg_prefix_map(op_t,name_t){var self=this,expr_l=nil;if(name_t==null){name_t=nil}if($truthy(name_t["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(self.$loc(name_t))}return $$$($$$($$($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t),expr_l)},$Default_arg_prefix_map$139.$$arity=-2);Opal.def(self,"$kwarg_map",$Default_kwarg_map$140=function $$kwarg_map(name_t,value_e){var self=this,label_range=nil,name_range=nil,expr_l=nil;if(value_e==null){value_e=nil}label_range=self.$loc(name_t);name_range=label_range.$adjust($hash2(["end_pos"],{end_pos:-1}));if($truthy(value_e)){expr_l=self.$loc(name_t).$join(value_e.$loc().$expression())}else{expr_l=self.$loc(name_t)}return $$$($$$($$($nesting,"Source"),"Map"),"Variable").$new(name_range,expr_l)},$Default_kwarg_map$140.$$arity=-2);Opal.def(self,"$module_definition_map",$Default_module_definition_map$141=function $$module_definition_map(keyword_t,name_e,operator_t,end_t){var self=this,name_l=nil;if($truthy(name_e)){name_l=name_e.$loc().$expression()}return $$$($$$($$($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),name_l,self.$loc(end_t))},$Default_module_definition_map$141.$$arity=4);Opal.def(self,"$definition_map",$Default_definition_map$142=function $$definition_map(keyword_t,operator_t,name_t,end_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),self.$loc(name_t),self.$loc(end_t))},$Default_definition_map$142.$$arity=4);Opal.def(self,"$send_map",$Default_send_map$143=function $$send_map(receiver_e,dot_t,selector_t,begin_t,args,end_t){var self=this,begin_l=nil,end_l=nil;if(begin_t==null){begin_t=nil}if(args==null){args=[]}if(end_t==null){end_t=nil}if($truthy(receiver_e)){begin_l=receiver_e.$loc().$expression()}else if($truthy(selector_t)){begin_l=self.$loc(selector_t)}if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy(args["$any?"]())){end_l=args.$last().$loc().$expression()}else if($truthy(selector_t)){end_l=self.$loc(selector_t)}return $$$($$$($$($nesting,"Source"),"Map"),"Send").$new(self.$loc(dot_t),self.$loc(selector_t),self.$loc(begin_t),self.$loc(end_t),begin_l.$join(end_l))},$Default_send_map$143.$$arity=-4);Opal.def(self,"$var_send_map",$Default_var_send_map$144=function $$var_send_map(variable_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())},$Default_var_send_map$144.$$arity=1);Opal.def(self,"$send_binary_op_map",$Default_send_binary_op_map$145=function $$send_binary_op_map(lhs_e,selector_t,rhs_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,self.$join_exprs(lhs_e,rhs_e))},$Default_send_binary_op_map$145.$$arity=3);Opal.def(self,"$send_unary_op_map",$Default_send_unary_op_map$146=function $$send_unary_op_map(selector_t,arg_e){var self=this,expr_l=nil;if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(selector_t)}else{expr_l=self.$loc(selector_t).$join(arg_e.$loc().$expression())}return $$$($$$($$($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,expr_l)},$Default_send_unary_op_map$146.$$arity=2);Opal.def(self,"$index_map",$Default_index_map$147=function $$index_map(receiver_e,lbrack_t,rbrack_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Index").$new(self.$loc(lbrack_t),self.$loc(rbrack_t),receiver_e.$loc().$expression().$join(self.$loc(rbrack_t)))},$Default_index_map$147.$$arity=3);Opal.def(self,"$send_index_map",$Default_send_index_map$148=function $$send_index_map(receiver_e,lbrack_t,rbrack_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(lbrack_t).$join(self.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(self.$loc(rbrack_t)))},$Default_send_index_map$148.$$arity=3);Opal.def(self,"$block_map",$Default_block_map$149=function $$block_map(receiver_l,begin_t,end_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),receiver_l.$join(self.$loc(end_t)))},$Default_block_map$149.$$arity=3);Opal.def(self,"$keyword_map",$Default_keyword_map$150=function $$keyword_map(keyword_t,begin_t,args,end_t){var $a,self=this,end_l=nil;args=$truthy($a=args)?$a:[];if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=args["$any?"]())?args.$last()["$nil?"]()["$!"]():$a)){end_l=args.$last().$loc().$expression()}else if($truthy($truthy($a=args["$any?"]())?$rb_gt(args.$count(),1):$a)){end_l=args["$[]"](-2).$loc().$expression()}else{end_l=self.$loc(keyword_t)}return $$$($$$($$($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},$Default_keyword_map$150.$$arity=4);Opal.def(self,"$keyword_mod_map",$Default_keyword_mod_map$151=function $$keyword_mod_map(pre_e,keyword_t,post_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),nil,nil,self.$join_exprs(pre_e,post_e))},$Default_keyword_mod_map$151.$$arity=3);Opal.def(self,"$condition_map",$Default_condition_map$152=function $$condition_map(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var $a,self=this,end_l=nil;if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=else_e)?else_e.$loc().$expression():$a)){end_l=else_e.$loc().$expression()}else if($truthy(self.$loc(else_t))){end_l=self.$loc(else_t)}else if($truthy($truthy($a=body_e)?body_e.$loc().$expression():$a)){end_l=body_e.$loc().$expression()}else if($truthy(self.$loc(begin_t))){end_l=self.$loc(begin_t)}else{end_l=cond_e.$loc().$expression()}return $$$($$$($$($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(else_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},$Default_condition_map$152.$$arity=7);Opal.def(self,"$ternary_map",$Default_ternary_map$153=function $$ternary_map(begin_e,question_t,mid_e,colon_t,end_e){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"Ternary").$new(self.$loc(question_t),self.$loc(colon_t),self.$join_exprs(begin_e,end_e))},$Default_ternary_map$153.$$arity=5);Opal.def(self,"$for_map",$Default_for_map$154=function $$for_map(keyword_t,in_t,begin_t,end_t){var self=this;return $$$($$$($$($nesting,"Source"),"Map"),"For").$new(self.$loc(keyword_t),self.$loc(in_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(self.$loc(end_t)))},$Default_for_map$154.$$arity=4);Opal.def(self,"$rescue_body_map",$Default_rescue_body_map$155=function $$rescue_body_map(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var $a,self=this,end_l=nil;if($truthy(compstmt_e)){end_l=compstmt_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?then_t:$a)){end_l=self.$loc(then_t)}if($truthy($truthy($a=end_l["$nil?"]())?exc_var_e:$a)){end_l=exc_var_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?exc_list_e:$a)){end_l=exc_list_e.$loc().$expression()}if($truthy(end_l["$nil?"]())){end_l=self.$loc(keyword_t)}return $$$($$$($$($nesting,"Source"),"Map"),"RescueBody").$new(self.$loc(keyword_t),self.$loc(assoc_t),self.$loc(then_t),self.$loc(keyword_t).$join(end_l))},$Default_rescue_body_map$155.$$arity=6);Opal.def(self,"$eh_keyword_map",$Default_eh_keyword_map$156=function $$eh_keyword_map(compstmt_e,keyword_t,body_es,else_t,else_e){var self=this,begin_l=nil,end_l=nil;if($truthy(compstmt_e["$nil?"]())){if($truthy(keyword_t["$nil?"]())){begin_l=body_es.$first().$loc().$expression()}else{begin_l=self.$loc(keyword_t)}}else{begin_l=compstmt_e.$loc().$expression()}if($truthy(else_t)){if($truthy(else_e["$nil?"]())){end_l=self.$loc(else_t)}else{end_l=else_e.$loc().$expression()}}else if($truthy(body_es.$last()["$nil?"]()["$!"]())){end_l=body_es.$last().$loc().$expression()}else{end_l=self.$loc(keyword_t)}return $$$($$$($$($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),nil,self.$loc(else_t),nil,begin_l.$join(end_l))},$Default_eh_keyword_map$156.$$arity=5);Opal.def(self,"$static_string",$Default_static_string$157=function $$static_string(nodes){try{var $$158,self=this;return $send(nodes,"map",[],($$158=function(node){var self=$$158.$$s||this,$case=nil,string=nil;if(node==null){node=nil}return function(){$case=node.$type();if("str"["$==="]($case)){return node.$children()["$[]"](0)}else if("begin"["$==="]($case)){if($truthy(string=self.$static_string(node.$children()))){return string}else{Opal.ret(nil)}}else{Opal.ret(nil)}}()},$$158.$$s=self,$$158.$$arity=1,$$158)).$join()}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Default_static_string$157.$$arity=1);Opal.def(self,"$static_regexp",$Default_static_regexp$159=function $$static_regexp(parts,options){var self=this,source=nil;source=self.$static_string(parts);if($truthy(source["$nil?"]())){return nil}source=function(){if($truthy(options.$children()["$include?"]("u"))){return source.$encode($$$($$($nesting,"Encoding"),"UTF_8"))}else if($truthy(options.$children()["$include?"]("e"))){return source.$encode($$$($$($nesting,"Encoding"),"EUC_JP"))}else if($truthy(options.$children()["$include?"]("s"))){return source.$encode($$$($$($nesting,"Encoding"),"WINDOWS_31J"))}else if($truthy(options.$children()["$include?"]("n"))){return source.$encode($$$($$($nesting,"Encoding"),"BINARY"))}else{return source}}();return $$($nesting,"Regexp").$new(source,function(){if($truthy(options.$children()["$include?"]("x"))){return $$$($$($nesting,"Regexp"),"EXTENDED")}else{return nil}return nil}())},$Default_static_regexp$159.$$arity=2);Opal.def(self,"$static_regexp_node",$Default_static_regexp_node$160=function $$static_regexp_node(node){var $a,self=this,parts=nil,options=nil;if(node.$type()["$=="]("regexp")){$a=[node.$children()["$[]"]($range(0,-2,false)),node.$children()["$[]"](-1)],parts=$a[0],options=$a[1],$a;return self.$static_regexp(parts,options)}else{return nil}},$Default_static_regexp_node$160.$$arity=1);Opal.def(self,"$collapse_string_parts?",$Default_collapse_string_parts$ques$161=function(parts){var $a,self=this;return $truthy($a=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$a},$Default_collapse_string_parts$ques$161.$$arity=1);Opal.def(self,"$value",$Default_value$162=function $$value(token){var self=this;return token["$[]"](0)},$Default_value$162.$$arity=1);Opal.def(self,"$string_value",$Default_string_value$163=function $$string_value(token){var self=this;if($truthy(token["$[]"](0)["$valid_encoding?"]())){}else{self.$diagnostic("error","invalid_encoding",nil,token["$[]"](1))}return token["$[]"](0)},$Default_string_value$163.$$arity=1);Opal.def(self,"$loc",$Default_loc$164=function $$loc(token){var $a,self=this;if($truthy($truthy($a=token)?token["$[]"](0):$a)){return token["$[]"](1)}else{return nil}},$Default_loc$164.$$arity=1);return(Opal.def(self,"$diagnostic",$Default_diagnostic$165=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(highlights==null){highlights=[]}self.parser.$diagnostics().$process($$($nesting,"Diagnostic").$new(type,reason,arguments$,location,highlights));if(type["$=="]("error")){return self.parser.$send("yyerror")}else{return nil}},$Default_diagnostic$165.$$arity=-5),nil)&&"diagnostic"})($$($nesting,"Builders"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/context"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$freeze","$<<","$pop","$clear","$==","$last","$include?","$rindex","$stack","$nil?","$!","$>"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Context");var $nesting=[self].concat($parent_nesting),$Context_initialize$1,$Context_push$2,$Context_pop$3,$Context_reset$4,$Context_in_class$ques$5,$Context_indirectly_in_def$ques$6,$Context_class_definition_allowed$ques$7,$Context_in_block$ques$9,$Context_in_lambda$ques$10;self.$$prototype.stack=nil;self.$attr_reader("stack");Opal.def(self,"$initialize",$Context_initialize$1=function $$initialize(){var self=this;self.stack=[];return self.$freeze()},$Context_initialize$1.$$arity=0);Opal.def(self,"$push",$Context_push$2=function $$push(state){var self=this;return self.stack["$<<"](state)},$Context_push$2.$$arity=1);Opal.def(self,"$pop",$Context_pop$3=function $$pop(){var self=this;return self.stack.$pop()},$Context_pop$3.$$arity=0);Opal.def(self,"$reset",$Context_reset$4=function $$reset(){var self=this;return self.stack.$clear()},$Context_reset$4.$$arity=0);Opal.def(self,"$in_class?",$Context_in_class$ques$5=function(){var self=this;return self.stack.$last()["$=="]("class")},$Context_in_class$ques$5.$$arity=0);Opal.def(self,"$indirectly_in_def?",$Context_indirectly_in_def$ques$6=function(){var $a,self=this;return $truthy($a=self.stack["$include?"]("def"))?$a:self.stack["$include?"]("defs")},$Context_indirectly_in_def$ques$6.$$arity=0);Opal.def(self,"$class_definition_allowed?",$Context_class_definition_allowed$ques$7=function(){var $$8,$a,$b,self=this,def_index=nil,sclass_index=nil;def_index=$send(self.$stack(),"rindex",[],($$8=function(item){var self=$$8.$$s||this;if(item==null){item=nil}return["def","defs"]["$include?"](item)},$$8.$$s=self,$$8.$$arity=1,$$8));sclass_index=self.$stack().$rindex("sclass");return $truthy($a=def_index["$nil?"]())?$a:$truthy($b=sclass_index["$nil?"]()["$!"]())?$rb_gt(sclass_index,def_index):$b},$Context_class_definition_allowed$ques$7.$$arity=0);Opal.alias(self,"module_definition_allowed?","class_definition_allowed?");Opal.alias(self,"dynamic_const_definition_allowed?","class_definition_allowed?");Opal.def(self,"$in_block?",$Context_in_block$ques$9=function(){var self=this;return self.stack.$last()["$=="]("block")},$Context_in_block$ques$9.$$arity=0);return(Opal.def(self,"$in_lambda?",$Context_in_lambda$ques$10=function(){var self=this;return self.stack.$last()["$=="]("lambda")},$Context_in_lambda$ques$10.$$arity=0),nil)&&"in_lambda?"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$default_parser","$setup_source_buffer","$default_encoding","$parse","$parse_with_comments","$read","$new","$all_errors_are_fatal=","$diagnostics","$-","$ignore_warnings=","$lambda","$puts","$render","$consumer=","$force_encoding","$dup","$==","$name","$raw_source=","$source=","$private_class_method","$attr_reader","$version","$diagnostics=","$static_env=","$context=","$parser=","$class","$[]","$reset","$source_buffer=","$do_parse","$comments=","$comments","$tokens=","$!","$raise","$tokens","$private","$advance","$===","$diagnostic","$map","$process","$yyerror","$token_to_str"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base");var $nesting=[self].concat($parent_nesting),$Base_parse$1,$Base_parse_with_comments$2,$Base_parse_file$3,$Base_parse_file_with_comments$4,$Base_default_parser$5,$Base_setup_source_buffer$7,$Base_initialize$8,$Base_reset$9,$Base_parse$10,$Base_parse_with_comments$11,$Base_tokenize$12,$Base_next_token$13,$Base_check_kwarg_name$14,$Base_diagnostic$15,$Base_on_error$17;self.$$prototype.diagnostics=self.$$prototype.lexer=self.$$prototype.static_env=self.$$prototype.context=self.$$prototype.builder=nil;Opal.defs(self,"$parse",$Base_parse$1=function $$parse(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse(source_buffer)},$Base_parse$1.$$arity=-2);Opal.defs(self,"$parse_with_comments",$Base_parse_with_comments$2=function $$parse_with_comments(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse_with_comments(source_buffer)},$Base_parse_with_comments$2.$$arity=-2);Opal.defs(self,"$parse_file",$Base_parse_file$3=function $$parse_file(filename){var self=this;return self.$parse($$($nesting,"File").$read(filename),filename)},$Base_parse_file$3.$$arity=1);Opal.defs(self,"$parse_file_with_comments",$Base_parse_file_with_comments$4=function $$parse_file_with_comments(filename){var self=this;return self.$parse_with_comments($$($nesting,"File").$read(filename),filename)},$Base_parse_file_with_comments$4.$$arity=1);Opal.defs(self,"$default_parser",$Base_default_parser$5=function $$default_parser(){var $$6,self=this,parser=nil,$writer=nil;parser=self.$new();$writer=[true];$send(parser.$diagnostics(),"all_errors_are_fatal=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[true];$send(parser.$diagnostics(),"ignore_warnings=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[$send(self,"lambda",[],($$6=function(diagnostic){var self=$$6.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diagnostic==null){diagnostic=nil}return $gvars.stderr.$puts(diagnostic.$render())},$$6.$$s=self,$$6.$$arity=1,$$6))];$send(parser.$diagnostics(),"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return parser},$Base_default_parser$5.$$arity=0);Opal.defs(self,"$setup_source_buffer",$Base_setup_source_buffer$7=function $$setup_source_buffer(file,line,string,encoding){var self=this,source_buffer=nil,$writer=nil;string=string.$dup().$force_encoding(encoding);source_buffer=$$$($$($nesting,"Source"),"Buffer").$new(file,line);if(self.$name()["$=="]("Parser::Ruby18")){$writer=[string];$send(source_buffer,"raw_source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[string];$send(source_buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return source_buffer},$Base_setup_source_buffer$7.$$arity=4);self.$private_class_method("setup_source_buffer");self.$attr_reader("diagnostics");self.$attr_reader("builder");self.$attr_reader("static_env");self.$attr_reader("source_buffer");self.$attr_reader("context");Opal.def(self,"$initialize",$Base_initialize$8=function $$initialize(builder){var $a,self=this,$writer=nil;if(builder==null){builder=$$$($$$($$($nesting,"Parser"),"Builders"),"Default").$new()}self.diagnostics=$$$($$($nesting,"Diagnostic"),"Engine").$new();self.static_env=$$($nesting,"StaticEnvironment").$new();self.context=$$($nesting,"Context").$new();self.lexer=$$($nesting,"Lexer").$new(self.$version());$writer=[self.diagnostics];$send(self.lexer,"diagnostics=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[self.static_env];$send(self.lexer,"static_env=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[self.context];$send(self.lexer,"context=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.builder=builder;$writer=[self];$send(self.builder,"parser=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.last_token=nil;if($truthy($truthy($a=$$$(self.$class(),"Racc_debug_parser"))?$$($nesting,"ENV")["$[]"]("RACC_DEBUG"):$a)){self.yydebug=true}return self.$reset()},$Base_initialize$8.$$arity=-1);Opal.def(self,"$reset",$Base_reset$9=function $$reset(){var self=this;self.source_buffer=nil;self.lexer.$reset();self.static_env.$reset();self.context.$reset();return self},$Base_reset$9.$$arity=0);Opal.def(self,"$parse",$Base_parse$10=function $$parse(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[source_buffer];$send(self.lexer,"source_buffer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;return self.$do_parse()}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},$Base_parse$10.$$arity=1);Opal.def(self,"$parse_with_comments",$Base_parse_with_comments$11=function $$parse_with_comments(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},$Base_parse_with_comments$11.$$arity=1);Opal.def(self,"$tokenize",$Base_tokenize$12=function $$tokenize(source_buffer,recover){var self=this,$writer=nil,ast=nil;if(recover==null){recover=false}return function(){try{$writer=[[]];$send(self.lexer,"tokens=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];try{ast=self.$parse(source_buffer)}catch($err){if(Opal.rescue($err,[$$$($$($nesting,"Parser"),"SyntaxError")])){try{if($truthy(recover["$!"]())){self.$raise()}}finally{Opal.pop_exception()}}else{throw $err}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)],$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},$Base_tokenize$12.$$arity=-2);self.$private();Opal.def(self,"$next_token",$Base_next_token$13=function $$next_token(){var self=this,token=nil;token=self.lexer.$advance();self.last_token=token;return token},$Base_next_token$13.$$arity=0);Opal.def(self,"$check_kwarg_name",$Base_check_kwarg_name$14=function $$check_kwarg_name(name_t){var self=this,$case=nil;return function(){$case=name_t["$[]"](0);if(/^[a-z_]/["$==="]($case)){return nil}else if(/^[A-Z]/["$==="]($case)){return self.$diagnostic("error","argument_const",nil,name_t)}else{return nil}}()},$Base_check_kwarg_name$14.$$arity=1);Opal.def(self,"$diagnostic",$Base_diagnostic$15=function $$diagnostic(level,reason,arguments$,location_t,highlights_ts){var $a,$b,$$16,self=this,_=nil,location=nil,highlights=nil;if(highlights_ts==null){highlights_ts=[]}$b=location_t,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;highlights=$send(highlights_ts,"map",[],($$16=function(token){var self=$$16.$$s||this,$c,$d,range=nil;if(token==null){token=nil}$d=token,$c=Opal.to_ary($d),_=$c[0]==null?nil:$c[0],range=$c[1]==null?nil:$c[1],$d;return range},$$16.$$s=self,$$16.$$arity=1,$$16));self.diagnostics.$process($$($nesting,"Diagnostic").$new(level,reason,arguments$,location,highlights));if(level["$=="]("error")){return self.$yyerror()}else{return nil}},$Base_diagnostic$15.$$arity=-5);return(Opal.def(self,"$on_error",$Base_on_error$17=function $$on_error(error_token_id,error_value,value_stack){var $a,$b,self=this,token_name=nil,_=nil,location=nil;token_name=self.$token_to_str(error_token_id);$b=error_value,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;return self.diagnostics.$process($$($nesting,"Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))},$Base_on_error$17.$$arity=3),nil)&&"on_error"})($nesting[0],$$$($$($nesting,"Racc"),"Parser"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/rewriter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$new","$process","$include?","$type","$remove","$wrap","$insert_before","$insert_after","$replace","$freeze","$join","$extend","$warn_of_deprecation","$class","$warned_of_deprecation=","$-"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter");var $nesting=[self].concat($parent_nesting),$Rewriter_rewrite$1,$Rewriter_assignment$ques$2,$Rewriter_remove$3,$Rewriter_wrap$4,$Rewriter_insert_before$5,$Rewriter_insert_after$6,$Rewriter_replace$7,$Rewriter_initialize$8;self.$$prototype.source_rewriter=nil;Opal.def(self,"$rewrite",$Rewriter_rewrite$1=function $$rewrite(source_buffer,ast){var self=this;self.source_rewriter=$$$($$($nesting,"Source"),"Rewriter").$new(source_buffer);self.$process(ast);return self.source_rewriter.$process()},$Rewriter_rewrite$1.$$arity=2);Opal.def(self,"$assignment?",$Rewriter_assignment$ques$2=function(node){var self=this;return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())},$Rewriter_assignment$ques$2.$$arity=1);Opal.def(self,"$remove",$Rewriter_remove$3=function $$remove(range){var self=this;return self.source_rewriter.$remove(range)},$Rewriter_remove$3.$$arity=1);Opal.def(self,"$wrap",$Rewriter_wrap$4=function $$wrap(range,before,after){var self=this;return self.source_rewriter.$wrap(range,before,after)},$Rewriter_wrap$4.$$arity=3);Opal.def(self,"$insert_before",$Rewriter_insert_before$5=function $$insert_before(range,content){var self=this;return self.source_rewriter.$insert_before(range,content)},$Rewriter_insert_before$5.$$arity=2);Opal.def(self,"$insert_after",$Rewriter_insert_after$6=function $$insert_after(range,content){var self=this;return self.source_rewriter.$insert_after(range,content)},$Rewriter_insert_after$6.$$arity=2);Opal.def(self,"$replace",$Rewriter_replace$7=function $$replace(range,content){var self=this;return self.source_rewriter.$replace(range,content)},$Rewriter_replace$7.$$arity=2);Opal.const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze());self.$extend($$($nesting,"Deprecation"));return(Opal.def(self,"$initialize",$Rewriter_initialize$8=function $$initialize($a){var $post_args,$iter=$Rewriter_initialize$8.$$p,$yield=$iter||nil,self=this,$writer=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Rewriter_initialize$8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);self.$class().$warn_of_deprecation();$writer=[true];$send($$$($$($nesting,"Source"),"Rewriter"),"warned_of_deprecation=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return $send(self,Opal.find_super_dispatcher(self,"initialize",$Rewriter_initialize$8,false),$zuper,$iter)},$Rewriter_initialize$8.$$arity=-1),nil)&&"initialize"})($nesting[0],$$$($$$($$($nesting,"Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/tree_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$hash=Opal.hash;Opal.add_stubs(["$new","$process","$include?","$type","$remove","$wrap","$insert_before","$insert_after","$replace"]);return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter");var $nesting=[self].concat($parent_nesting),$TreeRewriter_rewrite$1,$TreeRewriter_assignment$ques$2,$TreeRewriter_remove$3,$TreeRewriter_wrap$4,$TreeRewriter_insert_before$5,$TreeRewriter_insert_after$6,$TreeRewriter_replace$7;self.$$prototype.source_rewriter=nil;Opal.def(self,"$rewrite",$TreeRewriter_rewrite$1=function $$rewrite(source_buffer,ast,$kwargs){var policy,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}policy=Opal.kwrestargs($kwargs,{});self.source_rewriter=$$$($$$($$($nesting,"Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy));self.$process(ast);return self.source_rewriter.$process()},$TreeRewriter_rewrite$1.$$arity=-3);Opal.def(self,"$assignment?",$TreeRewriter_assignment$ques$2=function(node){var self=this;return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())},$TreeRewriter_assignment$ques$2.$$arity=1);Opal.def(self,"$remove",$TreeRewriter_remove$3=function $$remove(range){var self=this;return self.source_rewriter.$remove(range)},$TreeRewriter_remove$3.$$arity=1);Opal.def(self,"$wrap",$TreeRewriter_wrap$4=function $$wrap(range,before,after){var self=this;return self.source_rewriter.$wrap(range,before,after)},$TreeRewriter_wrap$4.$$arity=3);Opal.def(self,"$insert_before",$TreeRewriter_insert_before$5=function $$insert_before(range,content){var self=this;return self.source_rewriter.$insert_before(range,content)},$TreeRewriter_insert_before$5.$$arity=2);Opal.def(self,"$insert_after",$TreeRewriter_insert_after$6=function $$insert_after(range,content){var self=this;return self.source_rewriter.$insert_after(range,content)},$TreeRewriter_insert_after$6.$$arity=2);return(Opal.def(self,"$replace",$TreeRewriter_replace$7=function $$replace(range,content){var self=this;return self.source_rewriter.$replace(range,content)},$TreeRewriter_replace$7.$$arity=2),nil)&&"replace"})($nesting[0],$$$($$$($$($nesting,"Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$=~","$require","$raise"]);if($truthy($$($nesting,"RUBY_VERSION")["$=~"](/^1\.[89]\./))){self.$require("parser/version");self.$raise($$($nesting,"LoadError"),""+"parser v"+$$$($$($nesting,"Parser"),"VERSION")+" cannot run on Ruby "+$$($nesting,"RUBY_VERSION")+".\n"+"Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")}self.$require("set");self.$require("racc/parser");self.$require("ast");return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);self.$require("parser/version");self.$require("parser/messages");self.$require("parser/deprecation");(function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);self.$require("parser/ast/node");self.$require("parser/ast/processor");self.$require("parser/meta")})($nesting[0],$nesting);(function($base,$parent_nesting){var self=$module($base,"Source");var $nesting=[self].concat($parent_nesting);self.$require("parser/source/buffer");self.$require("parser/source/range");self.$require("parser/source/comment");self.$require("parser/source/comment/associator");self.$require("parser/source/rewriter");self.$require("parser/source/rewriter/action");self.$require("parser/source/tree_rewriter");self.$require("parser/source/tree_rewriter/action");self.$require("parser/source/map");self.$require("parser/source/map/operator");self.$require("parser/source/map/collection");self.$require("parser/source/map/constant");self.$require("parser/source/map/variable");self.$require("parser/source/map/keyword");self.$require("parser/source/map/definition");self.$require("parser/source/map/send");self.$require("parser/source/map/index");self.$require("parser/source/map/condition");self.$require("parser/source/map/ternary");self.$require("parser/source/map/for");self.$require("parser/source/map/rescue_body");self.$require("parser/source/map/heredoc");self.$require("parser/source/map/objc_kwarg")})($nesting[0],$nesting);self.$require("parser/syntax_error");self.$require("parser/clobbering_error");self.$require("parser/diagnostic");self.$require("parser/diagnostic/engine");self.$require("parser/static_environment");self.$require("parser/lexer");self.$require("parser/lexer/literal");self.$require("parser/lexer/stack_state");self.$require("parser/lexer/dedenter");self.$require("parser/lexer/max_numparam_stack");(function($base,$parent_nesting){var self=$module($base,"Builders");var $nesting=[self].concat($parent_nesting);self.$require("parser/builders/default")})($nesting[0],$nesting);self.$require("parser/context");self.$require("parser/base");self.$require("parser/rewriter");self.$require("parser/tree_rewriter")}($nesting[0],$nesting)};Opal.modules["parser/ruby25"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash=Opal.hash;Opal.add_stubs(["$require","$new","$each","$split","$empty?","$to_i","$[]=","$-","$+","$compstmt","$[]","$<<","$preexe","$!","$nil?","$diagnostic","$begin_body","$state=","$alias","$gvar","$back_ref","$undef_method","$condition_mod","$loop_mod","$rescue_body","$postexe","$multi_assign","$assign","$array","$op_assign","$index","$call_method","$const_op_assignable","$const_fetch","$logical_op","$not_op","$push","$cond","$pop","$block","$keyword_cmd","$multi_lhs","$begin","$splat","$concat","$assignable","$index_asgn","$attr_asgn","$const_global","$const","$symbol","$range_inclusive","$range_exclusive","$binary_op","$unary_op","$match_op","$ternary","$associate","$==","$cmdarg","$block_pass","$begin_keyword","$call_lambda","$condition","$loop","$case","$for","$extend_static","$class_definition_allowed?","$def_class","$unextend","$def_sclass","$module_definition_allowed?","$def_module","$def_method","$def_singleton","$in_class?","$arg","$restarg","$size","$procarg0","$args","$declare","$shadowarg","$extend_dynamic","$when","$string_compose","$dedent_string","$dedent_level","$string","$character","$xstring_compose","$regexp_options","$regexp_compose","$words_compose","$word","$symbols_compose","$string_internal","$symbol_internal","$ivar","$cvar","$symbol_compose","$respond_to?","$negate","$unary_num","$integer","$float","$rational","$complex","$ident","$nil","$self","$true","$false","$__FILE__","$__LINE__","$__ENCODING__","$accessible","$nth_ref","$in_kwarg","$in_kwarg=","$check_kwarg_name","$kwoptarg","$kwarg","$kwrestarg","$optarg","$blockarg","$pair","$pair_keyword","$pair_quoted","$kwsplat","$yyerrok"]);self.$require("racc/parser.rb");self.$require("parser");return function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Ruby25");var $nesting=[self].concat($parent_nesting),$Ruby25_version$1,$Ruby25_default_encoding$2,$Ruby25$3,$Ruby25$5,$Ruby25$7,$Ruby25$9,$Ruby25__reduce_2$11,$Ruby25__reduce_3$12,$Ruby25__reduce_4$13,$Ruby25__reduce_5$14,$Ruby25__reduce_6$15,$Ruby25__reduce_8$16,$Ruby25__reduce_9$17,$Ruby25__reduce_10$18,$Ruby25__reduce_11$19,$Ruby25__reduce_12$20,$Ruby25__reduce_13$21,$Ruby25__reduce_14$22,$Ruby25__reduce_15$23,$Ruby25__reduce_17$24,$Ruby25__reduce_18$25,$Ruby25__reduce_19$26,$Ruby25__reduce_20$27,$Ruby25__reduce_21$28,$Ruby25__reduce_22$29,$Ruby25__reduce_23$30,$Ruby25__reduce_24$31,$Ruby25__reduce_25$32,$Ruby25__reduce_26$33,$Ruby25__reduce_27$34,$Ruby25__reduce_28$35,$Ruby25__reduce_29$36,$Ruby25__reduce_31$37,$Ruby25__reduce_32$38,$Ruby25__reduce_33$39,$Ruby25__reduce_35$40,$Ruby25__reduce_36$41,$Ruby25__reduce_37$42,$Ruby25__reduce_38$43,$Ruby25__reduce_39$44,$Ruby25__reduce_40$45,$Ruby25__reduce_41$46,$Ruby25__reduce_42$47,$Ruby25__reduce_44$48,$Ruby25__reduce_47$49,$Ruby25__reduce_48$50,$Ruby25__reduce_49$51,$Ruby25__reduce_50$52,$Ruby25__reduce_53$53,$Ruby25__reduce_54$54,$Ruby25__reduce_58$55,$Ruby25__reduce_59$56,$Ruby25__reduce_60$57,$Ruby25__reduce_62$58,$Ruby25__reduce_63$59,$Ruby25__reduce_64$60,$Ruby25__reduce_65$61,$Ruby25__reduce_66$62,$Ruby25__reduce_67$63,$Ruby25__reduce_68$64,$Ruby25__reduce_69$65,$Ruby25__reduce_70$66,$Ruby25__reduce_71$67,$Ruby25__reduce_72$68,$Ruby25__reduce_73$69,$Ruby25__reduce_74$70,$Ruby25__reduce_75$71,$Ruby25__reduce_76$72,$Ruby25__reduce_78$73,$Ruby25__reduce_79$74,$Ruby25__reduce_80$75,$Ruby25__reduce_81$76,$Ruby25__reduce_82$77,$Ruby25__reduce_83$78,$Ruby25__reduce_84$79,$Ruby25__reduce_85$80,$Ruby25__reduce_86$81,$Ruby25__reduce_88$82,$Ruby25__reduce_89$83,$Ruby25__reduce_90$84,$Ruby25__reduce_91$85,$Ruby25__reduce_92$86,$Ruby25__reduce_93$87,$Ruby25__reduce_94$88,$Ruby25__reduce_95$89,$Ruby25__reduce_96$90,$Ruby25__reduce_97$91,$Ruby25__reduce_98$92,$Ruby25__reduce_99$93,$Ruby25__reduce_100$94,$Ruby25__reduce_101$95,$Ruby25__reduce_102$96,$Ruby25__reduce_103$97,$Ruby25__reduce_104$98,$Ruby25__reduce_105$99,$Ruby25__reduce_106$100,$Ruby25__reduce_107$101,$Ruby25__reduce_108$102,$Ruby25__reduce_109$103,$Ruby25__reduce_110$104,$Ruby25__reduce_111$105,$Ruby25__reduce_113$106,$Ruby25__reduce_114$107,$Ruby25__reduce_115$108,$Ruby25__reduce_121$109,$Ruby25__reduce_125$110,$Ruby25__reduce_126$111,$Ruby25__reduce_127$112,$Ruby25__reduce_199$113,$Ruby25__reduce_200$114,$Ruby25__reduce_201$115,$Ruby25__reduce_202$116,$Ruby25__reduce_203$117,$Ruby25__reduce_204$118,$Ruby25__reduce_205$119,$Ruby25__reduce_206$120,$Ruby25__reduce_207$121,$Ruby25__reduce_208$122,$Ruby25__reduce_209$123,$Ruby25__reduce_210$124,$Ruby25__reduce_211$125,$Ruby25__reduce_212$126,$Ruby25__reduce_213$127,$Ruby25__reduce_214$128,$Ruby25__reduce_215$129,$Ruby25__reduce_216$130,$Ruby25__reduce_217$131,$Ruby25__reduce_218$132,$Ruby25__reduce_219$133,$Ruby25__reduce_220$134,$Ruby25__reduce_221$135,$Ruby25__reduce_222$136,$Ruby25__reduce_224$137,$Ruby25__reduce_225$138,$Ruby25__reduce_226$139,$Ruby25__reduce_227$140,$Ruby25__reduce_228$141,$Ruby25__reduce_229$142,$Ruby25__reduce_230$143,$Ruby25__reduce_231$144,$Ruby25__reduce_232$145,$Ruby25__reduce_233$146,$Ruby25__reduce_234$147,$Ruby25__reduce_235$148,$Ruby25__reduce_236$149,$Ruby25__reduce_242$150,$Ruby25__reduce_243$151,$Ruby25__reduce_247$152,$Ruby25__reduce_248$153,$Ruby25__reduce_250$154,$Ruby25__reduce_251$155,$Ruby25__reduce_252$156,$Ruby25__reduce_254$157,$Ruby25__reduce_257$158,$Ruby25__reduce_258$159,$Ruby25__reduce_259$160,$Ruby25__reduce_260$161,$Ruby25__reduce_261$162,$Ruby25__reduce_262$163,$Ruby25__reduce_263$164,$Ruby25__reduce_264$165,$Ruby25__reduce_265$166,$Ruby25__reduce_266$167,$Ruby25__reduce_267$168,$Ruby25__reduce_268$169,$Ruby25__reduce_269$170,$Ruby25__reduce_270$171,$Ruby25__reduce_271$172,$Ruby25__reduce_272$173,$Ruby25__reduce_273$174,$Ruby25__reduce_275$175,$Ruby25__reduce_276$176,$Ruby25__reduce_277$177,$Ruby25__reduce_288$178,$Ruby25__reduce_289$179,$Ruby25__reduce_290$180,$Ruby25__reduce_291$181,$Ruby25__reduce_292$182,$Ruby25__reduce_293$183,$Ruby25__reduce_294$184,$Ruby25__reduce_295$185,$Ruby25__reduce_296$186,$Ruby25__reduce_297$187,$Ruby25__reduce_298$188,$Ruby25__reduce_299$189,$Ruby25__reduce_300$190,$Ruby25__reduce_301$191,$Ruby25__reduce_302$192,$Ruby25__reduce_303$193,$Ruby25__reduce_304$194,$Ruby25__reduce_305$195,$Ruby25__reduce_306$196,$Ruby25__reduce_307$197,$Ruby25__reduce_309$198,$Ruby25__reduce_310$199,$Ruby25__reduce_311$200,$Ruby25__reduce_312$201,$Ruby25__reduce_313$202,$Ruby25__reduce_314$203,$Ruby25__reduce_315$204,$Ruby25__reduce_316$205,$Ruby25__reduce_317$206,$Ruby25__reduce_318$207,$Ruby25__reduce_319$208,$Ruby25__reduce_320$209,$Ruby25__reduce_321$210,$Ruby25__reduce_322$211,$Ruby25__reduce_323$212,$Ruby25__reduce_324$213,$Ruby25__reduce_325$214,$Ruby25__reduce_326$215,$Ruby25__reduce_327$216,$Ruby25__reduce_328$217,$Ruby25__reduce_329$218,$Ruby25__reduce_330$219,$Ruby25__reduce_331$220,$Ruby25__reduce_332$221,$Ruby25__reduce_334$222,$Ruby25__reduce_337$223,$Ruby25__reduce_341$224,$Ruby25__reduce_343$225,$Ruby25__reduce_346$226,$Ruby25__reduce_347$227,$Ruby25__reduce_348$228,$Ruby25__reduce_349$229,$Ruby25__reduce_351$230,$Ruby25__reduce_352$231,$Ruby25__reduce_353$232,$Ruby25__reduce_354$233,$Ruby25__reduce_355$234,$Ruby25__reduce_356$235,$Ruby25__reduce_357$236,$Ruby25__reduce_358$237,$Ruby25__reduce_359$238,$Ruby25__reduce_360$239,$Ruby25__reduce_361$240,$Ruby25__reduce_362$241,$Ruby25__reduce_363$242,$Ruby25__reduce_364$243,$Ruby25__reduce_365$244,$Ruby25__reduce_366$245,$Ruby25__reduce_367$246,$Ruby25__reduce_368$247,$Ruby25__reduce_369$248,$Ruby25__reduce_371$249,$Ruby25__reduce_372$250,$Ruby25__reduce_373$251,$Ruby25__reduce_374$252,$Ruby25__reduce_375$253,$Ruby25__reduce_376$254,$Ruby25__reduce_377$255,$Ruby25__reduce_378$256,$Ruby25__reduce_380$257,$Ruby25__reduce_381$258,$Ruby25__reduce_382$259,$Ruby25__reduce_383$260,$Ruby25__reduce_384$261,$Ruby25__reduce_385$262,$Ruby25__reduce_386$263,$Ruby25__reduce_387$264,$Ruby25__reduce_388$265,$Ruby25__reduce_389$266,$Ruby25__reduce_391$267,$Ruby25__reduce_392$268,$Ruby25__reduce_393$269,$Ruby25__reduce_394$270,$Ruby25__reduce_395$271,$Ruby25__reduce_396$272,$Ruby25__reduce_397$273,$Ruby25__reduce_398$274,$Ruby25__reduce_399$275,$Ruby25__reduce_400$276,$Ruby25__reduce_401$277,$Ruby25__reduce_402$278,$Ruby25__reduce_403$279,$Ruby25__reduce_404$280,$Ruby25__reduce_405$281,$Ruby25__reduce_406$282,$Ruby25__reduce_407$283,$Ruby25__reduce_408$284,$Ruby25__reduce_409$285,$Ruby25__reduce_410$286,$Ruby25__reduce_411$287,$Ruby25__reduce_412$288,$Ruby25__reduce_413$289,$Ruby25__reduce_414$290,$Ruby25__reduce_415$291,$Ruby25__reduce_416$292,$Ruby25__reduce_417$293,$Ruby25__reduce_418$294,$Ruby25__reduce_419$295,$Ruby25__reduce_420$296,$Ruby25__reduce_421$297,$Ruby25__reduce_422$298,$Ruby25__reduce_423$299,$Ruby25__reduce_424$300,$Ruby25__reduce_425$301,$Ruby25__reduce_427$302,$Ruby25__reduce_428$303,$Ruby25__reduce_429$304,$Ruby25__reduce_432$305,$Ruby25__reduce_434$306,$Ruby25__reduce_439$307,$Ruby25__reduce_440$308,$Ruby25__reduce_441$309,$Ruby25__reduce_442$310,$Ruby25__reduce_443$311,$Ruby25__reduce_444$312,$Ruby25__reduce_445$313,$Ruby25__reduce_446$314,$Ruby25__reduce_447$315,$Ruby25__reduce_448$316,$Ruby25__reduce_449$317,$Ruby25__reduce_450$318,$Ruby25__reduce_451$319,$Ruby25__reduce_452$320,$Ruby25__reduce_453$321,$Ruby25__reduce_454$322,$Ruby25__reduce_455$323,$Ruby25__reduce_456$324,$Ruby25__reduce_457$325,$Ruby25__reduce_458$326,$Ruby25__reduce_459$327,$Ruby25__reduce_460$328,$Ruby25__reduce_461$329,$Ruby25__reduce_462$330,$Ruby25__reduce_463$331,$Ruby25__reduce_464$332,$Ruby25__reduce_465$333,$Ruby25__reduce_466$334,$Ruby25__reduce_467$335,$Ruby25__reduce_468$336,$Ruby25__reduce_469$337,$Ruby25__reduce_470$338,$Ruby25__reduce_471$339,$Ruby25__reduce_472$340,$Ruby25__reduce_473$341,$Ruby25__reduce_475$342,$Ruby25__reduce_476$343,$Ruby25__reduce_477$344,$Ruby25__reduce_478$345,$Ruby25__reduce_479$346,$Ruby25__reduce_480$347,$Ruby25__reduce_481$348,$Ruby25__reduce_482$349,$Ruby25__reduce_483$350,$Ruby25__reduce_484$351,$Ruby25__reduce_485$352,$Ruby25__reduce_486$353,$Ruby25__reduce_487$354,$Ruby25__reduce_488$355,$Ruby25__reduce_489$356,$Ruby25__reduce_490$357,$Ruby25__reduce_491$358,$Ruby25__reduce_492$359,$Ruby25__reduce_493$360,$Ruby25__reduce_494$361,$Ruby25__reduce_495$362,$Ruby25__reduce_496$363,$Ruby25__reduce_497$364,$Ruby25__reduce_498$365,$Ruby25__reduce_499$366,$Ruby25__reduce_500$367,$Ruby25__reduce_501$368,$Ruby25__reduce_502$369,$Ruby25__reduce_503$370,$Ruby25__reduce_504$371,$Ruby25__reduce_505$372,$Ruby25__reduce_506$373,$Ruby25__reduce_507$374,$Ruby25__reduce_508$375,$Ruby25__reduce_509$376,$Ruby25__reduce_510$377,$Ruby25__reduce_511$378,$Ruby25__reduce_512$379,$Ruby25__reduce_513$380,$Ruby25__reduce_514$381,$Ruby25__reduce_515$382,$Ruby25__reduce_516$383,$Ruby25__reduce_517$384,$Ruby25__reduce_518$385,$Ruby25__reduce_519$386,$Ruby25__reduce_520$387,$Ruby25__reduce_521$388,$Ruby25__reduce_522$389,$Ruby25__reduce_523$390,$Ruby25__reduce_524$391,$Ruby25__reduce_525$392,$Ruby25__reduce_526$393,$Ruby25__reduce_527$394,$Ruby25__reduce_528$395,$Ruby25__reduce_529$396,$Ruby25__reduce_530$397,$Ruby25__reduce_531$398,$Ruby25__reduce_533$399,$Ruby25__reduce_534$400,$Ruby25__reduce_535$401,$Ruby25__reduce_536$402,$Ruby25__reduce_537$403,$Ruby25__reduce_538$404,$Ruby25__reduce_539$405,$Ruby25__reduce_540$406,$Ruby25__reduce_541$407,$Ruby25__reduce_542$408,$Ruby25__reduce_543$409,$Ruby25__reduce_544$410,$Ruby25__reduce_545$411,$Ruby25__reduce_546$412,$Ruby25__reduce_547$413,$Ruby25__reduce_550$414,$Ruby25__reduce_551$415,$Ruby25__reduce_552$416,$Ruby25__reduce_553$417,$Ruby25__reduce_554$418,$Ruby25__reduce_555$419,$Ruby25__reduce_556$420,$Ruby25__reduce_557$421,$Ruby25__reduce_560$422,$Ruby25__reduce_561$423,$Ruby25__reduce_564$424,$Ruby25__reduce_565$425,$Ruby25__reduce_566$426,$Ruby25__reduce_568$427,$Ruby25__reduce_569$428,$Ruby25__reduce_571$429,$Ruby25__reduce_572$430,$Ruby25__reduce_573$431,$Ruby25__reduce_574$432,$Ruby25__reduce_575$433,$Ruby25__reduce_576$434,$Ruby25__reduce_589$435,$Ruby25__reduce_590$436,$Ruby25__reduce_595$437,$Ruby25__reduce_596$438,$Ruby25__reduce_600$439,$Ruby25__reduce_604$440,$Ruby25__reduce_none$441,clist=nil,racc_action_table=nil,arr=nil,idx=nil,racc_action_check=nil,racc_action_pointer=nil,racc_action_default=nil,racc_goto_table=nil,racc_goto_check=nil,racc_goto_pointer=nil,racc_goto_default=nil,racc_reduce_table=nil,racc_reduce_n=nil,racc_shift_n=nil,racc_token_table=nil,racc_nt_base=nil,racc_use_result_var=nil;self.$$prototype.builder=self.$$prototype.lexer=self.$$prototype.context=self.$$prototype.last_token=self.$$prototype.static_env=nil;Opal.def(self,"$version",$Ruby25_version$1=function $$version(){var self=this;return 25},$Ruby25_version$1.$$arity=0);Opal.def(self,"$default_encoding",$Ruby25_default_encoding$2=function $$default_encoding(){var self=this;return $$$($$($nesting,"Encoding"),"UTF_8")},$Ruby25_default_encoding$2.$$arity=0);clist=["-584,579,-110,-108,220,-102,-103,-584,-584,-584,274,-107,274,-584,-584","222,-584,274,799,622,212,213,212,213,-88,-584,579,-102,819,-108,620","274,-103,-106,-74,-105,-584,-584,906,-584,-584,-584,-584,-584,-109,-109","223,579,908,986,-104,-101,-110,798,-105,-107,223,-106,-104,579,579,-110","538,575,574,537,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584","-584,-584,-584,-581,269,-584,-584,-584,621,646,725,842,811,-584,212","213,-584,-581,269,619,273,-584,273,-584,407,-584,-584,273,-584,-584","-584,-584,-584,-580,-584,-584,-584,-96,-94,223,799,273,115,-110,-108","-580,-102,114,-110,-108,-584,-102,-107,-584,-584,-584,-584,-107,-584","-93,818,-99,-584,-584,-584,-584,-106,115,-584,-584,845,-584,114,-103","-106,798,-105,-100,-103,-106,-584,-105,-95,-95,-101,-109,-96,-98,115","-97,-109,-584,-584,114,-584,-584,-584,-584,-584,-104,115,115,115,-96","-104,114,114,114,223,910,212,213,-97,-98,115,115,212,213,394,114,114","-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584,-584","913,641,-584,-584,-584,218,646,607,-96,914,-584,-96,267,-584,-95,917","525,-490,-584,220,-584,-96,-584,-584,-490,-584,-584,-584,-584,-584,115","-584,-584,-584,559,114,556,555,554,223,557,-489,-580,-97,-98,607,538","-584,-489,540,-584,-584,-584,-97,-95,-584,921,-95,-107,-584,-584,-584","-584,-106,-584,-584,-584,-95,-584,115,219,609,608,-109,114,223,-110","-584,-584,-584,-584,759,-490,-97,-98,115,-97,-98,-584,-584,114,-584","-584,-584,-584,-584,-97,-98,559,-272,556,555,554,607,557,607,-489,115","607,609,608,605,114,93,94,811,838,586,-584,-584,-584,-584,-584,-584","-584,-584,-584,-584,-584,-584,-584,-584,93,94,-584,-584,-584,592,787","-584,-488,593,-584,607,772,-584,-584,-488,-584,607,-584,958,-584,223","-584,-584,607,-584,-584,-584,-584,-584,785,-584,-584,-584,786,609,608","609,608,605,609,608,610,607,1025,757,772,-584,956,-491,-584,-584,-584","-584,673,-584,-491,-584,-296,95,96,-497,-584,-106,923,-296,-296,-296","702,-104,-296,-296,-296,-488,-296,609,608,612,95,96,926,609,608,614","-296,-296,-296,-105,609,608,623,-107,640,-95,-296,-296,641,-296,-296","-296,-296,-296,864,-104,928,-496,930,609,608,618,842,811,-496,-494,-491","-492,-498,457,-102,932,-494,-496,-492,223,-296,-296,-296,-296,-296,-296","-296,-296,-296,-296,-296,-296,-296,-296,934,-96,-296,-296,-296,-98,788","-296,640,538,-296,-105,540,-296,-296,-107,-296,-493,-296,639,-296,-104","-296,-296,-493,-296,-296,-296,-296,-296,-296,-296,-496,-296,323,-103","-110,-296,-296,-296,-494,322,-492,-296,-296,538,-296,-296,540,638,-296","-296,-296,-296,-486,-296,223,-296,-578,212,213,-486,-296,-108,-498,-105","-296,-296,-497,-296,-296,-296,-296,-296,958,1003,963,218,746,-297,974","-483,-493,263,633,218,-297,1003,-483,977,1003,111,267,631,982,-297,-296","-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-486","-94,-296,-296,-296,-93,645,-486,983,-486,-296,-103,-578,-296,984,-102","-486,525,-296,987,-296,900,-296,-296,900,-296,-296,-296,-296,-296,-483","-296,219,-296,-297,-578,-483,-483,-483,-483,219,900,-483,-483,-483,218","-483,-296,243,992,-296,-296,595,-99,-483,-296,-483,-483,-483,958,214","597,-296,-108,-100,-486,-483,-483,702,-483,-483,-483,-483,-483,-109","-297,997,999,1001,218,240,1003,-297,1003,242,241,589,238,239,243,243","-297,243,243,1003,587,-483,-483,-483,-483,-483,-483,-483,-483,-483,-483","-483,-483,-483,-483,219,218,-483,-483,-483,-287,-483,-483,528,223,-483","223,-287,-483,-483,624,-483,455,-483,627,-483,-287,-483,-483,223,-483","-483,-483,-483,-483,-297,-483,-486,-483,219,-88,676,223,692,-486,-486","-486,81,531,-486,-486,-486,-483,-486,211,-483,-483,-483,-483,82,-483","-486,-483,-486,-486,-486,687,-483,-483,83,210,219,692,-486,-486,-287","-486,-486,-486,-486,-486,260,261,404,-296,693,218,223,406,405,695,-296","699,518,702,559,-581,556,555,554,-296,557,516,-486,-486,-486,-486,-486","-486,-486,-486,-486,-486,-486,-486,-486,-486,259,258,-486,-486,-486","703,-486,-486,705,707,-486,709,958,-486,-486,711,-486,717,-486,718,-486","719,-486,-486,905,-486,-486,-486,-486,-486,-296,-486,-296,-486,219,721","1018,-296,-296,-296,599,726,727,-296,-296,586,-296,-486,729,591,-486","-486,-486,-486,590,-486,396,-486,-584,746,586,756,-486,-486,650,-269","-296,-296,760,-296,-296,-296,-296,-296,761,-270,500,-495,542,-296,773","541,223,487,-495,243,-296,487,526,223,790,-581,791,-495,263,-296,-296","-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-296,-584","629,-296,-296,-296,796,645,-584,801,498,-296,500,-580,-296,522,630,-584","687,-296,223,-296,269,-296,-296,269,-296,-296,-296,-296,-296,-288,-296","-495,-296,-296,-584,269,-288,-288,-288,223,-581,-288,-288,-288,218,-288","-296,269,687,-296,-296,454,-296,278,-296,-288,-288,-288,243,-580,455","-296,-108,811,-584,-288,-288,519,-288,-288,-288,-288,-288,223,-333,223","218,836,218,634,223,-333,811,976,844,981,209,223,512,511,-333,223,597","-73,979,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288,-288","-288,-288,219,218,-288,-288,-288,243,124,-288,217,124,-288,223,243,-288","-288,-577,-288,215,-288,500,-288,853,-288,-288,498,-288,-288,-288,-288","-288,-333,-288,219,-288,219,496,-271,240,218,487,223,242,241,222,240","976,459,-288,242,241,-288,-288,-288,-288,597,-288,-252,-288,863,458","456,867,-288,-252,-252,-252,219,-483,-252,-252,-252,900,-252,687,-483","883,-269,564,887,-577,564,-252,-252,-483,891,892,702,567,894,896,567","898,-252,-252,900,-252,-252,-252,-252,-252,900,223,-577,219,559,,556","555,554,564,557,751,752,,,753,109,110,,567,575,574,,575,574,568,,243","568,,,,-483,-252,,-303,,,,,-252,562,-303,-303,-303,269,-252,-303,-303","-303,,-303,575,574,,,,568,,240,,-303,-303,242,241,,238,239,-252,-252",",-303,-303,,-303,-303,-303,-303,-303,,,,,-252,,,-252,,,,559,-252,556","555,554,,557,,-252,,,-303,-303,-303,-303,-303,-303,-303,-303,-303,-303","-303,-303,-303,-303,,,-303,-303,-303,,,-303,,278,-303,,711,-303,-303",",-303,,-303,,-303,714,-303,-303,,-303,-303,-303,-303,-303,,-303,-252","-303,118,119,120,121,122,-252,-252,-252,,,-252,-252,-252,-303,-252,","-303,-303,,-303,,-303,,-252,-252,-252,,949,-303,556,555,554,,557,-252","-252,,-252,-252,-252,-252,-252,559,,556,555,554,559,557,556,555,554","559,557,556,555,554,949,557,556,555,554,,557,-252,-252,-252,-252,-252","-252,-252,-252,-252,-252,-252,-252,-252,-252,,711,-252,-252,-252,,711","-252,,269,-252,711,,-252,-252,714,-252,,-252,,-252,,-252,-252,,-252","-252,-252,-252,-252,,-252,-252,-252,559,,556,555,554,564,557,118,119","120,121,122,,-252,,567,-252,-252,-586,-252,,-252,,,,-586,-586,-586,-252",",-586,-586,-586,,-586,243,559,562,556,555,554,,557,-586,-586,-586,-586",",575,574,,253,254,568,-586,-586,,-586,-586,-586,-586,-586,559,,556,555","554,240,557,246,,242,241,711,238,239,,,244,,245,,,,-586,-586,-586,-586","-586,-586,-586,-586,-586,-586,-586,-586,-586,-586,,711,-586,-586,-586",",,-586,,,-586,,,-586,-586,,-586,,-586,,-586,,-586,-586,,-586,-586,-586","-586,-586,,-586,-586,-586,,,559,,556,555,554,,557,,,,,-586,,,-586,-586","-586,-586,,-586,-413,-586,,,,,-586,-413,-413,-413,,,-413,-413,-413,243","-413,711,118,119,120,121,122,,,-413,-413,-413,,,,253,254,,,,-413,-413",",-413,-413,-413,-413,-413,,,,240,,246,,242,241,,238,239,,,244,,245,118","119,120,121,122,-413,-413,-413,-413,-413,-413,-413,-413,-413,-413,-413","-413,-413,-413,,,-413,-413,-413,,,-413,,269,-413,,,-413,-413,,-413,","-413,,-413,,-413,-413,,-413,-413,-413,-413,-413,,-413,-413,-413,559",",556,555,554,564,557,,,,,,,-413,,567,-413,-413,-585,-413,,-413,,,,-585","-585,-585,-413,,-585,-585,-585,,-585,243,,562,,,,,,-585,-585,-585,-585",",575,574,,253,254,568,-585,-585,,-585,-585,-585,-585,-585,,,,,,240,",",,242,241,,238,239,,,,,,,,,-585,-585,-585,-585,-585,-585,-585,-585,-585","-585,-585,-585,-585,-585,,,-585,-585,-585,,,-585,,,-585,,,-585,-585",",-585,,-585,,-585,,-585,-585,,-585,-585,-585,-585,-585,,-585,-585,-585",",,,,,,,,,,,,,-585,,,-585,-585,-585,-585,,-585,,-585,,,,,-585,296,70","71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102","104,105,,,19,,,,,635,8,46,298,10,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251,252,,236","237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239","259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,-244",",,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74",",,,,,75,28,27,103,102,104,105,,,19,,,,,635,8,46,298,10,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261","255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246","45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,",",,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10","107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248","249,250,260,261,255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60",",,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84","85,,86,88,87,89,,,,,82,90,223,257,,,,,63,,83,95,96,296,70,71,72,9,58",",,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,",",19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94","42,43,41,243,247,248,249,250,260,261,255,256,251,252,,236,237,,,253","254,,40,,,300,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258","244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95","96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28","27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251","252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241",",238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257",",,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73","74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261","255,256,251,252,,236,237,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246","45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,",",,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10","107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248","249,250,260,261,255,256,251,252,,236,237,,,253,254,,40,,,300,,,59,60",",,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95,96,296,70,71,72,9,58,,",",64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19",",,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42","43,41,243,247,248,249,250,260,261,255,256,251,252,,236,237,,,253,254",",40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20","245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,257,,,,,63,,83,95,96,296","70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,",",253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259","258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95","96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28","27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,243,247,248,249,250,260,261,255,256,251","252,,-605,-605,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241",",238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,",",,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73","74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,243,-605,-605,-605,-605,260","261,,,-605,-605,,,,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242","241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90",",,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31","73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,-605,-605,-605,-605","260,261,,,-605,-605,,,,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246","45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85,,86,88,87,89,",",,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67","69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,247,248,249","250,260,261,255,256,251,252,,-605,-605,,,253,254,,40,,,33,,,59,60,,","61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,","8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41","243,-605,-605,-605,-605,260,261,,,-605,-605,,,,,,253,254,,40,,,33,,","59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58",",,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,",",19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94","42,43,41,243,247,248,249,250,260,261,255,,251,252,,,,,,253,254,,40,",",33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244,20,245",",,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72","9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104","105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110,","93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,,,253","254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244","20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296","70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,243,-605,-605,-605,-605,260,261,,,-605,-605,,,,",",253,254,,40,,,300,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259","258,244,20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95","96,5,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,243,247,248,249,250,260,261,,,251,252,,,,,,253","254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,259,258,244","20,245,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296","70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,243,,,,,,,,,,,,,,,,253,254,,40,,,33,,,59,60,,,61",",35,240,,246,45,242,241,,238,239,,,,20,,,,,91,81,84,85,,86,88,87,89",",,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67","69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,243,,,,,,,,,,,",",,,,253,254,,40,,,33,,,59,60,,,61,,35,240,,246,45,242,241,,238,239,",",,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70","71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102","104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,",",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,5","70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45",",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96","296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35",",,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83","95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75","28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97,57,99,98","100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60",",,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,",",,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73","74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33",",,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30","31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107,106","108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,","40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87","89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10","107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,",",,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86","88,87,89,,,,,82,90,,,,,,,63,,83,95,96,296,70,71,72,9,58,,,,64,65,,,","68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46","298,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,",",,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89",",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73","74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57","99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,",",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99","98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59","60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,",",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75","28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,","101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61",",,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71","72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318","103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45",",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58","83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102","104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93","94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,",",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95","96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105",",,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42","43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233",",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89",",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73","74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57","99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,",",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99","98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59","60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,",",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75","312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312","318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,",",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72","63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103","102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,",",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83","95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104","105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94","42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233",",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89",",,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73","74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57","99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,",",,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99","98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59","60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,",",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75","312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312","318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,",",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72","63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102","104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285",",45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71","72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,","285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287",",285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,223",",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75","312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45",",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58","83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102","104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93","94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,",",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95","96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105",",,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42","43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233",",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,","64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19",",,,,,8,46,,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43","41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,","91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,","64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19",",,,,,8,46,7,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43","41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,","91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,",",,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,",",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233",",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,",",,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,",",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,",",,,,,,,,,,,,,,936,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106","108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,",",,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,",",,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,",",,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,","91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,",",,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,304,,,,,,,,,,,,,,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,",",,,,,,,,,,,309,,,234,,,59,60,,,61,,,559,,556,555,554,564,557,,,,,,,",",567,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,321,,562,63,,83,95,96,70","71,72,,58,575,574,,64,65,568,,,68,,66,67,69,315,316,73,74,,,,,,75,312","318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101","109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,942,,,234,,,59,60,,,61,,,,,",",,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83","95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104","105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94",",,319,,,,,,,,,,,,,,,,,,,,936,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,,,285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88","87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,,10,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,287,,,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,,,,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87","89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31","73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57","99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,",",75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71","72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,",",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,115,,,,,114,63,,83,95","96,70,71,72,,58,,,,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318","103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,356,,,33,,,59,60,,,61,,35,,,,,,",",,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95","96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105",",,235,,,,,,,313,,,107,106,108,361,57,99,98,362,,101,109,110,,93,94,",",319,,,,,,,,,,,,,,,,,368,,,363,,,234,,,59,60,,,61,,,,,,,,,,,,,,,,,,",",91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,313,,,107,106,108,361,57,99,98,362,,101,109,110,,93,94,,,319,",",,,,,,,,,,,,,,,,,,363,,,234,,,59,60,,,61,,,559,,556,555,554,564,557",",,,,,,,,567,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,562,63,,83,95,96","70,71,72,9,58,575,574,,64,65,568,,,68,,66,67,69,30,31,73,74,,,,,,75","28,27,103,102,104,105,,,19,,,,,,8,46,7,10,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61",",35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,396","63,,83,95,96,70,71,72,,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,","75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71","72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,",",,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83","95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105",",,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43","41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,","91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,",",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,",",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96,70,71,72,9,58,,,,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,","8,46,,10,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,",",,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,","107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,",",,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86","88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69","30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87","89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31","73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,",",82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74",",,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98","100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60",",,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45",",,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58","83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104","105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94","42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233",",,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,",",,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233",",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,",",,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,",",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46",",,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,",",,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106","108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,","228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87","89,,,,,82,90,223,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,,,59,60,,,61,,412,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87","89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316","73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305",",,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,",",,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75","312,318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61",",,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63","58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103","102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,",",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83","95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104","105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94",",,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107,106,108","97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228",",,234,531,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87","89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31","73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97","57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234",",,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,",",75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100",",101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,","61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27","103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45",",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58","83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102","104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,285,,45",",,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63","58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103","102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,","285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312","318,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,",",,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83","95,96,70,71,72,9,58,,,,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28","27,103,102,104,105,,,19,,,,,,8,46,,10,107,106,108,97,57,99,98,100,,101","109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,59,60,,,61,,35",",,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72","63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102","104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285",",45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71","72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103","102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110",",93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,",",,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83","95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104","105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94","42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,764,,,,45,,,,,,",",,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95","96,64,65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,",",19,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43","41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,","91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,",",,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,",",,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233",",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,",",,,,,46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233",",,,,91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64","65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,287,,,,45,,,,,,,,,233,,,",",91,81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,",",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,",",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,",",,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,291,,,,,,233,,,,,91,288","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,,,45,,,291,,,,,,233,,,",",91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,",",46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,",",,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,20,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315","316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313,,,107,106","108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309",",,305,,,59,60,,,61,,,,,,,,,,,,,,,,,,,,91,81,84,85,,86,88,87,89,,,,,82","90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,,,,",",75,28,27,103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100","290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60",",,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288,84,85,,86,88,87,89,,,,","82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,30,31,73,74,",",,,,75,28,27,103,102,104,105,,,19,,,,,,,46,,,107,106,108,97,57,99,98","100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60",",,61,,,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,70","71,72,63,58,83,95,96,64,65,,,,68,,66,67,69,315,316,73,74,,,,,,75,312","318,103,102,104,105,,,235,,,,,,,313,,,107,106,108,97,57,99,98,100,,101","109,110,,93,94,,,319,,,,,,,,,,,,,,,,,,,,309,,,305,,,59,60,,,61,,,559",",556,555,554,564,557,,,,,,,,,567,,91,81,84,85,,86,88,87,89,,,,,82,90",",,,,,562,63,,83,95,96,70,71,72,9,58,575,574,,64,65,568,,,68,,66,67,69","30,31,73,74,,,,,,75,28,27,103,102,104,105,,,19,,,,,,8,46,298,10,107","106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,,,,,,",",,,,40,,,33,,,59,60,,,61,,35,,,,45,,,,,,,,,20,,,,,91,81,84,85,,86,88","87,89,,,,,82,90,,,,,,396,63,,83,95,96,70,71,72,,58,,,,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,,,,,",",,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84,85",",86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66,67","69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,",",,,,,,,228,,,234,,,59,60,,,61,,,,285,,45,,,291,,,,,,233,,,,,91,288,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,46,",",107,106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,",",,,,,,,,,,,,228,,,234,,,59,60,,,61,,670,,285,,45,,,291,,,,,,233,,,,","91,288,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65",",,,68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235",",,,,,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41",",,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91","81,84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,","68,,66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,",",,,46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,",",,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,30,31,73,74,,,,,,75,28,27,103,102,104,105,,,235,,,,,,,46,,,107","106,108,97,57,99,98,100,290,101,109,110,,93,94,42,43,41,,,,,,,,,,,,",",,,,,,,228,,,234,,,59,60,,,61,,287,,285,,45,,,291,,,,,,233,,,,,91,288","84,85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68",",66,67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,","46,,,107,106,108,97,57,99,98,100,,101,109,110,,93,94,42,43,41,,,,,,",",,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45,,,,,,,,,233,,,,,91,81,84","85,,86,88,87,89,,,,,82,90,,,,70,71,72,63,58,83,95,96,64,65,,,,68,,66","67,69,315,316,73,74,,,,,,75,312,318,103,102,104,105,,,235,,,,,,,313",",,107,106,108,97,57,99,98,100,,101,109,110,,93,94,,,319,,,,,,,,,,,,",",,,,,,,309,,,234,,,59,60,,,61,,,559,,556,555,554,564,557,,,,,,,,,567",",91,81,84,85,,86,88,87,89,,,,,82,90,,,,514,,562,63,,83,95,96,70,71,72",",58,575,574,,64,65,568,,,68,,66,67,69,315,316,73,74,,,,,,75,312,318","103,102,104,105,,,235,,,,,,,46,,,107,106,108,97,57,99,98,100,,101,109","110,,93,94,42,43,41,,,,,,,,,,,,,,,,,,,,228,,,234,,,59,60,,,61,,,,,,45",",,,,,,,,233,,,,,91,81,84,85,,86,88,87,89,,,,,82,90,,,,,,,63,,83,95,96","176,187,177,200,173,193,183,182,203,204,198,181,180,175,201,205,206","185,174,188,192,194,186,179,,,,195,202,197,196,189,199,184,172,191,190",",,,,,171,178,169,170,166,167,168,127,129,126,,128,,,,,,,,160,161,,157","139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,,,,,,,,,154","153,,138,159,156,155,164,151,152,146,144,136,158,137,,,165,91,,,,,,",",,,,,,,90,176,187,177,200,173,193,183,182,203,204,198,181,180,175,201","205,206,185,174,188,192,194,186,179,,,,195,202,197,196,189,199,184,172","191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128,,,,,,,,160,161",",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,,,,,",",,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,,,165,91",",,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204,198,181,180","175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196,189,199","184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128,,,,,",",,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150",",,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137",",,165,91,,,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204,198","181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196","189,199,184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128",",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149","150,,,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158","137,,,165,91,,,,,,,,,,,,,,90,176,187,177,200,173,193,183,182,203,204","198,181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197","379,378,380,377,172,191,190,,,,,,171,178,169,170,374,375,376,372,129","99,98,373,,101,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,",",,162,163,149,150,,,,,,384,,,,,,,,154,153,,138,159,156,155,164,151,152","146,144,136,158,137,,,165,176,187,177,200,173,193,183,182,203,204,198","181,180,175,201,205,206,185,174,188,192,194,186,179,,,,195,202,197,196","189,199,184,172,191,190,,,,,,171,178,169,170,166,167,168,127,129,,,128",",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149","150,559,,556,555,554,564,557,,,,,,,154,153,567,138,159,156,155,164,151","152,146,144,136,158,137,,,165,,,,,,,562,,1010,438,,,1011,,,572,571,575","574,,160,161,568,157,139,140,141,148,145,147,,,142,143,,,,162,163,149","150,,,,,,269,,223,,,,,,154,153,,138,159,156,155,164,151,152,146,144","136,158,137,651,438,165,,652,,,,,,,,160,161,,157,139,140,141,148,145","147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156","155,164,151,152,146,144,136,158,137,683,445,165,,684,,,,,,,,160,161",",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,",",,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,1012","445,165,,1013,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143",",,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151","152,146,144,136,158,137,653,445,165,,654,,,,,,,,160,161,,157,139,140","141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153",",138,159,156,155,164,151,152,146,144,136,158,137,485,438,165,,486,,",",,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150",",,,,,,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137","1007,445,165,,1006,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142","143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164","151,152,146,144,136,158,137,653,445,165,,654,,,,,,,,160,161,,157,139","140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154","153,,138,159,156,155,164,151,152,146,144,136,158,137,737,445,165,,738",",,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149","150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136","158,137,485,438,165,,486,,,,,,,,160,161,,157,139,140,141,148,145,147",",,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155","164,151,152,146,144,136,158,137,680,438,165,,681,,,,,,,,160,161,,157","139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,",",154,153,,138,159,156,155,164,151,152,146,144,136,158,137,769,445,165",",768,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162,163","149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146,144","136,158,137,766,438,165,,767,,,,,,,,160,161,,157,139,140,141,148,145","147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156","155,164,151,152,146,144,136,158,137,651,438,165,,652,,,,,,,,160,161",",157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269,",",,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,732,438","165,,733,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,,,,162","163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152,146","144,136,158,137,434,438,165,,435,,,,,,,,160,161,,157,139,140,141,148","145,147,,,142,143,,,,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159","156,155,164,151,152,146,144,136,158,137,441,445,165,,440,,,,,,,,160","161,,157,139,140,141,148,145,147,,,142,143,,,,162,163,149,150,,,,,,269",",,,,,,,154,153,,138,159,156,155,164,151,152,146,144,136,158,137,734","445,165,,735,,,,,,,,160,161,,157,139,140,141,148,145,147,,,142,143,",",,162,163,149,150,,,,,,269,,,,,,,,154,153,,138,159,156,155,164,151,152","146,144,136,158,137,,559,165,556,555,554,564,557,,559,,556,555,554,564","557,567,,,,,,,,567,,559,,556,555,554,564,557,,,,,,562,,,567,,,,,562","572,571,575,574,,,,568,572,571,575,574,,,,568,562,,559,,556,555,554","564,557,572,571,575,574,,,,568,567,,559,,556,555,554,564,557,,559,,556","555,554,564,557,567,,,,,562,,,567,,,,,,572,571,575,574,,,,568,562,,",",,,,,562,572,571,575,574,,,,568,572,571,575,574,,,559,568,556,555,554","564,557,559,,556,555,554,564,557,559,567,556,555,554,564,557,559,567","556,555,554,564,557,,567,,,,,,,567,562,,,,,,,562,,572,571,575,574,,562",",568,,575,574,,562,,568,,575,574,,,,568,,575,574,,,559,568,556,555,554","564,557,,559,,556,555,554,564,557,567,,,,,,,,567,,559,,556,555,554,564","557,,,,,,562,545,,567,,,,,562,572,571,575,574,,,,568,572,571,575,574",",,,568,562,,,,,,,,,572,571,575,574,,,,568"];racc_action_table=arr=$$$("::","Array").$new(24615,nil);idx=0;$send(clist,"each",[],($Ruby25$3=function(str){var self=$Ruby25$3.$$s||this,$$4;if(str==null){str=nil}return $send(str.$split(",",-1),"each",[],($$4=function(i){var self=$$4.$$s||this,$writer=nil;if(i==null){i=nil}if($truthy(i["$empty?"]())){}else{$writer=[idx,i.$to_i()];$send(arr,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return idx=$rb_plus(idx,1)},$$4.$$s=self,$$4.$$arity=1,$$4))},$Ruby25$3.$$s=self,$Ruby25$3.$$arity=1,$Ruby25$3));clist=["769,886,943,1013,17,939,354,769,769,769,660,1011,62,769,769,19,769,314","664,392,14,14,604,604,675,769,730,353,697,735,391,26,940,1012,675,1010","769,769,837,769,769,769,769,769,982,590,947,909,840,947,847,17,357,664","732,733,19,734,1023,346,345,17,335,702,702,335,769,769,769,769,769,769","769,769,769,769,769,769,769,769,1013,314,769,769,769,392,769,581,720","720,769,450,450,769,735,26,391,660,769,62,769,207,769,769,314,769,769","769,769,769,1012,769,769,769,680,354,604,792,26,886,943,1013,734,939","886,943,1013,769,939,1011,769,769,441,769,1011,769,353,697,735,441,441","441,769,769,730,441,441,730,441,730,940,1012,792,1010,590,940,1012,441","1010,847,806,357,982,732,733,909,734,982,441,441,909,441,441,441,441","441,1023,346,345,350,680,1023,346,345,350,450,843,600,600,683,681,581","856,690,690,111,581,856,441,441,441,441,441,441,441,441,441,441,441","441,441,441,848,767,441,441,441,382,441,617,680,850,441,680,382,441","806,854,456,380,441,419,441,680,441,441,380,441,441,441,441,441,294","441,441,441,714,294,714,714,714,855,714,379,683,683,681,386,339,441","379,339,441,441,653,441,806,441,858,806,767,653,653,653,441,441,653","653,653,806,653,600,382,617,617,456,600,690,419,653,653,653,653,617","380,683,681,851,683,681,653,653,851,653,653,653,653,653,683,681,905","859,905,905,905,615,905,502,379,3,387,386,386,386,3,319,319,912,714","912,653,653,653,653,653,653,653,653,653,653,653,653,653,653,41,41,653","653,653,363,653,653,378,363,653,388,860,653,653,378,653,389,653,1016","653,46,653,653,393,653,653,653,653,653,651,653,653,653,652,615,615,502","502,502,387,387,387,390,1019,615,636,653,905,377,653,653,653,653,502","653,377,653,654,319,319,226,653,653,868,654,654,654,869,860,654,654","654,378,654,388,388,388,41,41,871,389,389,389,654,654,654,651,393,393","393,652,434,636,654,654,435,654,654,654,654,654,789,636,872,307,873","390,390,390,994,994,307,376,377,375,227,229,226,875,376,307,375,876","654,654,654,654,654,654,654,654,654,654,654,654,654,654,877,434,654","654,654,435,654,654,766,696,654,434,696,654,654,435,654,374,654,433","654,789,654,654,374,654,654,654,654,654,440,654,307,654,40,227,229,440","440,440,376,37,375,440,440,336,440,654,336,432,654,654,654,654,373,654","430,654,362,344,344,373,654,654,39,766,440,440,38,440,440,440,440,440","907,1020,916,418,920,519,933,372,374,22,418,24,519,1021,372,936,1022","1,24,418,942,519,440,440,440,440,440,440,440,440,440,440,440,440,440","440,362,39,440,440,440,38,440,362,945,373,440,39,362,440,946,38,362","323,440,951,440,952,440,440,953,440,440,440,440,440,97,440,418,440,519","362,372,97,97,97,24,954,97,97,97,365,97,440,478,955,440,440,365,440","97,440,97,97,97,957,15,365,440,440,323,362,97,97,965,97,97,97,97,97","323,593,968,969,970,355,478,971,593,973,478,478,355,478,478,464,465","593,466,467,1030,355,97,97,97,97,97,97,97,97,97,97,97,97,97,97,365,325","97,97,97,310,97,97,325,489,97,493,310,97,97,402,97,325,97,408,97,310","97,97,509,97,97,97,97,97,593,97,100,97,355,510,513,515,978,100,100,100","79,520,100,100,100,97,100,13,97,97,97,97,79,97,100,97,100,100,100,523","97,97,79,12,325,532,100,100,310,100,100,100,100,100,44,44,126,684,533","308,534,126,126,535,684,547,308,548,836,684,836,836,836,684,836,308","100,100,100,100,100,100,100,100,100,100,100,100,100,100,44,44,100,100","100,550,100,100,551,552,100,561,993,100,100,836,100,569,100,573,100","576,100,100,836,100,100,100,100,100,768,100,684,100,308,578,995,768","768,768,367,582,583,768,768,584,768,100,585,358,100,100,100,100,356","100,352,100,737,602,351,612,100,100,452,411,768,768,620,768,768,768","768,768,622,628,340,306,338,738,637,337,333,642,306,327,738,647,324","655,656,738,657,306,659,738,768,768,768,768,768,768,768,768,768,768","768,768,768,768,737,413,768,768,768,663,768,737,665,667,768,669,737","768,320,416,737,677,768,679,768,318,768,768,442,768,768,768,768,768","57,768,306,768,738,737,682,57,57,57,313,1006,57,57,57,225,57,768,685","686,768,768,225,768,312,768,57,57,57,689,1007,225,768,768,691,737,57","57,309,57,57,57,57,57,1009,47,698,935,713,941,420,715,47,722,935,728","941,10,731,303,302,47,301,935,299,941,57,57,57,57,57,57,57,57,57,57","57,57,57,57,225,16,57,57,57,462,298,57,16,7,57,740,463,57,57,361,57","16,57,286,57,744,57,57,283,57,57,57,57,57,47,57,935,57,941,282,763,462","975,268,765,462,462,235,463,975,231,57,463,463,57,57,57,57,975,57,484","57,774,230,228,795,57,484,484,484,16,361,484,484,484,1015,484,805,361","809,812,699,813,361,923,484,484,361,820,821,822,699,826,827,923,829","484,484,830,484,484,484,484,484,832,835,361,975,930,,930,930,930,930","930,608,608,,,608,608,608,,930,699,699,,923,923,699,,477,923,,,,361","484,,28,,,,,484,930,28,28,28,484,484,28,28,28,,28,930,930,,,,930,,477",",28,28,477,477,,477,477,484,484,,28,28,,28,28,28,28,28,,,,,484,,,484",",,,562,484,562,562,562,,562,,484,,,28,28,28,28,28,28,28,28,28,28,28","28,28,28,,,28,28,28,,,28,,28,28,,562,28,28,,28,,28,,28,562,28,28,,28","28,28,28,28,,28,436,28,332,332,332,332,332,436,436,436,,,436,436,436","28,436,,28,28,,28,,28,,436,436,436,,891,28,891,891,891,,891,436,436",",436,436,436,436,436,838,,838,838,838,711,838,711,711,711,992,711,992","992,992,986,992,986,986,986,,986,436,436,436,436,436,436,436,436,436","436,436,436,436,436,,838,436,436,436,,711,436,,436,436,992,,436,436","711,436,,436,,436,,436,436,,436,436,436,436,436,,436,436,436,896,,896","896,896,896,896,297,297,297,297,297,,436,,896,436,436,446,436,,436,",",,446,446,446,436,,446,446,446,,446,529,958,896,958,958,958,,958,446","446,446,446,,896,896,,529,529,896,446,446,,446,446,446,446,446,956,","956,956,956,529,956,529,,529,529,958,529,529,,,529,,529,,,,446,446,446","446,446,446,446,446,446,446,446,446,446,446,,956,446,446,446,,,446,",",446,,,446,446,,446,,446,,446,,446,446,,446,446,446,446,446,,446,446","446,,,906,,906,906,906,,906,,,,,446,,,446,446,446,446,,446,27,446,,",",,446,27,27,27,,,27,27,27,482,27,906,6,6,6,6,6,,,27,27,27,,,,482,482",",,,27,27,,27,27,27,27,27,,,,482,,482,,482,482,,482,482,,,482,,482,507","507,507,507,507,27,27,27,27,27,27,27,27,27,27,27,27,27,27,,,27,27,27",",,27,,27,27,,,27,27,,27,,27,,27,,27,27,,27,27,27,27,27,,27,27,27,898",",898,898,898,898,898,,,,,,,27,,898,27,27,445,27,,27,,,,445,445,445,27",",445,445,445,,445,470,,898,,,,,,445,445,445,445,,898,898,,470,470,898","445,445,,445,445,445,445,445,,,,,,470,,,,470,470,,470,470,,,,,,,,,445","445,445,445,445,445,445,445,445,445,445,445,445,445,,,445,445,445,,","445,,,445,,,445,445,,445,,445,,445,,445,445,,445,445,445,445,445,,445","445,445,,,,,,,,,,,,,,445,,,445,445,445,445,,445,,445,,,,,445,601,601","601,601,601,601,,,,601,601,,,,601,,601,601,601,601,601,601,601,,,,,","601,601,601,601,601,601,601,,,601,,,,,423,601,601,601,601,601,601,601","601,601,601,601,601,,601,601,601,,601,601,601,601,601,423,423,423,423","423,423,423,423,423,423,423,,423,423,,,423,423,,601,,,601,,,601,601",",,601,,601,423,,423,601,423,423,,423,423,423,423,423,601,423,,,,601","601,601,601,,601,601,601,601,,,,,601,601,,423,,423,,,601,,601,601,601","349,349,349,349,349,349,,,,349,349,,,,349,,349,349,349,349,349,349,349",",,,,,349,349,349,349,349,349,349,,,349,,,,,429,349,349,349,349,349,349","349,349,349,349,349,349,,349,349,349,,349,349,349,349,349,429,429,429","429,429,429,429,429,429,429,429,,429,429,,,429,429,,349,,,349,,,349","349,,,349,,349,429,,429,349,429,429,,429,429,429,429,429,349,429,,,","349,349,349,349,,349,349,349,349,,,,,349,349,,429,,,,,349,,349,349,349","811,811,811,811,811,811,,,,811,811,,,,811,,811,811,811,811,811,811,811",",,,,,811,811,811,811,811,811,811,,,811,,,,,,811,811,811,811,811,811","811,811,811,811,811,811,,811,811,811,,811,811,811,811,811,481,481,481","481,481,481,481,481,481,481,481,,481,481,,,481,481,,811,,,811,,,811","811,,,811,,811,481,,481,811,481,481,,481,481,481,481,481,811,481,,,","811,811,811,811,,811,811,811,811,,,,,811,811,481,481,,,,,811,,811,811","811,305,305,305,305,305,305,,,,305,305,,,,305,,305,305,305,305,305,305","305,,,,,,305,305,305,305,305,305,305,,,305,,,,,,305,305,305,305,305","305,305,305,305,305,305,305,,305,305,305,,305,305,305,305,305,530,530","530,530,530,530,530,530,530,530,530,,530,530,,,530,530,,305,,,305,,","305,305,,,305,,305,530,,530,305,530,530,,530,530,530,530,530,305,530",",,,305,305,305,305,,305,305,305,305,,,,,305,305,,530,,,,,305,,305,305","305,938,938,938,938,938,938,,,,938,938,,,,938,,938,938,938,938,938,938","938,,,,,,938,938,938,938,938,938,938,,,938,,,,,,938,938,938,938,938","938,938,938,938,938,938,938,,938,938,938,,938,938,938,938,938,280,280","280,280,280,280,280,280,280,280,280,,280,280,,,280,280,,938,,,938,,","938,938,,,938,,938,280,,280,938,280,280,,280,280,280,280,280,938,280",",,,938,938,938,938,,938,938,938,938,,,,,938,938,,280,,,,,938,,938,938","938,755,755,755,755,755,755,,,,755,755,,,,755,,755,755,755,755,755,755","755,,,,,,755,755,755,755,755,755,755,,,755,,,,,,755,755,755,755,755","755,755,755,755,755,755,755,,755,755,755,,755,755,755,755,755,771,771","771,771,771,771,771,771,771,771,771,,771,771,,,771,771,,755,,,755,,","755,755,,,755,,755,771,,771,755,771,771,,771,771,771,771,771,755,771",",,,755,755,755,755,,755,755,755,755,,,,,755,755,,771,,,,,755,,755,755","755,300,300,300,300,300,300,,,,300,300,,,,300,,300,300,300,300,300,300","300,,,,,,300,300,300,300,300,300,300,,,300,,,,,,300,300,300,300,300","300,300,300,300,300,300,300,,300,300,300,,300,300,300,300,300,865,865","865,865,865,865,865,865,865,865,865,,865,865,,,865,865,,300,,,300,,","300,300,,,300,,300,865,,865,300,865,865,,865,865,865,865,865,300,865",",,,300,300,300,300,,300,300,300,300,,,,,300,300,,865,,,,,300,,300,300","300,745,745,745,745,745,745,,,,745,745,,,,745,,745,745,745,745,745,745","745,,,,,,745,745,745,745,745,745,745,,,745,,,,,,745,745,745,745,745","745,745,745,745,745,745,745,,745,745,745,,745,745,745,745,745,21,21","21,21,21,21,21,21,21,21,21,,21,21,,,21,21,,745,,,745,,,745,745,,,745",",745,21,,21,745,21,21,,21,21,21,21,21,745,21,,,,745,745,745,745,,745","745,745,745,,,,,745,745,,21,,,,,745,,745,745,745,800,800,800,800,800","800,,,,800,800,,,,800,,800,800,800,800,800,800,800,,,,,,800,800,800","800,800,800,800,,,800,,,,,,800,800,800,800,800,800,800,800,800,800,800","800,,800,800,800,,800,800,800,800,800,473,473,473,473,473,473,473,,","473,473,,,,,,473,473,,800,,,800,,,800,800,,,800,,800,473,,473,800,473","473,,473,473,473,473,473,800,473,,,,800,800,800,800,,800,800,800,800",",,,,800,800,,,,,,,800,,800,800,800,348,348,348,348,348,348,,,,348,348",",,,348,,348,348,348,348,348,348,348,,,,,,348,348,348,348,348,348,348",",,348,,,,,,348,348,348,348,348,348,348,348,348,348,348,348,,348,348","348,,348,348,348,348,348,460,460,460,460,460,460,460,460,460,460,460",",460,460,,,460,460,,348,,,348,,,348,348,,,348,,348,460,,460,348,460","460,,460,460,460,460,460,348,460,,,,348,348,348,348,,348,348,348,348",",,,,348,348,,,,,,,348,,348,348,348,852,852,852,852,852,852,,,,852,852",",,,852,,852,852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852",",,852,,,,,,852,852,852,852,852,852,852,852,852,852,852,852,,852,852","852,,852,852,852,852,852,474,474,474,474,474,474,474,,,474,474,,,,,","474,474,,852,,,852,,,852,852,,,852,,852,474,,474,852,474,474,,474,474","474,474,474,852,474,,,,852,852,852,852,,852,852,852,852,,,,,852,852",",,,,,,852,,852,852,852,890,890,890,890,890,890,,,,890,890,,,,890,,890","890,890,890,890,890,890,,,,,,890,890,890,890,890,890,890,,,890,,,,,","890,890,890,890,890,890,890,890,890,890,890,890,,890,890,890,,890,890","890,890,890,475,475,475,475,475,475,475,,,475,475,,,,,,475,475,,890",",,890,,,890,890,,,890,,890,475,,475,890,475,475,,475,475,475,475,475","890,475,,,,890,890,890,890,,890,890,890,890,,,,,890,890,,,,,,,890,,890","890,890,741,741,741,741,741,741,,,,741,741,,,,741,,741,741,741,741,741","741,741,,,,,,741,741,741,741,741,741,741,,,741,,,,,,741,741,741,741","741,741,741,741,741,741,741,741,,741,741,741,,741,741,741,741,741,461","461,461,461,461,461,461,461,461,461,461,,461,461,,,461,461,,741,,,741",",,741,741,,,741,,741,461,,461,741,461,461,,461,461,461,461,461,741,461",",,,741,741,741,741,,741,741,741,741,,,,,741,741,,,,,,,741,,741,741,741","736,736,736,736,736,736,,,,736,736,,,,736,,736,736,736,736,736,736,736",",,,,,736,736,736,736,736,736,736,,,736,,,,,,736,736,736,736,736,736","736,736,736,736,736,736,,736,736,736,,736,736,736,736,736,476,476,476","476,476,476,476,,,476,476,,,,,,476,476,,736,,,736,,,736,736,,,736,,736","476,,476,736,476,476,,476,476,476,476,476,736,476,,,,736,736,736,736",",736,736,736,736,,,,,736,736,,,,,,,736,,736,736,736,234,234,234,234","234,234,,,,234,234,,,,234,,234,234,234,234,234,234,234,,,,,,234,234","234,234,234,234,234,,,234,,,,,,234,234,234,234,234,234,234,234,234,234","234,234,,234,234,234,,234,234,234,234,234,480,480,480,480,480,480,480","480,,480,480,,,,,,480,480,,234,,,234,,,234,234,,,234,,234,480,,480,234","480,480,,480,480,480,480,480,234,480,,,,234,234,234,234,,234,234,234","234,,,,,234,234,,,,,,,234,,234,234,234,846,846,846,846,846,846,,,,846","846,,,,846,,846,846,846,846,846,846,846,,,,,,846,846,846,846,846,846","846,,,846,,,,,,846,846,846,846,846,846,846,846,846,846,846,846,,846","846,846,,846,846,846,846,846,471,471,471,471,471,471,471,,,471,471,",",,,,471,471,,846,,,846,,,846,846,,,846,,846,471,,471,846,471,471,,471","471,471,471,471,846,471,,,,846,846,846,846,,846,846,846,846,,,,,846","846,,,,,,,846,,846,846,846,33,33,33,33,33,33,,,,33,33,,,,33,,33,33,33","33,33,33,33,,,,,,33,33,33,33,33,33,33,,,33,,,,,,33,33,33,33,33,33,33","33,33,33,33,33,,33,33,33,,33,33,33,33,33,472,472,472,472,472,472,472",",,472,472,,,,,,472,472,,33,,,33,,,33,33,,,33,,33,472,,472,33,472,472",",472,472,472,472,472,33,472,,,,33,33,33,33,,33,33,33,33,,,,,33,33,,",",,,,33,,33,33,33,0,0,0,0,0,0,,,,0,0,,,,0,,0,0,0,0,0,0,0,,,,,,0,0,0,0","0,0,0,,,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,0,,0,0,0,0,0,479,479,479","479,479,479,479,,,479,479,,,,,,479,479,,0,,,0,,,0,0,,,0,,0,479,,479","0,479,479,,479,479,479,479,479,0,479,,,,0,0,0,0,,0,0,0,0,,,,,0,0,,,",",,,0,,0,0,0,577,577,577,577,577,577,,,,577,577,,,,577,,577,577,577,577","577,577,577,,,,,,577,577,577,577,577,577,577,,,577,,,,,,577,577,577","577,577,577,577,577,577,577,577,577,,577,577,577,,577,577,577,577,577","468,,,,,,,,,,,,,,,,468,468,,577,,,577,,,577,577,,,577,,577,468,,468","577,468,468,,468,468,,,,577,,,,,577,577,577,577,,577,577,577,577,,,",",577,577,,,,,,,577,,577,577,577,889,889,889,889,889,889,,,,889,889,",",,889,,889,889,889,889,889,889,889,,,,,,889,889,889,889,889,889,889",",,889,,,,,,889,889,889,889,889,889,889,889,889,889,889,889,,889,889","889,,889,889,889,889,889,469,,,,,,,,,,,,,,,,469,469,,889,,,889,,,889","889,,,889,,889,469,,469,889,469,469,,469,469,,,,889,,,,,889,889,889","889,,889,889,889,889,,,,,889,889,,,,,,,889,,889,889,889,331,331,331","331,331,331,,,,331,331,,,,331,,331,331,331,331,331,331,331,,,,,,331","331,331,331,331,331,331,,,331,,,,,,331,331,331,331,331,331,331,331,331","331,331,331,,331,331,331,,331,331,331,331,331,,,,,,,,,,,,,,,,,,,,331",",,331,,,331,331,,,331,,331,,,,331,,,,,,,,,331,,,,,331,331,331,331,,331","331,331,331,,,,,331,331,,,,,,,331,,331,331,331,124,124,124,124,124,124",",,,124,124,,,,124,,124,124,124,124,124,124,124,,,,,,124,124,124,124","124,124,124,,,124,,,,,,124,124,124,124,124,124,124,124,124,124,124,124",",124,124,124,,124,124,124,124,124,,,,,,,,,,,,,,,,,,,,124,,,124,,,124","124,,,124,,124,,,,124,,,,,,,,,124,,,,,124,124,124,124,,124,124,124,124",",,,,124,124,,,,,,,124,,124,124,124,883,883,883,883,883,883,,,,883,883",",,,883,,883,883,883,883,883,883,883,,,,,,883,883,883,883,883,883,883",",,883,,,,,,883,883,883,883,883,883,883,883,883,883,883,883,,883,883","883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,,,883,,,883,,,883,883,,,883",",883,,,,883,,,,,,,,,883,,,,,883,883,883,883,,883,883,883,883,,,,,883","883,,,,,,,883,,883,883,883,964,964,964,964,964,964,,,,964,964,,,,964",",964,964,964,964,964,964,964,,,,,,964,964,964,964,964,964,964,,,964",",,,,,964,964,964,964,964,964,964,964,964,964,964,964,,964,964,964,,964","964,964,964,964,,,,,,,,,,,,,,,,,,,,964,,,964,,,964,964,,,964,,964,,",",964,,,,,,,,,964,,,,,964,964,964,964,,964,964,964,964,,,,,964,964,,",",,,,964,,964,964,964,209,209,209,209,209,209,,,,209,209,,,,209,,209","209,209,209,209,209,209,,,,,,209,209,209,209,209,209,209,,,209,,,,,","209,209,209,209,209,209,209,209,209,209,209,209,,209,209,209,,209,209","209,209,209,,,,,,,,,,,,,,,,,,,,209,,,209,,,209,209,,,209,,209,,,,209",",,,,,,,,209,,,,,209,209,209,209,,209,209,209,209,,,,,209,209,,,,,,,209",",209,209,209,959,959,959,959,959,959,,,,959,959,,,,959,,959,959,959","959,959,959,959,,,,,,959,959,959,959,959,959,959,,,959,,,,,,959,959","959,959,959,959,959,959,959,959,959,959,,959,959,959,,959,959,959,959","959,,,,,,,,,,,,,,,,,,,,959,,,959,,,959,959,,,959,,959,,,,959,,,,,,,",",959,,,,,959,959,959,959,,959,959,959,959,,,,,959,959,,,,,,,959,,959","959,959,580,580,580,580,580,580,,,,580,580,,,,580,,580,580,580,580,580","580,580,,,,,,580,580,580,580,580,580,580,,,580,,,,,,580,580,580,580","580,580,580,580,580,580,580,580,,580,580,580,,580,580,580,580,580,,",",,,,,,,,,,,,,,,,,580,,,580,,,580,580,,,580,,580,,,,580,,,,,,,,,580,",",,,580,580,580,580,,580,580,580,580,,,,,580,580,,,,,,,580,,580,580,580","866,866,866,866,866,866,,,,866,866,,,,866,,866,866,866,866,866,866,866",",,,,,866,866,866,866,866,866,866,,,866,,,,,,866,866,866,866,866,866","866,866,866,866,866,866,,866,866,866,,866,866,866,866,866,,,,,,,,,,",",,,,,,,,,866,,,866,,,866,866,,,866,,866,,,,866,,,,,,,,,866,,,,,866,866","866,866,,866,866,866,866,,,,,866,866,,,,790,790,790,866,790,866,866","866,790,790,,,,790,,790,790,790,790,790,790,790,,,,,,790,790,790,790","790,790,790,,,790,,,,,,,790,,,790,790,790,790,790,790,790,790,,790,790","790,,790,790,790,790,790,,,,,,,,,,,,,,,,,,,,790,,,790,,,790,790,,,790",",,,,,790,,,,,,,,,790,,,,,790,790,790,790,,790,790,790,790,,,,,790,790",",,,788,788,788,790,788,790,790,790,788,788,,,,788,,788,788,788,788,788","788,788,,,,,,788,788,788,788,788,788,788,,,788,,,,,,,788,,,788,788,788","788,788,788,788,788,,788,788,788,,788,788,788,788,788,,,,,,,,,,,,,,",",,,,,788,,,788,,,788,788,,,788,,,,,,788,,,,,,,,,788,,,,,788,788,788","788,,788,788,788,788,,,,,788,788,,,,787,787,787,788,787,788,788,788","787,787,,,,787,,787,787,787,787,787,787,787,,,,,,787,787,787,787,787","787,787,,,787,,,,,,,787,,,787,787,787,787,787,787,787,787,,787,787,787",",787,787,787,787,787,,,,,,,,,,,,,,,,,,,,787,,,787,,,787,787,,,787,,",",,,787,,,,,,,,,787,,,,,787,787,787,787,,787,787,787,787,,,,,787,787",",,,786,786,786,787,786,787,787,787,786,786,,,,786,,786,786,786,786,786","786,786,,,,,,786,786,786,786,786,786,786,,,786,,,,,,,786,,,786,786,786","786,786,786,786,786,,786,786,786,,786,786,786,786,786,,,,,,,,,,,,,,",",,,,,786,,,786,,,786,786,,,786,,,,,,786,,,,,,,,,786,,,,,786,786,786","786,,786,786,786,786,,,,,786,786,,,,785,785,785,786,785,786,786,786","785,785,,,,785,,785,785,785,785,785,785,785,,,,,,785,785,785,785,785","785,785,,,785,,,,,,,785,,,785,785,785,785,785,785,785,785,,785,785,785",",785,785,785,785,785,,,,,,,,,,,,,,,,,,,,785,,,785,,,785,785,,,785,,",",,,785,,,,,,,,,785,,,,,785,785,785,785,,785,785,785,785,,,,,785,785",",,,772,772,772,785,772,785,785,785,772,772,,,,772,,772,772,772,772,772","772,772,,,,,,772,772,772,772,772,772,772,,,772,,,,,,,772,,,772,772,772","772,772,772,772,772,,772,772,772,,772,772,772,772,772,,,,,,,,,,,,,,",",,,,,772,,,772,,,772,772,,,772,,,,,,772,,,,,,,,,772,,,,,772,772,772","772,,772,772,772,772,,,,,772,772,,,,233,233,233,772,233,772,772,772","233,233,,,,233,,233,233,233,233,233,233,233,,,,,,233,233,233,233,233","233,233,,,233,,,,,,,233,,,233,233,233,233,233,233,233,233,,233,233,233",",233,233,233,233,233,,,,,,,,,,,,,,,,,,,,233,,,233,,,233,233,,,233,,",",,,233,,,,,,,,,233,,,,,233,233,233,233,,233,233,233,233,,,,,233,233",",,,236,236,236,233,236,233,233,233,236,236,,,,236,,236,236,236,236,236","236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,,,236,,,236,236,236","236,236,236,236,236,,236,236,236,,236,236,236,236,236,,,,,,,,,,,,,,",",,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236,,,,,236,236,236","236,,236,236,236,236,,,,,236,236,,,,237,237,237,236,237,236,236,236","237,237,,,,237,,237,237,237,237,237,237,237,,,,,,237,237,237,237,237","237,237,,,237,,,,,,,237,,,237,237,237,237,237,237,237,237,,237,237,237",",237,237,237,237,237,,,,,,,,,,,,,,,,,,,,237,,,237,,,237,237,,,237,,",",,,237,,,,,,,,,237,,,,,237,237,237,237,,237,237,237,237,,,,,237,237",",,,238,238,238,237,238,237,237,237,238,238,,,,238,,238,238,238,238,238","238,238,,,,,,238,238,238,238,238,238,238,,,238,,,,,,,238,,,238,238,238","238,238,238,238,238,,238,238,238,,238,238,238,238,238,,,,,,,,,,,,,,",",,,,,238,,,238,,,238,238,,,238,,,,,,238,,,,,,,,,238,,,,,238,238,238","238,,238,238,238,238,,,,,238,238,,,,239,239,239,238,239,238,238,238","239,239,,,,239,,239,239,239,239,239,239,239,,,,,,239,239,239,239,239","239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239,,239,239,239",",239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,239,,,239,,",",,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239,,,,,239,239",",,,240,240,240,239,240,239,239,239,240,240,,,,240,,240,240,240,240,240","240,240,,,,,,240,240,240,240,240,240,240,,,240,,,,,,,240,,,240,240,240","240,240,240,240,240,,240,240,240,,240,240,240,240,240,,,,,,,,,,,,,,",",,,,,240,,,240,,,240,240,,,240,,,,,,240,,,,,,,,,240,,,,,240,240,240","240,,240,240,240,240,,,,,240,240,,,,241,241,241,240,241,240,240,240","241,241,,,,241,,241,241,241,241,241,241,241,,,,,,241,241,241,241,241","241,241,,,241,,,,,,,241,,,241,241,241,241,241,241,241,241,,241,241,241",",241,241,241,241,241,,,,,,,,,,,,,,,,,,,,241,,,241,,,241,241,,,241,,",",,,241,,,,,,,,,241,,,,,241,241,241,241,,241,241,241,241,,,,,241,241",",,,242,242,242,241,242,241,241,241,242,242,,,,242,,242,242,242,242,242","242,242,,,,,,242,242,242,242,242,242,242,,,242,,,,,,,242,,,242,242,242","242,242,242,242,242,,242,242,242,,242,242,242,242,242,,,,,,,,,,,,,,",",,,,,242,,,242,,,242,242,,,242,,,,,,242,,,,,,,,,242,,,,,242,242,242","242,,242,242,242,242,,,,,242,242,,,,243,243,243,242,243,242,242,242","243,243,,,,243,,243,243,243,243,243,243,243,,,,,,243,243,243,243,243","243,243,,,243,,,,,,,243,,,243,243,243,243,243,243,243,243,,243,243,243",",243,243,243,243,243,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,243,,,243,,",",,,243,,,,,,,,,243,,,,,243,243,243,243,,243,243,243,243,,,,,243,243",",,,244,244,244,243,244,243,243,243,244,244,,,,244,,244,244,244,244,244","244,244,,,,,,244,244,244,244,244,244,244,,,244,,,,,,,244,,,244,244,244","244,244,244,244,244,,244,244,244,,244,244,244,244,244,,,,,,,,,,,,,,",",,,,,244,,,244,,,244,244,,,244,,,,,,244,,,,,,,,,244,,,,,244,244,244","244,,244,244,244,244,,,,,244,244,,,,245,245,245,244,245,244,244,244","245,245,,,,245,,245,245,245,245,245,245,245,,,,,,245,245,245,245,245","245,245,,,245,,,,,,,245,,,245,245,245,245,245,245,245,245,,245,245,245",",245,245,245,245,245,,,,,,,,,,,,,,,,,,,,245,,,245,,,245,245,,,245,,",",,,245,,,,,,,,,245,,,,,245,245,245,245,,245,245,245,245,,,,,245,245",",,,246,246,246,245,246,245,245,245,246,246,,,,246,,246,246,246,246,246","246,246,,,,,,246,246,246,246,246,246,246,,,246,,,,,,,246,,,246,246,246","246,246,246,246,246,,246,246,246,,246,246,246,246,246,,,,,,,,,,,,,,",",,,,,246,,,246,,,246,246,,,246,,,,,,246,,,,,,,,,246,,,,,246,246,246","246,,246,246,246,246,,,,,246,246,,,,247,247,247,246,247,246,246,246","247,247,,,,247,,247,247,247,247,247,247,247,,,,,,247,247,247,247,247","247,247,,,247,,,,,,,247,,,247,247,247,247,247,247,247,247,,247,247,247",",247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247,,,247,,,247,247,,,247,,",",,,247,,,,,,,,,247,,,,,247,247,247,247,,247,247,247,247,,,,,247,247",",,,248,248,248,247,248,247,247,247,248,248,,,,248,,248,248,248,248,248","248,248,,,,,,248,248,248,248,248,248,248,,,248,,,,,,,248,,,248,248,248","248,248,248,248,248,,248,248,248,,248,248,248,248,248,,,,,,,,,,,,,,",",,,,,248,,,248,,,248,248,,,248,,,,,,248,,,,,,,,,248,,,,,248,248,248","248,,248,248,248,248,,,,,248,248,,,,249,249,249,248,249,248,248,248","249,249,,,,249,,249,249,249,249,249,249,249,,,,,,249,249,249,249,249","249,249,,,249,,,,,,,249,,,249,249,249,249,249,249,249,249,,249,249,249",",249,249,249,249,249,,,,,,,,,,,,,,,,,,,,249,,,249,,,249,249,,,249,,",",,,249,,,,,,,,,249,,,,,249,249,249,249,,249,249,249,249,,,,,249,249",",,,250,250,250,249,250,249,249,249,250,250,,,,250,,250,250,250,250,250","250,250,,,,,,250,250,250,250,250,250,250,,,250,,,,,,,250,,,250,250,250","250,250,250,250,250,,250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,",",,,,,250,,,250,,,250,250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250","250,,250,250,250,250,,,,,250,250,,,,251,251,251,250,251,250,250,250","251,251,,,,251,,251,251,251,251,251,251,251,,,,,,251,251,251,251,251","251,251,,,251,,,,,,,251,,,251,251,251,251,251,251,251,251,,251,251,251",",251,251,251,251,251,,,,,,,,,,,,,,,,,,,,251,,,251,,,251,251,,,251,,",",,,251,,,,,,,,,251,,,,,251,251,251,251,,251,251,251,251,,,,,251,251",",,,252,252,252,251,252,251,251,251,252,252,,,,252,,252,252,252,252,252","252,252,,,,,,252,252,252,252,252,252,252,,,252,,,,,,,252,,,252,252,252","252,252,252,252,252,,252,252,252,,252,252,252,252,252,,,,,,,,,,,,,,",",,,,,252,,,252,,,252,252,,,252,,,,,,252,,,,,,,,,252,,,,,252,252,252","252,,252,252,252,252,,,,,252,252,,,,253,253,253,252,253,252,252,252","253,253,,,,253,,253,253,253,253,253,253,253,,,,,,253,253,253,253,253","253,253,,,253,,,,,,,253,,,253,253,253,253,253,253,253,253,,253,253,253",",253,253,253,253,253,,,,,,,,,,,,,,,,,,,,253,,,253,,,253,253,,,253,,",",,,253,,,,,,,,,253,,,,,253,253,253,253,,253,253,253,253,,,,,253,253",",,,254,254,254,253,254,253,253,253,254,254,,,,254,,254,254,254,254,254","254,254,,,,,,254,254,254,254,254,254,254,,,254,,,,,,,254,,,254,254,254","254,254,254,254,254,,254,254,254,,254,254,254,254,254,,,,,,,,,,,,,,",",,,,,254,,,254,,,254,254,,,254,,,,,,254,,,,,,,,,254,,,,,254,254,254","254,,254,254,254,254,,,,,254,254,,,,255,255,255,254,255,254,254,254","255,255,,,,255,,255,255,255,255,255,255,255,,,,,,255,255,255,255,255","255,255,,,255,,,,,,,255,,,255,255,255,255,255,255,255,255,,255,255,255",",255,255,255,255,255,,,,,,,,,,,,,,,,,,,,255,,,255,,,255,255,,,255,,",",,,255,,,,,,,,,255,,,,,255,255,255,255,,255,255,255,255,,,,,255,255",",,,256,256,256,255,256,255,255,255,256,256,,,,256,,256,256,256,256,256","256,256,,,,,,256,256,256,256,256,256,256,,,256,,,,,,,256,,,256,256,256","256,256,256,256,256,,256,256,256,,256,256,256,256,256,,,,,,,,,,,,,,",",,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,,,,256,,,,,256,256,256","256,,256,256,256,256,,,,,256,256,,,,257,257,257,256,257,256,256,256","257,257,,,,257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257","257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257",",257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,",",,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257",",,,262,262,262,257,262,257,257,257,262,262,,,,262,,262,262,262,262,262","262,262,,,,,,262,262,262,262,262,262,262,,,262,,,,,,,262,,,262,262,262","262,262,262,262,262,,262,262,262,,262,262,262,262,262,,,,,,,,,,,,,,",",,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,,,,262,,,,,262,262,262","262,,262,262,262,262,,,,,262,262,,,,764,764,764,262,764,262,262,262","764,764,,,,764,,764,764,764,764,764,764,764,,,,,,764,764,764,764,764","764,764,,,764,,,,,,,764,,,764,764,764,764,764,764,764,764,,764,764,764",",764,764,764,764,764,,,,,,,,,,,,,,,,,,,,764,,,764,,,764,764,,,764,,",",,,764,,,,,,,,,764,,,,,764,764,764,764,,764,764,764,764,,,,,764,764",",,,269,269,269,764,269,764,764,764,269,269,,,,269,,269,269,269,269,269","269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269","269,269,269,269,269,269,269,269,269,,269,269,269,269,269,,,,,,,,,,,",",,,,,,,,269,,,269,,,269,269,,,269,,269,,269,,269,,,269,,,,,,269,,,,","269,269,269,269,,269,269,269,269,,,,,269,269,,,,270,270,270,269,270","269,269,269,270,270,,,,270,,270,270,270,270,270,270,270,,,,,,270,270","270,270,270,270,270,,,270,,,,,,,270,,,270,270,270,270,270,270,270,270","270,270,270,270,,270,270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,","270,270,,,270,,270,,270,,270,,,270,,,,,,270,,,,,270,270,270,270,,270","270,270,270,,,,,270,270,,,,278,278,278,270,278,270,270,270,278,278,",",,278,,278,278,278,278,278,278,278,,,,,,278,278,278,278,278,278,278",",,278,,,,,,,278,,,278,278,278,278,278,278,278,278,278,278,278,278,,278","278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278,,,278,,278,,278",",278,,,278,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,,278,278","278,,,285,285,285,278,285,278,278,278,285,285,,,,285,,285,285,285,285","285,285,285,,,,,,285,285,285,285,285,285,285,,,285,,,,,,,285,,,285,285","285,285,285,285,285,285,,285,285,285,,285,285,285,285,285,,,,,,,,,,",",,,,,,,,,285,,,285,,,285,285,,,285,,,,,,285,,,,,,,,,285,,,,,285,285","285,285,,285,285,285,285,,,,,285,285,,,,742,742,742,285,742,285,285","285,742,742,,,,742,,742,742,742,742,742,742,742,,,,,,742,742,742,742","742,742,742,,,742,,,,,,,742,,,742,742,742,742,742,742,742,742,,742,742","742,,742,742,742,742,742,,,,,,,,,,,,,,,,,,,,742,,,742,,,742,742,,,742",",,,,,742,,,,,,,,,742,,,,,742,742,742,742,,742,742,742,742,,,,,742,742",",,,287,287,287,742,287,742,742,742,287,287,,,,287,,287,287,287,287,287","287,287,,,,,,287,287,287,287,287,287,287,,,287,,,,,,,287,,,287,287,287","287,287,287,287,287,,287,287,287,,287,287,287,287,287,,,,,,,,,,,,,,",",,,,,287,,,287,,,287,287,,,287,,,,,,287,,,,,,,,,287,,,,,287,287,287","287,,287,287,287,287,,,,,287,287,,,,290,290,290,287,290,287,287,287","290,290,,,,290,,290,290,290,290,290,290,290,,,,,,290,290,290,290,290","290,290,,,290,,,,,,,290,,,290,290,290,290,290,290,290,290,,290,290,290",",290,290,290,290,290,,,,,,,,,,,,,,,,,,,,290,,,290,,,290,290,,,290,,",",,,290,,,,,,,,,290,,,,,290,290,290,290,,290,290,290,290,,,,,290,290",",,,291,291,291,290,291,290,290,290,291,291,,,,291,,291,291,291,291,291","291,291,,,,,,291,291,291,291,291,291,291,,,291,,,,,,,291,,,291,291,291","291,291,291,291,291,,291,291,291,,291,291,291,291,291,,,,,,,,,,,,,,",",,,,,291,,,291,,,291,291,,,291,,,,,,291,,,,,,,,,291,,,,,291,291,291","291,,291,291,291,291,,,,,291,291,,,,,,,291,,291,291,291,296,296,296","296,296,,,,296,296,,,,296,,296,296,296,296,296,296,296,,,,,,296,296","296,296,296,296,296,,,296,,,,,,296,296,,296,296,296,296,296,296,296","296,296,,296,296,296,,296,296,296,296,296,,,,,,,,,,,,,,,,,,,,296,,,296",",,296,296,,,296,,296,,,,296,,,,,,,,,296,,,,,296,296,296,296,,296,296","296,296,,,,,296,296,,,,565,565,565,296,565,296,296,296,565,565,,,,565",",565,565,565,565,565,565,565,,,,,,565,565,565,565,565,565,565,,,565",",,,,,,565,,,565,565,565,565,565,565,565,565,,565,565,565,,565,565,565","565,565,,,,,,,,,,,,,,,,,,,,565,,,565,,,565,565,,,565,,,,,,565,,,,,,",",,565,,,,,565,565,565,565,,565,565,565,565,,,,,565,565,,,,,,,565,,565","565,565,5,5,5,5,5,,,,5,5,,,,5,,5,5,5,5,5,5,5,,,,,,5,5,5,5,5,5,5,,,5",",,,,,5,5,5,5,5,5,5,5,5,5,5,5,,5,5,5,,5,5,5,5,5,,,,,,,,,,,,,,,,,,,,5",",,5,,,5,5,,,5,,5,,,,5,,,,,,,,,5,,,,,5,5,5,5,,5,5,5,5,,,,,5,5,,,,979","979,979,5,979,5,5,5,979,979,,,,979,,979,979,979,979,979,979,979,,,,",",979,979,979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979","979,979,979,979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979",",,979,,,979,979,,,979,,979,,979,,979,,,979,,,,,,979,,,,,979,979,979","979,,979,979,979,979,,,,,979,979,,,,20,20,20,979,20,979,979,979,20,20",",,,20,,20,20,20,20,20,20,20,,,,,,20,20,20,20,20,20,20,,,20,,,,,,,20",",,20,20,20,20,20,20,20,20,,20,20,20,,20,20,20,20,20,,,,,,,,,,,,,,,,",",,,20,,,20,,,20,20,,,20,,,,,,20,,,,,,,,,20,,,,,20,20,20,20,,20,20,20","20,,,,,20,20,,,,934,934,934,20,934,20,20,20,934,934,,,,934,,934,934","934,934,934,934,934,,,,,,934,934,934,934,934,934,934,,,934,,,,,,,934",",,934,934,934,934,934,934,934,934,,934,934,934,,934,934,,,934,,,,,,",",,,,,,,,,,,,,934,,,934,,,934,934,,,934,,,,,,,,,,,,,,,,,,,,934,934,934","934,,934,934,934,934,,,,,934,934,,,,29,29,29,934,29,934,934,934,29,29",",,,29,,29,29,29,29,29,29,29,,,,,,29,29,29,29,29,29,29,,,29,,,,,,,29",",,29,29,29,29,29,29,29,29,29,29,29,29,,29,29,29,29,29,,,,,,,,,,,,,,",",,,,,29,,,29,,,29,29,,,29,,29,,29,,29,,,29,,,,,,29,,,,,29,29,29,29,","29,29,29,29,,,,,29,29,,,,30,30,30,29,30,29,29,29,30,30,,,,30,,30,30","30,30,30,30,30,,,,,,30,30,30,30,30,30,30,,,30,,,,,,,30,,,30,30,30,30","30,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,,,,,,,,,,,,,,,,30,,,30,",",30,30,,,30,,30,,30,,30,,,30,,,,,,30,,,,,30,30,30,30,,30,30,30,30,,",",,30,30,,,,31,31,31,30,31,30,30,30,31,31,,,,31,,31,31,31,31,31,31,31",",,,,,31,31,31,31,31,31,31,,,31,,,,,,,31,,,31,31,31,31,31,31,31,31,31","31,31,31,,31,31,31,31,31,,,,,,,,,,,,,,,,,,,,31,,,31,,,31,31,,,31,,31",",31,,31,,,31,,,,,,31,,,,,31,31,31,31,,31,31,31,31,,,,,31,31,,,,34,34","34,31,34,31,31,31,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34","34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,,34,34,34,,34,34,,","34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,,,,,,,,,,,,,,,,,34,34","34,34,,34,34,34,34,,,,,34,34,,,,35,35,35,34,35,34,34,34,35,35,,,,35",",35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,,35,35","35,35,35,35,35,35,,35,35,35,,35,35,,,35,,,,,,,,,,,,,,,,,,,,35,,,35,",",35,35,,,35,,,900,,900,900,900,900,900,,,,,,,,,900,,35,35,35,35,,35","35,35,35,,,,,35,35,,,,35,,900,35,,35,35,35,887,887,887,,887,900,900",",887,887,900,,,887,,887,887,887,887,887,887,887,,,,,,887,887,887,887","887,887,887,,,887,,,,,,,887,,,887,887,887,887,887,887,887,887,,887,887","887,,887,887,,,887,,,,,,,,,,,,,,,,,,,,887,,,887,,,887,887,,,887,,,,",",,,,,,,,,,,,,,,887,887,887,887,,887,887,887,887,,,,,887,887,,,,878,878","878,887,878,887,887,887,878,878,,,,878,,878,878,878,878,878,878,878",",,,,,878,878,878,878,878,878,878,,,878,,,,,,,878,,,878,878,878,878,878","878,878,878,,878,878,878,,878,878,,,878,,,,,,,,,,,,,,,,,,,,878,,,878",",,878,878,,,878,,,,,,,,,,,,,,,,,,,,878,878,878,878,,878,878,878,878",",,,,878,878,,,,42,42,42,878,42,878,878,878,42,42,,,,42,,42,42,42,42","42,42,42,,,,,,42,42,42,42,42,42,42,,,42,,,,,,,42,,,42,42,42,42,42,42","42,42,,42,42,42,,42,42,42,42,42,,,,,,,,,,,,,,,,,,,,42,,,42,,,42,42,",",42,,,,,,42,,,,,,,,,42,,,,,42,42,42,42,,42,42,42,42,,,,,42,42,,,,43","43,43,42,43,42,42,42,43,43,,,,43,,43,43,43,43,43,43,43,,,,,,43,43,43","43,43,43,43,,,43,,,,,,,43,,,43,43,43,43,43,43,43,43,,43,43,43,,43,43","43,43,43,,,,,,,,,,,,,,,,,,,,43,,,43,,,43,43,,,43,,,,,,43,,,,,,,,,43",",,,,43,43,43,43,,43,43,43,43,,,,,43,43,,,,45,45,45,43,45,43,43,43,45","45,,,,45,,45,45,45,45,45,45,45,,,,,,45,45,45,45,45,45,45,,,45,,,,,,","45,,,45,45,45,45,45,45,45,45,,45,45,45,,45,45,45,45,45,,,,,,,,,,,,,",",,,,,,45,,,45,,,45,45,,,45,,,,,,45,,,,,,,,,45,,,,,45,45,45,45,,45,45","45,45,,,,,45,45,,,,864,864,864,45,864,45,45,45,864,864,,,,864,,864,864","864,864,864,864,864,,,,,,864,864,864,864,864,864,864,,,864,,,,,,,864",",,864,864,864,864,864,864,864,864,,864,864,864,,864,864,864,864,864",",,,,,,,,,,,,,,,,,,,864,,,864,,,864,864,,,864,,,,,,864,,,,,,,,,864,,",",,864,864,864,864,,864,864,864,864,,,,,864,864,,,,863,863,863,864,863","864,864,864,863,863,,,,863,,863,863,863,863,863,863,863,,,,,,863,863","863,863,863,863,863,,,863,,,,,,,863,,,863,863,863,863,863,863,863,863","863,863,863,863,,863,863,863,863,863,,,,,,,,,,,,,,,,,,,,863,,,863,,","863,863,,,863,,,,863,,863,,,863,,,,,,863,,,,,863,863,863,863,,863,863","863,863,,,,,863,863,,,,,,,863,,863,863,863,59,59,59,59,59,,,,59,59,",",,59,,59,59,59,59,59,59,59,,,,,,59,59,59,59,59,59,59,,,59,,,,,,59,59",",59,59,59,59,59,59,59,59,59,,59,59,59,,59,59,59,59,59,,,,,,,,,,,,,,",",,,,,59,,,59,,,59,59,,,59,,59,,,,59,,,,,,,,,59,,,,,59,59,59,59,,59,59","59,59,,,,,59,59,,,,60,60,60,59,60,59,59,59,60,60,,,,60,,60,60,60,60","60,60,60,,,,,,60,60,60,60,60,60,60,,,60,,,,,,,60,,,60,60,60,60,60,60","60,60,60,60,60,60,,60,60,60,60,60,,,,,,,,,,,,,,,,,,,,60,,,60,,,60,60",",,60,,60,,,,60,,,60,,,,,,60,,,,,60,60,60,60,,60,60,60,60,,,,,60,60,",",,61,61,61,60,61,60,60,60,61,61,,,,61,,61,61,61,61,61,61,61,,,,,,61","61,61,61,61,61,61,,,61,,,,,,,61,,,61,61,61,61,61,61,61,61,61,61,61,61",",61,61,61,61,61,,,,,,,,,,,,,,,,,,,,61,,,61,,,61,61,,,61,,,,,,61,,,61",",,,,,61,,,,,61,61,61,61,,61,61,61,61,,,,,61,61,,,,64,64,64,61,64,61","61,61,64,64,,,,64,,64,64,64,64,64,64,64,,,,,,64,64,64,64,64,64,64,,","64,,,,,,,64,,,64,64,64,64,64,64,64,64,,64,64,64,,64,64,64,64,64,,,,",",,,,,,,,,,,,,,,64,,,64,,,64,64,,,64,,,,,,64,,,,,,,,,64,,,,,64,64,64","64,,64,64,64,64,,,,,64,64,,,,65,65,65,64,65,64,64,64,65,65,,,,65,,65","65,65,65,65,65,65,,,,,,65,65,65,65,65,65,65,,,65,,,,,,,65,,,65,65,65","65,65,65,65,65,,65,65,65,,65,65,65,65,65,,,,,,,,,,,,,,,,,,,,65,,,65",",,65,65,,,65,,,,,,65,,,,,,,,,65,,,,,65,65,65,65,,65,65,65,65,,,,,65","65,,,,68,68,68,65,68,65,65,65,68,68,,,,68,,68,68,68,68,68,68,68,,,,",",68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68,68,68,68,68,,68,68","68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,",",,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68,68,68,,,,,68,68,,68,68","68,69,69,69,,69,,,,69,69,,,,69,,69,69,69,69,69,69,69,,,,,,69,69,69,69","69,69,69,,,69,,,,,,,69,,,69,69,69,69,69,69,69,69,,69,69,69,,69,69,,","69,,,,,,,,,,,,,,,,,,,,69,,,69,,,69,69,,,69,,69,,,,,,,,,,,,,,,,,,69,69","69,69,,69,69,69,69,,,,,69,69,,,,70,70,70,69,70,69,69,69,70,70,,,,70",",70,70,70,70,70,70,70,,,,,,70,70,70,70,70,70,70,,,70,,,,,,,70,,,70,70","70,70,70,70,70,70,,70,70,70,,70,70,,,70,,,,,,,,,,,,,,,,,70,,,70,,,70",",,70,70,,,70,,,,,,,,,,,,,,,,,,,,70,70,70,70,,70,70,70,70,,,,,70,70,",",,71,71,71,70,71,70,70,70,71,71,,,,71,,71,71,71,71,71,71,71,,,,,,71","71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71,71",",71,71,,,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,707,,707,707,707","707,707,,,,,,,,,707,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,,,707,71",",71,71,71,113,113,113,113,113,707,707,,113,113,707,,,113,,113,113,113","113,113,113,113,,,,,,113,113,113,113,113,113,113,,,113,,,,,,113,113","113,113,113,113,113,113,113,113,113,113,,113,113,113,,113,113,113,113","113,,,,,,,,,,,,,,,,,,,,113,,,113,,,113,113,,,113,,113,,,,113,,,,,,,",",113,,,,,113,113,113,113,,113,113,113,113,,,,,113,113,,,,,,113,113,","113,113,113,118,118,118,,118,,,,118,118,,,,118,,118,118,118,118,118","118,118,,,,,,118,118,118,118,118,118,118,,,118,,,,,,,118,,,118,118,118","118,118,118,118,118,,118,118,118,,118,118,118,118,118,,,,,,,,,,,,,,",",,,,,118,,,118,,,118,118,,,118,,,,,,118,,,,,,,,,118,,,,,118,118,118","118,,118,118,118,118,,,,,118,118,,,,119,119,119,118,119,118,118,118","119,119,,,,119,,119,119,119,119,119,119,119,,,,,,119,119,119,119,119","119,119,,,119,,,,,,,119,,,119,119,119,119,119,119,119,119,,119,119,119",",119,119,119,119,119,,,,,,,,,,,,,,,,,,,,119,,,119,,,119,119,,,119,,",",,,119,,,,,,,,,119,,,,,119,119,119,119,,119,119,119,119,,,,,119,119",",,,120,120,120,119,120,119,119,119,120,120,,,,120,,120,120,120,120,120","120,120,,,,,,120,120,120,120,120,120,120,,,120,,,,,,,120,,,120,120,120","120,120,120,120,120,,120,120,120,,120,120,120,120,120,,,,,,,,,,,,,,",",,,,,120,,,120,,,120,120,,,120,,,,,,120,,,,,,,,,120,,,,,120,120,120","120,,120,120,120,120,,,,,120,120,,,,121,121,121,120,121,120,120,120","121,121,,,,121,,121,121,121,121,121,121,121,,,,,,121,121,121,121,121","121,121,,,121,,,,,,,121,,,121,121,121,121,121,121,121,121,,121,121,121",",121,121,121,121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,",",,,121,,,,,,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121",",,,,,,121,,121,121,121,122,122,122,122,122,,,,122,122,,,,122,,122,122","122,122,122,122,122,,,,,,122,122,122,122,122,122,122,,,122,,,,,,122","122,,122,122,122,122,122,122,122,122,122,,122,122,122,,122,122,122,122","122,,,,,,,,,,,,,,,,,,,,122,,,122,,,122,122,,,122,,122,,,,122,,,,,,,",",122,,,,,122,122,122,122,,122,122,122,122,,,,,122,122,,,,845,845,845","122,845,122,122,122,845,845,,,,845,,845,845,845,845,845,845,845,,,,",",845,845,845,845,845,845,845,,,845,,,,,,,845,,,845,845,845,845,845,845","845,845,,845,845,845,,845,845,845,845,845,,,,,,,,,,,,,,,,,,,,845,,,845",",,845,845,,,845,,845,,,,845,,,,,,,,,845,,,,,845,845,845,845,,845,845","845,845,,,,,845,845,,,,842,842,842,845,842,845,845,845,842,842,,,,842",",842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842,842,,,842",",,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,,842,842,842","842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,,,,842,,,,,,",",,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,,,,210,210,210","842,210,842,842,842,210,210,,,,210,,210,210,210,210,210,210,210,,,,",",210,210,210,210,210,210,210,,,210,,,,,,,210,,,210,210,210,210,210,210","210,210,,210,210,210,,210,210,210,210,210,,,,,,,,,,,,,,,,,,,,210,,,210",",,210,210,,,210,,210,,,,210,,,,,,,,,210,,,,,210,210,210,210,,210,210","210,210,,,,,210,210,,,,211,211,211,210,211,210,210,210,211,211,,,,211",",211,211,211,211,211,211,211,,,,,,211,211,211,211,211,211,211,,,211",",,,,,,211,,,211,211,211,211,211,211,211,211,,211,211,211,,211,211,211","211,211,,,,,,,,,,,,,,,,,,,,211,,,211,,,211,211,,,211,,211,,,,211,,,",",,,,,211,,,,,211,211,211,211,,211,211,211,211,,,,,211,211,,,,212,212","212,211,212,211,211,211,212,212,,,,212,,212,212,212,212,212,212,212",",,,,,212,212,212,212,212,212,212,,,212,,,,,,,212,,,212,212,212,212,212","212,212,212,,212,212,212,,212,212,212,212,212,,,,,,,,,,,,,,,,,,,,212",",,212,,,212,212,,,212,,,,,,212,,,,,,,,,212,,,,,212,212,212,212,,212","212,212,212,,,,,212,212,,,,213,213,213,212,213,212,212,212,213,213,",",,213,,213,213,213,213,213,213,213,,,,,,213,213,213,213,213,213,213",",,213,,,,,,,213,,,213,213,213,213,213,213,213,213,,213,213,213,,213","213,213,213,213,,,,,,,,,,,,,,,,,,,,213,,,213,,,213,213,,,213,,,,,,213",",,,,,,,,213,,,,,213,213,213,213,,213,213,213,213,,,,,213,213,,,,214","214,214,213,214,213,213,213,214,214,,,,214,,214,214,214,214,214,214","214,,,,,,214,214,214,214,214,214,214,,,214,,,,,,,214,,,214,214,214,214","214,214,214,214,,214,214,214,,214,214,214,214,214,,,,,,,,,,,,,,,,,,",",214,,,214,,,214,214,,,214,,,,,,214,,,,,,,,,214,,,,,214,214,214,214",",214,214,214,214,,,,,214,214,,,,215,215,215,214,215,214,214,214,215","215,,,,215,,215,215,215,215,215,215,215,,,,,,215,215,215,215,215,215","215,,,215,,,,,,,215,,,215,215,215,215,215,215,215,215,215,215,215,215",",215,215,215,215,215,,,,,,,,,,,,,,,,,,,,215,,,215,,,215,215,,,215,,215",",215,,215,,,215,,,,,,215,,,,,215,215,215,215,,215,215,215,215,,,,,215","215,,,,220,220,220,215,220,215,215,215,220,220,,,,220,,220,220,220,220","220,220,220,,,,,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220","220,220,220,220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,",",,,,,,,,,220,,,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220","220,220,,220,220,220,220,,,,,220,220,,,,221,221,221,220,221,220,220","220,221,221,,,,221,,221,221,221,221,221,221,221,,,,,,221,221,221,221","221,221,221,,,221,,,,,,,221,,,221,221,221,221,221,221,221,221,,221,221","221,,221,221,221,221,221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221",",,,,,221,,,,,,,,,221,,,,,221,221,221,221,,221,221,221,221,,,,,221,221",",,,222,222,222,221,222,221,221,221,222,222,,,,222,,222,222,222,222,222","222,222,,,,,,222,222,222,222,222,222,222,,,222,,,,,,,222,,,222,222,222","222,222,222,222,222,,222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,",",,,,,222,,,222,,,222,222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222","222,,222,222,222,222,,,,,222,222,222,,,692,692,692,222,692,222,222,222","692,692,,,,692,,692,692,692,692,692,692,692,,,,,,692,692,692,692,692","692,692,,,692,,,,,,,692,,,692,692,692,692,692,692,692,692,,692,692,692",",692,692,692,692,692,,,,,,,,,,,,,,,,,,,,692,,,692,,,692,692,,,692,,692",",,,692,,,,,,,,,692,,,,,692,692,692,692,,692,692,692,692,,,,,692,692",",,,687,687,687,692,687,692,692,692,687,687,,,,687,,687,687,687,687,687","687,687,,,,,,687,687,687,687,687,687,687,,,687,,,,,,,687,,,687,687,687","687,687,687,687,687,,687,687,687,,687,687,,,687,,,,,,,,,,,,,,,,,,,,687",",,687,,,687,687,,,687,,,,,,,,,,,,,,,,,,,,687,687,687,687,,687,687,687","687,,,,,687,687,,,,676,676,676,687,676,687,687,687,676,676,,,,676,,676","676,676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,",",676,,,676,676,676,676,676,676,676,676,,676,676,676,,676,676,,,676,",",,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,,,,,,,,,,,,,,,,,,,676,676","676,676,,676,676,676,676,,,,,676,676,,,,673,673,673,676,673,676,676","676,673,673,,,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673","673,673,673,,,673,,,,,,,673,,,673,673,673,673,673,673,673,673,,673,673","673,,673,673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673",",,,,,673,,,,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673",",,,321,321,321,673,321,673,673,673,321,321,,,,321,,321,321,321,321,321","321,321,,,,,,321,321,321,321,321,321,321,,,321,,,,,,,321,,,321,321,321","321,321,321,321,321,,321,321,321,,321,321,,,321,,,,,,,,,,,,,,,,,,,,321",",,321,,,321,321,,,321,,,,,,,,,,,,,,,,,,,,321,321,321,321,,321,321,321","321,,,,,321,321,,,,670,670,670,321,670,321,321,321,670,670,,,,670,,670","670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670,,,,,",",670,,,670,670,670,670,670,670,670,670,,670,670,670,,670,670,670,670","670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,,,,,670,,,,,,,,,670",",,,,670,670,670,670,,670,670,670,670,,,,,670,670,,,,646,646,646,670","646,670,670,670,646,646,,,,646,,646,646,646,646,646,646,646,,,,,,646","646,646,646,646,646,646,,,646,,,,,,,646,,,646,646,646,646,646,646,646","646,,646,646,646,,646,646,646,646,646,,,,,,,,,,,,,,,,,,,,646,,,646,",",646,646,,,646,,,,,,646,,,,,,,,,646,,,,,646,646,646,646,,646,646,646","646,,,,,646,646,,,,328,328,328,646,328,646,646,646,328,328,,,,328,,328","328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328,,,,,",",328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328,328","328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,,,,328",",,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,330,330,330,328","330,328,328,328,330,330,,,,330,,330,330,330,330,330,330,330,,,,,,330","330,330,330,330,330,330,,,330,,,,,,,330,,,330,330,330,330,330,330,330","330,,330,330,330,,330,330,330,330,330,,,,,,,,,,,,,,,,,,,,330,,,330,330",",330,330,,,330,,,,,,330,,,,,,,,,330,,,,,330,330,330,330,,330,330,330","330,,,,,330,330,,,,645,645,645,330,645,330,330,330,645,645,,,,645,,645","645,645,645,645,645,645,,,,,,645,645,645,645,645,645,645,,,645,,,,,",",645,,,645,645,645,645,645,645,645,645,,645,645,645,,645,645,645,645","645,,,,,,,,,,,,,,,,,,,,645,,,645,,,645,645,,,645,,,,,,645,,,,,,,,,645",",,,,645,645,645,645,,645,645,645,645,,,,,645,645,,,,641,641,641,645","641,645,645,645,641,641,,,,641,,641,641,641,641,641,641,641,,,,,,641","641,641,641,641,641,641,,,641,,,,,,,641,,,641,641,641,641,641,641,641","641,,641,641,641,,641,641,641,641,641,,,,,,,,,,,,,,,,,,,,641,,,641,",",641,641,,,641,,,,,,641,,,,,,,,,641,,,,,641,641,641,641,,641,641,641","641,,,,,641,641,,,,640,640,640,641,640,641,641,641,640,640,,,,640,,640","640,640,640,640,640,640,,,,,,640,640,640,640,640,640,640,,,640,,,,,",",640,,,640,640,640,640,640,640,640,640,,640,640,640,,640,640,640,640","640,,,,,,,,,,,,,,,,,,,,640,,,640,,,640,640,,,640,,,,,,640,,,,,,,,,640",",,,,640,640,640,640,,640,640,640,640,,,,,640,640,,,,639,639,639,640","639,640,640,640,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639","639,639,639,639,639,639,,,639,,,,,,,639,,,639,639,639,639,639,639,639","639,639,639,639,639,,639,639,639,639,639,,,,,,,,,,,,,,,,,,,,639,,,639",",,639,639,,,639,,,,639,,639,,,639,,,,,,639,,,,,639,639,639,639,,639","639,639,639,,,,,639,639,,,,638,638,638,639,638,639,639,639,638,638,",",,638,,638,638,638,638,638,638,638,,,,,,638,638,638,638,638,638,638",",,638,,,,,,,638,,,638,638,638,638,638,638,638,638,638,638,638,638,,638","638,638,638,638,,,,,,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638",",638,,,638,,,,,,638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638",",,,635,635,635,638,635,638,638,638,635,635,,,,635,,635,635,635,635,635","635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635,635,635","635,635,635,635,635,,635,635,635,,635,635,635,635,635,,,,,,,,,,,,,,",",,,,,635,,,635,,,635,635,,,635,,,,,,635,,,,,,,,,635,,,,,635,635,635","635,,635,635,635,635,,,,,635,635,,,,,,,635,,635,635,635,634,634,634","634,634,,,,634,634,,,,634,,634,634,634,634,634,634,634,,,,,,634,634","634,634,634,634,634,,,634,,,,,,634,634,,634,634,634,634,634,634,634","634,634,,634,634,634,,634,634,634,634,634,,,,,,,,,,,,,,,,,,,,634,,,634",",,634,634,,,634,,634,,,,634,,,,,,,,,634,,,,,634,634,634,634,,634,634","634,634,,,,,634,634,,,,631,631,631,634,631,634,634,634,631,631,,,,631",",631,631,631,631,631,631,631,,,,,,631,631,631,631,631,631,631,,,631",",,,,,,631,,,631,631,631,631,631,631,631,631,631,631,631,631,,631,631","631,631,631,,,,,,,,,,,,,,,,,,,,631,,,631,,,631,631,,,631,,631,,631,","631,,,631,,,,,,631,,,,,631,631,631,631,,631,631,631,631,,,,,631,631",",,,630,630,630,631,630,631,631,631,630,630,,,,630,,630,630,630,630,630","630,630,,,,,,630,630,630,630,630,630,630,,,630,,,,,,,630,,,630,630,630","630,630,630,630,630,,630,630,630,,630,630,630,630,630,,,,,,,,,,,,,,",",,,,,630,,,630,,,630,630,,,630,,,,,,630,,,,,,,,,630,,,,,630,630,630","630,,630,630,630,630,,,,,630,630,,,,629,629,629,630,629,630,630,630","629,629,,,,629,,629,629,629,629,629,629,629,,,,,,629,629,629,629,629","629,629,,,629,,,,,,,629,,,629,629,629,629,629,629,629,629,,629,629,629",",629,629,629,629,629,,,,,,,,,,,,,,,,,,,,629,,,629,,,629,629,,,629,,629",",,,629,,,,,,,,,629,,,,,629,629,629,629,,629,629,629,629,,,,,629,629",",,,347,347,347,629,347,629,629,629,347,347,,,,347,,347,347,347,347,347","347,347,,,,,,347,347,347,347,347,347,347,,,347,,,,,,,347,,,347,347,347","347,347,347,347,347,,347,347,347,,347,347,347,347,347,,,,,,,,,,,,,,",",,,,,347,,,347,,,347,347,,,347,,,,,,347,,,,,,,,,347,,,,,347,347,347","347,,347,347,347,347,,,,,347,347,,,,597,597,597,347,597,347,347,347","597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597","597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,597,597,597","597,,597,597,597,597,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597",",597,,597,,597,,,597,,,,,,597,,,,,597,597,597,597,,597,597,597,597,",",,,597,597,,,,587,587,587,597,587,597,597,597,587,587,,,,587,,587,587","587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587,,,,,,,587",",,587,587,587,587,587,587,587,587,587,587,587,587,,587,587,587,587,587",",,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,,587,,,587,,",",,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587,,,,586,586,586","587,586,587,587,587,586,586,,,,586,,586,586,586,586,586,586,586,,,,",",586,586,586,586,586,586,586,,,586,,,,,,,586,,,586,586,586,586,586,586","586,586,,586,586,586,,586,586,586,586,586,,,,,,,,,,,,,,,,,,,,586,,,586",",,586,586,,,586,,586,,,,586,,,,,,,,,586,,,,,586,586,586,586,,586,586","586,586,,,,,586,586,,,,368,368,368,586,368,586,586,586,368,368,,,,368",",368,368,368,368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368",",,,,,,368,,,368,368,368,368,368,368,368,368,,368,368,368,,368,368,368","368,368,,,,,,,,,,,,,,,,,,,,368,,,368,,,368,368,,,368,,,,,,368,,,,,,",",,368,,,,,368,368,368,368,,368,368,368,368,,,,,368,368,,,,540,540,540","368,540,368,368,368,540,540,,,,540,,540,540,540,540,540,540,540,,,,",",540,540,540,540,540,540,540,,,540,,,,,,,540,,,540,540,540,540,540,540","540,540,540,540,540,540,,540,540,540,540,540,,,,,,,,,,,,,,,,,,,,540",",,540,,,540,540,,,540,,,,,,540,,,540,,,,,,540,,,,,540,540,540,540,,540","540,540,540,,,,,540,540,,,,537,537,537,540,537,540,540,540,537,537,",",,537,,537,537,537,537,537,537,537,,,,,,537,537,537,537,537,537,537",",,537,,,,,,,537,,,537,537,537,537,537,537,537,537,537,537,537,537,,537","537,537,537,537,,,,,,,,,,,,,,,,,,,,537,,,537,,,537,537,,,537,,537,,",",537,,,537,,,,,,537,,,,,537,537,537,537,,537,537,537,537,,,,,537,537",",,,531,531,531,537,531,537,537,537,531,531,,,,531,,531,531,531,531,531","531,531,,,,,,531,531,531,531,531,531,531,,,531,,,,,,,531,,,531,531,531","531,531,531,531,531,,531,531,531,,531,531,531,531,531,,,,,,,,,,,,,,",",,,,,531,,,531,,,531,531,,,531,,,,,,531,,,,,,,,,531,,,,,531,531,531","531,,531,531,531,531,,,,,531,531,,,,526,526,526,531,526,531,531,531","526,526,,,,526,,526,526,526,526,526,526,526,,,,,,526,526,526,526,526","526,526,,,526,,,,,,,526,,,526,526,526,526,526,526,526,526,,526,526,526",",526,526,526,526,526,,,,,,,,,,,,,,,,,,,,526,,,526,,,526,526,,,526,,",",,,526,,,,,,,,,526,,,,,526,526,526,526,,526,526,526,526,,,,,526,526",",,,525,525,525,526,525,526,526,526,525,525,,,,525,,525,525,525,525,525","525,525,,,,,,525,525,525,525,525,525,525,,,525,,,,,,,525,,,525,525,525","525,525,525,525,525,,525,525,525,,525,525,525,525,525,,,,,,,,,,,,,,",",,,,,525,,,525,,,525,525,,,525,,,,,,525,,,,,,,,,525,,,,,525,525,525","525,,525,525,525,525,,,,,525,525,,,,522,522,522,525,522,525,525,525","522,522,,,,522,,522,522,522,522,522,522,522,,,,,,522,522,522,522,522","522,522,,,522,,,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522",",522,522,,,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,,,",",,,,,,,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,516,516,516","522,516,522,522,522,516,516,,,,516,,516,516,516,516,516,516,516,,,,",",516,516,516,516,516,516,516,,,516,,,,,,,516,,,516,516,516,516,516,516","516,516,516,516,516,516,,516,516,516,516,516,,,,,,,,,,,,,,,,,,,,516",",,516,,,516,516,,,516,,516,,516,,516,,,516,,,,,,516,,,,,516,516,516","516,,516,516,516,516,,,,,516,516,,,,384,384,384,516,384,516,516,516","384,384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384","384,384,,,384,,,,,,,384,,,384,384,384,384,384,384,384,384,,384,384,384",",384,384,384,384,384,,,,,,,,,,,,,,,,,,,,384,,,384,,,384,384,,,384,,",",,,384,,,,,,,,,384,,,,,384,384,384,384,,384,384,384,384,,,,,384,384",",,,514,514,514,384,514,384,384,384,514,514,,,,514,,514,514,514,514,514","514,514,,,,,,514,514,514,514,514,514,514,,,514,,,,,,,514,,,514,514,514","514,514,514,514,514,,514,514,514,,514,514,,,514,,,,,,,,,,,,,,,,,,,,514",",,514,,,514,514,,,514,,,1025,,1025,1025,1025,1025,1025,,,,,,,,,1025",",514,514,514,514,,514,514,514,514,,,,,514,514,,,,,,1025,514,,514,514","514,506,506,506,506,506,1025,1025,,506,506,1025,,,506,,506,506,506,506","506,506,506,,,,,,506,506,506,506,506,506,506,,,506,,,,,,506,506,506","506,506,506,506,506,506,506,506,506,,506,506,506,,506,506,506,506,506",",,,,,,,,,,,,,,,,,,,506,,,506,,,506,506,,,506,,506,,,,506,,,,,,,,,506",",,,,506,506,506,506,,506,506,506,506,,,,,506,506,,,,,,506,506,,506,506","506,500,500,500,,500,,,,500,500,,,,500,,500,500,500,500,500,500,500",",,,,,500,500,500,500,500,500,500,,,500,,,,,,,500,,,500,500,500,500,500","500,500,500,,500,500,500,,500,500,500,500,500,,,,,,,,,,,,,,,,,,,,500",",,500,,,500,500,,,500,,,,,,500,,,,,,,,,500,,,,,500,500,500,500,,500","500,500,500,,,,,500,500,,,,498,498,498,500,498,500,500,500,498,498,",",,498,,498,498,498,498,498,498,498,,,,,,498,498,498,498,498,498,498",",,498,,,,,,,498,,,498,498,498,498,498,498,498,498,498,498,498,498,,498","498,498,498,498,,,,,,,,,,,,,,,,,,,,498,,,498,,,498,498,,,498,,,,498",",498,,,498,,,,,,498,,,,,498,498,498,498,,498,498,498,498,,,,,498,498",",,,496,496,496,498,496,498,498,498,496,496,,,,496,,496,496,496,496,496","496,496,,,,,,496,496,496,496,496,496,496,,,496,,,,,,,496,,,496,496,496","496,496,496,496,496,496,496,496,496,,496,496,496,496,496,,,,,,,,,,,",",,,,,,,,496,,,496,,,496,496,,,496,,496,,496,,496,,,496,,,,,,496,,,,","496,496,496,496,,496,496,496,496,,,,,496,496,,,,459,459,459,496,459","496,496,496,459,459,,,,459,,459,459,459,459,459,459,459,,,,,,459,459","459,459,459,459,459,,,459,,,,,,,459,,,459,459,459,459,459,459,459,459",",459,459,459,,459,459,459,459,459,,,,,,,,,,,,,,,,,,,,459,,,459,,,459","459,,,459,,,,,,459,,,,,,,,,459,,,,,459,459,459,459,,459,459,459,459",",,,,459,459,,,,458,458,458,459,458,459,459,459,458,458,,,,458,,458,458","458,458,458,458,458,,,,,,458,458,458,458,458,458,458,,,458,,,,,,,458",",,458,458,458,458,458,458,458,458,,458,458,458,,458,458,458,458,458",",,,,,,,,,,,,,,,,,,,458,,,458,,,458,458,,,458,,,,,,458,,,,,,,,,458,,",",,458,458,458,458,,458,458,458,458,,,,,458,458,,,,457,457,457,458,457","458,458,458,457,457,,,,457,,457,457,457,457,457,457,457,,,,,,457,457","457,457,457,457,457,,,457,,,,,,,457,,,457,457,457,457,457,457,457,457",",457,457,457,,457,457,457,457,457,,,,,,,,,,,,,,,,,,,,457,,,457,,,457","457,,,457,,,,,,457,,,,,,,,,457,,,,,457,457,457,457,,457,457,457,457",",,,,457,457,,,,455,455,455,457,455,457,457,457,455,455,,,,455,,455,455","455,455,455,455,455,,,,,,455,455,455,455,455,455,455,,,455,,,,,,,455",",,455,455,455,455,455,455,455,455,455,455,455,455,,455,455,455,455,455",",,,,,,,,,,,,,,,,,,,455,,,455,,,455,455,,,455,,455,,455,,455,,,455,,",",,,455,,,,,455,455,455,455,,455,455,455,455,,,,,455,455,,,,412,412,412","455,412,455,455,455,412,412,,,,412,,412,412,412,412,412,412,412,,,,",",412,412,412,412,412,412,412,,,412,,,,,,,412,,,412,412,412,412,412,412","412,412,,412,412,412,,412,412,412,412,412,,,,,,,,,,,,,,,,,,,,412,,,412",",,412,412,,,412,,,,,,412,,,,,,,,,412,,,,,412,412,412,412,,412,412,412","412,,,,,412,412,,,,304,304,304,412,304,412,412,412,304,304,,,,304,,304","304,304,304,304,304,304,,,,,,304,304,304,304,304,304,304,,,304,,,,,",",304,,,304,304,304,304,304,304,304,304,,304,304,304,,304,304,,,304,",",,,,,,,,,,,,,,,,,,304,,,304,,,304,304,,,304,,,999,,999,999,999,999,999",",,,,,,,,999,,304,304,304,304,,304,304,304,304,,,,,304,304,,,,304,,999","304,,304,304,304,709,709,709,,709,999,999,,709,709,999,,,709,,709,709","709,709,709,709,709,,,,,,709,709,709,709,709,709,709,,,709,,,,,,,709",",,709,709,709,709,709,709,709,709,,709,709,709,,709,709,709,709,709",",,,,,,,,,,,,,,,,,,,709,,,709,,,709,709,,,709,,,,,,709,,,,,,,,,709,,",",,709,709,709,709,,709,709,709,709,,,,,709,709,,,,,,,709,,709,709,709","8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,,8,8,8,8,8,8,8,8,8","8,,,,,,8,8,8,8,8,8,8,8,8,8,,8,,,,,,,,8,8,,8,8,8,8,8,8,8,,,8,8,,,,8,8","8,8,,,,,,,,,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,8,,,8,8,,,,,,,,,,,,,,8,9","9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,,,,9,9,9,9,9,9,9,9,9,9",",,,,,9,9,9,9,9,9,9,9,9,,,9,,,,,,,,9,9,,9,9,9,9,9,9,9,,,9,9,,,,9,9,9","9,,,,,,,,,,,,,,9,9,,9,9,9,9,9,9,9,9,9,9,9,9,,,9,9,,,,,,,,,,,,,,9,626","626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626","626,626,626,626,626,626,,,,626,626,626,626,626,626,626,626,626,626,",",,,,626,626,626,626,626,626,626,626,626,,,626,,,,,,,,626,626,,626,626","626,626,626,626,626,,,626,626,,,,626,626,626,626,,,,,,,,,,,,,,626,626",",626,626,626,626,626,626,626,626,626,626,626,626,,,626,626,,,,,,,,,",",,,,626,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403","403,403,403,403,403,403,403,403,403,,,,403,403,403,403,403,403,403,403","403,403,,,,,,403,403,403,403,403,403,403,403,403,,,403,,,,,,,,403,403",",403,403,403,403,403,403,403,,,403,403,,,,403,403,403,403,,,,,,,,,,",",,,403,403,,403,403,403,403,403,403,403,403,403,403,403,403,,,403,403",",,,,,,,,,,,,,403,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72","72,72,72,72,72,72,72,,,,72,72,72,72,72,72,72,72,72,72,,,,,,72,72,72","72,72,72,72,72,72,72,72,72,,72,,,,,,72,72,,72,72,72,72,72,72,72,,,72","72,,,,72,72,72,72,,,,,,72,,,,,,,,72,72,,72,72,72,72,72,72,72,72,72,72","72,72,,,72,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748","748,748,748,748,748,748,748,748,748,,,,748,748,748,748,748,748,748,748","748,748,,,,,,748,748,748,748,748,748,748,748,748,,,748,,,,,,,,748,748",",748,748,748,748,748,748,748,,,748,748,,,,748,748,748,748,798,,798,798","798,798,798,,,,,,,748,748,798,748,748,748,748,748,748,748,748,748,748","748,748,,,748,,,,,,,798,,980,980,,,980,,,798,798,798,798,,980,980,798","980,980,980,980,980,980,980,,,980,980,,,,980,980,980,980,,,,,,980,,798",",,,,,980,980,,980,980,980,980,980,980,980,980,980,980,980,980,527,527","980,,527,,,,,,,,527,527,,527,527,527,527,527,527,527,,,527,527,,,,527","527,527,527,,,,,,527,,,,,,,,527,527,,527,527,527,527,527,527,527,527","527,527,527,527,518,518,527,,518,,,,,,,,518,518,,518,518,518,518,518","518,518,,,518,518,,,,518,518,518,518,,,,,,518,,,,,,,,518,518,,518,518","518,518,518,518,518,518,518,518,518,518,981,981,518,,981,,,,,,,,981","981,,981,981,981,981,981,981,981,,,981,981,,,,981,981,981,981,,,,,,981",",,,,,,,981,981,,981,981,981,981,981,981,981,981,981,981,981,981,454","454,981,,454,,,,,,,,454,454,,454,454,454,454,454,454,454,,,454,454,",",,454,454,454,454,,,,,,454,,,,,,,,454,454,,454,454,454,454,454,454,454","454,454,454,454,454,265,265,454,,265,,,,,,,,265,265,,265,265,265,265","265,265,265,,,265,265,,,,265,265,265,265,,,,,,,,,,,,,,265,265,,265,265","265,265,265,265,265,265,265,265,265,265,976,976,265,,976,,,,,,,,976","976,,976,976,976,976,976,976,976,,,976,976,,,,976,976,976,976,,,,,,976",",,,,,,,976,976,,976,976,976,976,976,976,976,976,976,976,976,976,528","528,976,,528,,,,,,,,528,528,,528,528,528,528,528,528,528,,,528,528,",",,528,528,528,528,,,,,,528,,,,,,,,528,528,,528,528,528,528,528,528,528","528,528,528,528,528,595,595,528,,595,,,,,,,,595,595,,595,595,595,595","595,595,595,,,595,595,,,,595,595,595,595,,,,,,595,,,,,,,,595,595,,595","595,595,595,595,595,595,595,595,595,595,595,596,596,595,,596,,,,,,,","596,596,,596,596,596,596,596,596,596,,,596,596,,,,596,596,596,596,,",",,,596,,,,,,,,596,596,,596,596,596,596,596,596,596,596,596,596,596,596","517,517,596,,517,,,,,,,,517,517,,517,517,517,517,517,517,517,,,517,517",",,,517,517,517,517,,,,,,517,,,,,,,,517,517,,517,517,517,517,517,517","517,517,517,517,517,517,633,633,517,,633,,,,,,,,633,633,,633,633,633","633,633,633,633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633",",633,633,633,633,633,633,633,633,633,633,633,633,632,632,633,,632,,",",,,,,632,632,,632,632,632,632,632,632,632,,,632,632,,,,632,632,632,632",",,,,,632,,,,,,,,632,632,,632,632,632,632,632,632,632,632,632,632,632","632,453,453,632,,453,,,,,,,,453,453,,453,453,453,453,453,453,453,,,453","453,,,,453,453,453,453,,,,,,453,,,,,,,,453,453,,453,453,453,453,453","453,453,453,453,453,453,453,588,588,453,,588,,,,,,,,588,588,,588,588","588,588,588,588,588,,,588,588,,,,588,588,588,588,,,,,,588,,,,,,,,588","588,,588,588,588,588,588,588,588,588,588,588,588,588,216,216,588,,216",",,,,,,,216,216,,216,216,216,216,216,216,216,,,216,216,,,,216,216,216","216,,,,,,216,,,,,,,,216,216,,216,216,216,216,216,216,216,216,216,216","216,216,217,217,216,,217,,,,,,,,217,217,,217,217,217,217,217,217,217",",,217,217,,,,217,217,217,217,,,,,,217,,,,,,,,217,217,,217,217,217,217","217,217,217,217,217,217,217,217,589,589,217,,589,,,,,,,,589,589,,589","589,589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,",",589,589,,589,589,589,589,589,589,589,589,589,589,589,589,,926,589,926","926,926,926,926,,997,,997,997,997,997,997,926,,,,,,,,997,,894,,894,894","894,894,894,,,,,,926,,,894,,,,,997,926,926,926,926,,,,926,997,997,997","997,,,,997,894,,746,,746,746,746,746,746,894,894,894,894,,,,894,746",",747,,747,747,747,747,747,,545,,545,545,545,545,545,747,,,,,746,,,545",",,,,,746,746,746,746,,,,746,747,,,,,,,,545,747,747,747,747,,,,747,545","545,545,545,,,703,545,703,703,703,703,703,1001,,1001,1001,1001,1001","1001,1003,703,1003,1003,1003,1003,1003,987,1001,987,987,987,987,987",",1003,,,,,,,987,703,,,,,,,1001,,703,703,703,703,,1003,,703,,1001,1001",",987,,1001,,1003,1003,,,,1003,,987,987,,,343,987,343,343,343,343,343",",705,,705,705,705,705,705,343,,,,,,,,705,,928,,928,928,928,928,928,",",,,,343,343,,928,,,,,705,343,343,343,343,,,,343,705,705,705,705,,,,705","928,,,,,,,,,928,928,928,928,,,,928"];racc_action_check=arr=$$$("::","Array").$new(24615,nil);idx=0;$send(clist,"each",[],($Ruby25$5=function(str){var self=$Ruby25$5.$$s||this,$$6;if(str==null){str=nil}return $send(str.$split(",",-1),"each",[],($$6=function(i){var self=$$6.$$s||this,$writer=nil;if(i==null){i=nil}if($truthy(i["$empty?"]())){}else{$writer=[idx,i.$to_i()];$send(arr,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return idx=$rb_plus(idx,1)},$$6.$$s=self,$$6.$$arity=1,$$6))},$Ruby25$5.$$s=self,$Ruby25$5.$$arity=1,$Ruby25$5));racc_action_pointer=[4203,573,nil,189,nil,11121,1528,931,22475,22603,899,nil,624,608,-16,566,958,-82,nil,-74,11383,2803,538,nil,490,nil,6,1549,1169,11645,11776,11907,nil,4063,12038,12169,nil,390,464,460,461,283,12570,12701,707,12832,235,922,nil,nil,nil,nil,nil,nil,nil,nil,nil,954,nil,13233,13364,13495,-13,nil,13626,13757,nil,nil,13888,14027,14158,14289,22987,nil,nil,nil,nil,nil,nil,628,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,622,nil,nil,734,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,195,nil,14428,nil,nil,nil,nil,14567,14698,14829,14960,15099,nil,4763,nil,727,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,-32,nil,5183,15492,15623,15754,15885,16016,16147,24087,24148,nil,nil,16278,16409,16540,nil,nil,892,319,374,1039,375,950,994,nil,6520,3783,988,6651,6782,6913,7044,7175,7306,7437,7568,7699,7830,7961,8092,8223,8354,8485,8616,8747,8878,9009,9140,9271,9402,nil,nil,nil,nil,9533,nil,nil,23477,nil,nil,977,9795,9926,nil,nil,nil,nil,nil,nil,nil,10057,nil,2383,nil,936,925,nil,10188,966,10450,nil,nil,10581,10712,nil,nil,112,nil,10851,1363,928,875,2663,886,924,880,22197,2243,814,372,706,937,630,nil,889,834,-8,nil,nil,nil,856,264,805,17195,nil,523,836,626,nil,833,17588,nil,17719,4623,1244,766,nil,-68,397,801,779,128,803,nil,nil,24485,505,48,47,19168,3083,1963,49,858,735,3,-18,594,813,28,839,nil,nil,1024,515,298,nil,560,nil,747,19692,nil,nil,nil,486,459,422,382,380,316,275,176,152,nil,140,nil,20740,nil,197,260,295,301,327,-30,-41,308,nil,nil,nil,nil,nil,nil,nil,nil,604,22859,nil,nil,nil,nil,608,nil,nil,746,22066,792,nil,nil,796,nil,482,145,961,nil,nil,1823,nil,nil,nil,nil,nil,1963,408,nil,398,368,350,354,1281,nil,nil,nil,512,132,859,nil,nil,1681,1413,nil,nil,nil,55,nil,788,23965,23416,21935,142,21804,21673,21542,3083,3503,973,980,615,616,618,619,4343,4483,1632,3923,4063,2943,3223,3363,3643,1095,574,4203,3783,2103,1498,nil,1090,nil,nil,nil,nil,581,nil,nil,nil,583,nil,nil,21411,nil,21280,nil,21149,nil,257,nil,nil,nil,21010,1571,nil,596,604,nil,nil,605,20871,609,20609,23782,23294,484,656,nil,20478,630,nil,20347,20216,23233,23599,1364,2243,20085,762,773,654,697,nil,19954,nil,nil,19823,nil,nil,nil,nil,24360,nil,656,658,nil,686,689,690,nil,nil,nil,nil,nil,nil,nil,nil,682,1173,nil,nil,10982,nil,nil,nil,780,nil,nil,nil,782,nil,nil,784,4343,837,nil,5463,61,846,847,843,853,19561,19430,24026,24209,21,nil,nil,590,nil,23660,23721,19299,nil,nil,151,1823,784,nil,-14,nil,nil,nil,1092,nil,nil,nil,756,nil,nil,255,nil,159,nil,nil,748,nil,754,nil,nil,nil,22731,nil,756,19037,18906,18775,23904,23843,18644,18505,304,800,18374,18243,18112,17981,801,nil,nil,17850,17457,805,nil,nil,nil,288,292,264,402,773,772,897,nil,881,-15,nil,nil,816,-56,923,nil,800,nil,848,17326,nil,nil,17064,nil,-109,16933,808,nil,813,90,166,871,165,704,883,840,16802,nil,917,157,974,16671,nil,nil,nil,361,0,870,1055,nil,nil,-36,24412,nil,24493,nil,14336,nil,22336,nil,1279,nil,869,195,875,nil,nil,nil,nil,75,nil,993,nil,nil,nil,nil,nil,1e3,nil,14,882,30,31,33,5,3643,847,816,nil,915,3503,10319,nil,1046,2803,24335,24352,23100,nil,nil,nil,nil,nil,nil,2523,nil,nil,nil,nil,nil,nil,nil,937,9664,944,404,127,844,0,nil,2523,6389,nil,959,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,6258,6127,5996,5865,360,5734,nil,43,nil,nil,982,nil,nil,23133,nil,2943,nil,nil,nil,nil,974,136,nil,nil,1101,nil,2103,977,1025,nil,nil,nil,nil,nil,nil,983,1029,987,nil,nil,nil,989,990,nil,992,995,nil,1001,nil,nil,1005,741,-95,1274,nil,39,nil,15361,177,nil,15230,3923,26,203,nil,212,167,3223,nil,218,121,62,nil,141,178,270,nil,nil,13094,12963,2663,5603,nil,275,279,nil,291,315,317,nil,354,337,339,12439,nil,nil,nil,nil,4903,nil,nil,-11,12308,nil,4483,3363,1259,nil,nil,24296,nil,1344,nil,1612,nil,12216,nil,nil,nil,nil,259,1478,423,nil,35,nil,nil,313,nil,nil,nil,549,nil,nil,nil,471,nil,nil,1058,nil,nil,24271,nil,24510,nil,1087,nil,nil,453,11514,924,516,nil,2383,-7,20,926,521,-10,nil,487,597,-84,nil,nil,nil,478,480,483,500,508,1406,518,1380,5323,nil,nil,nil,nil,5043,527,nil,nil,535,536,537,540,nil,542,nil,995,23538,nil,733,11252,23172,23355,32,nil,nil,nil,1289,24433,nil,nil,nil,nil,1284,693,441,841,nil,24279,nil,22244,nil,24419,nil,24426,nil,nil,876,895,nil,868,23,-1,21,-9,nil,972,230,nil,nil,255,424,436,439,46,nil,20918,nil,nil,nil,nil,553,nil];racc_action_default=[-3,-605,-1,-591,-4,-605,-7,-605,-605,-605,-605,-30,-605,-605,-34,-605,-605,-287,-46,-593,-605,-51,-55,-56,-57,-61,-264,-264,-264,-300,-329,-330,-73,-12,-77,-85,-87,-605,-495,-496,-605,-605,-605,-605,-223,-605,-593,-237,-278,-279,-280,-281,-282,-283,-284,-285,-286,-579,-289,-293,-604,-569,-308,-391,-605,-605,-53,-53,-591,-605,-605,-605,-605,-331,-332,-334,-436,-437,-438,-439,-440,-461,-443,-444,-463,-465,-448,-453,-457,-459,-475,-461,-477,-479,-480,-481,-482,-577,-484,-485,-578,-487,-488,-489,-490,-491,-492,-493,-494,-499,-500,-605,-2,-592,-600,-601,-602,-6,-605,-605,-605,-605,-605,-8,-3,-18,-605,-116,-117,-118,-119,-120,-121,-122,-123,-124,-128,-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,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-23,-125,-12,-605,-605,-605,-605,-605,-254,-605,-605,-589,-590,-605,-605,-593,-594,-50,-605,-495,-496,-605,-287,-605,-605,-229,-605,-12,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-605,-238,-239,-240,-241,-605,-400,-402,-605,-587,-588,-62,-254,-605,-307,-406,-415,-417,-68,-412,-69,-593,-70,-244,-259,-268,-268,-263,-605,-269,-605,-461,-571,-605,-605,-71,-72,-591,-13,-605,-16,-605,-75,-12,-593,-605,-78,-81,-12,-93,-94,-605,-605,-101,-300,-303,-593,-605,-329,-330,-333,-413,-605,-83,-605,-89,-297,-478,-605,-217,-218,-605,-230,-605,-12,-291,-593,-245,-597,-597,-605,-605,-597,-605,-309,-310,-527,-52,-605,-605,-605,-12,-12,-591,-605,-592,-495,-496,-605,-605,-287,-605,-344,-345,-111,-112,-605,-114,-605,-287,-503,-605,-495,-496,-322,-116,-117,-158,-159,-160,-176,-181,-188,-191,-324,-605,-567,-605,-441,-605,-605,-605,-605,-605,-605,-605,-605,1032,-5,-603,-24,-25,-26,-27,-28,-605,-605,-20,-21,-22,-126,-605,-31,-33,-274,-605,-605,-273,-32,-605,-35,-605,-287,-43,-45,-199,-249,-269,-47,-48,-36,-200,-249,-593,-255,-268,-268,-580,-581,-264,-410,-582,-583,-581,-580,-264,-409,-411,-582,-583,-42,-207,-49,-593,-306,-605,-605,-605,-254,-297,-605,-605,-605,-208,-209,-210,-211,-212,-213,-214,-215,-219,-220,-221,-222,-224,-225,-226,-227,-228,-231,-232,-233,-234,-593,-242,-421,-264,-580,-581,-59,-63,-593,-265,-419,-421,-593,-302,-260,-605,-261,-605,-266,-605,-270,-605,-574,-576,-11,-592,-15,-17,-593,-74,-295,-90,-79,-605,-593,-254,-605,-605,-100,-605,-478,-605,-86,-91,-605,-605,-605,-605,-243,-235,-605,-428,-605,-593,-605,-246,-599,-598,-248,-599,-298,-299,-570,-392,-527,-395,-566,-566,-510,-512,-512,-512,-526,-528,-529,-530,-531,-532,-533,-534,-535,-605,-537,-539,-541,-546,-548,-549,-551,-556,-558,-559,-561,-562,-563,-605,-12,-335,-336,-12,-605,-605,-605,-605,-605,-605,-254,-605,-605,-297,-53,-111,-112,-113,-605,-605,-254,-318,-501,-605,-12,-505,-326,-593,-442,-462,-467,-605,-469,-445,-464,-605,-466,-447,-605,-450,-605,-452,-455,-605,-456,-605,-476,-9,-19,-605,-29,-277,-605,-605,-254,-605,-605,-605,-605,-414,-605,-256,-258,-605,-605,-64,-253,-407,-605,-605,-66,-408,-305,-595,-580,-581,-580,-581,-593,-605,-605,-422,-58,-403,-419,-251,-605,-380,-605,-301,-268,-267,-271,-605,-572,-573,-605,-14,-76,-605,-82,-88,-593,-580,-581,-252,-584,-99,-605,-84,-605,-206,-216,-593,-604,-604,-290,-292,-294,-597,-605,-593,-605,-508,-509,-605,-605,-519,-605,-522,-605,-524,-605,-346,-605,-348,-350,-357,-593,-540,-550,-560,-564,-604,-337,-604,-54,-338,-339,-313,-314,-605,-316,-605,-593,-580,-581,-584,-296,-12,-111,-112,-115,-593,-12,-605,-320,-605,-12,-527,-527,-605,-568,-468,-471,-472,-473,-474,-12,-446,-449,-451,-454,-458,-460,-127,-275,-605,-593,-580,-581,-581,-580,-44,-250,-605,-596,-268,-38,-202,-39,-203,-65,-40,-205,-41,-204,-67,-605,-605,-605,-605,-414,-605,-401,-380,-405,-404,-605,-416,-381,-593,-383,-12,-418,-262,-272,-575,-80,-414,-92,-304,-604,-342,-12,-429,-604,-430,-431,-247,-393,-396,-398,-385,-605,-566,-547,-565,-511,-512,-512,-538,-512,-512,-557,-512,-535,-552,-593,-605,-355,-605,-536,-605,-340,-605,-605,-315,-605,-12,-414,-605,-414,-605,-605,-12,-323,-605,-593,-605,-327,-605,-276,-414,-37,-201,-257,-605,-236,-12,-60,-566,-566,-362,-364,-364,-364,-379,-605,-593,-535,-543,-544,-554,-420,-10,-12,-435,-343,-605,-605,-433,-12,-12,-605,-394,-507,-605,-515,-605,-517,-605,-520,-605,-523,-525,-347,-349,-353,-605,-358,-311,-605,-312,-271,-604,-317,-319,-502,-605,-325,-504,-506,-505,-470,-423,-605,-360,-361,-370,-372,-605,-375,-605,-377,-382,-605,-605,-542,-605,-434,-12,-495,-496,-605,-605,-287,-432,-605,-605,-593,-387,-389,-390,-512,-512,-512,-512,-351,-605,-356,-605,-12,-424,-425,-426,-321,-12,-566,-545,-363,-364,-364,-364,-364,-555,-364,-384,-553,-605,-297,-428,-254,-605,-605,-297,-397,-399,-386,-605,-605,-513,-516,-518,-521,-605,-354,-604,-605,-359,-605,-367,-605,-369,-605,-373,-605,-376,-378,-296,-584,-427,-593,-580,-581,-584,-296,-388,-512,-352,-341,-328,-364,-364,-364,-364,-414,-514,-605,-365,-368,-371,-374,-364,-366];clist=["221,216,334,303,381,130,130,264,16,266,272,276,341,16,533,281,281,281","116,317,317,585,436,442,636,6,430,330,225,497,6,691,345,346,135,135","350,225,225,225,428,16,308,308,546,822,448,414,415,344,344,348,349,344","317,317,317,224,125,208,577,580,282,282,282,265,553,16,745,130,488,484","225,225,302,671,225,355,365,365,489,320,123,116,332,324,397,398,399","400,133,133,113,335,268,275,277,668,594,668,840,663,831,344,344,344","344,421,112,821,421,2,715,299,561,301,421,671,536,539,948,16,543,283","283,283,225,225,225,225,16,427,16,117,907,700,701,447,6,809,904,386","800,523,869,615,617,401,389,6,950,393,872,390,336,339,279,292,293,657","391,828,972,611,613,616,616,392,665,755,843,367,371,351,742,826,823","966,750,497,661,1,626,723,827,328,829,403,337,410,360,207,674,660,882","383,338,425,426,342,437,281,957,358,598,382,449,450,331,875,453,534","333,741,446,1014,671,16,225,418,225,225,418,225,852,601,451,602,418","225,225,972,748,920,874,402,876,947,544,668,668,395,16,413,413,950,698","409,420,789,408,420,993,817,728,281,281,420,343,436,442,835,904,697","281,889,655,890,553,965,866,795,869,806,869,302,869,225,225,873,968","483,494,448,744,428,225,933,1016,317,524,831,491,517,520,492,792,960","272,813,886,385,276,282,16,510,317,387,16,116,527,282,308,16,535,581","561,388,,,,507,,682,,847,,679,,308,739,,344,682,849,,677,,,16,588,302",",869,686,869,302,869,502,869,513,688,,600,,225,16,16,828,860,961,,,521","283,116,,266,,604,,869,283,508,1017,951,225,,,,299,,509,506,828,299","964,515,,582,583,758,225,758,682,,,490,731,505,130,,682,632,,493,,969","740,970,893,637,,802,,,,,,,643,,,603,850,,648,,854,135,,,,,,,,437,436","442,671,281,765,,779,846,,855,856,784,,446,,625,649,584,924,925,,,,828","656,225,668,,776,778,643,553,553,781,783,,561,,561,1008,1019,816,,,830","524,832,133,,,,,,524,,662,,,,666,805,317,,437,281,,642,,,317,,,647,437",",675,16,446,690,561,561,678,802,,308,,225,446,421,,,814,308,,,,,916","421,421,694,225,,421,421,,,,704,706,708,922,,,659,996,,,,775,777,,,","780,782,,,,,,877,,,437,281,,871,736,,,,437,,962,281,,16,446,,16,,667",",446,,,225,724,,862,,,938,,1023,,225,,,749,16,794,776,778,783,781,743","437,281,720,730,,722,,130,959,,,,,,446,696,,,815,,637,,418,225,,,16",",793,524,,995,418,418,,,135,418,418,,807,,,770,637,317,,,,561,643,420","421,648,,952,317,953,,954,762,420,420,820,857,,420,420,308,,,,,861,862",",,26,808,308,,877,26,877,,,,,,971,,973,133,710,851,,637,26,,,,,,839",",637,26,26,26,413,26,344,,,,,774,,,,,,,,,,,,16,130,637,,,16,225,884","26,16,,888,,26,26,,,26,,16,1015,,,,877,,824,,,824,1020,,1021,848,1022","820,418,,,,,,682,,,,1009,,,,,,858,,,,,,1030,,,,26,,16,420,909,26,26","26,26,26,29,26,,16,,29,895,897,,899,901,344,902,,,,,,,,29,,,903,,881",",,,29,29,29,,29,225,,885,,16,,,820,710,918,16,837,,317,,,915,,,870,","919,317,,16,29,,,,,29,29,,,29,,935,912,878,,,16,,,,941,,16,16,,,,26","26,26,26,26,26,26,,,,,26,26,26,,,,317,,,,,937,,980,26,985,29,945,946",",,29,29,29,29,29,,29,,975,,,,16,988,989,990,991,,,,,,,,927,929,931,","26,26,437,281,,16,,,,26,16,446,,,,,446,978,,,,710,,710,,225,,26,637",",,26,824,,,870,26,870,994,870,,,,,,,,,39,1024,,878,,39,878,,878,,878",",,,26,29,29,29,29,29,29,29,,,,,29,29,29,,26,26,26,39,307,307,,,,,29",",955,710,,998,1000,1002,1004,,1005,26,,,,,,,870,39,870,,870,,870,,,26",",354,370,370,370,,,29,29,878,,878,,878,,878,29,,870,,,,,,,710,,710,1026","1027,1028,1029,,,29,,,878,29,1031,,,,29,,39,,,,,,,,,39,,39,,,,,710,",",,,,,,29,26,,,,,,,,,,,,,,,29,29,29,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,",",,26,29,,,,,,,,,26,,,,,,,,,,39,,,,,26,,,,,,,,,,,,,,,,,,,,39,,,,,,,,",",,,,,,,,,,,,,,,,,26,29,,26,,,,,,,26,,,,,,,,,,26,,,,26,,,,,,,,38,,,,39","38,,,39,,,,307,39,,,,,,,29,26,26,,,26,,,,307,29,26,26,38,306,306,26","26,,39,,,,,,29,,,,,,,,,,,39,39,,38,,,,,,,,,,353,369,369,369,,,,,,,,",",,,,,,,,,,29,,,29,,,,,,,29,,,,,,,,,,29,,38,,29,,,,,,,38,,38,,,26,,,",",26,26,,,26,,,,,,,,29,29,26,,29,,,,,,29,29,,,,29,29,,,26,,,,,,,,,,,",",,,,,,,,,,340,,,,,,26,,,,,,,,,,,26,,,,,,,38,,,,,39,,,,,,,,307,,,,,,",",307,,,26,38,,,26,,,,,,26,,,,,,,29,,,,,29,29,26,,29,,,,,,,,,17,29,,",",17,26,,,,,,26,26,,,,39,29,,39,,,,,,,,38,,,,38,17,310,310,306,38,,,","39,,,,,29,,,,,,,306,,,,29,,17,,26,,38,,,411,424,,357,366,366,,,39,,",",,,38,38,26,,,,,26,29,,,,29,,,,,,29,,,,26,,,,,,,,,,29,17,,,307,,,,,","17,,17,,,307,,29,,,,,,29,29,,,,,499,,501,,,503,504,,,,,,,,,,,,,,,,,",",,,,,,,,,,,39,,,,,39,,,29,39,13,,,,,13,,,,39,,,,,,,,,,29,,,,17,29,419",",,419,,,,,13,419,,,,,29,,,,,,,,,17,,,,38,,39,,,,,13,306,,,,,39,,,306","359,,,,,,,,,,,,,628,,,,,,,,,,,,,,,,,,39,,,,,,39,,,,17,,,13,17,,,,310","17,39,,13,38,13,,38,,,,,,370,,,310,,39,,,,940,,39,39,17,,38,,,,,,,,",",,,,,,17,17,,,669,,340,,672,,,15,,,,,15,,38,,,,,,,,370,,,,39,,,,,,,",",,,,,,15,669,,13,340,416,,39,416,,,,39,,416,,306,,,,,,,,,,15,306,13","716,,,,,,,,,,,,,,,,,,,,,424,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,,15,38,,,","38,,,,15,13,15,,763,13,38,,,,13,,,669,340,,,,,,,,,,,17,,,,,,,,310,,","13,,,,,310,,,,803,,,804,,,38,,13,13,,,,,,,,38,,,,,812,,,,,,,,,,,,,,",",,834,,,15,,15,,,15,,,,17,38,15,17,,,,38,,,,,,,,,15,,,,,38,,,17,,,,",",,754,,369,,,,,38,,,,939,859,38,38,,,,,,,,419,,,,17,,,,,,419,419,,,","419,419,,,,,,,,,15,,,,15,,,,,15,,369,,,,38,,,,,,310,,,,,,,,,,,310,,","15,38,13,,,,38,,,,,911,,,,,,15,15,,,,,,,,,,,340,,,,,,,,,,,,,,,,,17,",",,,17,,,,17,,,,,,,,,,17,,,,,,,,13,,,13,,,,,,419,,,,,,,,,,,,,,,13,,,",",,,,,,,,,17,,,,,,,,,,,17,,,,,416,,,,13,,,,,,416,416,,,,416,416,,,,,",",,,,,,,,17,,,,,,17,,,,,,,,,,,,,15,17,,,,,,,,,,,,366,,,,,17,,,,943,,17","17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,13,,,,13,,,366,,15,,17,15,","13,,,,,,,,,,,,,,,,,416,17,15,,,,17,,,,,,,,,,,,,,,,,,,,,,13,,,15,,,,15",",,,13,,15,15,,,,15,15,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,232,13,,,,,,",",280,280,280,,,,13,,,,,,,326,327,,329,,,,,,,13,,,,944,,13,13,280,280",",,,,,,,,,,,,,,,,15,,,,,15,,,,15,,,,,,,,,,15,,,,,,,,,,13,,,,,,,15,,,",",,,,,,,,,,13,,,,,13,,,,,,,,,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,15,,,,,,15,,,,,,,,,,,,,,15,,280,423,,,429,280,,,,,429,,,,","15,,,,,,15,15,232,,,460,461,462,463,464,465,466,467,468,469,470,471","472,473,474,475,476,477,478,479,480,481,,,,,482,,,,,,,280,280,,,,,,",",280,,15,,,,,280,,280,,,280,280,,,,,,,,,,15,,,,,15,,,,,,,,,,,,,,,,,",",,,,529,,530,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,280,,429,429,429,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280,,280,,280",",,,,,,,,,,,,,,,280,,,,,,,,,429,689,,,,,,,,,,,280,,,280,,,,,,,,,,,,,",",,,,,,,,,,,280,,,,,,,,,,,,,,,,,,,,,280,280,,,,,,,,,,280,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,280,429,280,,,,771,,,280,280,429,429,,,,429,429,",",,,,,,,,,,,,,,,,,,,,,,280,,,280,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,",",,280,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,",",,,429,,,,,,,,,,,,,429,429,429,429,,865,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,280,,,,,,,,,,,,,,,,,,280,429,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,280"];racc_goto_table=arr=$$$("::","Array").$new(3567,nil);idx=0;$send(clist,"each",[],($Ruby25$7=function(str){var self=$Ruby25$7.$$s||this,$$8;if(str==null){str=nil}return $send(str.$split(",",-1),"each",[],($$8=function(i){var self=$$8.$$s||this,$writer=nil;if(i==null){i=nil}if($truthy(i["$empty?"]())){}else{$writer=[idx,i.$to_i()];$send(arr,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return idx=$rb_plus(idx,1)},$$8.$$s=self,$$8.$$arity=1,$$8))},$Ruby25$7.$$s=self,$Ruby25$7.$$arity=1,$Ruby25$7));clist=["34,32,77,56,63,64,64,141,29,32,81,81,96,29,9,39,39,39,104,73,73,101","43,43,31,7,30,34,29,83,7,11,18,18,68,68,18,29,29,29,70,29,29,29,140","122,70,23,23,25,25,36,36,25,73,73,73,21,16,16,99,99,78,78,78,42,170","29,105,64,45,43,29,29,10,185,29,29,29,29,30,57,8,104,7,71,18,18,18,18","67,67,6,78,44,44,44,84,61,84,100,46,181,25,25,25,25,19,4,132,19,2,118","52,175,53,19,185,79,79,134,29,79,80,80,80,29,29,29,29,29,27,29,5,119","123,123,27,7,12,116,158,130,58,122,162,162,7,161,7,135,158,128,164,80","80,51,51,51,144,165,176,182,163,163,163,163,166,144,168,12,62,62,4,169","174,178,179,167,83,48,1,69,37,129,74,129,26,76,24,20,17,15,82,13,94","95,25,25,98,81,39,119,102,103,106,25,25,107,132,32,108,109,110,64,134","185,29,29,29,29,29,29,29,111,112,54,113,29,29,29,182,114,115,120,2,126","133,136,84,84,5,29,78,78,135,140,21,21,31,10,21,119,137,101,39,39,21","138,43,43,118,116,139,39,142,30,143,170,122,130,46,122,31,122,10,122","29,29,129,128,145,54,70,9,70,29,132,119,73,56,181,147,32,34,148,151","152,81,153,154,157,81,78,29,54,73,159,29,104,32,78,29,29,34,18,175,160",",,,7,,43,,31,,30,,29,61,,25,43,31,,58,,,29,32,10,,122,58,122,10,122","158,122,57,70,,25,,29,29,29,176,31,12,,,71,80,104,,32,,25,,122,80,8","100,129,29,,,,52,,53,6,176,52,105,53,,10,10,163,29,163,43,,,51,30,4","64,,43,32,,51,,129,30,129,123,34,,83,,,,,,,81,,,42,9,,81,,9,68,,,,,",",,81,43,43,185,39,30,,45,99,,140,140,45,,64,,16,54,4,123,123,,,,176","34,29,84,,70,70,81,170,170,70,70,,175,,175,11,129,79,,,127,56,127,67",",,,,,56,,54,,,,54,58,73,,81,39,,44,,,73,,,44,81,,54,29,64,25,175,175","54,83,,29,,29,64,19,,,23,29,,,,,9,19,19,54,29,,19,19,,,,173,173,173","9,,,44,123,,,,27,27,,,,27,27,,,,,,175,,,81,39,,127,36,,,,81,,101,39",",29,64,,29,,80,,64,,,29,104,,70,,,99,,31,,29,,,54,29,96,70,70,70,70","104,81,39,10,78,,10,,64,99,,,,,,64,80,,,77,,34,,29,29,,,29,,141,56,","9,29,29,,,68,29,29,,56,,,7,34,73,,,,175,81,21,19,81,,127,73,127,,127","16,21,21,34,63,,21,21,29,,,,,27,70,,,47,54,29,,175,47,175,,,,,,127,","127,67,117,18,,34,47,,,,,,54,,34,47,47,47,78,47,25,,,,,80,,,,,,,,,,",",29,64,34,,,29,29,77,47,29,,77,,47,47,,,47,,29,127,,,,175,,124,,,124","127,,127,10,127,34,29,,,,,,43,,,,30,,,,,,10,,,,,,127,,,,47,,29,21,18","47,47,47,47,47,50,47,,29,,50,173,173,,173,173,25,173,,,,,,,,50,,,54",",10,,,,50,50,50,,50,29,,10,,29,,,34,117,54,29,117,,73,,,104,,,124,,104","73,,29,50,,,,,50,50,,,50,,29,10,177,,,29,,,,29,,29,29,,,,47,47,47,47","47,47,47,,,,,47,47,47,,,,73,,,,,10,,32,47,34,50,10,10,,,50,50,50,50","50,,50,,29,,,,29,173,173,173,173,,,,,,,,125,125,125,,47,47,81,39,,29",",,,47,29,64,,,,,64,10,,,,117,,117,,29,,47,34,,,47,124,,,124,47,124,10","124,,,,,,,,,60,173,,177,,60,177,,177,,177,,,,47,50,50,50,50,50,50,50",",,,,50,50,50,,47,47,47,60,60,60,,,,,50,,117,117,,125,125,125,125,,125","47,,,,,,,124,60,124,,124,,124,,,47,,60,60,60,60,,,50,50,177,,177,,177",",177,50,,124,,,,,,,117,,117,125,125,125,125,,,50,,,177,50,125,,,,50",",60,,,,,,,,,60,,60,,,,,117,,,,,,,,50,47,,,,,,,,,,,,,,,50,50,50,,,,,",",,,,,,,,,,,,,50,,,,,,,,,,,,,,,47,50,,,,,,,,,47,,,,,,,,,,60,,,,,47,,",",,,,,,,,,,,,,,,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,47,50,,47,,,,,,,47,,,,",",,,,,47,,,,47,,,,,,,,59,,,,60,59,,,60,,,,60,60,,,,,,,50,47,47,,,47,",",,60,50,47,47,59,59,59,47,47,,60,,,,,,50,,,,,,,,,,,60,60,,59,,,,,,,",",,59,59,59,59,,,,,,,,,,,,,,,,,,,50,,,50,,,,,,,50,,,,,,,,,,50,,59,,50",",,,,,,59,,59,,,47,,,,,47,47,,,47,,,,,,,,50,50,47,,50,,,,,,50,50,,,,50","50,,,47,,,,,,,,,,,,,,,,,,,,,,75,,,,,,47,,,,,,,,,,,47,,,,,,,59,,,,,60",",,,,,,,60,,,,,,,,60,,,47,59,,,47,,,,,,47,,,,,,,50,,,,,50,50,47,,50,",",,,,,,,33,50,,,,33,47,,,,,,47,47,,,,60,50,,60,,,,,,,,59,,,,59,33,33","33,59,59,,,,60,,,,,50,,,,,,,59,,,,50,,33,,47,,59,,,75,75,,33,33,33,",",60,,,,,,59,59,47,,,,,47,50,,,,50,,,,,,50,,,,47,,,,,,,,,,50,33,,,60",",,,,,33,,33,,,60,,50,,,,,,50,50,,,,,75,,75,,,75,75,,,,,,,,,,,,,,,,,",",,,,,,,,,,,60,,,,,60,,,50,60,22,,,,,22,,,,60,,,,,,,,,,50,,,,33,50,33",",,33,,,,,22,33,,,,,50,,,,,,,,,33,,,,59,,60,,,,,22,59,,,,,60,,,59,22",",,,,,,,,,,,,75,,,,,,,,,,,,,,,,,,60,,,,,,60,,,,33,,,22,33,,,,33,33,60",",22,59,22,,59,,,,,,60,,,33,,60,,,,60,,60,60,33,,59,,,,,,,,,,,,,,,33","33,,,75,,75,,75,,,28,,,,,28,,59,,,,,,,,60,,,,60,,,,,,,,,,,,,,28,75,","22,75,22,,60,22,,,,60,,22,,59,,,,,,,,,,28,59,22,75,,,,,,,,,,,,,,,,,",",,,75,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,28,59,,,,59,,,,28,22,28,,75,22","59,,,,22,,,75,75,,,,,,,,,,,33,,,,,,,,33,,,22,,,,,33,,,,75,,,75,,,59",",22,22,,,,,,,,59,,,,,75,,,,,,,,,,,,,,,,,75,,,28,,28,,,28,,,,33,59,28","33,,,,59,,,,,,,,,28,,,,,59,,,33,,,,,,,33,,59,,,,,59,,,,59,75,59,59,",",,,,,,33,,,,33,,,,,,33,33,,,,33,33,,,,,,,,,28,,,,28,,,,,28,,59,,,,59",",,,,,33,,,,,,,,,,,33,,,28,59,22,,,,59,,,,,75,,,,,,28,28,,,,,,,,,,,75",",,,,,,,,,,,,,,,,33,,,,,33,,,,33,,,,,,,,,,33,,,,,,,,22,,,22,,,,,,33,",",,,,,,,,,,,,,22,,,,,,,,,,,,,33,,,,,,,,,,,33,,,,,22,,,,22,,,,,,22,22",",,,22,22,,,,,,,,,,,,,,33,,,,,,33,,,,,,,,,,,,,28,33,,,,,,,,,,,,33,,,",",33,,,,33,,33,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22,,,,,22,,,,22,,,33",",28,,33,28,,22,,,,,,,,,,,,,,,,,22,33,28,,,,33,,,,,,,,,,,,,,,,,,,,,,22",",,28,,,,28,,,,22,,28,28,,,,28,28,,,,,,,,,,,,,,,,,,,,,,,,,,,22,,,,,35","22,,,,,,,,35,35,35,,,,22,,,,,,,35,35,,35,,,,,,,22,,,,22,,22,22,35,35",",,,,,,,,,,,,,,,,28,,,,,28,,,,28,,,,,,,,,,28,,,,,,,,,,22,,,,,,,28,,,",",,,,,,,,,,22,,,,,22,,,,,,,,,28,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,28,,,,,,28,,,,,,,,,,,,,,28,,35,35,,,35,35,,,,,35,,,,,28,,",",,,28,28,35,,,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35","35,35,35,35,,,,,35,,,,,,,35,35,,,,,,,,35,,28,,,,,35,,35,,,35,35,,,,",",,,,,28,,,,,28,,,,,,,,,,,,,,,,,,,,,,35,,35,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,35,35,35,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,35,,35,,35,,,,,,,,,,,,,,,,35,,,,,,,,,35,35,,,,,,,,,,,35",",,35,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,,,,35,35,,,,,,,,,,35",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,35,35,,,,35,,,35,35,35,35,,,,35,35",",,,,,,,,,,,,,,,,,,,,,,,35,,,35,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,","35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,35",",,,,,,,,,,,,35,35,35,35,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,35,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,35"];racc_goto_check=arr=$$$("::","Array").$new(3567,nil);idx=0;$send(clist,"each",[],($Ruby25$9=function(str){var self=$Ruby25$9.$$s||this,$$10;if(str==null){str=nil}return $send(str.$split(",",-1),"each",[],($$10=function(i){var self=$$10.$$s||this,$writer=nil;if(i==null){i=nil}if($truthy(i["$empty?"]())){}else{$writer=[idx,i.$to_i()];$send(arr,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return idx=$rb_plus(idx,1)},$$10.$$s=self,$$10.$$arity=1,$$10))},$Ruby25$9.$$s=self,$Ruby25$9.$$arity=1,$Ruby25$9));racc_goto_pointer=[nil,181,111,nil,105,128,89,25,75,-317,41,-501,-552,-615,nil,-314,50,182,-32,-104,121,37,1756,-163,-21,-15,62,-83,1929,8,-189,-406,-15,1570,-19,2587,-15,-398,nil,-14,nil,nil,41,-194,68,-198,-390,693,-307,nil,816,127,80,82,4,nil,-31,46,-178,1302,1010,-265,101,-68,-3,nil,nil,82,26,-225,-174,44,nil,-15,141,1426,128,-58,33,-217,94,-16,-291,-254,-399,nil,nil,nil,nil,nil,nil,nil,nil,nil,123,135,-50,nil,136,-285,-620,-330,134,-163,15,-534,133,150,-121,153,-385,-519,-146,-154,-371,-624,-696,147,-450,-704,-564,nil,-654,-412,71,87,-562,-223,-646,-519,-522,nil,-589,-654,-771,-741,-105,-444,195,-281,-299,-15,-553,-552,-324,18,nil,19,21,nil,nil,-362,-615,-393,-513,nil,nil,222,60,223,232,62,-244,-224,66,72,78,-430,-440,-425,-277,nil,nil,-4,-528,-229,-542,90,-523,-746,nil,-603,-766,nil,nil,-423];racc_goto_default=[nil,nil,nil,3,nil,4,352,297,nil,nil,532,nil,841,nil,294,295,nil,nil,nil,11,12,18,230,nil,nil,14,nil,417,231,325,nil,nil,596,229,452,21,nil,nil,347,22,23,24,nil,685,nil,nil,nil,314,nil,25,311,431,32,nil,nil,34,37,36,nil,226,227,364,nil,132,439,131,134,77,78,nil,422,92,44,47,262,286,nil,810,432,nil,433,444,644,495,284,270,48,49,50,51,52,53,54,55,56,nil,271,62,nil,nil,nil,nil,nil,nil,578,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,712,560,nil,713,967,868,548,nil,549,nil,nil,550,nil,552,nil,797,nil,nil,nil,558,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,443,nil,nil,664,658,nil,nil,nil,nil,76,79,80,nil,nil,nil,nil,nil,606,nil,nil,nil,nil,nil,nil,825,747,547,nil,551,833,563,565,566,879,569,570,880,573,576,289];racc_reduce_table=[0,0,"racc_error",1,146,"_reduce_none",2,147,"_reduce_2",0,148,"_reduce_3",1,148,"_reduce_4",3,148,"_reduce_5",2,148,"_reduce_6",1,150,"_reduce_none",2,150,"_reduce_8",3,153,"_reduce_9",4,154,"_reduce_10",2,155,"_reduce_11",0,159,"_reduce_12",1,159,"_reduce_13",3,159,"_reduce_14",2,159,"_reduce_15",1,160,"_reduce_none",2,160,"_reduce_17",0,171,"_reduce_18",4,152,"_reduce_19",3,152,"_reduce_20",3,152,"_reduce_21",3,152,"_reduce_22",2,152,"_reduce_23",3,152,"_reduce_24",3,152,"_reduce_25",3,152,"_reduce_26",3,152,"_reduce_27",3,152,"_reduce_28",4,152,"_reduce_29",1,152,"_reduce_none",3,152,"_reduce_31",3,152,"_reduce_32",3,152,"_reduce_33",1,152,"_reduce_none",3,164,"_reduce_35",3,164,"_reduce_36",6,164,"_reduce_37",5,164,"_reduce_38",5,164,"_reduce_39",5,164,"_reduce_40",5,164,"_reduce_41",3,164,"_reduce_42",1,172,"_reduce_none",3,172,"_reduce_44",1,172,"_reduce_none",1,170,"_reduce_none",3,170,"_reduce_47",3,170,"_reduce_48",3,170,"_reduce_49",2,170,"_reduce_50",1,170,"_reduce_none",1,163,"_reduce_none",0,183,"_reduce_53",3,181,"_reduce_54",1,166,"_reduce_none",1,166,"_reduce_none",1,185,"_reduce_none",4,185,"_reduce_58",0,193,"_reduce_59",4,190,"_reduce_60",1,192,"_reduce_none",2,184,"_reduce_62",3,184,"_reduce_63",4,184,"_reduce_64",5,184,"_reduce_65",4,184,"_reduce_66",5,184,"_reduce_67",2,184,"_reduce_68",2,184,"_reduce_69",2,184,"_reduce_70",2,184,"_reduce_71",2,184,"_reduce_72",1,165,"_reduce_73",3,165,"_reduce_74",1,198,"_reduce_75",3,198,"_reduce_76",1,197,"_reduce_none",2,197,"_reduce_78",3,197,"_reduce_79",5,197,"_reduce_80",2,197,"_reduce_81",4,197,"_reduce_82",2,197,"_reduce_83",4,197,"_reduce_84",1,197,"_reduce_85",3,197,"_reduce_86",1,201,"_reduce_none",3,201,"_reduce_88",2,200,"_reduce_89",3,200,"_reduce_90",1,203,"_reduce_91",3,203,"_reduce_92",1,202,"_reduce_93",1,202,"_reduce_94",4,202,"_reduce_95",3,202,"_reduce_96",3,202,"_reduce_97",3,202,"_reduce_98",3,202,"_reduce_99",2,202,"_reduce_100",1,202,"_reduce_101",1,167,"_reduce_102",1,167,"_reduce_103",4,167,"_reduce_104",3,167,"_reduce_105",3,167,"_reduce_106",3,167,"_reduce_107",3,167,"_reduce_108",2,167,"_reduce_109",1,167,"_reduce_110",1,206,"_reduce_111",1,206,"_reduce_none",2,207,"_reduce_113",1,207,"_reduce_114",3,207,"_reduce_115",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,211,"_reduce_121",1,211,"_reduce_none",1,161,"_reduce_none",1,161,"_reduce_none",1,162,"_reduce_125",0,214,"_reduce_126",4,162,"_reduce_127",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,209,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",1,210,"_reduce_none",3,180,"_reduce_199",3,180,"_reduce_200",6,180,"_reduce_201",5,180,"_reduce_202",5,180,"_reduce_203",5,180,"_reduce_204",5,180,"_reduce_205",4,180,"_reduce_206",3,180,"_reduce_207",3,180,"_reduce_208",3,180,"_reduce_209",3,180,"_reduce_210",3,180,"_reduce_211",3,180,"_reduce_212",3,180,"_reduce_213",3,180,"_reduce_214",3,180,"_reduce_215",4,180,"_reduce_216",2,180,"_reduce_217",2,180,"_reduce_218",3,180,"_reduce_219",3,180,"_reduce_220",3,180,"_reduce_221",3,180,"_reduce_222",1,180,"_reduce_none",3,180,"_reduce_224",3,180,"_reduce_225",3,180,"_reduce_226",3,180,"_reduce_227",3,180,"_reduce_228",2,180,"_reduce_229",2,180,"_reduce_230",3,180,"_reduce_231",3,180,"_reduce_232",3,180,"_reduce_233",3,180,"_reduce_234",3,180,"_reduce_235",6,180,"_reduce_236",1,180,"_reduce_none",1,219,"_reduce_none",1,219,"_reduce_none",1,219,"_reduce_none",1,219,"_reduce_none",3,217,"_reduce_242",3,217,"_reduce_243",1,220,"_reduce_none",1,221,"_reduce_none",2,221,"_reduce_none",4,221,"_reduce_247",2,221,"_reduce_248",1,215,"_reduce_none",3,215,"_reduce_250",3,226,"_reduce_251",0,227,"_reduce_252",1,227,"_reduce_none",0,175,"_reduce_254",1,175,"_reduce_none",2,175,"_reduce_none",4,175,"_reduce_257",2,175,"_reduce_258",1,196,"_reduce_259",2,196,"_reduce_260",2,196,"_reduce_261",4,196,"_reduce_262",1,196,"_reduce_263",0,230,"_reduce_264",2,189,"_reduce_265",2,229,"_reduce_266",2,228,"_reduce_267",0,228,"_reduce_268",1,223,"_reduce_269",2,223,"_reduce_270",3,223,"_reduce_271",4,223,"_reduce_272",1,169,"_reduce_273",1,169,"_reduce_none",3,168,"_reduce_275",4,168,"_reduce_276",2,168,"_reduce_277",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_288",0,252,"_reduce_289",4,218,"_reduce_290",0,253,"_reduce_291",4,218,"_reduce_292",0,254,"_reduce_293",4,218,"_reduce_294",3,218,"_reduce_295",3,218,"_reduce_296",2,218,"_reduce_297",3,218,"_reduce_298",3,218,"_reduce_299",1,218,"_reduce_300",4,218,"_reduce_301",3,218,"_reduce_302",1,218,"_reduce_303",5,218,"_reduce_304",4,218,"_reduce_305",3,218,"_reduce_306",2,218,"_reduce_307",1,218,"_reduce_none",2,218,"_reduce_309",2,218,"_reduce_310",6,218,"_reduce_311",6,218,"_reduce_312",4,218,"_reduce_313",4,218,"_reduce_314",5,218,"_reduce_315",4,218,"_reduce_316",6,218,"_reduce_317",0,255,"_reduce_318",6,218,"_reduce_319",0,256,"_reduce_320",7,218,"_reduce_321",0,257,"_reduce_322",5,218,"_reduce_323",0,258,"_reduce_324",6,218,"_reduce_325",0,259,"_reduce_326",0,260,"_reduce_327",9,218,"_reduce_328",1,218,"_reduce_329",1,218,"_reduce_330",1,218,"_reduce_331",1,218,"_reduce_332",1,174,"_reduce_none",1,195,"_reduce_334",1,244,"_reduce_none",1,244,"_reduce_none",2,244,"_reduce_337",1,182,"_reduce_none",1,182,"_reduce_none",1,245,"_reduce_none",5,245,"_reduce_341",1,157,"_reduce_none",2,157,"_reduce_343",1,247,"_reduce_none",1,247,"_reduce_none",1,261,"_reduce_346",3,261,"_reduce_347",1,264,"_reduce_348",3,264,"_reduce_349",1,263,"_reduce_none",4,263,"_reduce_351",6,263,"_reduce_352",3,263,"_reduce_353",5,263,"_reduce_354",2,263,"_reduce_355",4,263,"_reduce_356",1,263,"_reduce_357",3,263,"_reduce_358",4,265,"_reduce_359",2,265,"_reduce_360",2,265,"_reduce_361",1,265,"_reduce_362",2,270,"_reduce_363",0,270,"_reduce_364",6,271,"_reduce_365",8,271,"_reduce_366",4,271,"_reduce_367",6,271,"_reduce_368",4,271,"_reduce_369",2,271,"_reduce_none",6,271,"_reduce_371",2,271,"_reduce_372",4,271,"_reduce_373",6,271,"_reduce_374",2,271,"_reduce_375",4,271,"_reduce_376",2,271,"_reduce_377",4,271,"_reduce_378",1,271,"_reduce_none",0,275,"_reduce_380",1,275,"_reduce_381",3,276,"_reduce_382",1,276,"_reduce_383",4,276,"_reduce_384",1,277,"_reduce_385",4,277,"_reduce_386",1,278,"_reduce_387",3,278,"_reduce_388",1,279,"_reduce_389",1,279,"_reduce_none",0,283,"_reduce_391",0,284,"_reduce_392",4,243,"_reduce_393",4,281,"_reduce_394",1,281,"_reduce_395",0,287,"_reduce_396",4,282,"_reduce_397",0,288,"_reduce_398",4,282,"_reduce_399",0,290,"_reduce_400",4,286,"_reduce_401",2,186,"_reduce_402",4,186,"_reduce_403",5,186,"_reduce_404",5,186,"_reduce_405",2,242,"_reduce_406",4,242,"_reduce_407",4,242,"_reduce_408",3,242,"_reduce_409",3,242,"_reduce_410",3,242,"_reduce_411",2,242,"_reduce_412",1,242,"_reduce_413",4,242,"_reduce_414",0,292,"_reduce_415",4,241,"_reduce_416",0,293,"_reduce_417",4,241,"_reduce_418",0,294,"_reduce_419",3,191,"_reduce_420",0,295,"_reduce_421",0,296,"_reduce_422",4,289,"_reduce_423",5,246,"_reduce_424",1,297,"_reduce_425",1,297,"_reduce_none",6,156,"_reduce_427",0,156,"_reduce_428",1,298,"_reduce_429",1,298,"_reduce_none",1,298,"_reduce_none",2,299,"_reduce_432",1,299,"_reduce_none",2,158,"_reduce_434",1,158,"_reduce_none",1,231,"_reduce_none",1,231,"_reduce_none",1,231,"_reduce_none",1,232,"_reduce_439",1,301,"_reduce_440",2,301,"_reduce_441",3,302,"_reduce_442",1,302,"_reduce_443",1,302,"_reduce_444",3,233,"_reduce_445",4,234,"_reduce_446",3,235,"_reduce_447",0,306,"_reduce_448",3,306,"_reduce_449",1,307,"_reduce_450",2,307,"_reduce_451",3,237,"_reduce_452",0,309,"_reduce_453",3,309,"_reduce_454",3,236,"_reduce_455",3,238,"_reduce_456",0,310,"_reduce_457",3,310,"_reduce_458",0,311,"_reduce_459",3,311,"_reduce_460",0,303,"_reduce_461",2,303,"_reduce_462",0,304,"_reduce_463",2,304,"_reduce_464",0,305,"_reduce_465",2,305,"_reduce_466",1,308,"_reduce_467",2,308,"_reduce_468",0,313,"_reduce_469",4,308,"_reduce_470",1,312,"_reduce_471",1,312,"_reduce_472",1,312,"_reduce_473",1,312,"_reduce_none",1,212,"_reduce_475",3,213,"_reduce_476",1,300,"_reduce_477",2,300,"_reduce_478",1,216,"_reduce_479",1,216,"_reduce_480",1,216,"_reduce_481",1,216,"_reduce_482",1,204,"_reduce_483",1,204,"_reduce_484",1,204,"_reduce_485",1,204,"_reduce_486",1,204,"_reduce_487",1,205,"_reduce_488",1,205,"_reduce_489",1,205,"_reduce_490",1,205,"_reduce_491",1,205,"_reduce_492",1,205,"_reduce_493",1,205,"_reduce_494",1,239,"_reduce_495",1,239,"_reduce_496",1,173,"_reduce_497",1,173,"_reduce_498",1,178,"_reduce_499",1,178,"_reduce_500",0,314,"_reduce_501",4,248,"_reduce_502",0,248,"_reduce_503",3,250,"_reduce_504",0,316,"_reduce_505",3,250,"_reduce_506",4,315,"_reduce_507",2,315,"_reduce_508",2,315,"_reduce_509",1,315,"_reduce_510",2,318,"_reduce_511",0,318,"_reduce_512",6,285,"_reduce_513",8,285,"_reduce_514",4,285,"_reduce_515",6,285,"_reduce_516",4,285,"_reduce_517",6,285,"_reduce_518",2,285,"_reduce_519",4,285,"_reduce_520",6,285,"_reduce_521",2,285,"_reduce_522",4,285,"_reduce_523",2,285,"_reduce_524",4,285,"_reduce_525",1,285,"_reduce_526",0,285,"_reduce_527",1,280,"_reduce_528",1,280,"_reduce_529",1,280,"_reduce_530",1,280,"_reduce_531",1,262,"_reduce_none",1,262,"_reduce_533",1,320,"_reduce_534",1,321,"_reduce_535",3,321,"_reduce_536",1,272,"_reduce_537",3,272,"_reduce_538",1,322,"_reduce_539",2,323,"_reduce_540",1,323,"_reduce_541",2,324,"_reduce_542",1,324,"_reduce_543",1,266,"_reduce_544",3,266,"_reduce_545",1,317,"_reduce_546",3,317,"_reduce_547",1,325,"_reduce_none",1,325,"_reduce_none",2,267,"_reduce_550",1,267,"_reduce_551",3,326,"_reduce_552",3,327,"_reduce_553",1,273,"_reduce_554",3,273,"_reduce_555",1,319,"_reduce_556",3,319,"_reduce_557",1,328,"_reduce_none",1,328,"_reduce_none",2,274,"_reduce_560",1,274,"_reduce_561",1,329,"_reduce_none",1,329,"_reduce_none",2,269,"_reduce_564",2,268,"_reduce_565",0,268,"_reduce_566",1,251,"_reduce_none",3,251,"_reduce_568",0,240,"_reduce_569",2,240,"_reduce_none",1,225,"_reduce_571",3,225,"_reduce_572",3,330,"_reduce_573",2,330,"_reduce_574",4,330,"_reduce_575",2,330,"_reduce_576",1,194,"_reduce_none",1,194,"_reduce_none",1,194,"_reduce_none",1,188,"_reduce_none",1,188,"_reduce_none",1,188,"_reduce_none",1,188,"_reduce_none",1,291,"_reduce_none",1,291,"_reduce_none",1,291,"_reduce_none",1,187,"_reduce_none",1,187,"_reduce_none",1,177,"_reduce_589",1,177,"_reduce_590",0,149,"_reduce_none",1,149,"_reduce_none",0,179,"_reduce_none",1,179,"_reduce_none",2,199,"_reduce_595",2,176,"_reduce_596",0,224,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,249,"_reduce_600",1,249,"_reduce_none",1,151,"_reduce_none",2,151,"_reduce_none",0,222,"_reduce_604"];racc_reduce_n=605;racc_shift_n=1032;racc_token_table=$hash(false,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tEQL",143,"tLOWEST",144);racc_nt_base=145;racc_use_result_var=true;Opal.const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,racc_nt_base,racc_reduce_table,racc_token_table,racc_shift_n,racc_reduce_n,racc_use_result_var]);Opal.const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tEQL","tLOWEST","$start","program","top_compstmt","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@1","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","backref","opt_nl","arg","expr_value_do","do","@2","command","block_command","block_call","dot_or_colon","operation2","command_args","cmd_brace_block","brace_body","fcall","@3","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","fname","op","reswords","fsym","symbol","dsym","@4","arg_rhs","simple_numeric","rel_expr","primary","relop","arg_value","aref_args","none","args","trailer","assocs","paren_args","opt_paren_args","opt_block_arg","block_arg","@5","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","for_var","superclass","term","f_arglist","singleton","@6","@7","@8","@9","@10","@11","@12","@13","@14","f_marg","f_norm_arg","f_margs","f_marg_list","block_args_tail","f_block_kwarg","f_kwrest","opt_f_block_arg","f_block_arg","opt_block_args_tail","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@15","@16","f_args","do_block","@17","@18","do_body","@19","operation3","@20","@21","@22","@23","@24","cases","exc_list","exc_var","numeric","string","string1","string_contents","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@25","@26","args_tail","@27","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","kwrest_mark","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]);Opal.const_set($nesting[0],"Racc_debug_parser",false);Opal.def(self,"$_reduce_2",$Ruby25__reduce_2$11=function $$_reduce_2(val,_values,result){var self=this;result=self.builder.$compstmt(val["$[]"](0));return result},$Ruby25__reduce_2$11.$$arity=3);Opal.def(self,"$_reduce_3",$Ruby25__reduce_3$12=function $$_reduce_3(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_3$12.$$arity=3);Opal.def(self,"$_reduce_4",$Ruby25__reduce_4$13=function $$_reduce_4(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_4$13.$$arity=3);Opal.def(self,"$_reduce_5",$Ruby25__reduce_5$14=function $$_reduce_5(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_5$14.$$arity=3);Opal.def(self,"$_reduce_6",$Ruby25__reduce_6$15=function $$_reduce_6(val,_values,result){var self=this;result=[val["$[]"](1)];return result},$Ruby25__reduce_6$15.$$arity=3);Opal.def(self,"$_reduce_8",$Ruby25__reduce_8$16=function $$_reduce_8(val,_values,result){var self=this;result=$send(self.builder,"preexe",[val["$[]"](0)].concat(Opal.to_a(val["$[]"](1))));return result},$Ruby25__reduce_8$16.$$arity=3);Opal.def(self,"$_reduce_9",$Ruby25__reduce_9$17=function $$_reduce_9(val,_values,result){var self=this;result=val;return result},$Ruby25__reduce_9$17.$$arity=3);Opal.def(self,"$_reduce_10",$Ruby25__reduce_10$18=function $$_reduce_10(val,_values,result){var $a,$b,self=this,rescue_bodies=nil,else_t=nil,else_=nil,ensure_t=nil,ensure_=nil;rescue_bodies=val["$[]"](1);$b=val["$[]"](2),$a=Opal.to_ary($b),else_t=$a[0]==null?nil:$a[0],else_=$a[1]==null?nil:$a[1],$b;$b=val["$[]"](3),$a=Opal.to_ary($b),ensure_t=$a[0]==null?nil:$a[0],ensure_=$a[1]==null?nil:$a[1],$b;if($truthy($truthy($a=rescue_bodies["$empty?"]())?else_["$nil?"]()["$!"]():$a)){self.$diagnostic("warning","useless_else",nil,else_t)}result=self.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_);return result},$Ruby25__reduce_10$18.$$arity=3);Opal.def(self,"$_reduce_11",$Ruby25__reduce_11$19=function $$_reduce_11(val,_values,result){var self=this;result=self.builder.$compstmt(val["$[]"](0));return result},$Ruby25__reduce_11$19.$$arity=3);Opal.def(self,"$_reduce_12",$Ruby25__reduce_12$20=function $$_reduce_12(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_12$20.$$arity=3);Opal.def(self,"$_reduce_13",$Ruby25__reduce_13$21=function $$_reduce_13(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_13$21.$$arity=3);Opal.def(self,"$_reduce_14",$Ruby25__reduce_14$22=function $$_reduce_14(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_14$22.$$arity=3);Opal.def(self,"$_reduce_15",$Ruby25__reduce_15$23=function $$_reduce_15(val,_values,result){var self=this;result=[val["$[]"](1)];return result},$Ruby25__reduce_15$23.$$arity=3);Opal.def(self,"$_reduce_17",$Ruby25__reduce_17$24=function $$_reduce_17(val,_values,result){var self=this;self.$diagnostic("error","begin_in_method",nil,val["$[]"](0));return result},$Ruby25__reduce_17$24.$$arity=3);Opal.def(self,"$_reduce_18",$Ruby25__reduce_18$25=function $$_reduce_18(val,_values,result){var self=this,$writer=nil;$writer=["expr_fname"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_18$25.$$arity=3);Opal.def(self,"$_reduce_19",$Ruby25__reduce_19$26=function $$_reduce_19(val,_values,result){var self=this;result=self.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3));return result},$Ruby25__reduce_19$26.$$arity=3);Opal.def(self,"$_reduce_20",$Ruby25__reduce_20$27=function $$_reduce_20(val,_values,result){var self=this;result=self.builder.$alias(val["$[]"](0),self.builder.$gvar(val["$[]"](1)),self.builder.$gvar(val["$[]"](2)));return result},$Ruby25__reduce_20$27.$$arity=3);Opal.def(self,"$_reduce_21",$Ruby25__reduce_21$28=function $$_reduce_21(val,_values,result){var self=this;result=self.builder.$alias(val["$[]"](0),self.builder.$gvar(val["$[]"](1)),self.builder.$back_ref(val["$[]"](2)));return result},$Ruby25__reduce_21$28.$$arity=3);Opal.def(self,"$_reduce_22",$Ruby25__reduce_22$29=function $$_reduce_22(val,_values,result){var self=this;self.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2));return result},$Ruby25__reduce_22$29.$$arity=3);Opal.def(self,"$_reduce_23",$Ruby25__reduce_23$30=function $$_reduce_23(val,_values,result){var self=this;result=self.builder.$undef_method(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_23$30.$$arity=3);Opal.def(self,"$_reduce_24",$Ruby25__reduce_24$31=function $$_reduce_24(val,_values,result){var self=this;result=self.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_24$31.$$arity=3);Opal.def(self,"$_reduce_25",$Ruby25__reduce_25$32=function $$_reduce_25(val,_values,result){var self=this;result=self.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_25$32.$$arity=3);Opal.def(self,"$_reduce_26",$Ruby25__reduce_26$33=function $$_reduce_26(val,_values,result){var self=this;result=self.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_26$33.$$arity=3);Opal.def(self,"$_reduce_27",$Ruby25__reduce_27$34=function $$_reduce_27(val,_values,result){var self=this;result=self.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_27$34.$$arity=3);Opal.def(self,"$_reduce_28",$Ruby25__reduce_28$35=function $$_reduce_28(val,_values,result){var self=this,rescue_body=nil;rescue_body=self.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2));result=self.builder.$begin_body(val["$[]"](0),[rescue_body]);return result},$Ruby25__reduce_28$35.$$arity=3);Opal.def(self,"$_reduce_29",$Ruby25__reduce_29$36=function $$_reduce_29(val,_values,result){var self=this;result=self.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_29$36.$$arity=3);Opal.def(self,"$_reduce_31",$Ruby25__reduce_31$37=function $$_reduce_31(val,_values,result){var self=this;result=self.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_31$37.$$arity=3);Opal.def(self,"$_reduce_32",$Ruby25__reduce_32$38=function $$_reduce_32(val,_values,result){var self=this;result=self.builder.$assign(val["$[]"](0),val["$[]"](1),self.builder.$array(nil,val["$[]"](2),nil));return result},$Ruby25__reduce_32$38.$$arity=3);Opal.def(self,"$_reduce_33",$Ruby25__reduce_33$39=function $$_reduce_33(val,_values,result){var self=this;result=self.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_33$39.$$arity=3);Opal.def(self,"$_reduce_35",$Ruby25__reduce_35$40=function $$_reduce_35(val,_values,result){var self=this;result=self.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_35$40.$$arity=3);Opal.def(self,"$_reduce_36",$Ruby25__reduce_36$41=function $$_reduce_36(val,_values,result){var self=this;result=self.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_36$41.$$arity=3);Opal.def(self,"$_reduce_37",$Ruby25__reduce_37$42=function $$_reduce_37(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5));return result},$Ruby25__reduce_37$42.$$arity=3);Opal.def(self,"$_reduce_38",$Ruby25__reduce_38$43=function $$_reduce_38(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_38$43.$$arity=3);Opal.def(self,"$_reduce_39",$Ruby25__reduce_39$44=function $$_reduce_39(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_39$44.$$arity=3);Opal.def(self,"$_reduce_40",$Ruby25__reduce_40$45=function $$_reduce_40(val,_values,result){var self=this,const$=nil;const$=self.builder.$const_op_assignable(self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)));result=self.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_40$45.$$arity=3);Opal.def(self,"$_reduce_41",$Ruby25__reduce_41$46=function $$_reduce_41(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_41$46.$$arity=3);Opal.def(self,"$_reduce_42",$Ruby25__reduce_42$47=function $$_reduce_42(val,_values,result){var self=this;self.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_42$47.$$arity=3);Opal.def(self,"$_reduce_44",$Ruby25__reduce_44$48=function $$_reduce_44(val,_values,result){var self=this,rescue_body=nil;rescue_body=self.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2));result=self.builder.$begin_body(val["$[]"](0),[rescue_body]);return result},$Ruby25__reduce_44$48.$$arity=3);Opal.def(self,"$_reduce_47",$Ruby25__reduce_47$49=function $$_reduce_47(val,_values,result){var self=this;result=self.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_47$49.$$arity=3);Opal.def(self,"$_reduce_48",$Ruby25__reduce_48$50=function $$_reduce_48(val,_values,result){var self=this;result=self.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_48$50.$$arity=3);Opal.def(self,"$_reduce_49",$Ruby25__reduce_49$51=function $$_reduce_49(val,_values,result){var self=this;result=self.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil);return result},$Ruby25__reduce_49$51.$$arity=3);Opal.def(self,"$_reduce_50",$Ruby25__reduce_50$52=function $$_reduce_50(val,_values,result){var self=this;result=self.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_50$52.$$arity=3);Opal.def(self,"$_reduce_53",$Ruby25__reduce_53$53=function $$_reduce_53(val,_values,result){var self=this;self.lexer.$cond().$push(true);return result},$Ruby25__reduce_53$53.$$arity=3);Opal.def(self,"$_reduce_54",$Ruby25__reduce_54$54=function $$_reduce_54(val,_values,result){var self=this;self.lexer.$cond().$pop();result=[val["$[]"](1),val["$[]"](2)];return result},$Ruby25__reduce_54$54.$$arity=3);Opal.def(self,"$_reduce_58",$Ruby25__reduce_58$55=function $$_reduce_58(val,_values,result){var self=this;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);return result},$Ruby25__reduce_58$55.$$arity=3);Opal.def(self,"$_reduce_59",$Ruby25__reduce_59$56=function $$_reduce_59(val,_values,result){var self=this;self.context.$push("block");return result},$Ruby25__reduce_59$56.$$arity=3);Opal.def(self,"$_reduce_60",$Ruby25__reduce_60$57=function $$_reduce_60(val,_values,result){var self=this;result=[val["$[]"](0)].concat(Opal.to_a(val["$[]"](2))).concat([val["$[]"](3)]);self.context.$pop();return result},$Ruby25__reduce_60$57.$$arity=3);Opal.def(self,"$_reduce_62",$Ruby25__reduce_62$58=function $$_reduce_62(val,_values,result){var self=this;result=self.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_62$58.$$arity=3);Opal.def(self,"$_reduce_63",$Ruby25__reduce_63$59=function $$_reduce_63(val,_values,result){var $a,$b,self=this,method_call=nil,begin_t=nil,args=nil,body=nil,end_t=nil;method_call=self.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil);$b=val["$[]"](2),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_63$59.$$arity=3);Opal.def(self,"$_reduce_64",$Ruby25__reduce_64$60=function $$_reduce_64(val,_values,result){var self=this;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);return result},$Ruby25__reduce_64$60.$$arity=3);Opal.def(self,"$_reduce_65",$Ruby25__reduce_65$61=function $$_reduce_65(val,_values,result){var $a,$b,self=this,method_call=nil,begin_t=nil,args=nil,body=nil,end_t=nil;method_call=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);$b=val["$[]"](4),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_65$61.$$arity=3);Opal.def(self,"$_reduce_66",$Ruby25__reduce_66$62=function $$_reduce_66(val,_values,result){var self=this;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);return result},$Ruby25__reduce_66$62.$$arity=3);Opal.def(self,"$_reduce_67",$Ruby25__reduce_67$63=function $$_reduce_67(val,_values,result){var $a,$b,self=this,method_call=nil,begin_t=nil,args=nil,body=nil,end_t=nil;method_call=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);$b=val["$[]"](4),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_67$63.$$arity=3);Opal.def(self,"$_reduce_68",$Ruby25__reduce_68$64=function $$_reduce_68(val,_values,result){var self=this;result=self.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_68$64.$$arity=3);Opal.def(self,"$_reduce_69",$Ruby25__reduce_69$65=function $$_reduce_69(val,_values,result){var self=this;result=self.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_69$65.$$arity=3);Opal.def(self,"$_reduce_70",$Ruby25__reduce_70$66=function $$_reduce_70(val,_values,result){var self=this;result=self.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_70$66.$$arity=3);Opal.def(self,"$_reduce_71",$Ruby25__reduce_71$67=function $$_reduce_71(val,_values,result){var self=this;result=self.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_71$67.$$arity=3);Opal.def(self,"$_reduce_72",$Ruby25__reduce_72$68=function $$_reduce_72(val,_values,result){var self=this;result=self.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_72$68.$$arity=3);Opal.def(self,"$_reduce_73",$Ruby25__reduce_73$69=function $$_reduce_73(val,_values,result){var self=this;result=self.builder.$multi_lhs(nil,val["$[]"](0),nil);return result},$Ruby25__reduce_73$69.$$arity=3);Opal.def(self,"$_reduce_74",$Ruby25__reduce_74$70=function $$_reduce_74(val,_values,result){var self=this;result=self.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_74$70.$$arity=3);Opal.def(self,"$_reduce_75",$Ruby25__reduce_75$71=function $$_reduce_75(val,_values,result){var self=this;result=self.builder.$multi_lhs(nil,val["$[]"](0),nil);return result},$Ruby25__reduce_75$71.$$arity=3);Opal.def(self,"$_reduce_76",$Ruby25__reduce_76$72=function $$_reduce_76(val,_values,result){var self=this;result=self.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_76$72.$$arity=3);Opal.def(self,"$_reduce_78",$Ruby25__reduce_78$73=function $$_reduce_78(val,_values,result){var self=this;result=val["$[]"](0).$push(val["$[]"](1));return result},$Ruby25__reduce_78$73.$$arity=3);Opal.def(self,"$_reduce_79",$Ruby25__reduce_79$74=function $$_reduce_79(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$splat(val["$[]"](1),val["$[]"](2)));return result},$Ruby25__reduce_79$74.$$arity=3);Opal.def(self,"$_reduce_80",$Ruby25__reduce_80$75=function $$_reduce_80(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4));return result},$Ruby25__reduce_80$75.$$arity=3);Opal.def(self,"$_reduce_81",$Ruby25__reduce_81$76=function $$_reduce_81(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$splat(val["$[]"](1)));return result},$Ruby25__reduce_81$76.$$arity=3);Opal.def(self,"$_reduce_82",$Ruby25__reduce_82$77=function $$_reduce_82(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3));return result},$Ruby25__reduce_82$77.$$arity=3);Opal.def(self,"$_reduce_83",$Ruby25__reduce_83$78=function $$_reduce_83(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_83$78.$$arity=3);Opal.def(self,"$_reduce_84",$Ruby25__reduce_84$79=function $$_reduce_84(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0),val["$[]"](1))].concat(Opal.to_a(val["$[]"](3)));return result},$Ruby25__reduce_84$79.$$arity=3);Opal.def(self,"$_reduce_85",$Ruby25__reduce_85$80=function $$_reduce_85(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0))];return result},$Ruby25__reduce_85$80.$$arity=3);Opal.def(self,"$_reduce_86",$Ruby25__reduce_86$81=function $$_reduce_86(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0))].concat(Opal.to_a(val["$[]"](2)));return result},$Ruby25__reduce_86$81.$$arity=3);Opal.def(self,"$_reduce_88",$Ruby25__reduce_88$82=function $$_reduce_88(val,_values,result){var self=this;result=self.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_88$82.$$arity=3);Opal.def(self,"$_reduce_89",$Ruby25__reduce_89$83=function $$_reduce_89(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_89$83.$$arity=3);Opal.def(self,"$_reduce_90",$Ruby25__reduce_90$84=function $$_reduce_90(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_90$84.$$arity=3);Opal.def(self,"$_reduce_91",$Ruby25__reduce_91$85=function $$_reduce_91(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_91$85.$$arity=3);Opal.def(self,"$_reduce_92",$Ruby25__reduce_92$86=function $$_reduce_92(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_92$86.$$arity=3);Opal.def(self,"$_reduce_93",$Ruby25__reduce_93$87=function $$_reduce_93(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_93$87.$$arity=3);Opal.def(self,"$_reduce_94",$Ruby25__reduce_94$88=function $$_reduce_94(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_94$88.$$arity=3);Opal.def(self,"$_reduce_95",$Ruby25__reduce_95$89=function $$_reduce_95(val,_values,result){var self=this;result=self.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_95$89.$$arity=3);Opal.def(self,"$_reduce_96",$Ruby25__reduce_96$90=function $$_reduce_96(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_96$90.$$arity=3);Opal.def(self,"$_reduce_97",$Ruby25__reduce_97$91=function $$_reduce_97(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_97$91.$$arity=3);Opal.def(self,"$_reduce_98",$Ruby25__reduce_98$92=function $$_reduce_98(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_98$92.$$arity=3);Opal.def(self,"$_reduce_99",$Ruby25__reduce_99$93=function $$_reduce_99(val,_values,result){var self=this;result=self.builder.$assignable(self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)));return result},$Ruby25__reduce_99$93.$$arity=3);Opal.def(self,"$_reduce_100",$Ruby25__reduce_100$94=function $$_reduce_100(val,_values,result){var self=this;result=self.builder.$assignable(self.builder.$const_global(val["$[]"](0),val["$[]"](1)));return result},$Ruby25__reduce_100$94.$$arity=3);Opal.def(self,"$_reduce_101",$Ruby25__reduce_101$95=function $$_reduce_101(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_101$95.$$arity=3);Opal.def(self,"$_reduce_102",$Ruby25__reduce_102$96=function $$_reduce_102(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_102$96.$$arity=3);Opal.def(self,"$_reduce_103",$Ruby25__reduce_103$97=function $$_reduce_103(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_103$97.$$arity=3);Opal.def(self,"$_reduce_104",$Ruby25__reduce_104$98=function $$_reduce_104(val,_values,result){var self=this;result=self.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_104$98.$$arity=3);Opal.def(self,"$_reduce_105",$Ruby25__reduce_105$99=function $$_reduce_105(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_105$99.$$arity=3);Opal.def(self,"$_reduce_106",$Ruby25__reduce_106$100=function $$_reduce_106(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_106$100.$$arity=3);Opal.def(self,"$_reduce_107",$Ruby25__reduce_107$101=function $$_reduce_107(val,_values,result){var self=this;result=self.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_107$101.$$arity=3);Opal.def(self,"$_reduce_108",$Ruby25__reduce_108$102=function $$_reduce_108(val,_values,result){var self=this;result=self.builder.$assignable(self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)));return result},$Ruby25__reduce_108$102.$$arity=3);Opal.def(self,"$_reduce_109",$Ruby25__reduce_109$103=function $$_reduce_109(val,_values,result){var self=this;result=self.builder.$assignable(self.builder.$const_global(val["$[]"](0),val["$[]"](1)));return result},$Ruby25__reduce_109$103.$$arity=3);Opal.def(self,"$_reduce_110",$Ruby25__reduce_110$104=function $$_reduce_110(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_110$104.$$arity=3);Opal.def(self,"$_reduce_111",$Ruby25__reduce_111$105=function $$_reduce_111(val,_values,result){var self=this;self.$diagnostic("error","module_name_const",nil,val["$[]"](0));return result},$Ruby25__reduce_111$105.$$arity=3);Opal.def(self,"$_reduce_113",$Ruby25__reduce_113$106=function $$_reduce_113(val,_values,result){var self=this;result=self.builder.$const_global(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_113$106.$$arity=3);Opal.def(self,"$_reduce_114",$Ruby25__reduce_114$107=function $$_reduce_114(val,_values,result){var self=this;result=self.builder.$const(val["$[]"](0));return result},$Ruby25__reduce_114$107.$$arity=3);Opal.def(self,"$_reduce_115",$Ruby25__reduce_115$108=function $$_reduce_115(val,_values,result){var self=this;result=self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_115$108.$$arity=3);Opal.def(self,"$_reduce_121",$Ruby25__reduce_121$109=function $$_reduce_121(val,_values,result){var self=this;result=self.builder.$symbol(val["$[]"](0));return result},$Ruby25__reduce_121$109.$$arity=3);Opal.def(self,"$_reduce_125",$Ruby25__reduce_125$110=function $$_reduce_125(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_125$110.$$arity=3);Opal.def(self,"$_reduce_126",$Ruby25__reduce_126$111=function $$_reduce_126(val,_values,result){var self=this,$writer=nil;$writer=["expr_fname"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_126$111.$$arity=3);Opal.def(self,"$_reduce_127",$Ruby25__reduce_127$112=function $$_reduce_127(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](3));return result},$Ruby25__reduce_127$112.$$arity=3);Opal.def(self,"$_reduce_199",$Ruby25__reduce_199$113=function $$_reduce_199(val,_values,result){var self=this;result=self.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_199$113.$$arity=3);Opal.def(self,"$_reduce_200",$Ruby25__reduce_200$114=function $$_reduce_200(val,_values,result){var self=this;result=self.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_200$114.$$arity=3);Opal.def(self,"$_reduce_201",$Ruby25__reduce_201$115=function $$_reduce_201(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5));return result},$Ruby25__reduce_201$115.$$arity=3);Opal.def(self,"$_reduce_202",$Ruby25__reduce_202$116=function $$_reduce_202(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_202$116.$$arity=3);Opal.def(self,"$_reduce_203",$Ruby25__reduce_203$117=function $$_reduce_203(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_203$117.$$arity=3);Opal.def(self,"$_reduce_204",$Ruby25__reduce_204$118=function $$_reduce_204(val,_values,result){var self=this;result=self.builder.$op_assign(self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_204$118.$$arity=3);Opal.def(self,"$_reduce_205",$Ruby25__reduce_205$119=function $$_reduce_205(val,_values,result){var self=this,const$=nil;const$=self.builder.$const_op_assignable(self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)));result=self.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4));return result},$Ruby25__reduce_205$119.$$arity=3);Opal.def(self,"$_reduce_206",$Ruby25__reduce_206$120=function $$_reduce_206(val,_values,result){var self=this,const$=nil;const$=self.builder.$const_op_assignable(self.builder.$const_global(val["$[]"](0),val["$[]"](1)));result=self.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_206$120.$$arity=3);Opal.def(self,"$_reduce_207",$Ruby25__reduce_207$121=function $$_reduce_207(val,_values,result){var self=this;result=self.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_207$121.$$arity=3);Opal.def(self,"$_reduce_208",$Ruby25__reduce_208$122=function $$_reduce_208(val,_values,result){var self=this;result=self.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_208$122.$$arity=3);Opal.def(self,"$_reduce_209",$Ruby25__reduce_209$123=function $$_reduce_209(val,_values,result){var self=this;result=self.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_209$123.$$arity=3);Opal.def(self,"$_reduce_210",$Ruby25__reduce_210$124=function $$_reduce_210(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_210$124.$$arity=3);Opal.def(self,"$_reduce_211",$Ruby25__reduce_211$125=function $$_reduce_211(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_211$125.$$arity=3);Opal.def(self,"$_reduce_212",$Ruby25__reduce_212$126=function $$_reduce_212(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_212$126.$$arity=3);Opal.def(self,"$_reduce_213",$Ruby25__reduce_213$127=function $$_reduce_213(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_213$127.$$arity=3);Opal.def(self,"$_reduce_214",$Ruby25__reduce_214$128=function $$_reduce_214(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_214$128.$$arity=3);Opal.def(self,"$_reduce_215",$Ruby25__reduce_215$129=function $$_reduce_215(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_215$129.$$arity=3);Opal.def(self,"$_reduce_216",$Ruby25__reduce_216$130=function $$_reduce_216(val,_values,result){var self=this;result=self.builder.$unary_op(val["$[]"](0),self.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)));return result},$Ruby25__reduce_216$130.$$arity=3);Opal.def(self,"$_reduce_217",$Ruby25__reduce_217$131=function $$_reduce_217(val,_values,result){var self=this;result=self.builder.$unary_op(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_217$131.$$arity=3);Opal.def(self,"$_reduce_218",$Ruby25__reduce_218$132=function $$_reduce_218(val,_values,result){var self=this;result=self.builder.$unary_op(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_218$132.$$arity=3);Opal.def(self,"$_reduce_219",$Ruby25__reduce_219$133=function $$_reduce_219(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_219$133.$$arity=3);Opal.def(self,"$_reduce_220",$Ruby25__reduce_220$134=function $$_reduce_220(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_220$134.$$arity=3);Opal.def(self,"$_reduce_221",$Ruby25__reduce_221$135=function $$_reduce_221(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_221$135.$$arity=3);Opal.def(self,"$_reduce_222",$Ruby25__reduce_222$136=function $$_reduce_222(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_222$136.$$arity=3);Opal.def(self,"$_reduce_224",$Ruby25__reduce_224$137=function $$_reduce_224(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_224$137.$$arity=3);Opal.def(self,"$_reduce_225",$Ruby25__reduce_225$138=function $$_reduce_225(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_225$138.$$arity=3);Opal.def(self,"$_reduce_226",$Ruby25__reduce_226$139=function $$_reduce_226(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_226$139.$$arity=3);Opal.def(self,"$_reduce_227",$Ruby25__reduce_227$140=function $$_reduce_227(val,_values,result){var self=this;result=self.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_227$140.$$arity=3);Opal.def(self,"$_reduce_228",$Ruby25__reduce_228$141=function $$_reduce_228(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_228$141.$$arity=3);Opal.def(self,"$_reduce_229",$Ruby25__reduce_229$142=function $$_reduce_229(val,_values,result){var self=this;result=self.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil);return result},$Ruby25__reduce_229$142.$$arity=3);Opal.def(self,"$_reduce_230",$Ruby25__reduce_230$143=function $$_reduce_230(val,_values,result){var self=this;result=self.builder.$unary_op(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_230$143.$$arity=3);Opal.def(self,"$_reduce_231",$Ruby25__reduce_231$144=function $$_reduce_231(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_231$144.$$arity=3);Opal.def(self,"$_reduce_232",$Ruby25__reduce_232$145=function $$_reduce_232(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_232$145.$$arity=3);Opal.def(self,"$_reduce_233",$Ruby25__reduce_233$146=function $$_reduce_233(val,_values,result){var self=this;result=self.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_233$146.$$arity=3);Opal.def(self,"$_reduce_234",$Ruby25__reduce_234$147=function $$_reduce_234(val,_values,result){var self=this;result=self.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_234$147.$$arity=3);Opal.def(self,"$_reduce_235",$Ruby25__reduce_235$148=function $$_reduce_235(val,_values,result){var self=this;result=self.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](2)],nil);return result},$Ruby25__reduce_235$148.$$arity=3);Opal.def(self,"$_reduce_236",$Ruby25__reduce_236$149=function $$_reduce_236(val,_values,result){var self=this;result=self.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5));return result},$Ruby25__reduce_236$149.$$arity=3);Opal.def(self,"$_reduce_242",$Ruby25__reduce_242$150=function $$_reduce_242(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_242$150.$$arity=3);Opal.def(self,"$_reduce_243",$Ruby25__reduce_243$151=function $$_reduce_243(val,_values,result){var self=this;result=self.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_243$151.$$arity=3);Opal.def(self,"$_reduce_247",$Ruby25__reduce_247$152=function $$_reduce_247(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$associate(nil,val["$[]"](2),nil));return result},$Ruby25__reduce_247$152.$$arity=3);Opal.def(self,"$_reduce_248",$Ruby25__reduce_248$153=function $$_reduce_248(val,_values,result){var self=this;result=[self.builder.$associate(nil,val["$[]"](0),nil)];return result},$Ruby25__reduce_248$153.$$arity=3);Opal.def(self,"$_reduce_250",$Ruby25__reduce_250$154=function $$_reduce_250(val,_values,result){var self=this,rescue_body=nil;rescue_body=self.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2));result=self.builder.$begin_body(val["$[]"](0),[rescue_body]);return result},$Ruby25__reduce_250$154.$$arity=3);Opal.def(self,"$_reduce_251",$Ruby25__reduce_251$155=function $$_reduce_251(val,_values,result){var self=this;result=val;return result},$Ruby25__reduce_251$155.$$arity=3);Opal.def(self,"$_reduce_252",$Ruby25__reduce_252$156=function $$_reduce_252(val,_values,result){var self=this;result=[nil,[],nil];return result},$Ruby25__reduce_252$156.$$arity=3);Opal.def(self,"$_reduce_254",$Ruby25__reduce_254$157=function $$_reduce_254(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_254$157.$$arity=3);Opal.def(self,"$_reduce_257",$Ruby25__reduce_257$158=function $$_reduce_257(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$associate(nil,val["$[]"](2),nil));return result},$Ruby25__reduce_257$158.$$arity=3);Opal.def(self,"$_reduce_258",$Ruby25__reduce_258$159=function $$_reduce_258(val,_values,result){var self=this;result=[self.builder.$associate(nil,val["$[]"](0),nil)];return result},$Ruby25__reduce_258$159.$$arity=3);Opal.def(self,"$_reduce_259",$Ruby25__reduce_259$160=function $$_reduce_259(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_259$160.$$arity=3);Opal.def(self,"$_reduce_260",$Ruby25__reduce_260$161=function $$_reduce_260(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_260$161.$$arity=3);Opal.def(self,"$_reduce_261",$Ruby25__reduce_261$162=function $$_reduce_261(val,_values,result){var self=this;result=[self.builder.$associate(nil,val["$[]"](0),nil)];result.$concat(val["$[]"](1));return result},$Ruby25__reduce_261$162.$$arity=3);Opal.def(self,"$_reduce_262",$Ruby25__reduce_262$163=function $$_reduce_262(val,_values,result){var self=this,assocs=nil;assocs=self.builder.$associate(nil,val["$[]"](2),nil);result=val["$[]"](0)["$<<"](assocs);result.$concat(val["$[]"](3));return result},$Ruby25__reduce_262$163.$$arity=3);Opal.def(self,"$_reduce_263",$Ruby25__reduce_263$164=function $$_reduce_263(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_263$164.$$arity=3);Opal.def(self,"$_reduce_264",$Ruby25__reduce_264$165=function $$_reduce_264(val,_values,result){var $a,self=this,last_token=nil,lookahead=nil,top=nil;last_token=self.last_token["$[]"](0);lookahead=$truthy($a=last_token["$=="]("tLBRACK"))?$a:last_token["$=="]("tLPAREN_ARG");if($truthy(lookahead)){top=self.lexer.$cmdarg().$pop();self.lexer.$cmdarg().$push(true);self.lexer.$cmdarg().$push(top)}else{self.lexer.$cmdarg().$push(true)}return result},$Ruby25__reduce_264$165.$$arity=3);Opal.def(self,"$_reduce_265",$Ruby25__reduce_265$166=function $$_reduce_265(val,_values,result){var self=this,last_token=nil,lookahead=nil,top=nil;last_token=self.last_token["$[]"](0);lookahead=last_token["$=="]("tLBRACE_ARG");if($truthy(lookahead)){top=self.lexer.$cmdarg().$pop();self.lexer.$cmdarg().$pop();self.lexer.$cmdarg().$push(top)}else{self.lexer.$cmdarg().$pop()}result=val["$[]"](1);return result},$Ruby25__reduce_265$166.$$arity=3);Opal.def(self,"$_reduce_266",$Ruby25__reduce_266$167=function $$_reduce_266(val,_values,result){var self=this;result=self.builder.$block_pass(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_266$167.$$arity=3);Opal.def(self,"$_reduce_267",$Ruby25__reduce_267$168=function $$_reduce_267(val,_values,result){var self=this;result=[val["$[]"](1)];return result},$Ruby25__reduce_267$168.$$arity=3);Opal.def(self,"$_reduce_268",$Ruby25__reduce_268$169=function $$_reduce_268(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_268$169.$$arity=3);Opal.def(self,"$_reduce_269",$Ruby25__reduce_269$170=function $$_reduce_269(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_269$170.$$arity=3);Opal.def(self,"$_reduce_270",$Ruby25__reduce_270$171=function $$_reduce_270(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_270$171.$$arity=3);Opal.def(self,"$_reduce_271",$Ruby25__reduce_271$172=function $$_reduce_271(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_271$172.$$arity=3);Opal.def(self,"$_reduce_272",$Ruby25__reduce_272$173=function $$_reduce_272(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$splat(val["$[]"](2),val["$[]"](3)));return result},$Ruby25__reduce_272$173.$$arity=3);Opal.def(self,"$_reduce_273",$Ruby25__reduce_273$174=function $$_reduce_273(val,_values,result){var self=this;result=self.builder.$array(nil,val["$[]"](0),nil);return result},$Ruby25__reduce_273$174.$$arity=3);Opal.def(self,"$_reduce_275",$Ruby25__reduce_275$175=function $$_reduce_275(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_275$175.$$arity=3);Opal.def(self,"$_reduce_276",$Ruby25__reduce_276$176=function $$_reduce_276(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$splat(val["$[]"](2),val["$[]"](3)));return result},$Ruby25__reduce_276$176.$$arity=3);Opal.def(self,"$_reduce_277",$Ruby25__reduce_277$177=function $$_reduce_277(val,_values,result){var self=this;result=[self.builder.$splat(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_277$177.$$arity=3);Opal.def(self,"$_reduce_288",$Ruby25__reduce_288$178=function $$_reduce_288(val,_values,result){var self=this;result=self.builder.$call_method(nil,nil,val["$[]"](0));return result},$Ruby25__reduce_288$178.$$arity=3);Opal.def(self,"$_reduce_289",$Ruby25__reduce_289$179=function $$_reduce_289(val,_values,result){var self=this;self.lexer.$cmdarg().$push(false);return result},$Ruby25__reduce_289$179.$$arity=3);Opal.def(self,"$_reduce_290",$Ruby25__reduce_290$180=function $$_reduce_290(val,_values,result){var self=this;self.lexer.$cmdarg().$pop();result=self.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_290$180.$$arity=3);Opal.def(self,"$_reduce_291",$Ruby25__reduce_291$181=function $$_reduce_291(val,_values,result){var self=this,$writer=nil;$writer=["expr_endarg"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_291$181.$$arity=3);Opal.def(self,"$_reduce_292",$Ruby25__reduce_292$182=function $$_reduce_292(val,_values,result){var self=this;result=self.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3));return result},$Ruby25__reduce_292$182.$$arity=3);Opal.def(self,"$_reduce_293",$Ruby25__reduce_293$183=function $$_reduce_293(val,_values,result){var self=this,$writer=nil;$writer=["expr_endarg"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_293$183.$$arity=3);Opal.def(self,"$_reduce_294",$Ruby25__reduce_294$184=function $$_reduce_294(val,_values,result){var self=this;result=self.builder.$begin(val["$[]"](0),nil,val["$[]"](3));return result},$Ruby25__reduce_294$184.$$arity=3);Opal.def(self,"$_reduce_295",$Ruby25__reduce_295$185=function $$_reduce_295(val,_values,result){var self=this;result=self.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_295$185.$$arity=3);Opal.def(self,"$_reduce_296",$Ruby25__reduce_296$186=function $$_reduce_296(val,_values,result){var self=this;result=self.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_296$186.$$arity=3);Opal.def(self,"$_reduce_297",$Ruby25__reduce_297$187=function $$_reduce_297(val,_values,result){var self=this;result=self.builder.$const_global(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_297$187.$$arity=3);Opal.def(self,"$_reduce_298",$Ruby25__reduce_298$188=function $$_reduce_298(val,_values,result){var self=this;result=self.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_298$188.$$arity=3);Opal.def(self,"$_reduce_299",$Ruby25__reduce_299$189=function $$_reduce_299(val,_values,result){var self=this;result=self.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_299$189.$$arity=3);Opal.def(self,"$_reduce_300",$Ruby25__reduce_300$190=function $$_reduce_300(val,_values,result){var self=this;result=self.builder.$keyword_cmd("return",val["$[]"](0));return result},$Ruby25__reduce_300$190.$$arity=3);Opal.def(self,"$_reduce_301",$Ruby25__reduce_301$191=function $$_reduce_301(val,_values,result){var self=this;result=self.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_301$191.$$arity=3);Opal.def(self,"$_reduce_302",$Ruby25__reduce_302$192=function $$_reduce_302(val,_values,result){var self=this;result=self.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2));return result},$Ruby25__reduce_302$192.$$arity=3);Opal.def(self,"$_reduce_303",$Ruby25__reduce_303$193=function $$_reduce_303(val,_values,result){var self=this;result=self.builder.$keyword_cmd("yield",val["$[]"](0));return result},$Ruby25__reduce_303$193.$$arity=3);Opal.def(self,"$_reduce_304",$Ruby25__reduce_304$194=function $$_reduce_304(val,_values,result){var self=this;result=self.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](3)],val["$[]"](4));return result},$Ruby25__reduce_304$194.$$arity=3);Opal.def(self,"$_reduce_305",$Ruby25__reduce_305$195=function $$_reduce_305(val,_values,result){var self=this;result=self.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_305$195.$$arity=3);Opal.def(self,"$_reduce_306",$Ruby25__reduce_306$196=function $$_reduce_306(val,_values,result){var self=this;result=self.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2));return result},$Ruby25__reduce_306$196.$$arity=3);Opal.def(self,"$_reduce_307",$Ruby25__reduce_307$197=function $$_reduce_307(val,_values,result){var $a,$b,self=this,method_call=nil,begin_t=nil,args=nil,body=nil,end_t=nil;method_call=self.builder.$call_method(nil,nil,val["$[]"](0));$b=val["$[]"](1),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_307$197.$$arity=3);Opal.def(self,"$_reduce_309",$Ruby25__reduce_309$198=function $$_reduce_309(val,_values,result){var $a,$b,self=this,begin_t=nil,args=nil,body=nil,end_t=nil;$b=val["$[]"](1),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(val["$[]"](0),begin_t,args,body,end_t);return result},$Ruby25__reduce_309$198.$$arity=3);Opal.def(self,"$_reduce_310",$Ruby25__reduce_310$199=function $$_reduce_310(val,_values,result){var $a,$b,$c,self=this,lambda_call=nil,args=nil,begin_t=nil,body=nil,end_t=nil;lambda_call=self.builder.$call_lambda(val["$[]"](0));$b=val["$[]"](1),$a=Opal.to_ary($b),args=$a[0]==null?nil:$a[0],$c=Opal.to_ary($a[1]==null?nil:$a[1]),begin_t=$c[0]==null?nil:$c[0],body=$c[1]==null?nil:$c[1],end_t=$c[2]==null?nil:$c[2],$b;result=self.builder.$block(lambda_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_310$199.$$arity=3);Opal.def(self,"$_reduce_311",$Ruby25__reduce_311$200=function $$_reduce_311(val,_values,result){var $a,$b,self=this,else_t=nil,else_=nil;$b=val["$[]"](4),$a=Opal.to_ary($b),else_t=$a[0]==null?nil:$a[0],else_=$a[1]==null?nil:$a[1],$b;result=self.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5));return result},$Ruby25__reduce_311$200.$$arity=3);Opal.def(self,"$_reduce_312",$Ruby25__reduce_312$201=function $$_reduce_312(val,_values,result){var $a,$b,self=this,else_t=nil,else_=nil;$b=val["$[]"](4),$a=Opal.to_ary($b),else_t=$a[0]==null?nil:$a[0],else_=$a[1]==null?nil:$a[1],$b;result=self.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5));return result},$Ruby25__reduce_312$201.$$arity=3);Opal.def(self,"$_reduce_313",$Ruby25__reduce_313$202=function $$_reduce_313(val,_values,result){var self=this;result=$send(self.builder,"loop",["while",val["$[]"](0)].concat(Opal.to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]));return result},$Ruby25__reduce_313$202.$$arity=3);Opal.def(self,"$_reduce_314",$Ruby25__reduce_314$203=function $$_reduce_314(val,_values,result){var self=this;result=$send(self.builder,"loop",["until",val["$[]"](0)].concat(Opal.to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]));return result},$Ruby25__reduce_314$203.$$arity=3);Opal.def(self,"$_reduce_315",$Ruby25__reduce_315$204=function $$_reduce_315(val,_values,result){var $a,$b,$c,self=this,when_bodies=nil,else_t=nil,else_body=nil;$a=[].concat(Opal.to_a(val["$[]"](3))),$b=$a.length-1,$b=$b<0?0:$b,when_bodies=$slice.call($a,0,$b),$c=Opal.to_ary($a[$b]==null?nil:$a[$b]),else_t=$c[0]==null?nil:$c[0],else_body=$c[1]==null?nil:$c[1],$a;result=self.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4));return result},$Ruby25__reduce_315$204.$$arity=3);Opal.def(self,"$_reduce_316",$Ruby25__reduce_316$205=function $$_reduce_316(val,_values,result){var $a,$b,$c,self=this,when_bodies=nil,else_t=nil,else_body=nil;$a=[].concat(Opal.to_a(val["$[]"](2))),$b=$a.length-1,$b=$b<0?0:$b,when_bodies=$slice.call($a,0,$b),$c=Opal.to_ary($a[$b]==null?nil:$a[$b]),else_t=$c[0]==null?nil:$c[0],else_body=$c[1]==null?nil:$c[1],$a;result=self.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3));return result},$Ruby25__reduce_316$205.$$arity=3);Opal.def(self,"$_reduce_317",$Ruby25__reduce_317$206=function $$_reduce_317(val,_values,result){var self=this;result=$send(self.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat(Opal.to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]));return result},$Ruby25__reduce_317$206.$$arity=3);Opal.def(self,"$_reduce_318",$Ruby25__reduce_318$207=function $$_reduce_318(val,_values,result){var self=this;self.static_env.$extend_static();self.lexer.$cmdarg().$push(false);self.lexer.$cond().$push(false);self.context.$push("class");return result},$Ruby25__reduce_318$207.$$arity=3);Opal.def(self,"$_reduce_319",$Ruby25__reduce_319$208=function $$_reduce_319(val,_values,result){var $a,$b,self=this,lt_t=nil,superclass=nil;if($truthy(self.context["$class_definition_allowed?"]())){}else{self.$diagnostic("error","class_in_def",nil,val["$[]"](0))}$b=val["$[]"](2),$a=Opal.to_ary($b),lt_t=$a[0]==null?nil:$a[0],superclass=$a[1]==null?nil:$a[1],$b;result=self.builder.$def_class(val["$[]"](0),val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5));self.lexer.$cmdarg().$pop();self.lexer.$cond().$pop();self.static_env.$unextend();self.context.$pop();return result},$Ruby25__reduce_319$208.$$arity=3);Opal.def(self,"$_reduce_320",$Ruby25__reduce_320$209=function $$_reduce_320(val,_values,result){var self=this;self.static_env.$extend_static();self.lexer.$cmdarg().$push(false);self.lexer.$cond().$push(false);self.context.$push("sclass");return result},$Ruby25__reduce_320$209.$$arity=3);Opal.def(self,"$_reduce_321",$Ruby25__reduce_321$210=function $$_reduce_321(val,_values,result){var self=this;result=self.builder.$def_sclass(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6));self.lexer.$cmdarg().$pop();self.lexer.$cond().$pop();self.static_env.$unextend();self.context.$pop();return result},$Ruby25__reduce_321$210.$$arity=3);Opal.def(self,"$_reduce_322",$Ruby25__reduce_322$211=function $$_reduce_322(val,_values,result){var self=this;self.static_env.$extend_static();self.lexer.$cmdarg().$push(false);return result},$Ruby25__reduce_322$211.$$arity=3);Opal.def(self,"$_reduce_323",$Ruby25__reduce_323$212=function $$_reduce_323(val,_values,result){var self=this;if($truthy(self.context["$module_definition_allowed?"]())){}else{self.$diagnostic("error","module_in_def",nil,val["$[]"](0))}result=self.builder.$def_module(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4));self.lexer.$cmdarg().$pop();self.static_env.$unextend();return result},$Ruby25__reduce_323$212.$$arity=3);Opal.def(self,"$_reduce_324",$Ruby25__reduce_324$213=function $$_reduce_324(val,_values,result){var self=this;self.static_env.$extend_static();self.lexer.$cmdarg().$push(false);self.lexer.$cond().$push(false);self.context.$push("def");return result},$Ruby25__reduce_324$213.$$arity=3);Opal.def(self,"$_reduce_325",$Ruby25__reduce_325$214=function $$_reduce_325(val,_values,result){var self=this;result=self.builder.$def_method(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4),val["$[]"](5));self.lexer.$cmdarg().$pop();self.lexer.$cond().$pop();self.static_env.$unextend();self.context.$pop();return result},$Ruby25__reduce_325$214.$$arity=3);Opal.def(self,"$_reduce_326",$Ruby25__reduce_326$215=function $$_reduce_326(val,_values,result){var self=this,$writer=nil;$writer=["expr_fname"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_326$215.$$arity=3);Opal.def(self,"$_reduce_327",$Ruby25__reduce_327$216=function $$_reduce_327(val,_values,result){var self=this;self.static_env.$extend_static();self.lexer.$cmdarg().$push(false);self.lexer.$cond().$push(false);self.context.$push("defs");return result},$Ruby25__reduce_327$216.$$arity=3);Opal.def(self,"$_reduce_328",$Ruby25__reduce_328$217=function $$_reduce_328(val,_values,result){var self=this;result=self.builder.$def_singleton(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](6),val["$[]"](7),val["$[]"](8));self.lexer.$cmdarg().$pop();self.lexer.$cond().$pop();self.static_env.$unextend();self.context.$pop();return result},$Ruby25__reduce_328$217.$$arity=3);Opal.def(self,"$_reduce_329",$Ruby25__reduce_329$218=function $$_reduce_329(val,_values,result){var self=this;result=self.builder.$keyword_cmd("break",val["$[]"](0));return result},$Ruby25__reduce_329$218.$$arity=3);Opal.def(self,"$_reduce_330",$Ruby25__reduce_330$219=function $$_reduce_330(val,_values,result){var self=this;result=self.builder.$keyword_cmd("next",val["$[]"](0));return result},$Ruby25__reduce_330$219.$$arity=3);Opal.def(self,"$_reduce_331",$Ruby25__reduce_331$220=function $$_reduce_331(val,_values,result){var self=this;result=self.builder.$keyword_cmd("redo",val["$[]"](0));return result},$Ruby25__reduce_331$220.$$arity=3);Opal.def(self,"$_reduce_332",$Ruby25__reduce_332$221=function $$_reduce_332(val,_values,result){var self=this;result=self.builder.$keyword_cmd("retry",val["$[]"](0));return result},$Ruby25__reduce_332$221.$$arity=3);Opal.def(self,"$_reduce_334",$Ruby25__reduce_334$222=function $$_reduce_334(val,_values,result){var self=this;if($truthy(self.context["$in_class?"]())){self.$diagnostic("error","invalid_return",nil,val["$[]"](0))}return result},$Ruby25__reduce_334$222.$$arity=3);Opal.def(self,"$_reduce_337",$Ruby25__reduce_337$223=function $$_reduce_337(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_337$223.$$arity=3);Opal.def(self,"$_reduce_341",$Ruby25__reduce_341$224=function $$_reduce_341(val,_values,result){var $a,$b,self=this,else_t=nil,else_=nil;$b=val["$[]"](4),$a=Opal.to_ary($b),else_t=$a[0]==null?nil:$a[0],else_=$a[1]==null?nil:$a[1],$b;result=[val["$[]"](0),self.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)];return result},$Ruby25__reduce_341$224.$$arity=3);Opal.def(self,"$_reduce_343",$Ruby25__reduce_343$225=function $$_reduce_343(val,_values,result){var self=this;result=val;return result},$Ruby25__reduce_343$225.$$arity=3);Opal.def(self,"$_reduce_346",$Ruby25__reduce_346$226=function $$_reduce_346(val,_values,result){var self=this;result=self.builder.$arg(val["$[]"](0));return result},$Ruby25__reduce_346$226.$$arity=3);Opal.def(self,"$_reduce_347",$Ruby25__reduce_347$227=function $$_reduce_347(val,_values,result){var self=this;result=self.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_347$227.$$arity=3);Opal.def(self,"$_reduce_348",$Ruby25__reduce_348$228=function $$_reduce_348(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_348$228.$$arity=3);Opal.def(self,"$_reduce_349",$Ruby25__reduce_349$229=function $$_reduce_349(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_349$229.$$arity=3);Opal.def(self,"$_reduce_351",$Ruby25__reduce_351$230=function $$_reduce_351(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$restarg(val["$[]"](2),val["$[]"](3)));return result},$Ruby25__reduce_351$230.$$arity=3);Opal.def(self,"$_reduce_352",$Ruby25__reduce_352$231=function $$_reduce_352(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$restarg(val["$[]"](2),val["$[]"](3))).$concat(val["$[]"](5));return result},$Ruby25__reduce_352$231.$$arity=3);Opal.def(self,"$_reduce_353",$Ruby25__reduce_353$232=function $$_reduce_353(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$restarg(val["$[]"](2)));return result},$Ruby25__reduce_353$232.$$arity=3);Opal.def(self,"$_reduce_354",$Ruby25__reduce_354$233=function $$_reduce_354(val,_values,result){var self=this;result=val["$[]"](0).$push(self.builder.$restarg(val["$[]"](2))).$concat(val["$[]"](4));return result},$Ruby25__reduce_354$233.$$arity=3);Opal.def(self,"$_reduce_355",$Ruby25__reduce_355$234=function $$_reduce_355(val,_values,result){var self=this;result=[self.builder.$restarg(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_355$234.$$arity=3);Opal.def(self,"$_reduce_356",$Ruby25__reduce_356$235=function $$_reduce_356(val,_values,result){var self=this;result=[self.builder.$restarg(val["$[]"](0),val["$[]"](1))].concat(Opal.to_a(val["$[]"](3)));return result},$Ruby25__reduce_356$235.$$arity=3);Opal.def(self,"$_reduce_357",$Ruby25__reduce_357$236=function $$_reduce_357(val,_values,result){var self=this;result=[self.builder.$restarg(val["$[]"](0))];return result},$Ruby25__reduce_357$236.$$arity=3);Opal.def(self,"$_reduce_358",$Ruby25__reduce_358$237=function $$_reduce_358(val,_values,result){var self=this;result=[self.builder.$restarg(val["$[]"](0))].concat(Opal.to_a(val["$[]"](2)));return result},$Ruby25__reduce_358$237.$$arity=3);Opal.def(self,"$_reduce_359",$Ruby25__reduce_359$238=function $$_reduce_359(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_359$238.$$arity=3);Opal.def(self,"$_reduce_360",$Ruby25__reduce_360$239=function $$_reduce_360(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_360$239.$$arity=3);Opal.def(self,"$_reduce_361",$Ruby25__reduce_361$240=function $$_reduce_361(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_361$240.$$arity=3);Opal.def(self,"$_reduce_362",$Ruby25__reduce_362$241=function $$_reduce_362(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_362$241.$$arity=3);Opal.def(self,"$_reduce_363",$Ruby25__reduce_363$242=function $$_reduce_363(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_363$242.$$arity=3);Opal.def(self,"$_reduce_364",$Ruby25__reduce_364$243=function $$_reduce_364(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_364$243.$$arity=3);Opal.def(self,"$_reduce_365",$Ruby25__reduce_365$244=function $$_reduce_365(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_365$244.$$arity=3);Opal.def(self,"$_reduce_366",$Ruby25__reduce_366$245=function $$_reduce_366(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7));return result},$Ruby25__reduce_366$245.$$arity=3);Opal.def(self,"$_reduce_367",$Ruby25__reduce_367$246=function $$_reduce_367(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_367$246.$$arity=3);Opal.def(self,"$_reduce_368",$Ruby25__reduce_368$247=function $$_reduce_368(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_368$247.$$arity=3);Opal.def(self,"$_reduce_369",$Ruby25__reduce_369$248=function $$_reduce_369(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_369$248.$$arity=3);Opal.def(self,"$_reduce_371",$Ruby25__reduce_371$249=function $$_reduce_371(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_371$249.$$arity=3);Opal.def(self,"$_reduce_372",$Ruby25__reduce_372$250=function $$_reduce_372(val,_values,result){var $a,self=this;if($truthy($truthy($a=val["$[]"](1)["$empty?"]())?val["$[]"](0).$size()["$=="](1):$a)){result=[self.builder.$procarg0(val["$[]"](0)["$[]"](0))]}else{result=val["$[]"](0).$concat(val["$[]"](1))}return result},$Ruby25__reduce_372$250.$$arity=3);Opal.def(self,"$_reduce_373",$Ruby25__reduce_373$251=function $$_reduce_373(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_373$251.$$arity=3);Opal.def(self,"$_reduce_374",$Ruby25__reduce_374$252=function $$_reduce_374(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_374$252.$$arity=3);Opal.def(self,"$_reduce_375",$Ruby25__reduce_375$253=function $$_reduce_375(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_375$253.$$arity=3);Opal.def(self,"$_reduce_376",$Ruby25__reduce_376$254=function $$_reduce_376(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_376$254.$$arity=3);Opal.def(self,"$_reduce_377",$Ruby25__reduce_377$255=function $$_reduce_377(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_377$255.$$arity=3);Opal.def(self,"$_reduce_378",$Ruby25__reduce_378$256=function $$_reduce_378(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_378$256.$$arity=3);Opal.def(self,"$_reduce_380",$Ruby25__reduce_380$257=function $$_reduce_380(val,_values,result){var self=this;result=self.builder.$args(nil,[],nil);return result},$Ruby25__reduce_380$257.$$arity=3);Opal.def(self,"$_reduce_381",$Ruby25__reduce_381$258=function $$_reduce_381(val,_values,result){var self=this,$writer=nil;$writer=["expr_value"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_381$258.$$arity=3);Opal.def(self,"$_reduce_382",$Ruby25__reduce_382$259=function $$_reduce_382(val,_values,result){var self=this;result=self.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_382$259.$$arity=3);Opal.def(self,"$_reduce_383",$Ruby25__reduce_383$260=function $$_reduce_383(val,_values,result){var self=this;result=self.builder.$args(val["$[]"](0),[],val["$[]"](0));return result},$Ruby25__reduce_383$260.$$arity=3);Opal.def(self,"$_reduce_384",$Ruby25__reduce_384$261=function $$_reduce_384(val,_values,result){var self=this;result=self.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3));return result},$Ruby25__reduce_384$261.$$arity=3);Opal.def(self,"$_reduce_385",$Ruby25__reduce_385$262=function $$_reduce_385(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_385$262.$$arity=3);Opal.def(self,"$_reduce_386",$Ruby25__reduce_386$263=function $$_reduce_386(val,_values,result){var self=this;result=val["$[]"](2);return result},$Ruby25__reduce_386$263.$$arity=3);Opal.def(self,"$_reduce_387",$Ruby25__reduce_387$264=function $$_reduce_387(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_387$264.$$arity=3);Opal.def(self,"$_reduce_388",$Ruby25__reduce_388$265=function $$_reduce_388(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_388$265.$$arity=3);Opal.def(self,"$_reduce_389",$Ruby25__reduce_389$266=function $$_reduce_389(val,_values,result){var self=this;self.static_env.$declare(val["$[]"](0)["$[]"](0));result=self.builder.$shadowarg(val["$[]"](0));return result},$Ruby25__reduce_389$266.$$arity=3);Opal.def(self,"$_reduce_391",$Ruby25__reduce_391$267=function $$_reduce_391(val,_values,result){var self=this;self.static_env.$extend_dynamic();return result},$Ruby25__reduce_391$267.$$arity=3);Opal.def(self,"$_reduce_392",$Ruby25__reduce_392$268=function $$_reduce_392(val,_values,result){var self=this;self.lexer.$cmdarg().$push(false);return result},$Ruby25__reduce_392$268.$$arity=3);Opal.def(self,"$_reduce_393",$Ruby25__reduce_393$269=function $$_reduce_393(val,_values,result){var self=this;self.lexer.$cmdarg().$pop();result=[val["$[]"](1),val["$[]"](3)];self.static_env.$unextend();return result},$Ruby25__reduce_393$269.$$arity=3);Opal.def(self,"$_reduce_394",$Ruby25__reduce_394$270=function $$_reduce_394(val,_values,result){var self=this;result=self.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3));return result},$Ruby25__reduce_394$270.$$arity=3);Opal.def(self,"$_reduce_395",$Ruby25__reduce_395$271=function $$_reduce_395(val,_values,result){var self=this;result=self.builder.$args(nil,val["$[]"](0),nil);return result},$Ruby25__reduce_395$271.$$arity=3);Opal.def(self,"$_reduce_396",$Ruby25__reduce_396$272=function $$_reduce_396(val,_values,result){var self=this;self.context.$push("lambda");return result},$Ruby25__reduce_396$272.$$arity=3);Opal.def(self,"$_reduce_397",$Ruby25__reduce_397$273=function $$_reduce_397(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)];self.context.$pop();return result},$Ruby25__reduce_397$273.$$arity=3);Opal.def(self,"$_reduce_398",$Ruby25__reduce_398$274=function $$_reduce_398(val,_values,result){var self=this;self.context.$push("lambda");return result},$Ruby25__reduce_398$274.$$arity=3);Opal.def(self,"$_reduce_399",$Ruby25__reduce_399$275=function $$_reduce_399(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)];self.context.$pop();return result},$Ruby25__reduce_399$275.$$arity=3);Opal.def(self,"$_reduce_400",$Ruby25__reduce_400$276=function $$_reduce_400(val,_values,result){var self=this;self.context.$push("block");return result},$Ruby25__reduce_400$276.$$arity=3);Opal.def(self,"$_reduce_401",$Ruby25__reduce_401$277=function $$_reduce_401(val,_values,result){var self=this;result=[val["$[]"](0)].concat(Opal.to_a(val["$[]"](2))).concat([val["$[]"](3)]);self.context.$pop();return result},$Ruby25__reduce_401$277.$$arity=3);Opal.def(self,"$_reduce_402",$Ruby25__reduce_402$278=function $$_reduce_402(val,_values,result){var $a,$b,self=this,begin_t=nil,block_args=nil,body=nil,end_t=nil;$b=val["$[]"](1),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],block_args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t);return result},$Ruby25__reduce_402$278.$$arity=3);Opal.def(self,"$_reduce_403",$Ruby25__reduce_403$279=function $$_reduce_403(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](3),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t);return result},$Ruby25__reduce_403$279.$$arity=3);Opal.def(self,"$_reduce_404",$Ruby25__reduce_404$280=function $$_reduce_404(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil,method_call=nil,begin_t=nil,body=nil,end_t=nil;$b=val["$[]"](3),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;method_call=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t);$b=val["$[]"](4),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_404$280.$$arity=3);Opal.def(self,"$_reduce_405",$Ruby25__reduce_405$281=function $$_reduce_405(val,_values,result){var $a,$b,self=this,method_call=nil,begin_t=nil,args=nil,body=nil,end_t=nil;method_call=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil);$b=val["$[]"](4),$a=Opal.to_ary($b),begin_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],end_t=$a[3]==null?nil:$a[3],$b;result=self.builder.$block(method_call,begin_t,args,body,end_t);return result},$Ruby25__reduce_405$281.$$arity=3);Opal.def(self,"$_reduce_406",$Ruby25__reduce_406$282=function $$_reduce_406(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](1),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t);return result},$Ruby25__reduce_406$282.$$arity=3);Opal.def(self,"$_reduce_407",$Ruby25__reduce_407$283=function $$_reduce_407(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](3),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t);return result},$Ruby25__reduce_407$283.$$arity=3);Opal.def(self,"$_reduce_408",$Ruby25__reduce_408$284=function $$_reduce_408(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](3),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t);return result},$Ruby25__reduce_408$284.$$arity=3);Opal.def(self,"$_reduce_409",$Ruby25__reduce_409$285=function $$_reduce_409(val,_values,result){var self=this;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_409$285.$$arity=3);Opal.def(self,"$_reduce_410",$Ruby25__reduce_410$286=function $$_reduce_410(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](2),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t);return result},$Ruby25__reduce_410$286.$$arity=3);Opal.def(self,"$_reduce_411",$Ruby25__reduce_411$287=function $$_reduce_411(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](2),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t);return result},$Ruby25__reduce_411$287.$$arity=3);Opal.def(self,"$_reduce_412",$Ruby25__reduce_412$288=function $$_reduce_412(val,_values,result){var $a,$b,self=this,lparen_t=nil,args=nil,rparen_t=nil;$b=val["$[]"](1),$a=Opal.to_ary($b),lparen_t=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],rparen_t=$a[2]==null?nil:$a[2],$b;result=self.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t);return result},$Ruby25__reduce_412$288.$$arity=3);Opal.def(self,"$_reduce_413",$Ruby25__reduce_413$289=function $$_reduce_413(val,_values,result){var self=this;result=self.builder.$keyword_cmd("zsuper",val["$[]"](0));return result},$Ruby25__reduce_413$289.$$arity=3);Opal.def(self,"$_reduce_414",$Ruby25__reduce_414$290=function $$_reduce_414(val,_values,result){var self=this;result=self.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_414$290.$$arity=3);Opal.def(self,"$_reduce_415",$Ruby25__reduce_415$291=function $$_reduce_415(val,_values,result){var self=this;self.context.$push("block");return result},$Ruby25__reduce_415$291.$$arity=3);Opal.def(self,"$_reduce_416",$Ruby25__reduce_416$292=function $$_reduce_416(val,_values,result){var self=this;result=[val["$[]"](0)].concat(Opal.to_a(val["$[]"](2))).concat([val["$[]"](3)]);self.context.$pop();return result},$Ruby25__reduce_416$292.$$arity=3);Opal.def(self,"$_reduce_417",$Ruby25__reduce_417$293=function $$_reduce_417(val,_values,result){var self=this;self.context.$push("block");return result},$Ruby25__reduce_417$293.$$arity=3);Opal.def(self,"$_reduce_418",$Ruby25__reduce_418$294=function $$_reduce_418(val,_values,result){var self=this;result=[val["$[]"](0)].concat(Opal.to_a(val["$[]"](2))).concat([val["$[]"](3)]);self.context.$pop();return result},$Ruby25__reduce_418$294.$$arity=3);Opal.def(self,"$_reduce_419",$Ruby25__reduce_419$295=function $$_reduce_419(val,_values,result){var self=this;self.static_env.$extend_dynamic();return result},$Ruby25__reduce_419$295.$$arity=3);Opal.def(self,"$_reduce_420",$Ruby25__reduce_420$296=function $$_reduce_420(val,_values,result){var self=this;result=[val["$[]"](1),val["$[]"](2)];self.static_env.$unextend();return result},$Ruby25__reduce_420$296.$$arity=3);Opal.def(self,"$_reduce_421",$Ruby25__reduce_421$297=function $$_reduce_421(val,_values,result){var self=this;self.static_env.$extend_dynamic();return result},$Ruby25__reduce_421$297.$$arity=3);Opal.def(self,"$_reduce_422",$Ruby25__reduce_422$298=function $$_reduce_422(val,_values,result){var self=this;self.lexer.$cmdarg().$push(false);return result},$Ruby25__reduce_422$298.$$arity=3);Opal.def(self,"$_reduce_423",$Ruby25__reduce_423$299=function $$_reduce_423(val,_values,result){var self=this;result=[val["$[]"](2),val["$[]"](3)];self.static_env.$unextend();self.lexer.$cmdarg().$pop();return result},$Ruby25__reduce_423$299.$$arity=3);Opal.def(self,"$_reduce_424",$Ruby25__reduce_424$300=function $$_reduce_424(val,_values,result){var self=this;result=[self.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat(Opal.to_a(val["$[]"](4)));return result},$Ruby25__reduce_424$300.$$arity=3);Opal.def(self,"$_reduce_425",$Ruby25__reduce_425$301=function $$_reduce_425(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_425$301.$$arity=3);Opal.def(self,"$_reduce_427",$Ruby25__reduce_427$302=function $$_reduce_427(val,_values,result){var $a,$b,self=this,assoc_t=nil,exc_var=nil,exc_list=nil;$b=val["$[]"](2),$a=Opal.to_ary($b),assoc_t=$a[0]==null?nil:$a[0],exc_var=$a[1]==null?nil:$a[1],$b;if($truthy(val["$[]"](1))){exc_list=self.builder.$array(nil,val["$[]"](1),nil)}result=[self.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat(Opal.to_a(val["$[]"](5)));return result},$Ruby25__reduce_427$302.$$arity=3);Opal.def(self,"$_reduce_428",$Ruby25__reduce_428$303=function $$_reduce_428(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_428$303.$$arity=3);Opal.def(self,"$_reduce_429",$Ruby25__reduce_429$304=function $$_reduce_429(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_429$304.$$arity=3);Opal.def(self,"$_reduce_432",$Ruby25__reduce_432$305=function $$_reduce_432(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](1)];return result},$Ruby25__reduce_432$305.$$arity=3);Opal.def(self,"$_reduce_434",$Ruby25__reduce_434$306=function $$_reduce_434(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](1)];return result},$Ruby25__reduce_434$306.$$arity=3);Opal.def(self,"$_reduce_439",$Ruby25__reduce_439$307=function $$_reduce_439(val,_values,result){var self=this;result=self.builder.$string_compose(nil,val["$[]"](0),nil);return result},$Ruby25__reduce_439$307.$$arity=3);Opal.def(self,"$_reduce_440",$Ruby25__reduce_440$308=function $$_reduce_440(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_440$308.$$arity=3);Opal.def(self,"$_reduce_441",$Ruby25__reduce_441$309=function $$_reduce_441(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_441$309.$$arity=3);Opal.def(self,"$_reduce_442",$Ruby25__reduce_442$310=function $$_reduce_442(val,_values,result){var self=this,string=nil;string=self.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));result=self.builder.$dedent_string(string,self.lexer.$dedent_level());return result},$Ruby25__reduce_442$310.$$arity=3);Opal.def(self,"$_reduce_443",$Ruby25__reduce_443$311=function $$_reduce_443(val,_values,result){var self=this,string=nil;string=self.builder.$string(val["$[]"](0));result=self.builder.$dedent_string(string,self.lexer.$dedent_level());return result},$Ruby25__reduce_443$311.$$arity=3);Opal.def(self,"$_reduce_444",$Ruby25__reduce_444$312=function $$_reduce_444(val,_values,result){var self=this;result=self.builder.$character(val["$[]"](0));return result},$Ruby25__reduce_444$312.$$arity=3);Opal.def(self,"$_reduce_445",$Ruby25__reduce_445$313=function $$_reduce_445(val,_values,result){var self=this,string=nil;string=self.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));result=self.builder.$dedent_string(string,self.lexer.$dedent_level());return result},$Ruby25__reduce_445$313.$$arity=3);Opal.def(self,"$_reduce_446",$Ruby25__reduce_446$314=function $$_reduce_446(val,_values,result){var self=this,opts=nil;opts=self.builder.$regexp_options(val["$[]"](3));result=self.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts);return result},$Ruby25__reduce_446$314.$$arity=3);Opal.def(self,"$_reduce_447",$Ruby25__reduce_447$315=function $$_reduce_447(val,_values,result){var self=this;result=self.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_447$315.$$arity=3);Opal.def(self,"$_reduce_448",$Ruby25__reduce_448$316=function $$_reduce_448(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_448$316.$$arity=3);Opal.def(self,"$_reduce_449",$Ruby25__reduce_449$317=function $$_reduce_449(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$word(val["$[]"](1)));return result},$Ruby25__reduce_449$317.$$arity=3);Opal.def(self,"$_reduce_450",$Ruby25__reduce_450$318=function $$_reduce_450(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_450$318.$$arity=3);Opal.def(self,"$_reduce_451",$Ruby25__reduce_451$319=function $$_reduce_451(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_451$319.$$arity=3);Opal.def(self,"$_reduce_452",$Ruby25__reduce_452$320=function $$_reduce_452(val,_values,result){var self=this;result=self.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_452$320.$$arity=3);Opal.def(self,"$_reduce_453",$Ruby25__reduce_453$321=function $$_reduce_453(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_453$321.$$arity=3);Opal.def(self,"$_reduce_454",$Ruby25__reduce_454$322=function $$_reduce_454(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$word(val["$[]"](1)));return result},$Ruby25__reduce_454$322.$$arity=3);Opal.def(self,"$_reduce_455",$Ruby25__reduce_455$323=function $$_reduce_455(val,_values,result){var self=this;result=self.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_455$323.$$arity=3);Opal.def(self,"$_reduce_456",$Ruby25__reduce_456$324=function $$_reduce_456(val,_values,result){var self=this;result=self.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_456$324.$$arity=3);Opal.def(self,"$_reduce_457",$Ruby25__reduce_457$325=function $$_reduce_457(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_457$325.$$arity=3);Opal.def(self,"$_reduce_458",$Ruby25__reduce_458$326=function $$_reduce_458(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$string_internal(val["$[]"](1)));return result},$Ruby25__reduce_458$326.$$arity=3);Opal.def(self,"$_reduce_459",$Ruby25__reduce_459$327=function $$_reduce_459(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_459$327.$$arity=3);Opal.def(self,"$_reduce_460",$Ruby25__reduce_460$328=function $$_reduce_460(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.builder.$symbol_internal(val["$[]"](1)));return result},$Ruby25__reduce_460$328.$$arity=3);Opal.def(self,"$_reduce_461",$Ruby25__reduce_461$329=function $$_reduce_461(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_461$329.$$arity=3);Opal.def(self,"$_reduce_462",$Ruby25__reduce_462$330=function $$_reduce_462(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_462$330.$$arity=3);Opal.def(self,"$_reduce_463",$Ruby25__reduce_463$331=function $$_reduce_463(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_463$331.$$arity=3);Opal.def(self,"$_reduce_464",$Ruby25__reduce_464$332=function $$_reduce_464(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_464$332.$$arity=3);Opal.def(self,"$_reduce_465",$Ruby25__reduce_465$333=function $$_reduce_465(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_465$333.$$arity=3);Opal.def(self,"$_reduce_466",$Ruby25__reduce_466$334=function $$_reduce_466(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},$Ruby25__reduce_466$334.$$arity=3);Opal.def(self,"$_reduce_467",$Ruby25__reduce_467$335=function $$_reduce_467(val,_values,result){var self=this;result=self.builder.$string_internal(val["$[]"](0));return result},$Ruby25__reduce_467$335.$$arity=3);Opal.def(self,"$_reduce_468",$Ruby25__reduce_468$336=function $$_reduce_468(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_468$336.$$arity=3);Opal.def(self,"$_reduce_469",$Ruby25__reduce_469$337=function $$_reduce_469(val,_values,result){var self=this;self.lexer.$cmdarg().$push(false);self.lexer.$cond().$push(false);return result},$Ruby25__reduce_469$337.$$arity=3);Opal.def(self,"$_reduce_470",$Ruby25__reduce_470$338=function $$_reduce_470(val,_values,result){var self=this;self.lexer.$cmdarg().$pop();self.lexer.$cond().$pop();result=self.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_470$338.$$arity=3);Opal.def(self,"$_reduce_471",$Ruby25__reduce_471$339=function $$_reduce_471(val,_values,result){var self=this;result=self.builder.$gvar(val["$[]"](0));return result},$Ruby25__reduce_471$339.$$arity=3);Opal.def(self,"$_reduce_472",$Ruby25__reduce_472$340=function $$_reduce_472(val,_values,result){var self=this;result=self.builder.$ivar(val["$[]"](0));return result},$Ruby25__reduce_472$340.$$arity=3);Opal.def(self,"$_reduce_473",$Ruby25__reduce_473$341=function $$_reduce_473(val,_values,result){var self=this;result=self.builder.$cvar(val["$[]"](0));return result},$Ruby25__reduce_473$341.$$arity=3);Opal.def(self,"$_reduce_475",$Ruby25__reduce_475$342=function $$_reduce_475(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$symbol(val["$[]"](0));return result},$Ruby25__reduce_475$342.$$arity=3);Opal.def(self,"$_reduce_476",$Ruby25__reduce_476$343=function $$_reduce_476(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_476$343.$$arity=3);Opal.def(self,"$_reduce_477",$Ruby25__reduce_477$344=function $$_reduce_477(val,_values,result){var self=this;result=val["$[]"](0);return result},$Ruby25__reduce_477$344.$$arity=3);Opal.def(self,"$_reduce_478",$Ruby25__reduce_478$345=function $$_reduce_478(val,_values,result){var self=this;if($truthy(self.builder["$respond_to?"]("negate"))){result=self.builder.$negate(val["$[]"](0),val["$[]"](1))}else{result=self.builder.$unary_num(val["$[]"](0),val["$[]"](1))}return result},$Ruby25__reduce_478$345.$$arity=3);Opal.def(self,"$_reduce_479",$Ruby25__reduce_479$346=function $$_reduce_479(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$integer(val["$[]"](0));return result},$Ruby25__reduce_479$346.$$arity=3);Opal.def(self,"$_reduce_480",$Ruby25__reduce_480$347=function $$_reduce_480(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$float(val["$[]"](0));return result},$Ruby25__reduce_480$347.$$arity=3);Opal.def(self,"$_reduce_481",$Ruby25__reduce_481$348=function $$_reduce_481(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$rational(val["$[]"](0));return result},$Ruby25__reduce_481$348.$$arity=3);Opal.def(self,"$_reduce_482",$Ruby25__reduce_482$349=function $$_reduce_482(val,_values,result){var self=this,$writer=nil;$writer=["expr_end"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$complex(val["$[]"](0));return result},$Ruby25__reduce_482$349.$$arity=3);Opal.def(self,"$_reduce_483",$Ruby25__reduce_483$350=function $$_reduce_483(val,_values,result){var self=this;result=self.builder.$ident(val["$[]"](0));return result},$Ruby25__reduce_483$350.$$arity=3);Opal.def(self,"$_reduce_484",$Ruby25__reduce_484$351=function $$_reduce_484(val,_values,result){var self=this;result=self.builder.$ivar(val["$[]"](0));return result},$Ruby25__reduce_484$351.$$arity=3);Opal.def(self,"$_reduce_485",$Ruby25__reduce_485$352=function $$_reduce_485(val,_values,result){var self=this;result=self.builder.$gvar(val["$[]"](0));return result},$Ruby25__reduce_485$352.$$arity=3);Opal.def(self,"$_reduce_486",$Ruby25__reduce_486$353=function $$_reduce_486(val,_values,result){var self=this;result=self.builder.$const(val["$[]"](0));return result},$Ruby25__reduce_486$353.$$arity=3);Opal.def(self,"$_reduce_487",$Ruby25__reduce_487$354=function $$_reduce_487(val,_values,result){var self=this;result=self.builder.$cvar(val["$[]"](0));return result},$Ruby25__reduce_487$354.$$arity=3);Opal.def(self,"$_reduce_488",$Ruby25__reduce_488$355=function $$_reduce_488(val,_values,result){var self=this;result=self.builder.$nil(val["$[]"](0));return result},$Ruby25__reduce_488$355.$$arity=3);Opal.def(self,"$_reduce_489",$Ruby25__reduce_489$356=function $$_reduce_489(val,_values,result){var self=this;result=self.builder.$self(val["$[]"](0));return result},$Ruby25__reduce_489$356.$$arity=3);Opal.def(self,"$_reduce_490",$Ruby25__reduce_490$357=function $$_reduce_490(val,_values,result){var self=this;result=self.builder.$true(val["$[]"](0));return result},$Ruby25__reduce_490$357.$$arity=3);Opal.def(self,"$_reduce_491",$Ruby25__reduce_491$358=function $$_reduce_491(val,_values,result){var self=this;result=self.builder.$false(val["$[]"](0));return result},$Ruby25__reduce_491$358.$$arity=3);Opal.def(self,"$_reduce_492",$Ruby25__reduce_492$359=function $$_reduce_492(val,_values,result){var self=this;result=self.builder.$__FILE__(val["$[]"](0));return result},$Ruby25__reduce_492$359.$$arity=3);Opal.def(self,"$_reduce_493",$Ruby25__reduce_493$360=function $$_reduce_493(val,_values,result){var self=this;result=self.builder.$__LINE__(val["$[]"](0));return result},$Ruby25__reduce_493$360.$$arity=3);Opal.def(self,"$_reduce_494",$Ruby25__reduce_494$361=function $$_reduce_494(val,_values,result){var self=this;result=self.builder.$__ENCODING__(val["$[]"](0));return result},$Ruby25__reduce_494$361.$$arity=3);Opal.def(self,"$_reduce_495",$Ruby25__reduce_495$362=function $$_reduce_495(val,_values,result){var self=this;result=self.builder.$accessible(val["$[]"](0));return result},$Ruby25__reduce_495$362.$$arity=3);Opal.def(self,"$_reduce_496",$Ruby25__reduce_496$363=function $$_reduce_496(val,_values,result){var self=this;result=self.builder.$accessible(val["$[]"](0));return result},$Ruby25__reduce_496$363.$$arity=3);Opal.def(self,"$_reduce_497",$Ruby25__reduce_497$364=function $$_reduce_497(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_497$364.$$arity=3);Opal.def(self,"$_reduce_498",$Ruby25__reduce_498$365=function $$_reduce_498(val,_values,result){var self=this;result=self.builder.$assignable(val["$[]"](0));return result},$Ruby25__reduce_498$365.$$arity=3);Opal.def(self,"$_reduce_499",$Ruby25__reduce_499$366=function $$_reduce_499(val,_values,result){var self=this;result=self.builder.$nth_ref(val["$[]"](0));return result},$Ruby25__reduce_499$366.$$arity=3);Opal.def(self,"$_reduce_500",$Ruby25__reduce_500$367=function $$_reduce_500(val,_values,result){var self=this;result=self.builder.$back_ref(val["$[]"](0));return result},$Ruby25__reduce_500$367.$$arity=3);Opal.def(self,"$_reduce_501",$Ruby25__reduce_501$368=function $$_reduce_501(val,_values,result){var self=this,$writer=nil;$writer=["expr_value"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_501$368.$$arity=3);Opal.def(self,"$_reduce_502",$Ruby25__reduce_502$369=function $$_reduce_502(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](2)];return result},$Ruby25__reduce_502$369.$$arity=3);Opal.def(self,"$_reduce_503",$Ruby25__reduce_503$370=function $$_reduce_503(val,_values,result){var self=this;result=nil;return result},$Ruby25__reduce_503$370.$$arity=3);Opal.def(self,"$_reduce_504",$Ruby25__reduce_504$371=function $$_reduce_504(val,_values,result){var self=this,$writer=nil;result=self.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2));$writer=["expr_value"];$send(self.lexer,"state=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_504$371.$$arity=3);Opal.def(self,"$_reduce_505",$Ruby25__reduce_505$372=function $$_reduce_505(val,_values,result){var self=this,$writer=nil;result=self.lexer.$in_kwarg();$writer=[true];$send(self.lexer,"in_kwarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return result},$Ruby25__reduce_505$372.$$arity=3);Opal.def(self,"$_reduce_506",$Ruby25__reduce_506$373=function $$_reduce_506(val,_values,result){var self=this,$writer=nil;$writer=[val["$[]"](0)];$send(self.lexer,"in_kwarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];result=self.builder.$args(nil,val["$[]"](1),nil);return result},$Ruby25__reduce_506$373.$$arity=3);Opal.def(self,"$_reduce_507",$Ruby25__reduce_507$374=function $$_reduce_507(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_507$374.$$arity=3);Opal.def(self,"$_reduce_508",$Ruby25__reduce_508$375=function $$_reduce_508(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_508$375.$$arity=3);Opal.def(self,"$_reduce_509",$Ruby25__reduce_509$376=function $$_reduce_509(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_509$376.$$arity=3);Opal.def(self,"$_reduce_510",$Ruby25__reduce_510$377=function $$_reduce_510(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_510$377.$$arity=3);Opal.def(self,"$_reduce_511",$Ruby25__reduce_511$378=function $$_reduce_511(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_511$378.$$arity=3);Opal.def(self,"$_reduce_512",$Ruby25__reduce_512$379=function $$_reduce_512(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_512$379.$$arity=3);Opal.def(self,"$_reduce_513",$Ruby25__reduce_513$380=function $$_reduce_513(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_513$380.$$arity=3);Opal.def(self,"$_reduce_514",$Ruby25__reduce_514$381=function $$_reduce_514(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7));return result},$Ruby25__reduce_514$381.$$arity=3);Opal.def(self,"$_reduce_515",$Ruby25__reduce_515$382=function $$_reduce_515(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_515$382.$$arity=3);Opal.def(self,"$_reduce_516",$Ruby25__reduce_516$383=function $$_reduce_516(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_516$383.$$arity=3);Opal.def(self,"$_reduce_517",$Ruby25__reduce_517$384=function $$_reduce_517(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_517$384.$$arity=3);Opal.def(self,"$_reduce_518",$Ruby25__reduce_518$385=function $$_reduce_518(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_518$385.$$arity=3);Opal.def(self,"$_reduce_519",$Ruby25__reduce_519$386=function $$_reduce_519(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_519$386.$$arity=3);Opal.def(self,"$_reduce_520",$Ruby25__reduce_520$387=function $$_reduce_520(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_520$387.$$arity=3);Opal.def(self,"$_reduce_521",$Ruby25__reduce_521$388=function $$_reduce_521(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5));return result},$Ruby25__reduce_521$388.$$arity=3);Opal.def(self,"$_reduce_522",$Ruby25__reduce_522$389=function $$_reduce_522(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_522$389.$$arity=3);Opal.def(self,"$_reduce_523",$Ruby25__reduce_523$390=function $$_reduce_523(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_523$390.$$arity=3);Opal.def(self,"$_reduce_524",$Ruby25__reduce_524$391=function $$_reduce_524(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](1));return result},$Ruby25__reduce_524$391.$$arity=3);Opal.def(self,"$_reduce_525",$Ruby25__reduce_525$392=function $$_reduce_525(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3));return result},$Ruby25__reduce_525$392.$$arity=3);Opal.def(self,"$_reduce_526",$Ruby25__reduce_526$393=function $$_reduce_526(val,_values,result){var self=this;result=val["$[]"](0);return result},$Ruby25__reduce_526$393.$$arity=3);Opal.def(self,"$_reduce_527",$Ruby25__reduce_527$394=function $$_reduce_527(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_527$394.$$arity=3);Opal.def(self,"$_reduce_528",$Ruby25__reduce_528$395=function $$_reduce_528(val,_values,result){var self=this;self.$diagnostic("error","argument_const",nil,val["$[]"](0));return result},$Ruby25__reduce_528$395.$$arity=3);Opal.def(self,"$_reduce_529",$Ruby25__reduce_529$396=function $$_reduce_529(val,_values,result){var self=this;self.$diagnostic("error","argument_ivar",nil,val["$[]"](0));return result},$Ruby25__reduce_529$396.$$arity=3);Opal.def(self,"$_reduce_530",$Ruby25__reduce_530$397=function $$_reduce_530(val,_values,result){var self=this;self.$diagnostic("error","argument_gvar",nil,val["$[]"](0));return result},$Ruby25__reduce_530$397.$$arity=3);Opal.def(self,"$_reduce_531",$Ruby25__reduce_531$398=function $$_reduce_531(val,_values,result){var self=this;self.$diagnostic("error","argument_cvar",nil,val["$[]"](0));return result},$Ruby25__reduce_531$398.$$arity=3);Opal.def(self,"$_reduce_533",$Ruby25__reduce_533$399=function $$_reduce_533(val,_values,result){var self=this;self.static_env.$declare(val["$[]"](0)["$[]"](0));result=val["$[]"](0);return result},$Ruby25__reduce_533$399.$$arity=3);Opal.def(self,"$_reduce_534",$Ruby25__reduce_534$400=function $$_reduce_534(val,_values,result){var self=this;result=val["$[]"](0);return result},$Ruby25__reduce_534$400.$$arity=3);Opal.def(self,"$_reduce_535",$Ruby25__reduce_535$401=function $$_reduce_535(val,_values,result){var self=this;result=self.builder.$arg(val["$[]"](0));return result},$Ruby25__reduce_535$401.$$arity=3);Opal.def(self,"$_reduce_536",$Ruby25__reduce_536$402=function $$_reduce_536(val,_values,result){var self=this;result=self.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_536$402.$$arity=3);Opal.def(self,"$_reduce_537",$Ruby25__reduce_537$403=function $$_reduce_537(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_537$403.$$arity=3);Opal.def(self,"$_reduce_538",$Ruby25__reduce_538$404=function $$_reduce_538(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_538$404.$$arity=3);Opal.def(self,"$_reduce_539",$Ruby25__reduce_539$405=function $$_reduce_539(val,_values,result){var self=this;self.$check_kwarg_name(val["$[]"](0));self.static_env.$declare(val["$[]"](0)["$[]"](0));result=val["$[]"](0);return result},$Ruby25__reduce_539$405.$$arity=3);Opal.def(self,"$_reduce_540",$Ruby25__reduce_540$406=function $$_reduce_540(val,_values,result){var self=this;result=self.builder.$kwoptarg(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_540$406.$$arity=3);Opal.def(self,"$_reduce_541",$Ruby25__reduce_541$407=function $$_reduce_541(val,_values,result){var self=this;result=self.builder.$kwarg(val["$[]"](0));return result},$Ruby25__reduce_541$407.$$arity=3);Opal.def(self,"$_reduce_542",$Ruby25__reduce_542$408=function $$_reduce_542(val,_values,result){var self=this;result=self.builder.$kwoptarg(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_542$408.$$arity=3);Opal.def(self,"$_reduce_543",$Ruby25__reduce_543$409=function $$_reduce_543(val,_values,result){var self=this;result=self.builder.$kwarg(val["$[]"](0));return result},$Ruby25__reduce_543$409.$$arity=3);Opal.def(self,"$_reduce_544",$Ruby25__reduce_544$410=function $$_reduce_544(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_544$410.$$arity=3);Opal.def(self,"$_reduce_545",$Ruby25__reduce_545$411=function $$_reduce_545(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_545$411.$$arity=3);Opal.def(self,"$_reduce_546",$Ruby25__reduce_546$412=function $$_reduce_546(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_546$412.$$arity=3);Opal.def(self,"$_reduce_547",$Ruby25__reduce_547$413=function $$_reduce_547(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_547$413.$$arity=3);Opal.def(self,"$_reduce_550",$Ruby25__reduce_550$414=function $$_reduce_550(val,_values,result){var self=this;self.static_env.$declare(val["$[]"](1)["$[]"](0));result=[self.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_550$414.$$arity=3);Opal.def(self,"$_reduce_551",$Ruby25__reduce_551$415=function $$_reduce_551(val,_values,result){var self=this;result=[self.builder.$kwrestarg(val["$[]"](0))];return result},$Ruby25__reduce_551$415.$$arity=3);Opal.def(self,"$_reduce_552",$Ruby25__reduce_552$416=function $$_reduce_552(val,_values,result){var self=this;result=self.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_552$416.$$arity=3);Opal.def(self,"$_reduce_553",$Ruby25__reduce_553$417=function $$_reduce_553(val,_values,result){var self=this;result=self.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_553$417.$$arity=3);Opal.def(self,"$_reduce_554",$Ruby25__reduce_554$418=function $$_reduce_554(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_554$418.$$arity=3);Opal.def(self,"$_reduce_555",$Ruby25__reduce_555$419=function $$_reduce_555(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_555$419.$$arity=3);Opal.def(self,"$_reduce_556",$Ruby25__reduce_556$420=function $$_reduce_556(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_556$420.$$arity=3);Opal.def(self,"$_reduce_557",$Ruby25__reduce_557$421=function $$_reduce_557(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_557$421.$$arity=3);Opal.def(self,"$_reduce_560",$Ruby25__reduce_560$422=function $$_reduce_560(val,_values,result){var self=this;self.static_env.$declare(val["$[]"](1)["$[]"](0));result=[self.builder.$restarg(val["$[]"](0),val["$[]"](1))];return result},$Ruby25__reduce_560$422.$$arity=3);Opal.def(self,"$_reduce_561",$Ruby25__reduce_561$423=function $$_reduce_561(val,_values,result){var self=this;result=[self.builder.$restarg(val["$[]"](0))];return result},$Ruby25__reduce_561$423.$$arity=3);Opal.def(self,"$_reduce_564",$Ruby25__reduce_564$424=function $$_reduce_564(val,_values,result){var self=this;self.static_env.$declare(val["$[]"](1)["$[]"](0));result=self.builder.$blockarg(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_564$424.$$arity=3);Opal.def(self,"$_reduce_565",$Ruby25__reduce_565$425=function $$_reduce_565(val,_values,result){var self=this;result=[val["$[]"](1)];return result},$Ruby25__reduce_565$425.$$arity=3);Opal.def(self,"$_reduce_566",$Ruby25__reduce_566$426=function $$_reduce_566(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_566$426.$$arity=3);Opal.def(self,"$_reduce_568",$Ruby25__reduce_568$427=function $$_reduce_568(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_568$427.$$arity=3);Opal.def(self,"$_reduce_569",$Ruby25__reduce_569$428=function $$_reduce_569(val,_values,result){var self=this;result=[];return result},$Ruby25__reduce_569$428.$$arity=3);Opal.def(self,"$_reduce_571",$Ruby25__reduce_571$429=function $$_reduce_571(val,_values,result){var self=this;result=[val["$[]"](0)];return result},$Ruby25__reduce_571$429.$$arity=3);Opal.def(self,"$_reduce_572",$Ruby25__reduce_572$430=function $$_reduce_572(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},$Ruby25__reduce_572$430.$$arity=3);Opal.def(self,"$_reduce_573",$Ruby25__reduce_573$431=function $$_reduce_573(val,_values,result){var self=this;result=self.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},$Ruby25__reduce_573$431.$$arity=3);Opal.def(self,"$_reduce_574",$Ruby25__reduce_574$432=function $$_reduce_574(val,_values,result){var self=this;result=self.builder.$pair_keyword(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_574$432.$$arity=3);Opal.def(self,"$_reduce_575",$Ruby25__reduce_575$433=function $$_reduce_575(val,_values,result){var self=this;result=self.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},$Ruby25__reduce_575$433.$$arity=3);Opal.def(self,"$_reduce_576",$Ruby25__reduce_576$434=function $$_reduce_576(val,_values,result){var self=this;result=self.builder.$kwsplat(val["$[]"](0),val["$[]"](1));return result},$Ruby25__reduce_576$434.$$arity=3);Opal.def(self,"$_reduce_589",$Ruby25__reduce_589$435=function $$_reduce_589(val,_values,result){var self=this;result=["dot",val["$[]"](0)["$[]"](1)];return result},$Ruby25__reduce_589$435.$$arity=3);Opal.def(self,"$_reduce_590",$Ruby25__reduce_590$436=function $$_reduce_590(val,_values,result){var self=this;result=["anddot",val["$[]"](0)["$[]"](1)];return result},$Ruby25__reduce_590$436.$$arity=3);Opal.def(self,"$_reduce_595",$Ruby25__reduce_595$437=function $$_reduce_595(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_595$437.$$arity=3);Opal.def(self,"$_reduce_596",$Ruby25__reduce_596$438=function $$_reduce_596(val,_values,result){var self=this;result=val["$[]"](1);return result},$Ruby25__reduce_596$438.$$arity=3);Opal.def(self,"$_reduce_600",$Ruby25__reduce_600$439=function $$_reduce_600(val,_values,result){var self=this;self.$yyerrok();return result},$Ruby25__reduce_600$439.$$arity=3);Opal.def(self,"$_reduce_604",$Ruby25__reduce_604$440=function $$_reduce_604(val,_values,result){var self=this;result=nil;return result},$Ruby25__reduce_604$440.$$arity=3);return(Opal.def(self,"$_reduce_none",$Ruby25__reduce_none$441=function $$_reduce_none(val,_values,result){var self=this;return val["$[]"](0)},$Ruby25__reduce_none$441.$$arity=3),nil)&&"_reduce_none"})($nesting[0],$$$($$($nesting,"Parser"),"Base"),$nesting)}($nesting[0],$nesting)};Opal.modules["opal/ast/builder"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$emit_lambda=","$-","$new"]);self.$require("opal/ast/node");self.$require("parser/ruby25");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"AST");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Builder");var $nesting=[self].concat($parent_nesting),$Builder_n$1,$writer=nil;$writer=[true];$send(self,"emit_lambda=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return(Opal.def(self,"$n",$Builder_n$1=function $$n(type,children,location){var self=this;return $$$($$$($$$("::","Opal"),"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))},$Builder_n$1.$$arity=3),nil)&&"n"})($nesting[0],$$$($$$($$$("::","Parser"),"Builders"),"Default"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/base"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$new","$current_node","$loc","$+","$stmts_of","$begin_with_stmts","$nil?","$include?","$type","$children","$length","$===","$[]","$s","$attr_accessor","$current_node=","$-","$location=","$raise"]);self.$require("parser");self.$require("opal/ast/node");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base");var $nesting=[self].concat($parent_nesting),$Base_s$9,$Base_s$10,$Base_prepend_to_body$11,$Base_append_to_body$12,$Base_stmts_of$13,$Base_begin_with_stmts$14,$Base_process$15,$Base_error$16;(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DummyLocation");var $nesting=[self].concat($parent_nesting),$DummyLocation_node$eq$1,$DummyLocation_expression$2,$DummyLocation_begin_pos$3,$DummyLocation_end_pos$4,$DummyLocation_source$5,$DummyLocation_line$6,$DummyLocation_column$7,$DummyLocation_last_line$8;Opal.def(self,"$node=",$DummyLocation_node$eq$1=function($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return nil},$DummyLocation_node$eq$1.$$arity=-1);Opal.def(self,"$expression",$DummyLocation_expression$2=function $$expression(){var self=this;return self},$DummyLocation_expression$2.$$arity=0);Opal.def(self,"$begin_pos",$DummyLocation_begin_pos$3=function $$begin_pos(){var self=this;return 0},$DummyLocation_begin_pos$3.$$arity=0);Opal.def(self,"$end_pos",$DummyLocation_end_pos$4=function $$end_pos(){var self=this;return 0},$DummyLocation_end_pos$4.$$arity=0);Opal.def(self,"$source",$DummyLocation_source$5=function $$source(){var self=this;return""},$DummyLocation_source$5.$$arity=0);Opal.def(self,"$line",$DummyLocation_line$6=function $$line(){var self=this;return 0},$DummyLocation_line$6.$$arity=0);Opal.def(self,"$column",$DummyLocation_column$7=function $$column(){var self=this;return 0},$DummyLocation_column$7.$$arity=0);return(Opal.def(self,"$last_line",$DummyLocation_last_line$8=function $$last_line(){var self=this;return $$$($$($nesting,"Float"),"INFINITY")},$DummyLocation_last_line$8.$$arity=0),nil)&&"last_line"})($nesting[0],null,$nesting);Opal.const_set($nesting[0],"DUMMY_LOCATION",$$($nesting,"DummyLocation").$new());Opal.def(self,"$s",$Base_s$9=function $$s(type,$a){var $post_args,children,self=this,loc=nil;$post_args=Opal.slice.call(arguments,1,arguments.length);children=$post_args;loc=function(){if($truthy(self.$current_node())){return self.$current_node().$loc()}else{return $$($nesting,"DUMMY_LOCATION")}return nil}();return $$$($$$($$$("::","Opal"),"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))},$Base_s$9.$$arity=-2);Opal.defs(self,"$s",$Base_s$10=function $$s(type,$a){var $post_args,children,self=this;$post_args=Opal.slice.call(arguments,1,arguments.length);children=$post_args;return $$$($$$($$$("::","Opal"),"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$($nesting,"DUMMY_LOCATION")}))},$Base_s$10.$$arity=-2);Opal.alias(self,"on_iter","process_regular_node");Opal.alias(self,"on_top","process_regular_node");Opal.alias(self,"on_zsuper","process_regular_node");Opal.alias(self,"on_jscall","on_send");Opal.alias(self,"on_jsattr","process_regular_node");Opal.alias(self,"on_jsattrasgn","process_regular_node");Opal.alias(self,"on_kwsplat","process_regular_node");Opal.def(self,"$prepend_to_body",$Base_prepend_to_body$11=function $$prepend_to_body(body,node){var self=this,stmts=nil;stmts=$rb_plus(self.$stmts_of(node),self.$stmts_of(body));return self.$begin_with_stmts(stmts)},$Base_prepend_to_body$11.$$arity=2);Opal.def(self,"$append_to_body",$Base_append_to_body$12=function $$append_to_body(body,node){var self=this,stmts=nil;stmts=$rb_plus(self.$stmts_of(body),self.$stmts_of(node));return self.$begin_with_stmts(stmts)},$Base_append_to_body$12.$$arity=2);Opal.def(self,"$stmts_of",$Base_stmts_of$13=function $$stmts_of(node){var self=this;if($truthy(node["$nil?"]())){return[]}else if($truthy(["begin","kwbegin"]["$include?"](node.$type()))){return node.$children()}else{return[node]}},$Base_stmts_of$13.$$arity=1);Opal.def(self,"$begin_with_stmts",$Base_begin_with_stmts$14=function $$begin_with_stmts(stmts){var self=this,$case=nil;return function(){$case=stmts.$length();if((0)["$==="]($case)){return nil}else if(1["$==="]($case)){return stmts["$[]"](0)}else{return $send(self,"s",["begin"].concat(Opal.to_a(stmts)))}}()},$Base_begin_with_stmts$14.$$arity=1);self.$attr_accessor("current_node");Opal.def(self,"$process",$Base_process$15=function $$process(node){var $iter=$Base_process$15.$$p,$yield=$iter||nil,self=this,$writer=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$Base_process$15.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return function(){try{$writer=[node];$send(self,"current_node=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return $send(self,Opal.find_super_dispatcher(self,"process",$Base_process$15,false),$zuper,$iter)}finally{$writer=[nil],$send(self,"current_node=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},$Base_process$15.$$arity=1);return(Opal.def(self,"$error",$Base_error$16=function $$error(msg){var self=this,error=nil,$writer=nil;error=$$$($$$("::","Opal"),"RewritingError").$new(msg);if($truthy(self.$current_node())){$writer=[self.$current_node().$loc()];$send(error,"location=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return self.$raise(error)},$Base_error$16.$$arity=1),nil)&&"error"})($nesting[0],$$$($$$($$$("::","Parser"),"AST"),"Processor"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$children","$skip_check_present?","$s","$skip_check_present_not?","$updated","$process_all","$=="]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck");var $nesting=[self].concat($parent_nesting),$OpalEngineCheck_on_if$1,$OpalEngineCheck_skip_check_present$ques$2,$OpalEngineCheck_skip_check_present_not$ques$3;Opal.def(self,"$on_if",$OpalEngineCheck_on_if$1=function $$on_if(node){var $a,self=this,test=nil,true_body=nil,false_body=nil;$a=[].concat(Opal.to_a(node.$children())),test=$a[0]==null?nil:$a[0],true_body=$a[1]==null?nil:$a[1],false_body=$a[2]==null?nil:$a[2],$a;if($truthy(self["$skip_check_present?"](test))){false_body=self.$s("nil")}if($truthy(self["$skip_check_present_not?"](test))){true_body=self.$s("nil")}return node.$updated(nil,self.$process_all([test,true_body,false_body]))},$OpalEngineCheck_on_if$1.$$arity=1);Opal.def(self,"$skip_check_present?",$OpalEngineCheck_skip_check_present$ques$2=function(test){var $a,self=this;return $truthy($a=test["$=="]($$($nesting,"RUBY_ENGINE_CHECK")))?$a:test["$=="]($$($nesting,"RUBY_PLATFORM_CHECK"))},$OpalEngineCheck_skip_check_present$ques$2.$$arity=1);Opal.def(self,"$skip_check_present_not?",$OpalEngineCheck_skip_check_present_not$ques$3=function(test){var $a,self=this;return $truthy($a=test["$=="]($$($nesting,"RUBY_ENGINE_CHECK_NOT")))?$a:test["$=="]($$($nesting,"RUBY_PLATFORM_CHECK_NOT"))},$OpalEngineCheck_skip_check_present_not$ques$3.$$arity=1);Opal.const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal")));Opal.const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal")));Opal.const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal")));return Opal.const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$+","$find","$map","$s","$next_tmp","$class","$type","$===","$<<","$prepend_to_body","$attr_reader","$new","$process","$to_a","$result"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter");var $nesting=[self].concat($parent_nesting),$ForRewriter_reset_tmp_counter$excl$1,$ForRewriter_next_tmp$2,$ForRewriter_on_for$3;Opal.defs(self,"$reset_tmp_counter!",$ForRewriter_reset_tmp_counter$excl$1=function(){var self=this;return self.counter=0},$ForRewriter_reset_tmp_counter$excl$1.$$arity=0);Opal.defs(self,"$next_tmp",$ForRewriter_next_tmp$2=function $$next_tmp(){var $a,self=this;if(self.counter==null)self.counter=nil;self.counter=$truthy($a=self.counter)?$a:0;self.counter=$rb_plus(self.counter,1);return""+"$for_tmp"+self.counter},$ForRewriter_next_tmp$2.$$arity=0);Opal.def(self,"$on_for",$ForRewriter_on_for$3=function $$on_for(node){var $a,$$4,self=this,loop_variable=nil,iterating_value=nil,loop_body=nil,iterating_lvars=nil,lvars_declared_in_body=nil,outer_assigns=nil,tmp_loop_variable=nil,get_tmp_loop_variable=nil,loop_variable_assignment=nil,$case=nil;$a=[].concat(Opal.to_a(node)),loop_variable=$a[0]==null?nil:$a[0],iterating_value=$a[1]==null?nil:$a[1],loop_body=$a[2]==null?nil:$a[2],$a;iterating_lvars=$$($nesting,"LocalVariableAssigns").$find(loop_variable);lvars_declared_in_body=$$($nesting,"LocalVariableAssigns").$find(loop_body);outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],($$4=function(lvar_name){var self=$$4.$$s||this;if(lvar_name==null){lvar_name=nil}return self.$s("lvdeclare",lvar_name)},$$4.$$s=self,$$4.$$arity=1,$$4));tmp_loop_variable=self.$class().$next_tmp();get_tmp_loop_variable=self.$s("js_tmp",tmp_loop_variable);loop_variable_assignment=function(){$case=loop_variable.$type();if("mlhs"["$==="]($case)){return self.$s("masgn",loop_variable,get_tmp_loop_variable)}else{return loop_variable["$<<"](get_tmp_loop_variable)}}();loop_body=self.$prepend_to_body(loop_body,loop_variable_assignment);node=self.$s("send",iterating_value,"each",self.$s("iter",self.$s("args",self.$s("arg",tmp_loop_variable)),loop_body));return $send(self,"s",["begin"].concat(Opal.to_a(outer_assigns)).concat([node]))},$ForRewriter_on_for$3.$$arity=1);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns");var $nesting=[self].concat($parent_nesting),$LocalVariableAssigns_find$5,$LocalVariableAssigns_initialize$6,$LocalVariableAssigns_on_lvasgn$7;self.$attr_reader("result");Opal.defs(self,"$find",$LocalVariableAssigns_find$5=function $$find(node){var self=this,processor=nil;processor=self.$new();processor.$process(node);return processor.$result().$to_a()},$LocalVariableAssigns_find$5.$$arity=1);Opal.def(self,"$initialize",$LocalVariableAssigns_initialize$6=function $$initialize(){var self=this;return self.result=$$($nesting,"Set").$new()},$LocalVariableAssigns_initialize$6.$$arity=0);return(Opal.def(self,"$on_lvasgn",$LocalVariableAssigns_on_lvasgn$7=function $$on_lvasgn(node){var $a,$iter=$LocalVariableAssigns_on_lvasgn$7.$$p,$yield=$iter||nil,self=this,name=nil,_=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$LocalVariableAssigns_on_lvasgn$7.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;self.$result()["$<<"](name);return $send(self,Opal.find_super_dispatcher(self,"on_lvasgn",$LocalVariableAssigns_on_lvasgn$7,false),$zuper,$iter)},$LocalVariableAssigns_on_lvasgn$7.$$arity=1),nil)&&"on_lvasgn"}($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$s","$=~","$to_s","$==","$process_all","$updated"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn");var $nesting=[self].concat($parent_nesting),$ExplicitWriterReturn_initialize$1,$ExplicitWriterReturn_on_send$2,$ExplicitWriterReturn_on_masgn$3;self.$$prototype.in_masgn=nil;Opal.def(self,"$initialize",$ExplicitWriterReturn_initialize$1=function $$initialize(){var self=this;return self.in_masgn=false},$ExplicitWriterReturn_initialize$1.$$arity=0);Opal.const_set($nesting[0],"TMP_NAME","$writer");Opal.const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$($nesting,"TMP_NAME")));Opal.const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$($nesting,"GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$($nesting,"GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1))));Opal.def(self,"$on_send",$ExplicitWriterReturn_on_send$2=function $$on_send(node){var $a,$iter=$ExplicitWriterReturn_on_send$2.$$p,$yield=$iter||nil,self=this,recv=nil,method_name=nil,args=nil,set_args_node=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ExplicitWriterReturn_on_send$2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(self.in_masgn)){return $send(self,Opal.find_super_dispatcher(self,"on_send",$ExplicitWriterReturn_on_send$2,false),$zuper,$iter)}$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;if($truthy($truthy($a=method_name.$to_s()["$=~"](new RegExp(""+$$($nesting,"REGEXP_START")+"\\w+="+$$($nesting,"REGEXP_END"))))?$a:method_name.$to_s()["$=="]("[]="))){set_args_node=self.$s("lvasgn",$$($nesting,"TMP_NAME"),$send(self,"s",["array"].concat(Opal.to_a(self.$process_all(args)))));return self.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,self.$s("splat",$$($nesting,"GET_ARGS_NODE"))]),$$($nesting,"RETURN_ARGS_NODE"))}else{return $send(self,Opal.find_super_dispatcher(self,"on_send",$ExplicitWriterReturn_on_send$2,false),$zuper,$iter)}},$ExplicitWriterReturn_on_send$2.$$arity=1);return(Opal.def(self,"$on_masgn",$ExplicitWriterReturn_on_masgn$3=function $$on_masgn(node){var $iter=$ExplicitWriterReturn_on_masgn$3.$$p,$yield=$iter||nil,self=this,result=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ExplicitWriterReturn_on_masgn$3.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}self.in_masgn=true;result=$send(self,Opal.find_super_dispatcher(self,"on_masgn",$ExplicitWriterReturn_on_masgn$3,false),$zuper,$iter);self.in_masgn=false;return result},$ExplicitWriterReturn_on_masgn$3.$$arity=1),nil)&&"on_masgn"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$range=Opal.range,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$=~","$!","$valid_name?","$class","$to_sym","$valid_ivar_name?","$[]","$to_s","$updated","$fix_var_name","$fix_ivar_name"]);self.$require("opal/rewriters/base");self.$require("opal/regexp_anchors");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords");var $nesting=[self].concat($parent_nesting),$JsReservedWords_valid_name$ques$1,$JsReservedWords_valid_ivar_name$ques$2,$JsReservedWords_fix_var_name$3,$JsReservedWords_fix_ivar_name$4,$JsReservedWords_on_lvar$5,$JsReservedWords_on_lvasgn$6,$JsReservedWords_on_ivar$7,$JsReservedWords_on_ivasgn$8,$JsReservedWords_on_restarg$9,$JsReservedWords_on_argument$10;Opal.const_set($nesting[0],"ES51_RESERVED_WORD",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)"+$$($nesting,"REGEXP_END")));Opal.const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)"+$$($nesting,"REGEXP_END")));Opal.const_set($nesting[0],"PROTO_SPECIAL_PROPS",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)"+$$($nesting,"REGEXP_END")));Opal.const_set($nesting[0],"PROTO_SPECIAL_METHODS",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:hasOwnProperty|valueOf)"+$$($nesting,"REGEXP_END")));Opal.const_set($nesting[0],"IMMUTABLE_PROPS",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:NaN|Infinity|undefined)"+$$($nesting,"REGEXP_END")));Opal.const_set($nesting[0],"BASIC_IDENTIFIER_RULES",new RegExp(""+$$($nesting,"REGEXP_START")+"[$_a-z][$_a-z\\d]*"+$$($nesting,"REGEXP_END"),"i"));Opal.const_set($nesting[0],"RESERVED_FUNCTION_NAMES",new RegExp(""+$$($nesting,"REGEXP_START")+"(?:Array)"+$$($nesting,"REGEXP_END")));Opal.defs(self,"$valid_name?",$JsReservedWords_valid_name$ques$1=function(name){var $a,$b,$c,self=this;return $truthy($a=$$($nesting,"BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($b=$truthy($c=$$($nesting,"ES51_RESERVED_WORD")["$=~"](name))?$c:$$($nesting,"ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$b:$$($nesting,"IMMUTABLE_PROPS")["$=~"](name))["$!"]():$a},$JsReservedWords_valid_name$ques$1.$$arity=1);Opal.defs(self,"$valid_ivar_name?",$JsReservedWords_valid_ivar_name$ques$2=function(name){var $a,self=this;return($truthy($a=$$($nesting,"PROTO_SPECIAL_PROPS")["$=~"](name))?$a:$$($nesting,"PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()},$JsReservedWords_valid_ivar_name$ques$2.$$arity=1);Opal.def(self,"$fix_var_name",$JsReservedWords_fix_var_name$3=function $$fix_var_name(name){var self=this;if($truthy(self.$class()["$valid_name?"](name))){return name}else{return(""+name+"$").$to_sym()}},$JsReservedWords_fix_var_name$3.$$arity=1);Opal.def(self,"$fix_ivar_name",$JsReservedWords_fix_ivar_name$4=function $$fix_ivar_name(name){var self=this;if($truthy(self.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,false))))){return name}else{return(""+name+"$").$to_sym()}},$JsReservedWords_fix_ivar_name$4.$$arity=1);Opal.def(self,"$on_lvar",$JsReservedWords_on_lvar$5=function $$on_lvar(node){var $a,$iter=$JsReservedWords_on_lvar$5.$$p,$yield=$iter||nil,self=this,name=nil,_=nil;if($iter)$JsReservedWords_on_lvar$5.$$p=null;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;node=node.$updated(nil,[self.$fix_var_name(name)]);return $send(self,Opal.find_super_dispatcher(self,"on_lvar",$JsReservedWords_on_lvar$5,false),[node],null)},$JsReservedWords_on_lvar$5.$$arity=1);Opal.def(self,"$on_lvasgn",$JsReservedWords_on_lvasgn$6=function $$on_lvasgn(node){var $a,$iter=$JsReservedWords_on_lvasgn$6.$$p,$yield=$iter||nil,self=this,name=nil,value=nil;if($iter)$JsReservedWords_on_lvasgn$6.$$p=null;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$a;node=function(){if($truthy(value)){return node.$updated(nil,[self.$fix_var_name(name),value])}else{return node.$updated(nil,[self.$fix_var_name(name)])}return nil}();return $send(self,Opal.find_super_dispatcher(self,"on_lvasgn",$JsReservedWords_on_lvasgn$6,false),[node],null)},$JsReservedWords_on_lvasgn$6.$$arity=1);Opal.def(self,"$on_ivar",$JsReservedWords_on_ivar$7=function $$on_ivar(node){var $a,$iter=$JsReservedWords_on_ivar$7.$$p,$yield=$iter||nil,self=this,name=nil,_=nil;if($iter)$JsReservedWords_on_ivar$7.$$p=null;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;node=node.$updated(nil,[self.$fix_ivar_name(name)]);return $send(self,Opal.find_super_dispatcher(self,"on_ivar",$JsReservedWords_on_ivar$7,false),[node],null)},$JsReservedWords_on_ivar$7.$$arity=1);Opal.def(self,"$on_ivasgn",$JsReservedWords_on_ivasgn$8=function $$on_ivasgn(node){var $a,$iter=$JsReservedWords_on_ivasgn$8.$$p,$yield=$iter||nil,self=this,name=nil,value=nil;if($iter)$JsReservedWords_on_ivasgn$8.$$p=null;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$a;node=function(){if($truthy(value)){return node.$updated(nil,[self.$fix_ivar_name(name),value])}else{return node.$updated(nil,[self.$fix_ivar_name(name)])}return nil}();return $send(self,Opal.find_super_dispatcher(self,"on_ivasgn",$JsReservedWords_on_ivasgn$8,false),[node],null)},$JsReservedWords_on_ivasgn$8.$$arity=1);Opal.def(self,"$on_restarg",$JsReservedWords_on_restarg$9=function $$on_restarg(node){var $a,self=this,name=nil,_=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(name)){node=node.$updated(nil,[self.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}return node},$JsReservedWords_on_restarg$9.$$arity=1);return(Opal.def(self,"$on_argument",$JsReservedWords_on_argument$10=function $$on_argument(node){var $a,$iter=$JsReservedWords_on_argument$10.$$p,$yield=$iter||nil,self=this,name=nil,value=nil,fixed_name=nil,new_children=nil;if($iter)$JsReservedWords_on_argument$10.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_argument",$JsReservedWords_on_argument$10,false),[node],null);$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$a;fixed_name=self.$fix_var_name(name);new_children=function(){if($truthy(value)){return[fixed_name,value]}else{return[fixed_name]}return nil}();return node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))},$JsReservedWords_on_argument$10.$$arity=1),nil)&&"on_argument"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$s","$updated","$+","$children"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BlockToIter");var $nesting=[self].concat($parent_nesting),$BlockToIter_on_block$1;return(Opal.def(self,"$on_block",$BlockToIter_on_block$1=function $$on_block(node){var $a,$iter=$BlockToIter_on_block$1.$$p,$yield=$iter||nil,self=this,recvr=nil,args=nil,body=nil,iter_node=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$BlockToIter_on_block$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$a=[].concat(Opal.to_a($send(self,Opal.find_super_dispatcher(self,"on_block",$BlockToIter_on_block$1,false),$zuper,$iter))),recvr=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;iter_node=self.$s("iter",args,body);return recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node]))},$BlockToIter_on_block$1.$$arity=1),nil)&&"on_block"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$==","$type","$===","$!=","$size","$error","$first","$to_js_attr_call","$to_js_attr_assign_call","$to_native_js_call","$s"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DotJsSyntax");var $nesting=[self].concat($parent_nesting),$DotJsSyntax_on_send$1,$DotJsSyntax_to_native_js_call$2,$DotJsSyntax_to_js_attr_call$3,$DotJsSyntax_to_js_attr_assign_call$4;Opal.def(self,"$on_send",$DotJsSyntax_on_send$1=function $$on_send(node){var $a,$iter=$DotJsSyntax_on_send$1.$$p,$yield=$iter||nil,self=this,recv=nil,meth=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,_=nil,$case=nil,property=nil,value=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$DotJsSyntax_on_send$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;if($truthy($truthy($a=recv)?recv.$type()["$=="]("send"):$a)){$a=[].concat(Opal.to_a(recv)),recv_of_recv=$a[0]==null?nil:$a[0],meth_of_recv=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],$a;if(meth_of_recv["$=="]("JS")){$case=meth;if("[]"["$==="]($case)){if($truthy(args.$size()["$!="](1))){self.$error(".JS[:property] syntax supports only one argument")}property=args.$first();node=self.$to_js_attr_call(recv_of_recv,property)}else if("[]="["$==="]($case)){if($truthy(args.$size()["$!="](2))){self.$error(".JS[:property]= syntax supports only two arguments")}$a=[].concat(Opal.to_a(args)),property=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$a;node=self.$to_js_attr_assign_call(recv_of_recv,property,value)}else{node=self.$to_native_js_call(recv_of_recv,meth,args)}return $send(self,Opal.find_super_dispatcher(self,"on_send",$DotJsSyntax_on_send$1,false),[node],null)}else{return $send(self,Opal.find_super_dispatcher(self,"on_send",$DotJsSyntax_on_send$1,false),$zuper,$iter)}}else{return $send(self,Opal.find_super_dispatcher(self,"on_send",$DotJsSyntax_on_send$1,false),$zuper,$iter)}},$DotJsSyntax_on_send$1.$$arity=1);Opal.def(self,"$to_native_js_call",$DotJsSyntax_to_native_js_call$2=function $$to_native_js_call(recv,meth,args){var self=this;return $send(self,"s",["jscall",recv,meth].concat(Opal.to_a(args)))},$DotJsSyntax_to_native_js_call$2.$$arity=3);Opal.def(self,"$to_js_attr_call",$DotJsSyntax_to_js_attr_call$3=function $$to_js_attr_call(recv,property){var self=this;return self.$s("jsattr",recv,property)},$DotJsSyntax_to_js_attr_call$3.$$arity=2);return(Opal.def(self,"$to_js_attr_assign_call",$DotJsSyntax_to_js_attr_assign_call$4=function $$to_js_attr_assign_call(recv,property,value){var self=this;return self.$s("jsattrasgn",recv,property,value)},$DotJsSyntax_to_js_attr_assign_call$4.$$arity=3),nil)&&"to_js_attr_assign_call"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$lambda=Opal.lambda,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$+","$updated","$s","$==","$[]","$type","$new_temp","$freeze","$call","$fetch","$error","$process","$include?"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment");var $nesting=[self].concat($parent_nesting),$LogicalOperatorAssignment_reset_tmp_counter$excl$1,$LogicalOperatorAssignment_new_temp$2,$LogicalOperatorAssignment$3,$LogicalOperatorAssignment_on_or_asgn$7,$LogicalOperatorAssignment_on_and_asgn$9,$LogicalOperatorAssignment_on_defined$ques$11;Opal.defs(self,"$reset_tmp_counter!",$LogicalOperatorAssignment_reset_tmp_counter$excl$1=function(){var self=this;return Opal.class_variable_set($nesting[0],"@@counter",0)},$LogicalOperatorAssignment_reset_tmp_counter$excl$1.$$arity=0);Opal.defs(self,"$new_temp",$LogicalOperatorAssignment_new_temp$2=function $$new_temp(){var $a,$b,self=this;Opal.class_variable_set($nesting[0],"@@counter",$truthy($a=($b=$nesting[0].$$cvars["@@counter"])==null?nil:$b)?$a:0);Opal.class_variable_set($nesting[0],"@@counter",$rb_plus(($a=$nesting[0].$$cvars["@@counter"])==null?nil:$a,1));return""+"$logical_op_recvr_tmp_"+(($a=$nesting[0].$$cvars["@@counter"])==null?nil:$a)},$LogicalOperatorAssignment_new_temp$2.$$arity=0);Opal.const_set($nesting[0],"GET_SET",$lambda(($LogicalOperatorAssignment$3=function(get_type,set_type){var self=$LogicalOperatorAssignment$3.$$s||this,$$4;if(get_type==null){get_type=nil}if(set_type==null){set_type=nil}return $lambda(($$4=function(lhs,rhs,root_type){var self=$$4.$$s||this,$a,get_node=nil,condition_node=nil,defined_node=nil;if(lhs==null){lhs=nil}if(rhs==null){rhs=nil}if(root_type==null){root_type=nil}get_node=lhs.$updated(get_type);condition_node=self.$s(root_type,get_node,rhs);if($truthy(($a=get_type["$=="]("const"))?root_type["$=="]("or"):get_type["$=="]("const"))){defined_node=self.$s("defined?",get_node);condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)}return lhs.$updated(set_type,[].concat(Opal.to_a(lhs)).concat([condition_node]))},$$4.$$s=self,$$4.$$arity=3,$$4))},$LogicalOperatorAssignment$3.$$s=self,$LogicalOperatorAssignment$3.$$arity=2,$LogicalOperatorAssignment$3)));Opal.const_set($nesting[0],"LocalVariableHandler",$$($nesting,"GET_SET")["$[]"]("lvar","lvasgn"));Opal.const_set($nesting[0],"InstanceVariableHandler",$$($nesting,"GET_SET")["$[]"]("ivar","ivasgn"));Opal.const_set($nesting[0],"ConstantHandler",$$($nesting,"GET_SET")["$[]"]("const","casgn"));Opal.const_set($nesting[0],"GlobalVariableHandler",$$($nesting,"GET_SET")["$[]"]("gvar","gvasgn"));Opal.const_set($nesting[0],"ClassVariableHandler",$$($nesting,"GET_SET")["$[]"]("cvar","cvasgn"));(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SendHandler");var $nesting=[self].concat($parent_nesting),$SendHandler_call$5;return(Opal.defs(self,"$call",$SendHandler_call$5=function $$call(lhs,rhs,root_type){var $a,self=this,recvr=nil,reader_method=nil,args=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil,call_reader=nil,call_writer=nil,get_or_set=nil;$a=[].concat(Opal.to_a(lhs)),recvr=$a[0]==null?nil:$a[0],reader_method=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;if($truthy($truthy($a=recvr)?recvr.$type()["$=="]("send"):$a)){recvr_tmp=self.$new_temp();cache_recvr=self.$s("lvasgn",recvr_tmp,recvr);recvr=self.$s("js_tmp",recvr_tmp)}writer_method=""+reader_method+"=";call_reader=lhs.$updated("send",[recvr,reader_method].concat(Opal.to_a(args)));call_writer=lhs.$updated("send",[recvr,writer_method].concat(Opal.to_a(args)).concat([rhs]));get_or_set=self.$s(root_type,call_reader,call_writer);if($truthy(cache_recvr)){return self.$s("begin",cache_recvr,get_or_set)}else{return get_or_set}},$SendHandler_call$5.$$arity=3),nil)&&"call"})($nesting[0],self,$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConditionalSendHandler");var $nesting=[self].concat($parent_nesting),$ConditionalSendHandler_call$6;return(Opal.defs(self,"$call",$ConditionalSendHandler_call$6=function $$call(lhs,rhs,root_type){var $a,self=this,recvr=nil,meth=nil,args=nil,recvr_tmp=nil,cache_recvr=nil,recvr_is_nil=nil,plain_send=nil,plain_or_asgn=nil;root_type=""+root_type+"_asgn";$a=[].concat(Opal.to_a(lhs)),recvr=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;recvr_tmp=self.$new_temp();cache_recvr=self.$s("lvasgn",recvr_tmp,recvr);recvr=self.$s("js_tmp",recvr_tmp);recvr_is_nil=self.$s("send",recvr,"nil?");plain_send=lhs.$updated("send",[recvr,meth].concat(Opal.to_a(args)));plain_or_asgn=self.$s(root_type,plain_send,rhs);return self.$s("begin",cache_recvr,self.$s("if",recvr_is_nil,self.$s("nil"),plain_or_asgn))},$ConditionalSendHandler_call$6.$$arity=3),nil)&&"call"})($nesting[0],self,$nesting);Opal.const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$($nesting,"LocalVariableHandler"),ivasgn:$$($nesting,"InstanceVariableHandler"),casgn:$$($nesting,"ConstantHandler"),gvasgn:$$($nesting,"GlobalVariableHandler"),cvasgn:$$($nesting,"ClassVariableHandler"),send:$$($nesting,"SendHandler"),csend:$$($nesting,"ConditionalSendHandler")}).$freeze());Opal.def(self,"$on_or_asgn",$LogicalOperatorAssignment_on_or_asgn$7=function $$on_or_asgn(node){var $a,$$8,self=this,lhs=nil,rhs=nil,result=nil;$a=[].concat(Opal.to_a(node)),lhs=$a[0]==null?nil:$a[0],rhs=$a[1]==null?nil:$a[1],$a;result=$send($$($nesting,"HANDLERS"),"fetch",[lhs.$type()],($$8=function(){var self=$$8.$$s||this;return self.$error(""+"cannot handle LHS type: "+lhs.$type())},$$8.$$s=self,$$8.$$arity=0,$$8)).$call(lhs,rhs,"or");return self.$process(result)},$LogicalOperatorAssignment_on_or_asgn$7.$$arity=1);Opal.def(self,"$on_and_asgn",$LogicalOperatorAssignment_on_and_asgn$9=function $$on_and_asgn(node){var $a,$$10,self=this,lhs=nil,rhs=nil,result=nil;$a=[].concat(Opal.to_a(node)),lhs=$a[0]==null?nil:$a[0],rhs=$a[1]==null?nil:$a[1],$a;result=$send($$($nesting,"HANDLERS"),"fetch",[lhs.$type()],($$10=function(){var self=$$10.$$s||this;return self.$error(""+"cannot handle LHS type: "+lhs.$type())},$$10.$$s=self,$$10.$$arity=0,$$10)).$call(lhs,rhs,"and");return self.$process(result)},$LogicalOperatorAssignment_on_and_asgn$9.$$arity=1);Opal.const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment"));return(Opal.def(self,"$on_defined?",$LogicalOperatorAssignment_on_defined$ques$11=function(node){var $a,$iter=$LogicalOperatorAssignment_on_defined$ques$11.$$p,$yield=$iter||nil,self=this,inner=nil,_=nil;if($iter)$LogicalOperatorAssignment_on_defined$ques$11.$$p=null;$a=[].concat(Opal.to_a(node)),inner=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))){return $$($nesting,"ASSIGNMENT_STRING_NODE")}else{return $send(self,Opal.find_super_dispatcher(self,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$11,false),[node],null)}},$LogicalOperatorAssignment_on_defined$ques$11.$$arity=1),nil)&&"on_defined?"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$lambda=Opal.lambda,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$+","$updated","$s","$[]","$==","$type","$new_temp","$freeze","$call","$fetch","$error","$process"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment");var $nesting=[self].concat($parent_nesting),$BinaryOperatorAssignment_reset_tmp_counter$excl$1,$BinaryOperatorAssignment_new_temp$2,$BinaryOperatorAssignment$3,$BinaryOperatorAssignment_on_op_asgn$7,$BinaryOperatorAssignment_on_defined$ques$9;Opal.defs(self,"$reset_tmp_counter!",$BinaryOperatorAssignment_reset_tmp_counter$excl$1=function(){var self=this;return Opal.class_variable_set($nesting[0],"@@counter",0)},$BinaryOperatorAssignment_reset_tmp_counter$excl$1.$$arity=0);Opal.defs(self,"$new_temp",$BinaryOperatorAssignment_new_temp$2=function $$new_temp(){var $a,$b,self=this;Opal.class_variable_set($nesting[0],"@@counter",$truthy($a=($b=$nesting[0].$$cvars["@@counter"])==null?nil:$b)?$a:0);Opal.class_variable_set($nesting[0],"@@counter",$rb_plus(($a=$nesting[0].$$cvars["@@counter"])==null?nil:$a,1));return""+"$binary_op_recvr_tmp_"+(($a=$nesting[0].$$cvars["@@counter"])==null?nil:$a)},$BinaryOperatorAssignment_new_temp$2.$$arity=0);Opal.const_set($nesting[0],"GET_SET",$lambda(($BinaryOperatorAssignment$3=function(get_type,set_type){var self=$BinaryOperatorAssignment$3.$$s||this,$$4;if(get_type==null){get_type=nil}if(set_type==null){set_type=nil}return $lambda(($$4=function(lhs,operation,rhs){var self=$$4.$$s||this,get_node=nil,set_node=nil;if(lhs==null){lhs=nil}if(operation==null){operation=nil}if(rhs==null){rhs=nil}get_node=lhs.$updated(get_type);set_node=self.$s("send",get_node,operation,rhs);return lhs.$updated(set_type,[].concat(Opal.to_a(lhs)).concat([set_node]))},$$4.$$s=self,$$4.$$arity=3,$$4))},$BinaryOperatorAssignment$3.$$s=self,$BinaryOperatorAssignment$3.$$arity=2,$BinaryOperatorAssignment$3)));Opal.const_set($nesting[0],"LocalVariableHandler",$$($nesting,"GET_SET")["$[]"]("lvar","lvasgn"));Opal.const_set($nesting[0],"InstanceVariableHandler",$$($nesting,"GET_SET")["$[]"]("ivar","ivasgn"));Opal.const_set($nesting[0],"ConstantHandler",$$($nesting,"GET_SET")["$[]"]("const","casgn"));Opal.const_set($nesting[0],"GlobalVariableHandler",$$($nesting,"GET_SET")["$[]"]("gvar","gvasgn"));Opal.const_set($nesting[0],"ClassVariableHandler",$$($nesting,"GET_SET")["$[]"]("cvar","cvasgn"));(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SendHandler");var $nesting=[self].concat($parent_nesting),$SendHandler_call$5;return(Opal.defs(self,"$call",$SendHandler_call$5=function $$call(lhs,operation,rhs){var $a,self=this,recvr=nil,reader_method=nil,args=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil,call_reader=nil,call_op=nil,call_writer=nil;$a=[].concat(Opal.to_a(lhs)),recvr=$a[0]==null?nil:$a[0],reader_method=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;if($truthy($truthy($a=recvr)?recvr.$type()["$=="]("send"):$a)){recvr_tmp=self.$new_temp();cache_recvr=self.$s("lvasgn",recvr_tmp,recvr);recvr=self.$s("js_tmp",recvr_tmp)}writer_method=""+reader_method+"=";call_reader=lhs.$updated("send",[recvr,reader_method].concat(Opal.to_a(args)));call_op=self.$s("send",call_reader,operation,rhs);call_writer=lhs.$updated("send",[recvr,writer_method].concat(Opal.to_a(args)).concat([call_op]));if($truthy(cache_recvr)){return self.$s("begin",cache_recvr,call_writer)}else{return call_writer}},$SendHandler_call$5.$$arity=3),nil)&&"call"})($nesting[0],self,$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConditionalSendHandler");var $nesting=[self].concat($parent_nesting),$ConditionalSendHandler_call$6;return(Opal.defs(self,"$call",$ConditionalSendHandler_call$6=function $$call(lhs,operation,rhs){var $a,self=this,recvr=nil,meth=nil,args=nil,recvr_tmp=nil,cache_recvr=nil,recvr_is_nil=nil,plain_send=nil,plain_op_asgn=nil;$a=[].concat(Opal.to_a(lhs)),recvr=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;recvr_tmp=self.$new_temp();cache_recvr=self.$s("lvasgn",recvr_tmp,recvr);recvr=self.$s("js_tmp",recvr_tmp);recvr_is_nil=self.$s("send",recvr,"nil?");plain_send=lhs.$updated("send",[recvr,meth].concat(Opal.to_a(args)));plain_op_asgn=self.$s("op_asgn",plain_send,operation,rhs);return self.$s("begin",cache_recvr,self.$s("if",recvr_is_nil,self.$s("nil"),plain_op_asgn))},$ConditionalSendHandler_call$6.$$arity=3),nil)&&"call"})($nesting[0],self,$nesting);Opal.const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$($nesting,"LocalVariableHandler"),ivasgn:$$($nesting,"InstanceVariableHandler"),casgn:$$($nesting,"ConstantHandler"),gvasgn:$$($nesting,"GlobalVariableHandler"),cvasgn:$$($nesting,"ClassVariableHandler"),send:$$($nesting,"SendHandler"),csend:$$($nesting,"ConditionalSendHandler")}).$freeze());Opal.def(self,"$on_op_asgn",$BinaryOperatorAssignment_on_op_asgn$7=function $$on_op_asgn(node){var $a,$$8,self=this,lhs=nil,op=nil,rhs=nil,result=nil;$a=[].concat(Opal.to_a(node)),lhs=$a[0]==null?nil:$a[0],op=$a[1]==null?nil:$a[1],rhs=$a[2]==null?nil:$a[2],$a;result=$send($$($nesting,"HANDLERS"),"fetch",[lhs.$type()],($$8=function(){var self=$$8.$$s||this;return self.$error(""+"cannot handle LHS type: "+lhs.$type())},$$8.$$s=self,$$8.$$arity=0,$$8)).$call(lhs,op,rhs);return self.$process(result)},$BinaryOperatorAssignment_on_op_asgn$7.$$arity=1);Opal.const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment"));return(Opal.def(self,"$on_defined?",$BinaryOperatorAssignment_on_defined$ques$9=function(node){var $a,$iter=$BinaryOperatorAssignment_on_defined$ques$9.$$p,$yield=$iter||nil,self=this,inner=nil,_=nil;if($iter)$BinaryOperatorAssignment_on_defined$ques$9.$$p=null;$a=[].concat(Opal.to_a(node)),inner=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if(inner.$type()["$=="]("op_asgn")){return $$($nesting,"ASSIGNMENT_STRING_NODE")}else{return $send(self,Opal.find_super_dispatcher(self,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$9,false),[node],null)}},$BinaryOperatorAssignment_on_defined$ques$9.$$arity=1),nil)&&"on_defined?"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$new","$include?","$type","$<<","$==","$process_regular_node","$updated","$inspect","$warn"]);self.$require("opal/rewriters/base");self.$require("set");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Hashes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter");var $nesting=[self].concat($parent_nesting),$KeyDuplicatesRewriter_initialize$1,$KeyDuplicatesRewriter_on_hash$2,$KeyDuplicatesRewriter_on_pair$3,$KeyDuplicatesRewriter_on_kwsplat$4;self.$$prototype.keys=nil;Opal.def(self,"$initialize",$KeyDuplicatesRewriter_initialize$1=function $$initialize(){var self=this;return self.keys=$$($nesting,"UniqKeysSet").$new()},$KeyDuplicatesRewriter_initialize$1.$$arity=0);Opal.def(self,"$on_hash",$KeyDuplicatesRewriter_on_hash$2=function $$on_hash(node){var $a,$iter=$KeyDuplicatesRewriter_on_hash$2.$$p,$yield=$iter||nil,self=this,previous_keys=nil;if($iter)$KeyDuplicatesRewriter_on_hash$2.$$p=null;return function(){try{$a=[self.keys,$$($nesting,"UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"on_hash",$KeyDuplicatesRewriter_on_hash$2,false),[node],null)}finally{self.keys=previous_keys}}()},$KeyDuplicatesRewriter_on_hash$2.$$arity=1);Opal.def(self,"$on_pair",$KeyDuplicatesRewriter_on_pair$3=function $$on_pair(node){var $a,$iter=$KeyDuplicatesRewriter_on_pair$3.$$p,$yield=$iter||nil,self=this,key=nil,_value=nil;if($iter)$KeyDuplicatesRewriter_on_pair$3.$$p=null;$a=[].concat(Opal.to_a(node)),key=$a[0]==null?nil:$a[0],_value=$a[1]==null?nil:$a[1],$a;if($truthy(["str","sym"]["$include?"](key.$type()))){self.keys["$<<"](key)}return $send(self,Opal.find_super_dispatcher(self,"on_pair",$KeyDuplicatesRewriter_on_pair$3,false),[node],null)},$KeyDuplicatesRewriter_on_pair$3.$$arity=1);Opal.def(self,"$on_kwsplat",$KeyDuplicatesRewriter_on_kwsplat$4=function $$on_kwsplat(node){var $a,self=this,hash=nil,_=nil;$a=[].concat(Opal.to_a(node)),hash=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if(hash.$type()["$=="]("hash")){hash=self.$process_regular_node(hash)}return node.$updated(nil,[hash])},$KeyDuplicatesRewriter_on_kwsplat$4.$$arity=1);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"UniqKeysSet");var $nesting=[self].concat($parent_nesting),$UniqKeysSet_initialize$5,$UniqKeysSet_$lt$lt$6;self.$$prototype.set=nil;Opal.def(self,"$initialize",$UniqKeysSet_initialize$5=function $$initialize(){var self=this;return self.set=$$($nesting,"Set").$new()},$UniqKeysSet_initialize$5.$$arity=0);return(Opal.def(self,"$<<",$UniqKeysSet_$lt$lt$6=function(element){var $a,self=this,key=nil,_=nil;if($truthy(self.set["$include?"](element))){$a=[].concat(Opal.to_a(element)),key=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;key=function(){if(element.$type()["$=="]("str")){return key.$inspect()}else{return""+":"+key}return nil}();return $$($nesting,"Kernel").$warn(""+"warning: key "+key+" is duplicated and overwritten")}else{return self.set["$<<"](element)}},$UniqKeysSet_$lt$lt$6.$$arity=1),nil)&&"<<"}($nesting[0],null,$nesting)})($nesting[0],$$$($$$($$$("::","Opal"),"Rewriters"),"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$updated"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DumpArgs");var $nesting=[self].concat($parent_nesting),$DumpArgs_on_def$1,$DumpArgs_on_defs$2,$DumpArgs_on_iter$3;Opal.def(self,"$on_def",$DumpArgs_on_def$1=function $$on_def(node){var $a,$iter=$DumpArgs_on_def$1.$$p,$yield=$iter||nil,self=this,_mid=nil,args=nil,_body=nil;if($iter)$DumpArgs_on_def$1.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_def",$DumpArgs_on_def$1,false),[node],null);$a=[].concat(Opal.to_a(node)),_mid=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],_body=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))},$DumpArgs_on_def$1.$$arity=1);Opal.def(self,"$on_defs",$DumpArgs_on_defs$2=function $$on_defs(node){var $a,$iter=$DumpArgs_on_defs$2.$$p,$yield=$iter||nil,self=this,_recv=nil,_mid=nil,args=nil,_body=nil;if($iter)$DumpArgs_on_defs$2.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_defs",$DumpArgs_on_defs$2,false),[node],null);$a=[].concat(Opal.to_a(node)),_recv=$a[0]==null?nil:$a[0],_mid=$a[1]==null?nil:$a[1],args=$a[2]==null?nil:$a[2],_body=$a[3]==null?nil:$a[3],$a;return node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))},$DumpArgs_on_defs$2.$$arity=1);return(Opal.def(self,"$on_iter",$DumpArgs_on_iter$3=function $$on_iter(node){var $a,$iter=$DumpArgs_on_iter$3.$$p,$yield=$iter||nil,self=this,args=nil,_body=nil;if($iter)$DumpArgs_on_iter$3.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_iter",$DumpArgs_on_iter$3,false),[node],null);$a=[].concat(Opal.to_a(node)),args=$a[0]==null?nil:$a[0],_body=$a[1]==null?nil:$a[1],$a;return node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))},$DumpArgs_on_iter$3.$$arity=1),nil)&&"on_iter"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$new","$updated","$rewritten","$initialization","$s","$prepend_to_body","$attr_reader","$split!","$+","$each","$children","$==","$type","$new_mlhs_tmp","$process","$<<","$length","$[]","$empty?"]);self.$require("opal/rewriters/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs");var $nesting=[self].concat($parent_nesting),$MlhsArgs_on_def$1,$MlhsArgs_on_defs$2,$MlhsArgs_on_iter$3;Opal.def(self,"$on_def",$MlhsArgs_on_def$1=function $$on_def(node){var $a,$iter=$MlhsArgs_on_def$1.$$p,$yield=$iter||nil,self=this,mid=nil,args=nil,body=nil,arguments$=nil;if($iter)$MlhsArgs_on_def$1.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_def",$MlhsArgs_on_def$1,false),[node],null);$a=[].concat(Opal.to_a(node)),mid=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;arguments$=$$($nesting,"Arguments").$new(args);args=args.$updated(nil,arguments$.$rewritten());if($truthy(arguments$.$initialization())){body=$truthy($a=body)?$a:self.$s("nil");body=self.$prepend_to_body(body,arguments$.$initialization())}return node.$updated(nil,[mid,args,body])},$MlhsArgs_on_def$1.$$arity=1);Opal.def(self,"$on_defs",$MlhsArgs_on_defs$2=function $$on_defs(node){var $a,$iter=$MlhsArgs_on_defs$2.$$p,$yield=$iter||nil,self=this,recv=nil,mid=nil,args=nil,body=nil,arguments$=nil;if($iter)$MlhsArgs_on_defs$2.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_defs",$MlhsArgs_on_defs$2,false),[node],null);$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],mid=$a[1]==null?nil:$a[1],args=$a[2]==null?nil:$a[2],body=$a[3]==null?nil:$a[3],$a;arguments$=$$($nesting,"Arguments").$new(args);args=args.$updated(nil,arguments$.$rewritten());if($truthy(arguments$.$initialization())){body=$truthy($a=body)?$a:self.$s("nil");body=self.$prepend_to_body(body,arguments$.$initialization())}return node.$updated(nil,[recv,mid,args,body])},$MlhsArgs_on_defs$2.$$arity=1);Opal.def(self,"$on_iter",$MlhsArgs_on_iter$3=function $$on_iter(node){var $a,$iter=$MlhsArgs_on_iter$3.$$p,$yield=$iter||nil,self=this,args=nil,body=nil,arguments$=nil;if($iter)$MlhsArgs_on_iter$3.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_iter",$MlhsArgs_on_iter$3,false),[node],null);$a=[].concat(Opal.to_a(node)),args=$a[0]==null?nil:$a[0],body=$a[1]==null?nil:$a[1],$a;arguments$=$$($nesting,"Arguments").$new(args);args=args.$updated(nil,arguments$.$rewritten());if($truthy(arguments$.$initialization())){body=$truthy($a=body)?$a:self.$s("nil");body=self.$prepend_to_body(body,arguments$.$initialization())}return node.$updated(nil,[args,body])},$MlhsArgs_on_iter$3.$$arity=1);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments");var $nesting=[self].concat($parent_nesting),$Arguments_initialize$4,$Arguments_reset_tmp_counter$excl$5,$Arguments_new_mlhs_tmp$6,$Arguments_split$excl$7;self.$$prototype.counter=self.$$prototype.args=self.$$prototype.initialization=nil;self.$attr_reader("rewritten","initialization");Opal.def(self,"$initialize",$Arguments_initialize$4=function $$initialize(args){var self=this;self.args=args;self.rewritten=[];self.initialization=[];self.rewriter=$$($nesting,"MlhsRewriter").$new();return self["$split!"]()},$Arguments_initialize$4.$$arity=1);Opal.def(self,"$reset_tmp_counter!",$Arguments_reset_tmp_counter$excl$5=function(){var self=this;return self.counter=0},$Arguments_reset_tmp_counter$excl$5.$$arity=0);Opal.def(self,"$new_mlhs_tmp",$Arguments_new_mlhs_tmp$6=function $$new_mlhs_tmp(){var $a,self=this;self.counter=$truthy($a=self.counter)?$a:0;self.counter=$rb_plus(self.counter,1);return""+"$mlhs_tmp"+self.counter},$Arguments_new_mlhs_tmp$6.$$arity=0);return(Opal.def(self,"$split!",$Arguments_split$excl$7=function(){var $$8,self=this;$send(self.args.$children(),"each",[],($$8=function(arg){var self=$$8.$$s||this,var_name=nil,rhs=nil,mlhs=nil;if(self.rewriter==null)self.rewriter=nil;if(self.initialization==null)self.initialization=nil;if(self.rewritten==null)self.rewritten=nil;if(arg==null){arg=nil}if(arg.$type()["$=="]("mlhs")){var_name=self.$new_mlhs_tmp();rhs=self.$s("lvar",var_name);mlhs=self.rewriter.$process(arg);self.initialization["$<<"](self.$s("masgn",mlhs,rhs));return self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))}else{return self.rewritten["$<<"](arg)}},$$8.$$s=self,$$8.$$arity=1,$$8));if(self.initialization.$length()["$=="](1)){return self.initialization=self.initialization["$[]"](0)}else if($truthy(self.initialization["$empty?"]())){return self.initialization=nil}else{return self.initialization=$send(self,"s",["begin"].concat(Opal.to_a(self.initialization)))}},$Arguments_split$excl$7.$$arity=0),nil)&&"split!"})($nesting[0],$$($nesting,"Base"),$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsRewriter");var $nesting=[self].concat($parent_nesting),$MlhsRewriter_on_arg$9,$MlhsRewriter_on_restarg$10;Opal.def(self,"$on_arg",$MlhsRewriter_on_arg$9=function $$on_arg(node){var self=this;return node.$updated("lvasgn")},$MlhsRewriter_on_arg$9.$$arity=1);return(Opal.def(self,"$on_restarg",$MlhsRewriter_on_restarg$10=function $$on_restarg(node){var self=this,name=nil;name=node.$children()["$[]"](0);if($truthy(name)){return self.$s("splat",node.$updated("lvasgn"))}else{return self.$s("splat")}},$MlhsRewriter_on_restarg$10.$$arity=1),nil)&&"on_restarg"}($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/arguments"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$each","$type","$===","$<<","$any?","$raise","$!","$nil?","$has_any_kwargs?","$can_inline_kwargs?","$empty?"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments");var $nesting=[self].concat($parent_nesting),$Arguments_initialize$1,$Arguments_has_post_args$ques$3,$Arguments_has_any_kwargs$ques$4,$Arguments_can_inline_kwargs$ques$5;self.$$prototype.restarg=self.$$prototype.postargs=self.$$prototype.kwargs=self.$$prototype.kwoptargs=self.$$prototype.kwrestarg=self.$$prototype.optargs=nil;self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","shadowargs","blockarg");Opal.def(self,"$initialize",$Arguments_initialize$1=function $$initialize(args){var $$2,self=this;self.args=[];self.optargs=[];self.restarg=nil;self.postargs=[];self.kwargs=[];self.kwoptargs=[];self.kwrestarg=nil;self.shadowargs=[];self.blockarg=nil;return $send(args,"each",[],($$2=function(arg){var self=$$2.$$s||this,$a,$case=nil;if(self.restarg==null)self.restarg=nil;if(self.optargs==null)self.optargs=nil;if(self.postargs==null)self.postargs=nil;if(self.args==null)self.args=nil;if(self.kwargs==null)self.kwargs=nil;if(self.kwoptargs==null)self.kwoptargs=nil;if(self.shadowargs==null)self.shadowargs=nil;if(arg==null){arg=nil}return function(){$case=arg.$type();if("arg"["$==="]($case)||"mlhs"["$==="]($case)){return function(){if($truthy($truthy($a=self.restarg)?$a:self.optargs["$any?"]())){return self.postargs}else{return self.args}return nil}()["$<<"](arg)}else if("optarg"["$==="]($case)){return self.optargs["$<<"](arg)}else if("restarg"["$==="]($case)){return self.restarg=arg}else if("kwarg"["$==="]($case)){return self.kwargs["$<<"](arg)}else if("kwoptarg"["$==="]($case)){return self.kwoptargs["$<<"](arg)}else if("kwrestarg"["$==="]($case)){return self.kwrestarg=arg}else if("shadowarg"["$==="]($case)){return self.shadowargs["$<<"](arg)}else if("blockarg"["$==="]($case)){return self.blockarg=arg}else{return self.$raise(""+"Unsupported arg type "+arg.$type())}}()},$$2.$$s=self,$$2.$$arity=1,$$2))},$Arguments_initialize$1.$$arity=1);Opal.def(self,"$has_post_args?",$Arguments_has_post_args$ques$3=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.restarg["$nil?"]()["$!"]())?$b:self.postargs["$any?"]())?$a:$truthy($b=self["$has_any_kwargs?"]())?self["$can_inline_kwargs?"]()["$!"]():$b},$Arguments_has_post_args$ques$3.$$arity=0);Opal.def(self,"$has_any_kwargs?",$Arguments_has_any_kwargs$ques$4=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.kwargs["$any?"]())?$b:self.kwoptargs["$any?"]())?$a:self.kwrestarg["$nil?"]()["$!"]()},$Arguments_has_any_kwargs$ques$4.$$arity=0);return(Opal.def(self,"$can_inline_kwargs?",$Arguments_can_inline_kwargs$ques$5=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.optargs["$empty?"]())?self.restarg["$nil?"]():$b)?self.postargs["$empty?"]():$a},$Arguments_can_inline_kwargs$ques$5.$$arity=0),nil)&&"can_inline_kwargs?"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$s","$new","$updated","$inline","$prepend_to_body","$initialization","$attr_reader","$freeze","$children","$each","$send","$any?","$blockarg","$<<","$shadowargs","$args","$==","$[]","$has_post_args?","$length","$has_any_kwargs?","$can_inline_kwargs?","$kwargs","$kwoptargs","$kwrestarg","$postargs","$optargs","$args_to_keep","$restarg"]);self.$require("opal/rewriters/base");self.$require("opal/rewriters/arguments");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs");var $nesting=[self].concat($parent_nesting),$InlineArgs_on_def$1,$InlineArgs_on_defs$2,$InlineArgs_on_iter$3;Opal.def(self,"$on_def",$InlineArgs_on_def$1=function $$on_def(node){var $a,$iter=$InlineArgs_on_def$1.$$p,$yield=$iter||nil,self=this,mid=nil,args=nil,body=nil,initializer=nil,inline_args=nil;if($iter)$InlineArgs_on_def$1.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_def",$InlineArgs_on_def$1,false),[node],null);$a=[].concat(Opal.to_a(node)),mid=$a[0]==null?nil:$a[0],args=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;body=$truthy($a=body)?$a:self.$s("nil");initializer=$$($nesting,"Initializer").$new(args,$hash2(["type"],{type:"def"}));inline_args=args.$updated(nil,initializer.$inline());body=self.$prepend_to_body(body,initializer.$initialization());return node.$updated(nil,[mid,inline_args,body])},$InlineArgs_on_def$1.$$arity=1);Opal.def(self,"$on_defs",$InlineArgs_on_defs$2=function $$on_defs(node){var $a,$iter=$InlineArgs_on_defs$2.$$p,$yield=$iter||nil,self=this,recv=nil,mid=nil,args=nil,body=nil,initializer=nil,inline_args=nil;if($iter)$InlineArgs_on_defs$2.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_defs",$InlineArgs_on_defs$2,false),[node],null);$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],mid=$a[1]==null?nil:$a[1],args=$a[2]==null?nil:$a[2],body=$a[3]==null?nil:$a[3],$a;body=$truthy($a=body)?$a:self.$s("nil");initializer=$$($nesting,"Initializer").$new(args,$hash2(["type"],{type:"defs"}));inline_args=args.$updated(nil,initializer.$inline());body=self.$prepend_to_body(body,initializer.$initialization());return node.$updated(nil,[recv,mid,inline_args,body])},$InlineArgs_on_defs$2.$$arity=1);Opal.def(self,"$on_iter",$InlineArgs_on_iter$3=function $$on_iter(node){var $a,$iter=$InlineArgs_on_iter$3.$$p,$yield=$iter||nil,self=this,args=nil,body=nil,initializer=nil,inline_args=nil;if($iter)$InlineArgs_on_iter$3.$$p=null;node=$send(self,Opal.find_super_dispatcher(self,"on_iter",$InlineArgs_on_iter$3,false),[node],null);$a=[].concat(Opal.to_a(node)),args=$a[0]==null?nil:$a[0],body=$a[1]==null?nil:$a[1],$a;body=$truthy($a=body)?$a:self.$s("nil");initializer=$$($nesting,"Initializer").$new(args,$hash2(["type"],{type:"iter"}));inline_args=args.$updated(nil,initializer.$inline());body=self.$prepend_to_body(body,initializer.$initialization());return node.$updated(nil,[inline_args,body])},$InlineArgs_on_iter$3.$$arity=1);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer");var $nesting=[self].concat($parent_nesting),$Initializer_initialize$4,$Initializer_extract_blockarg$6,$Initializer_initialize_shadowargs$7,$Initializer_extract_args$9,$Initializer_prepare_post_args$11,$Initializer_prepare_kwargs$12,$Initializer_extract_kwargs$13,$Initializer_extract_kwoptargs$15,$Initializer_extract_kwrestarg$17,$Initializer_extract_post_args$18,$Initializer_extract_optargs$20,$Initializer_extract_restarg$22,$Initializer_args_to_keep$23;self.$$prototype.initialization=self.$$prototype.args=self.$$prototype.inline=nil;self.$attr_reader("inline","initialization");Opal.const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze());Opal.def(self,"$initialize",$Initializer_initialize$4=function $$initialize(args,$kwargs){var type,$$5,self=this;if($kwargs==null){$kwargs=$hash2([],{})}else if(!$kwargs.$$is_hash){throw Opal.ArgumentError.$new("expected kwargs")}if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type")){throw Opal.ArgumentError.$new("missing keyword: type")}type=$kwargs.$$smap["type"];self.args=$$($nesting,"Arguments").$new(args.$children());self.inline=[];self.initialization=[];self.type=type;self.underscore_found=false;$send($$($nesting,"STEPS"),"each",[],($$5=function(step){var self=$$5.$$s||this;if(step==null){step=nil}return self.$send(step)},$$5.$$s=self,$$5.$$arity=1,$$5));if($truthy(self.initialization["$any?"]())){return self.initialization=$send(self,"s",["begin"].concat(Opal.to_a(self.initialization)))}else{return self.initialization=nil}},$Initializer_initialize$4.$$arity=2);Opal.def(self,"$extract_blockarg",$Initializer_extract_blockarg$6=function $$extract_blockarg(){var self=this,arg=nil;if($truthy(arg=self.args.$blockarg())){return self.initialization["$<<"](arg.$updated("extract_blockarg"))}else{return nil}},$Initializer_extract_blockarg$6.$$arity=0);Opal.def(self,"$initialize_shadowargs",$Initializer_initialize_shadowargs$7=function $$initialize_shadowargs(){var $$8,self=this;return $send(self.args.$shadowargs(),"each",[],($$8=function(arg){var self=$$8.$$s||this;if(self.initialization==null)self.initialization=nil;if(arg==null){arg=nil}return self.initialization["$<<"](arg.$updated("initialize_shadowarg"))},$$8.$$s=self,$$8.$$arity=1,$$8))},$Initializer_initialize_shadowargs$7.$$arity=0);Opal.def(self,"$extract_args",$Initializer_extract_args$9=function $$extract_args(){var $$10,self=this;return $send(self.args.$args(),"each",[],($$10=function(arg){var self=$$10.$$s||this;if(self.type==null)self.type=nil;if(self.initialization==null)self.initialization=nil;if(self.underscore_found==null)self.underscore_found=nil;if(self.inline==null)self.inline=nil;if(arg==null){arg=nil}if(self.type["$=="]("iter")){self.initialization["$<<"](arg.$updated("initialize_iter_arg"));if(arg.$children()["$[]"](0)["$=="]("_")){if($truthy(self.underscore_found)){arg=self.$s("fake_arg")}self.underscore_found=true}}return self.inline["$<<"](arg)},$$10.$$s=self,$$10.$$arity=1,$$10))},$Initializer_extract_args$9.$$arity=0);Opal.def(self,"$prepare_post_args",$Initializer_prepare_post_args$11=function $$prepare_post_args(){var self=this;if($truthy(self.args["$has_post_args?"]())){return self.initialization["$<<"](self.$s("prepare_post_args",self.args.$args().$length()))}else{return nil}},$Initializer_prepare_post_args$11.$$arity=0);Opal.def(self,"$prepare_kwargs",$Initializer_prepare_kwargs$12=function $$prepare_kwargs(){var self=this;if($truthy(self.args["$has_any_kwargs?"]())){}else{return nil}if($truthy(self.args["$can_inline_kwargs?"]())){self.inline["$<<"](self.$s("arg","$kwargs"))}else{self.initialization["$<<"](self.$s("extract_kwargs"));self.inline["$<<"](self.$s("fake_arg"))}return self.initialization["$<<"](self.$s("ensure_kwargs_are_kwargs"))},$Initializer_prepare_kwargs$12.$$arity=0);Opal.def(self,"$extract_kwargs",$Initializer_extract_kwargs$13=function $$extract_kwargs(){var $$14,self=this;return $send(self.args.$kwargs(),"each",[],($$14=function(arg){var self=$$14.$$s||this;if(self.initialization==null)self.initialization=nil;if(arg==null){arg=nil}return self.initialization["$<<"](arg.$updated("extract_kwarg"))},$$14.$$s=self,$$14.$$arity=1,$$14))},$Initializer_extract_kwargs$13.$$arity=0);Opal.def(self,"$extract_kwoptargs",$Initializer_extract_kwoptargs$15=function $$extract_kwoptargs(){var $$16,self=this;return $send(self.args.$kwoptargs(),"each",[],($$16=function(arg){var self=$$16.$$s||this;if(self.initialization==null)self.initialization=nil;if(arg==null){arg=nil}return self.initialization["$<<"](arg.$updated("extract_kwoptarg"))},$$16.$$s=self,$$16.$$arity=1,$$16))},$Initializer_extract_kwoptargs$15.$$arity=0);Opal.def(self,"$extract_kwrestarg",$Initializer_extract_kwrestarg$17=function $$extract_kwrestarg(){var self=this,arg=nil;if($truthy(arg=self.args.$kwrestarg())){return self.initialization["$<<"](arg.$updated("extract_kwrestarg"))}else{return nil}},$Initializer_extract_kwrestarg$17.$$arity=0);Opal.def(self,"$extract_post_args",$Initializer_extract_post_args$18=function $$extract_post_args(){var $$19,self=this;return $send(self.args.$postargs(),"each",[],($$19=function(arg){var self=$$19.$$s||this;if(self.initialization==null)self.initialization=nil;if(self.inline==null)self.inline=nil;if(arg==null){arg=nil}self.initialization["$<<"](arg.$updated("extract_post_arg"));return self.inline["$<<"](self.$s("fake_arg"))},$$19.$$s=self,$$19.$$arity=1,$$19))},$Initializer_extract_post_args$18.$$arity=0);Opal.def(self,"$extract_optargs",$Initializer_extract_optargs$20=function $$extract_optargs(){var $$21,self=this,has_post_args=nil;has_post_args=self.args["$has_post_args?"]();return $send(self.args.$optargs(),"each",[],($$21=function(arg){var self=$$21.$$s||this,$a,arg_name=nil,default_value=nil;if(self.initialization==null)self.initialization=nil;if(self.inline==null)self.inline=nil;if(arg==null){arg=nil}if($truthy(has_post_args)){$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],default_value=$a[1]==null?nil:$a[1],$a;self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()]));return self.inline["$<<"](self.$s("fake_arg"))}else{self.inline["$<<"](arg.$updated("arg"));return self.initialization["$<<"](arg.$updated("extract_optarg"))}},$$21.$$s=self,$$21.$$arity=1,$$21))},$Initializer_extract_optargs$20.$$arity=0);Opal.def(self,"$extract_restarg",$Initializer_extract_restarg$22=function $$extract_restarg(){var self=this,arg=nil,arg_name=nil;if($truthy(arg=self.args.$restarg())){arg_name=arg.$children()["$[]"](0);self.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,self.$args_to_keep()]));return self.inline["$<<"](self.$s("fake_arg"))}else{return nil}},$Initializer_extract_restarg$22.$$arity=0);return(Opal.def(self,"$args_to_keep",$Initializer_args_to_keep$23=function $$args_to_keep(){var self=this;return self.args.$postargs().$length()},$Initializer_args_to_keep$23.$$arity=0),nil)&&"args_to_keep"}($nesting[0],$$$($$$($$$("::","Opal"),"Rewriters"),"Base"),$nesting)})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$<<","$list","$delete","$use","$disabled?","$class","$each","$new","$process"]);self.$require("opal/rewriters/opal_engine_check");self.$require("opal/rewriters/for_rewriter");self.$require("opal/rewriters/explicit_writer_return");self.$require("opal/rewriters/js_reserved_words");self.$require("opal/rewriters/block_to_iter");self.$require("opal/rewriters/dot_js_syntax");self.$require("opal/rewriters/logical_operator_assignment");self.$require("opal/rewriters/binary_operator_assignment");self.$require("opal/rewriters/hashes/key_duplicates_rewriter");self.$require("opal/rewriters/dump_args");self.$require("opal/rewriters/mlhs_args");self.$require("opal/rewriters/inline_args");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter");var $nesting=[self].concat($parent_nesting),$Rewriter_initialize$6,$Rewriter_process$7;self.$$prototype.sexp=nil;(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$list$1,$use$2,$delete$3,$disable$4,$disabled$ques$5;Opal.def(self,"$list",$list$1=function $$list(){var $a,self=this;if(self.list==null)self.list=nil;return self.list=$truthy($a=self.list)?$a:[]},$list$1.$$arity=0);Opal.def(self,"$use",$use$2=function $$use(rewriter){var self=this;return self.$list()["$<<"](rewriter)},$use$2.$$arity=1);Opal.def(self,"$delete",$delete$3=function(rewriter){var self=this;return self.$list().$delete(rewriter)},$delete$3.$$arity=1);Opal.def(self,"$disable",$disable$4=function $$disable(){var $iter=$disable$4.$$p,$yield=$iter||nil,self=this;if($iter)$disable$4.$$p=null;return function(){try{self.disabled=true;return Opal.yieldX($yield,[])}finally{self.disabled=false}}()},$disable$4.$$arity=0);return(Opal.def(self,"$disabled?",$disabled$ques$5=function(){var $a,self=this;if(self.disabled==null)self.disabled=nil;if($truthy(($a=self["disabled"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.disabled}else{return nil}},$disabled$ques$5.$$arity=0),nil)&&"disabled?"})(Opal.get_singleton_class(self),$nesting);self.$use($$$($$($nesting,"Rewriters"),"OpalEngineCheck"));self.$use($$$($$($nesting,"Rewriters"),"ForRewriter"));self.$use($$$($$($nesting,"Rewriters"),"BlockToIter"));self.$use($$$($$($nesting,"Rewriters"),"DotJsSyntax"));self.$use($$$($$($nesting,"Rewriters"),"JsReservedWords"));self.$use($$$($$($nesting,"Rewriters"),"LogicalOperatorAssignment"));self.$use($$$($$($nesting,"Rewriters"),"BinaryOperatorAssignment"));self.$use($$$($$($nesting,"Rewriters"),"ExplicitWriterReturn"));self.$use($$$($$$($$($nesting,"Rewriters"),"Hashes"),"KeyDuplicatesRewriter"));self.$use($$$($$($nesting,"Rewriters"),"DumpArgs"));self.$use($$$($$($nesting,"Rewriters"),"MlhsArgs"));self.$use($$$($$($nesting,"Rewriters"),"InlineArgs"));Opal.def(self,"$initialize",$Rewriter_initialize$6=function $$initialize(sexp){var self=this;return self.sexp=sexp},$Rewriter_initialize$6.$$arity=1);return(Opal.def(self,"$process",$Rewriter_process$7=function $$process(){var $$8,self=this;if($truthy(self.$class()["$disabled?"]())){return self.sexp}$send(self.$class().$list(),"each",[],($$8=function(rewriter_class){var self=$$8.$$s||this,rewriter=nil;if(self.sexp==null)self.sexp=nil;if(rewriter_class==null){rewriter_class=nil}rewriter=rewriter_class.$new();return self.sexp=rewriter.$process(self.sexp)},$$8.$$s=self,$$8.$$arity=1,$$8));return self.sexp},$Rewriter_process$7.$$arity=0),nil)&&"process"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/parser/source_buffer"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer");var $nesting=[self].concat($parent_nesting),$SourceBuffer_recognize_encoding$1;return(Opal.defs(self,"$recognize_encoding",$SourceBuffer_recognize_encoding$1=function $$recognize_encoding(string){var $a,$iter=$SourceBuffer_recognize_encoding$1.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$SourceBuffer_recognize_encoding$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $truthy($a=$send(self,Opal.find_super_dispatcher(self,"recognize_encoding",$SourceBuffer_recognize_encoding$1,false,self.$$class.$$prototype),$zuper,$iter))?$a:$$$($$($nesting,"Encoding"),"UTF_8")},$SourceBuffer_recognize_encoding$1.$$arity=1),nil)&&"recognize_encoding"})($nesting[0],$$$($$$($$$("::","Parser"),"Source"),"Buffer"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/parser/default_config"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send,$lambda=Opal.lambda,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$all_errors_are_fatal=","$diagnostics","$-","$ignore_warnings=","$diagnostics_consumer","$consumer=","$extend","$!=","$diagnostics_consumer=","$new","$rewrite","$process","$default_parser","$default_parser_class"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Parser");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"DefaultConfig");var $nesting=[self].concat($parent_nesting),$DefaultConfig_included$2,$DefaultConfig_initialize$4,$DefaultConfig_parse$5,$DefaultConfig_rewrite$6;(function($base,$parent_nesting){var self=$module($base,"ClassMethods");var $nesting=[self].concat($parent_nesting),$ClassMethods_default_parser$1;self.$attr_accessor("diagnostics_consumer");Opal.def(self,"$default_parser",$ClassMethods_default_parser$1=function $$default_parser(){var $iter=$ClassMethods_default_parser$1.$$p,$yield=$iter||nil,self=this,parser=nil,$writer=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ClassMethods_default_parser$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}parser=$send(self,Opal.find_super_dispatcher(self,"default_parser",$ClassMethods_default_parser$1,false),$zuper,$iter);$writer=[true];$send(parser.$diagnostics(),"all_errors_are_fatal=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[false];$send(parser.$diagnostics(),"ignore_warnings=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[self.$diagnostics_consumer()];$send(parser.$diagnostics(),"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return parser},$ClassMethods_default_parser$1.$$arity=0)})($nesting[0],$nesting);Opal.defs(self,"$included",$DefaultConfig_included$2=function $$included(klass){var $$3,self=this,$writer=nil;klass.$extend($$($nesting,"ClassMethods"));$writer=[$lambda(($$3=function(diagnostic){var self=$$3.$$s||this;if(diagnostic==null){diagnostic=nil}if($truthy($$($nesting,"RUBY_ENGINE")["$!="]("opal"))){return nil}else{return nil}},$$3.$$s=self,$$3.$$arity=1,$$3))];$send(klass,"diagnostics_consumer=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$DefaultConfig_included$2.$$arity=1);Opal.def(self,"$initialize",$DefaultConfig_initialize$4=function $$initialize($a){var $post_args,$iter=$DefaultConfig_initialize$4.$$p,$yield=$iter||nil,self=this;if($iter)$DefaultConfig_initialize$4.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);return $send(self,Opal.find_super_dispatcher(self,"initialize",$DefaultConfig_initialize$4,false),[$$$($$$($$($nesting,"Opal"),"AST"),"Builder").$new()],null)},$DefaultConfig_initialize$4.$$arity=-1);Opal.def(self,"$parse",$DefaultConfig_parse$5=function $$parse(source_buffer){var $iter=$DefaultConfig_parse$5.$$p,$yield=$iter||nil,self=this,parsed=nil,rewriten=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$DefaultConfig_parse$5.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}parsed=$send(self,Opal.find_super_dispatcher(self,"parse",$DefaultConfig_parse$5,false),$zuper,$iter);rewriten=self.$rewrite(parsed);return rewriten},$DefaultConfig_parse$5.$$arity=1);Opal.def(self,"$rewrite",$DefaultConfig_rewrite$6=function $$rewrite(node){var self=this;return $$$($$($nesting,"Opal"),"Rewriter").$new(node).$process()},$DefaultConfig_rewrite$6.$$arity=1)})($nesting[0],$nesting);(function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$default_parser$7;self.$attr_accessor("default_parser_class");return(Opal.def(self,"$default_parser",$default_parser$7=function $$default_parser(){var self=this;return self.$default_parser_class().$default_parser()},$default_parser$7.$$arity=0),nil)&&"default_parser"})(Opal.get_singleton_class(self),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$include","$default_parser_class=","$-"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"WithRubyLexer");var $nesting=[self].concat($parent_nesting),$writer=nil;self.$include($$$($$$($$($nesting,"Opal"),"Parser"),"DefaultConfig"));$writer=[self];$send($$$($$($nesting,"Opal"),"Parser"),"default_parser_class=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}($$$($$($nesting,"Opal"),"Parser"),$$$($$($nesting,"Parser"),"Ruby25"),$nesting)};Opal.modules["opal/parser/patch"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$==","$source","$unpack","$+","$to_a","$lines","$end_with?","$<<","$map","$chomp"]);if($$($nesting,"RUBY_ENGINE")["$=="]("opal")){(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lexer");var $nesting=[self].concat($parent_nesting),$Lexer_source_buffer$eq$1;self.$$prototype.source_buffer=nil;return(Opal.def(self,"$source_buffer=",$Lexer_source_buffer$eq$1=function(source_buffer){var self=this,source=nil;self.source_buffer=source_buffer;if($truthy(self.source_buffer)){source=self.source_buffer.$source();return self.source_pts=source.$unpack("U*")}else{return self.source_pts=nil}},$Lexer_source_buffer$eq$1.$$arity=1),nil)&&"source_buffer="})($$($nesting,"Parser"),null,$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Literal");var $nesting=[self].concat($parent_nesting),$Literal_extend_string$2;self.$$prototype.buffer_s=self.$$prototype.buffer=nil;Opal.udef(self,"$"+"extend_string");return(Opal.def(self,"$extend_string",$Literal_extend_string$2=function $$extend_string(string,ts,te){var $a,self=this;self.buffer_s=$truthy($a=self.buffer_s)?$a:ts;self.buffer_e=te;return self.buffer=$rb_plus(self.buffer,string)},$Literal_extend_string$2.$$arity=3),nil)&&"extend_string"})($$$($$($nesting,"Parser"),"Lexer"),null,$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Buffer");var $nesting=[self].concat($parent_nesting),$Buffer_source_lines$3;self.$$prototype.lines=self.$$prototype.source=nil;return(Opal.def(self,"$source_lines",$Buffer_source_lines$3=function $$source_lines(){var $a,$$4,self=this,lines=nil;return self.lines=$truthy($a=self.lines)?$a:(lines=self.source.$lines().$to_a(),function(){if($truthy(self.source["$end_with?"]("\n"))){return lines["$<<"]("")}else{return nil}return nil}(),$send(lines,"map",[],($$4=function(line){var self=$$4.$$s||this;if(line==null){line=nil}return line.$chomp("\n")},$$4.$$s=self,$$4.$$arity=1,$$4)))},$Buffer_source_lines$3.$$arity=0),nil)&&"source_lines"}($$$($$($nesting,"Parser"),"Source"),null,$nesting)}else{return nil}};Opal.modules["opal/parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require","$=="]);self.$require("opal/ast/builder");self.$require("opal/rewriter");self.$require("opal/parser/source_buffer");self.$require("opal/parser/default_config");self.$require("opal/parser/with_ruby_lexer");if($$($nesting,"RUBY_ENGINE")["$=="]("opal")){return self.$require("opal/parser/patch")}else{return nil}};Opal.modules["opal/fragment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$to_s","$inspect","$type","$===","$first","$children","$[]","$line","$column"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Fragment");var $nesting=[self].concat($parent_nesting),$Fragment_initialize$1,$Fragment_inspect$2,$Fragment_source_map_name$3,$Fragment_line$4,$Fragment_column$5;self.$$prototype.code=self.$$prototype.sexp=nil;self.$attr_reader("code");Opal.def(self,"$initialize",$Fragment_initialize$1=function $$initialize(code,scope,sexp){var self=this;if(sexp==null){sexp=nil}self.code=code.$to_s();self.sexp=sexp;return self.scope=scope},$Fragment_initialize$1.$$arity=-3);Opal.def(self,"$inspect",$Fragment_inspect$2=function $$inspect(){var self=this;return""+"f("+self.code.$inspect()+")"},$Fragment_inspect$2.$$arity=0);Opal.def(self,"$source_map_name",$Fragment_source_map_name$3=function $$source_map_name(){var self=this,$case=nil;return function(){$case=self.sexp.$type();if("top"["$==="]($case)||"begin"["$==="]($case)||"newline"["$==="]($case)||"js_return"["$==="]($case)){return nil}else if("self"["$==="]($case)){return"self"}else if("module"["$==="]($case)){return"module"}else if("class"["$==="]($case)){return"class"}else if("int"["$==="]($case)){return self.sexp.$children().$first()}else if("def"["$==="]($case)){return self.sexp.$children().$first()}else if("defs"["$==="]($case)){return self.sexp.$children()["$[]"](1)}else if("send"["$==="]($case)){return self.sexp.$children()["$[]"](1)}else if("lvar"["$==="]($case)||"lvasgn"["$==="]($case)||"lvdeclare"["$==="]($case)||"ivar"["$==="]($case)||"ivasgn"["$==="]($case)||"gvar"["$==="]($case)||"cvar"["$==="]($case)||"cvasgn"["$==="]($case)||"gvars"["$==="]($case)||"gvasgn"["$==="]($case)){return self.sexp.$children().$first()}else{return nil}}()},$Fragment_source_map_name$3.$$arity=0);Opal.def(self,"$line",$Fragment_line$4=function $$line(){var self=this;if($truthy(self.sexp)){return self.sexp.$line()}else{return nil}},$Fragment_line$4.$$arity=0);return(Opal.def(self,"$column",$Fragment_column$5=function $$column(){var self=this;if($truthy(self.sexp)){return self.sexp.$column()}else{return nil}},$Fragment_column$5.$$arity=0),nil)&&"column"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/helpers"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$valid_name?","$inspect","$=~","$to_s","$+","$indent","$compiler","$to_proc","$parser_indent","$push","$current_indent","$js_truthy_optimize","$helper","$fragment","$expr","$==","$type","$[]","$children","$uses_block!","$scope","$block_name","$handlers","$include?","$truthy_optimize?","$new_temp","$wrap"]);self.$require("opal/regexp_anchors");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Helpers");var $nesting=[self].concat($parent_nesting),$Helpers_property$1,$Helpers_valid_name$ques$2,$Helpers_mid_to_jsid$3,$Helpers_indent$4,$Helpers_current_indent$5,$Helpers_line$6,$Helpers_empty_line$7,$Helpers_js_truthy$8,$Helpers_js_falsy$9,$Helpers_js_truthy_optimize$10,$Helpers_conditional_send$11;Opal.def(self,"$property",$Helpers_property$1=function $$property(name){var self=this;if($truthy(self["$valid_name?"](name))){return""+"."+name}else{return""+"["+name.$inspect()+"]"}},$Helpers_property$1.$$arity=1);Opal.def(self,"$valid_name?",$Helpers_valid_name$ques$2=function(name){var self=this;return $$$($$$($$($nesting,"Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)},$Helpers_valid_name$ques$2.$$arity=1);Opal.def(self,"$mid_to_jsid",$Helpers_mid_to_jsid$3=function $$mid_to_jsid(mid){var self=this;if($truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[/["$=~"](mid.$to_s()))){return""+"['$"+mid+"']"}else{return $rb_plus(".$",mid)}},$Helpers_mid_to_jsid$3.$$arity=1);Opal.def(self,"$indent",$Helpers_indent$4=function $$indent(){var $iter=$Helpers_indent$4.$$p,block=$iter||nil,self=this;if($iter)$Helpers_indent$4.$$p=null;if($iter)$Helpers_indent$4.$$p=null;return $send(self.$compiler(),"indent",[],block.$to_proc())},$Helpers_indent$4.$$arity=0);Opal.def(self,"$current_indent",$Helpers_current_indent$5=function $$current_indent(){var self=this;return self.$compiler().$parser_indent()},$Helpers_current_indent$5.$$arity=0);Opal.def(self,"$line",$Helpers_line$6=function $$line($a){var $post_args,strs,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;self.$push(""+"\n"+self.$current_indent());return $send(self,"push",Opal.to_a(strs))},$Helpers_line$6.$$arity=-1);Opal.def(self,"$empty_line",$Helpers_empty_line$7=function $$empty_line(){var self=this;return self.$push("\n")},$Helpers_empty_line$7.$$arity=0);Opal.def(self,"$js_truthy",$Helpers_js_truthy$8=function $$js_truthy(sexp){var self=this,optimize=nil;if($truthy(optimize=self.$js_truthy_optimize(sexp))){return optimize}self.$helper("truthy");return[self.$fragment("$truthy("),self.$expr(sexp),self.$fragment(")")]},$Helpers_js_truthy$8.$$arity=1);Opal.def(self,"$js_falsy",$Helpers_js_falsy$9=function $$js_falsy(sexp){var self=this,mid=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);if(mid["$=="]("block_given?")){self.$scope()["$uses_block!"]();return""+self.$scope().$block_name()+" === nil"}}self.$helper("falsy");return[self.$fragment("$falsy("),self.$expr(sexp),self.$fragment(")")]},$Helpers_js_falsy$9.$$arity=1);Opal.def(self,"$js_truthy_optimize",$Helpers_js_truthy_optimize$10=function $$js_truthy_optimize(sexp){var $a,$b,self=this,mid=nil,receiver_handler_class=nil,receiver=nil,allow_optimization_on_type=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);receiver_handler_class=$truthy($a=receiver=sexp.$children()["$[]"](0))?self.$compiler().$handlers()["$[]"](receiver.$type()):$a;allow_optimization_on_type=$truthy($a=$truthy($b=$$$($$($nesting,"Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$b)?receiver_handler_class["$truthy_optimize?"]():$a;if($truthy($truthy($a=$truthy($b=allow_optimization_on_type)?$b:mid["$=="]("block_given?"))?$a:mid["$=="]("=="))){return self.$expr(sexp)}else{return nil}}else{return nil}},$Helpers_js_truthy_optimize$10.$$arity=1);Opal.def(self,"$conditional_send",$Helpers_conditional_send$11=function $$conditional_send(recvr){var $iter=$Helpers_conditional_send$11.$$p,$yield=$iter||nil,self=this,receiver_temp=nil;if($iter)$Helpers_conditional_send$11.$$p=null;receiver_temp=self.$scope().$new_temp();self.$push(""+receiver_temp+" = ",recvr);self.$push(""+", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : ");Opal.yield1($yield,receiver_temp);return self.$wrap("(",")")},$Helpers_conditional_send$11.$$arity=1)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$include","$each","$[]=","$handlers","$-","$each_with_index","$define_method","$[]","$children","$attr_reader","$type","$compile","$raise","$is_a?","$fragment","$<<","$reverse","$unshift","$push","$new","$scope","$error","$s","$==","$process","$expr","$add_scope_local","$to_sym","$add_scope_ivar","$add_scope_gvar","$add_scope_temp","$helper","$with_temp","$to_proc","$in_while?","$instance_variable_get","$has_rescue_else?","$in_ensure","$in_ensure?","$!","$class_scope?","$sclass?","$+","$parent","$class_variable_owner_nesting_level","$comments","$compiler","$loc"]);self.$require("opal/nodes/helpers");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base");var $nesting=[self].concat($parent_nesting),$Base_handlers$1,$Base_handle$2,$Base_children$4,$Base_truthy_optimize$ques$7,$Base_initialize$8,$Base_children$9,$Base_compile_to_fragments$10,$Base_compile$11,$Base_push$12,$Base_unshift$14,$Base_wrap$16,$Base_fragment$17,$Base_error$18,$Base_scope$19,$Base_s$20,$Base_expr$ques$21,$Base_recv$ques$22,$Base_stmt$ques$23,$Base_process$24,$Base_expr$25,$Base_recv$26,$Base_stmt$27,$Base_expr_or_nil$28,$Base_add_local$29,$Base_add_ivar$30,$Base_add_gvar$31,$Base_add_temp$32,$Base_helper$33,$Base_with_temp$34,$Base_in_while$ques$35,$Base_while_loop$36,$Base_has_rescue_else$ques$37,$Base_in_ensure$38,$Base_in_ensure$ques$39,$Base_class_variable_owner_nesting_level$40,$Base_class_variable_owner$41,$Base_comments$42;self.$$prototype.sexp=self.$$prototype.fragments=self.$$prototype.compiler=self.$$prototype.level=nil;self.$include($$($nesting,"Helpers"));Opal.defs(self,"$handlers",$Base_handlers$1=function $$handlers(){var $a,self=this;if(self.handlers==null)self.handlers=nil;return self.handlers=$truthy($a=self.handlers)?$a:$hash2([],{})},$Base_handlers$1.$$arity=0);Opal.defs(self,"$handle",$Base_handle$2=function $$handle($a){var $post_args,types,$$3,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);types=$post_args;return $send(types,"each",[],($$3=function(type){var self=$$3.$$s||this,$writer=nil;if(type==null){type=nil}$writer=[type,self];$send($$($nesting,"Base").$handlers(),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$3.$$s=self,$$3.$$arity=1,$$3))},$Base_handle$2.$$arity=-1);Opal.defs(self,"$children",$Base_children$4=function $$children($a){var $post_args,names,$$5,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);names=$post_args;return $send(names,"each_with_index",[],($$5=function(name,idx){var self=$$5.$$s||this,$$6;if(name==null){name=nil}if(idx==null){idx=nil}return $send(self,"define_method",[name],($$6=function(){var self=$$6.$$s||this;if(self.sexp==null)self.sexp=nil;return self.sexp.$children()["$[]"](idx)},$$6.$$s=self,$$6.$$arity=0,$$6))},$$5.$$s=self,$$5.$$arity=2,$$5))},$Base_children$4.$$arity=-1);Opal.defs(self,"$truthy_optimize?",$Base_truthy_optimize$ques$7=function(){var self=this;return false},$Base_truthy_optimize$ques$7.$$arity=0);self.$attr_reader("compiler","type");Opal.def(self,"$initialize",$Base_initialize$8=function $$initialize(sexp,level,compiler){var self=this;self.sexp=sexp;self.type=sexp.$type();self.level=level;return self.compiler=compiler},$Base_initialize$8.$$arity=3);Opal.def(self,"$children",$Base_children$9=function $$children(){var self=this;return self.sexp.$children()},$Base_children$9.$$arity=0);Opal.def(self,"$compile_to_fragments",$Base_compile_to_fragments$10=function $$compile_to_fragments(){var $a,self=this;if($truthy(($a=self["fragments"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.fragments}self.fragments=[];self.$compile();return self.fragments},$Base_compile_to_fragments$10.$$arity=0);Opal.def(self,"$compile",$Base_compile$11=function $$compile(){var self=this;return self.$raise("Not Implemented")},$Base_compile$11.$$arity=0);Opal.def(self,"$push",$Base_push$12=function $$push($a){var $post_args,strs,$$13,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;return $send(strs,"each",[],($$13=function(str){var self=$$13.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null){str=nil}if($truthy(str["$is_a?"]($$($nesting,"String")))){str=self.$fragment(str)}return self.fragments["$<<"](str)},$$13.$$s=self,$$13.$$arity=1,$$13))},$Base_push$12.$$arity=-1);Opal.def(self,"$unshift",$Base_unshift$14=function $$unshift($a){var $post_args,strs,$$15,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);strs=$post_args;return $send(strs.$reverse(),"each",[],($$15=function(str){var self=$$15.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null){str=nil}if($truthy(str["$is_a?"]($$($nesting,"String")))){str=self.$fragment(str)}return self.fragments.$unshift(str)},$$15.$$s=self,$$15.$$arity=1,$$15))},$Base_unshift$14.$$arity=-1);Opal.def(self,"$wrap",$Base_wrap$16=function $$wrap(pre,post){var self=this;self.$unshift(pre);return self.$push(post)},$Base_wrap$16.$$arity=2);Opal.def(self,"$fragment",$Base_fragment$17=function $$fragment(str){var self=this;return $$$($$($nesting,"Opal"),"Fragment").$new(str,self.$scope(),self.sexp)},$Base_fragment$17.$$arity=1);Opal.def(self,"$error",$Base_error$18=function $$error(msg){var self=this;return self.compiler.$error(msg)},$Base_error$18.$$arity=1);Opal.def(self,"$scope",$Base_scope$19=function $$scope(){var self=this;return self.compiler.$scope()},$Base_scope$19.$$arity=0);Opal.def(self,"$s",$Base_s$20=function $$s($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send(self.compiler,"s",Opal.to_a(args))},$Base_s$20.$$arity=-1);Opal.def(self,"$expr?",$Base_expr$ques$21=function(){var self=this;return self.level["$=="]("expr")},$Base_expr$ques$21.$$arity=0);Opal.def(self,"$recv?",$Base_recv$ques$22=function(){var self=this;return self.level["$=="]("recv")},$Base_recv$ques$22.$$arity=0);Opal.def(self,"$stmt?",$Base_stmt$ques$23=function(){var self=this;return self.level["$=="]("stmt")},$Base_stmt$ques$23.$$arity=0);Opal.def(self,"$process",$Base_process$24=function $$process(sexp,level){var self=this;if(level==null){level="expr"}return self.compiler.$process(sexp,level)},$Base_process$24.$$arity=-2);Opal.def(self,"$expr",$Base_expr$25=function $$expr(sexp){var self=this;return self.compiler.$process(sexp,"expr")},$Base_expr$25.$$arity=1);Opal.def(self,"$recv",$Base_recv$26=function $$recv(sexp){var self=this;return self.compiler.$process(sexp,"recv")},$Base_recv$26.$$arity=1);Opal.def(self,"$stmt",$Base_stmt$27=function $$stmt(sexp){var self=this;return self.compiler.$process(sexp,"stmt")},$Base_stmt$27.$$arity=1);Opal.def(self,"$expr_or_nil",$Base_expr_or_nil$28=function $$expr_or_nil(sexp){var self=this;if($truthy(sexp)){return self.$expr(sexp)}else{return"nil"}},$Base_expr_or_nil$28.$$arity=1);Opal.def(self,"$add_local",$Base_add_local$29=function $$add_local(name){var self=this;return self.$scope().$add_scope_local(name.$to_sym())},$Base_add_local$29.$$arity=1);Opal.def(self,"$add_ivar",$Base_add_ivar$30=function $$add_ivar(name){var self=this;return self.$scope().$add_scope_ivar(name)},$Base_add_ivar$30.$$arity=1);Opal.def(self,"$add_gvar",$Base_add_gvar$31=function $$add_gvar(name){var self=this;return self.$scope().$add_scope_gvar(name)},$Base_add_gvar$31.$$arity=1);Opal.def(self,"$add_temp",$Base_add_temp$32=function $$add_temp(temp){var self=this;return self.$scope().$add_scope_temp(temp)},$Base_add_temp$32.$$arity=1);Opal.def(self,"$helper",$Base_helper$33=function $$helper(name){var self=this;return self.compiler.$helper(name)},$Base_helper$33.$$arity=1);Opal.def(self,"$with_temp",$Base_with_temp$34=function $$with_temp(){var $iter=$Base_with_temp$34.$$p,block=$iter||nil,self=this;if($iter)$Base_with_temp$34.$$p=null;if($iter)$Base_with_temp$34.$$p=null;return $send(self.compiler,"with_temp",[],block.$to_proc())},$Base_with_temp$34.$$arity=0);Opal.def(self,"$in_while?",$Base_in_while$ques$35=function(){var self=this;return self.compiler["$in_while?"]()},$Base_in_while$ques$35.$$arity=0);Opal.def(self,"$while_loop",$Base_while_loop$36=function $$while_loop(){var self=this;return self.compiler.$instance_variable_get("@while_loop")},$Base_while_loop$36.$$arity=0);Opal.def(self,"$has_rescue_else?",$Base_has_rescue_else$ques$37=function(){var self=this;return self.$scope()["$has_rescue_else?"]()},$Base_has_rescue_else$ques$37.$$arity=0);Opal.def(self,"$in_ensure",$Base_in_ensure$38=function $$in_ensure(){var $iter=$Base_in_ensure$38.$$p,block=$iter||nil,self=this;if($iter)$Base_in_ensure$38.$$p=null;if($iter)$Base_in_ensure$38.$$p=null;return $send(self.$scope(),"in_ensure",[],block.$to_proc())},$Base_in_ensure$38.$$arity=0);Opal.def(self,"$in_ensure?",$Base_in_ensure$ques$39=function(){var self=this;return self.$scope()["$in_ensure?"]()},$Base_in_ensure$ques$39.$$arity=0);Opal.def(self,"$class_variable_owner_nesting_level",$Base_class_variable_owner_nesting_level$40=function $$class_variable_owner_nesting_level(){var $a,$b,self=this,cvar_scope=nil,nesting_level=nil;cvar_scope=self.$scope();nesting_level=0;while($truthy($truthy($b=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$b)){if($truthy(cvar_scope["$sclass?"]())){nesting_level=$rb_plus(nesting_level,1)}cvar_scope=cvar_scope.$parent()}return nesting_level},$Base_class_variable_owner_nesting_level$40.$$arity=0);Opal.def(self,"$class_variable_owner",$Base_class_variable_owner$41=function $$class_variable_owner(){var self=this;if($truthy(self.$scope())){return""+"$nesting["+self.$class_variable_owner_nesting_level()+"]"}else{return"Opal.Object"}},$Base_class_variable_owner$41.$$arity=0);return(Opal.def(self,"$comments",$Base_comments$42=function $$comments(){var self=this;return self.$compiler().$comments()["$[]"](self.sexp.$loc())},$Base_comments$42.$$arity=0),nil)&&"comments"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send,$lambda=Opal.lambda;Opal.add_stubs(["$require","$handle","$push","$to_s","$type","$children","$value","$recv?","$wrap","$freeze","$join","$keys","$gsub","$even?","$length","$last_match","$+","$chop","$[]","$encoding","$!=","$inspect","$to_i","$to_utf16","$translate_escape_chars","$name","$upcase","$<=","$call","$-","$>>","$&","$attr_accessor","$extract_flags_and_value","$select!","$flags","$=~","$warning","$compiler","$===","$compile_dynamic_regexp","$compile_static_regexp","$any?","$expr","$new","$map","$to_proc","$flags=","$s","$value=","$include?","$is_a?","$==","$updated","$delete","$source","$expression","$loc","$regexp","$each","$compile_inline?","$helper","$compile_inline","$compile_range_initialize","$start","$finish","$raise","$numerator","$denominator","$real","$imag"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ValueNode");var $nesting=[self].concat($parent_nesting),$ValueNode_compile$1,$ValueNode_truthy_optimize$ques$2;self.$handle("true","false","self","nil");Opal.def(self,"$compile",$ValueNode_compile$1=function $$compile(){var self=this;return self.$push(self.$type().$to_s())},$ValueNode_compile$1.$$arity=0);return(Opal.defs(self,"$truthy_optimize?",$ValueNode_truthy_optimize$ques$2=function(){var self=this;return true},$ValueNode_truthy_optimize$ques$2.$$arity=0),nil)&&"truthy_optimize?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"NumericNode");var $nesting=[self].concat($parent_nesting),$NumericNode_compile$3,$NumericNode_truthy_optimize$ques$4;self.$handle("int","float");self.$children("value");Opal.def(self,"$compile",$NumericNode_compile$3=function $$compile(){var self=this;self.$push(self.$value().$to_s());if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},$NumericNode_compile$3.$$arity=0);return(Opal.defs(self,"$truthy_optimize?",$NumericNode_truthy_optimize$ques$4=function(){var self=this;return true},$NumericNode_truthy_optimize$ques$4.$$arity=0),nil)&&"truthy_optimize?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode");var $nesting=[self].concat($parent_nesting),$StringNode_translate_escape_chars$5,$StringNode_compile$7,$StringNode_to_utf16$9;self.$handle("str");self.$children("value");Opal.const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze());Opal.const_set($nesting[0],"ESCAPE_REGEX",new RegExp(""+"(\\\\+)(["+$$($nesting,"ESCAPE_CHARS").$keys().$join("")+"])"));Opal.def(self,"$translate_escape_chars",$StringNode_translate_escape_chars$5=function $$translate_escape_chars(inspect_string){var $$6,self=this;return $send(inspect_string,"gsub",[$$($nesting,"ESCAPE_REGEX")],($$6=function(original){var self=$$6.$$s||this;if(original==null){original=nil}if($truthy($$($nesting,"Regexp").$last_match(1).$length()["$even?"]())){return original}else{return $rb_plus($$($nesting,"Regexp").$last_match(1).$chop(),$$($nesting,"ESCAPE_CHARS")["$[]"]($$($nesting,"Regexp").$last_match(2)))}},$$6.$$s=self,$$6.$$arity=1,$$6))},$StringNode_translate_escape_chars$5.$$arity=1);Opal.def(self,"$compile",$StringNode_compile$7=function $$compile(){var $$8,$a,self=this,string_value=nil,encoding=nil,should_encode=nil,sanitized_value=nil;string_value=self.$value();encoding=string_value.$encoding();should_encode=encoding["$!="]($$$($$($nesting,"Encoding"),"UTF_8"));sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],($$8=function(){var self=$$8.$$s||this,code_point=nil;code_point=$$($nesting,"Regexp").$last_match(1).$to_i(16);return self.$to_utf16(code_point)},$$8.$$s=self,$$8.$$arity=0,$$8));self.$push(self.$translate_escape_chars(sanitized_value));if($truthy($truthy($a=should_encode)?$$($nesting,"RUBY_ENGINE")["$!="]("opal"):$a)){return self.$push('.$force_encoding("',encoding.$name(),'")')}else{return nil}},$StringNode_compile$7.$$arity=0);return(Opal.def(self,"$to_utf16",$StringNode_to_utf16$9=function $$to_utf16(code_point){var $$10,self=this,ten_bits=nil,u=nil,lead_surrogate=nil,tail_surrogate=nil;ten_bits=1023;u=$lambda(($$10=function(code_unit){var self=$$10.$$s||this;if(code_unit==null){code_unit=nil}return $rb_plus("\\u",code_unit.$to_s(16).$upcase())},$$10.$$s=self,$$10.$$arity=1,$$10));if($truthy($rb_le(code_point,65535))){return u.$call(code_point)}code_point=$rb_minus(code_point,65536);lead_surrogate=$rb_plus(55296,code_point["$>>"](10));tail_surrogate=$rb_plus(56320,code_point["$&"](ten_bits));return $rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate))},$StringNode_to_utf16$9.$$arity=1),nil)&&"to_utf16"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SymbolNode");var $nesting=[self].concat($parent_nesting),$SymbolNode_compile$11;self.$handle("sym");self.$children("value");return(Opal.def(self,"$compile",$SymbolNode_compile$11=function $$compile(){var self=this;return self.$push(self.$value().$to_s().$inspect())},$SymbolNode_compile$11.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode");var $nesting=[self].concat($parent_nesting),$RegexpNode_initialize$12,$RegexpNode_compile$13,$RegexpNode_compile_dynamic_regexp$15,$RegexpNode_compile_static_regexp$16,$RegexpNode_extract_flags_and_value$17,$RegexpNode_raw_value$19;self.$$prototype.sexp=nil;self.$handle("regexp");self.$attr_accessor("value","flags");Opal.const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/);Opal.def(self,"$initialize",$RegexpNode_initialize$12=function $$initialize($a){var $post_args,$iter=$RegexpNode_initialize$12.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$RegexpNode_initialize$12.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$RegexpNode_initialize$12,false),$zuper,$iter);return self.$extract_flags_and_value()},$RegexpNode_initialize$12.$$arity=-1);Opal.def(self,"$compile",$RegexpNode_compile$13=function $$compile(){var $$14,self=this,$case=nil;$send(self.$flags(),"select!",[],($$14=function(flag){var self=$$14.$$s||this;if(flag==null){flag=nil}if($truthy($$($nesting,"SUPPORTED_FLAGS")["$=~"](flag))){return true}else{self.$compiler().$warning(""+"Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors.");return false}},$$14.$$s=self,$$14.$$arity=1,$$14));return function(){$case=self.$value().$type();if("dstr"["$==="]($case)||"begin"["$==="]($case)){return self.$compile_dynamic_regexp()}else if("str"["$==="]($case)){return self.$compile_static_regexp()}else{return nil}}()},$RegexpNode_compile$13.$$arity=0);Opal.def(self,"$compile_dynamic_regexp",$RegexpNode_compile_dynamic_regexp$15=function $$compile_dynamic_regexp(){var self=this;if($truthy(self.$flags()["$any?"]())){return self.$push("new RegExp(",self.$expr(self.$value()),""+", '"+self.$flags().$join()+"')")}else{return self.$push("new RegExp(",self.$expr(self.$value()),")")}},$RegexpNode_compile_dynamic_regexp$15.$$arity=0);Opal.def(self,"$compile_static_regexp",$RegexpNode_compile_static_regexp$16=function $$compile_static_regexp(){var self=this,value=nil,$case=nil,message=nil;value=self.$value().$children()["$[]"](0);return function(){$case=value;if(""["$==="]($case)){return self.$push("/(?:)/")}else if(/\?<\w+\>/["$==="]($case)){message=""+"named captures are not supported in javascript: "+value.$inspect();return self.$push(""+"self.$raise(new SyntaxError('"+message+"'))")}else{return self.$push(""+$$($nesting,"Regexp").$new(value).$inspect()+self.$flags().$join())}}()},$RegexpNode_compile_static_regexp$16.$$arity=0);Opal.def(self,"$extract_flags_and_value",$RegexpNode_extract_flags_and_value$17=function $$extract_flags_and_value(){var $a,$b,$$18,self=this,values=nil,flags_sexp=nil,$writer=nil,$case=nil,parts=nil;$a=[].concat(Opal.to_a(self.$children())),$b=$a.length-1,$b=$b<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=$a[$b]==null?nil:$a[$b],$a;$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())];$send(self,"flags=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[function(){$case=values.$length();if((0)["$==="]($case)){return self.$s("str","")}else if(1["$==="]($case)){return values["$[]"](0)}else{return $send(self,"s",["dstr"].concat(Opal.to_a(values)))}}()];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(self.$flags()["$include?"]("x"))){parts=$send(self.$value().$children(),"map",[],($$18=function(part){var self=$$18.$$s||this,$c,trimmed_value=nil;if(part==null){part=nil}if($truthy($truthy($c=part["$is_a?"]($$$($$$($$$("::","Opal"),"AST"),"Node")))?part.$type()["$=="]("str"):$c)){trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,"");return self.$s("str",trimmed_value)}else{return part}},$$18.$$s=self,$$18.$$arity=1,$$18));$writer=[self.$value().$updated(nil,parts)];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$flags().$delete("x")}if(self.$value().$type()["$=="]("str")){$writer=[self.$s("str",self.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},$RegexpNode_extract_flags_and_value$17.$$arity=0);return(Opal.def(self,"$raw_value",$RegexpNode_raw_value$19=function $$raw_value(){var self=this,$writer=nil;$writer=[self.sexp.$loc().$expression().$source()];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$RegexpNode_raw_value$19.$$arity=0),nil)&&"raw_value"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"MatchCurrentLineNode");var $nesting=[self].concat($parent_nesting),$MatchCurrentLineNode_compile$20;self.$handle("match_current_line");self.$children("regexp");return(Opal.def(self,"$compile",$MatchCurrentLineNode_compile$20=function $$compile(){var self=this,gvar_sexp=nil,send_node=nil;gvar_sexp=self.$s("gvar","$_");send_node=self.$s("send",gvar_sexp,"=~",self.$regexp());return self.$push(self.$expr(send_node))},$MatchCurrentLineNode_compile$20.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DynamicStringNode");var $nesting=[self].concat($parent_nesting),$DynamicStringNode_compile$21;self.$handle("dstr");return(Opal.def(self,"$compile",$DynamicStringNode_compile$21=function $$compile(){var $$22,self=this;self.$push('""');return $send(self.$children(),"each",[],($$22=function(part){var self=$$22.$$s||this;if(part==null){part=nil}self.$push(" + ");if(part.$type()["$=="]("str")){self.$push(part.$children()["$[]"](0).$inspect())}else{self.$push("(",self.$expr(part),")")}if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},$$22.$$s=self,$$22.$$arity=1,$$22))},$DynamicStringNode_compile$21.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DynamicSymbolNode");var $nesting=[self].concat($parent_nesting);return self.$handle("dsym")})($nesting[0],$$($nesting,"DynamicStringNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode");var $nesting=[self].concat($parent_nesting),$RangeNode_compile$23,$RangeNode_compile_inline$ques$24,$RangeNode_compile_inline$25,$RangeNode_compile_range_initialize$26;self.$children("start","finish");Opal.const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze());Opal.def(self,"$compile",$RangeNode_compile$23=function $$compile(){var self=this;if($truthy(self["$compile_inline?"]())){self.$helper("range");return self.$compile_inline()}else{return self.$compile_range_initialize()}},$RangeNode_compile$23.$$arity=0);Opal.def(self,"$compile_inline?",$RangeNode_compile_inline$ques$24=function(){var $a,$b,self=this;return $truthy($a=($b=self.$start().$type()["$=="](self.$finish().$type()))?$$($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$start().$type()):self.$start().$type()["$=="](self.$finish().$type()))?$$($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$finish().$type()):$a},$RangeNode_compile_inline$ques$24.$$arity=0);Opal.def(self,"$compile_inline",$RangeNode_compile_inline$25=function $$compile_inline(){var self=this;return self.$raise($$($nesting,"NotImplementedError"))},$RangeNode_compile_inline$25.$$arity=0);return(Opal.def(self,"$compile_range_initialize",$RangeNode_compile_range_initialize$26=function $$compile_range_initialize(){var self=this;return self.$raise($$($nesting,"NotImplementedError"))},$RangeNode_compile_range_initialize$26.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InclusiveRangeNode");var $nesting=[self].concat($parent_nesting),$InclusiveRangeNode_compile_inline$27,$InclusiveRangeNode_compile_range_initialize$28;self.$handle("irange");Opal.def(self,"$compile_inline",$InclusiveRangeNode_compile_inline$27=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},$InclusiveRangeNode_compile_inline$27.$$arity=0);return(Opal.def(self,"$compile_range_initialize",$InclusiveRangeNode_compile_range_initialize$28=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},$InclusiveRangeNode_compile_range_initialize$28.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],$$($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExclusiveRangeNode");var $nesting=[self].concat($parent_nesting),$ExclusiveRangeNode_compile_inline$29,$ExclusiveRangeNode_compile_range_initialize$30;self.$handle("erange");Opal.def(self,"$compile_inline",$ExclusiveRangeNode_compile_inline$29=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", true)")},$ExclusiveRangeNode_compile_inline$29.$$arity=0);return(Opal.def(self,"$compile_range_initialize",$ExclusiveRangeNode_compile_range_initialize$30=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),",",self.$expr(self.$finish()),", true)")},$ExclusiveRangeNode_compile_range_initialize$30.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],$$($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RationalNode");var $nesting=[self].concat($parent_nesting),$RationalNode_compile$31;self.$handle("rational");self.$children("value");return(Opal.def(self,"$compile",$RationalNode_compile$31=function $$compile(){var self=this;return self.$push(""+"Opal.Rational.$new("+self.$value().$numerator()+", "+self.$value().$denominator()+")")},$RationalNode_compile$31.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ComplexNode");var $nesting=[self].concat($parent_nesting),$ComplexNode_compile$32;self.$handle("complex");self.$children("value");return(Opal.def(self,"$compile",$ComplexNode_compile$32=function $$compile(){var self=this;return self.$push(""+"Opal.Complex.$new("+self.$value().$real()+", "+self.$value().$imag()+")")},$ComplexNode_compile$32.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$irb?","$compiler","$top?","$scope","$using_irb?","$push","$to_s","$var_name","$with_temp","$property","$wrap","$add_local","$expr","$value","$recv?","$expr?","$[]","$name","$add_ivar","$helper","$add_gvar","$===","$handle_global_match","$handle_post_match","$handle_pre_match","$raise","$index","$class_variable_owner"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableNode");var $nesting=[self].concat($parent_nesting),$LocalVariableNode_using_irb$ques$1,$LocalVariableNode_compile$2;self.$handle("lvar");self.$children("var_name");Opal.def(self,"$using_irb?",$LocalVariableNode_using_irb$ques$1=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},$LocalVariableNode_using_irb$ques$1.$$arity=0);return(Opal.def(self,"$compile",$LocalVariableNode_compile$2=function $$compile(){var $$3,self=this;if($truthy(self["$using_irb?"]())){}else{return self.$push(self.$var_name().$to_s())}return $send(self,"with_temp",[],($$3=function(tmp){var self=$$3.$$s||this;if(tmp==null){tmp=nil}self.$push(self.$property(self.$var_name().$to_s()));return self.$wrap(""+"(("+tmp+" = Opal.irb_vars",""+") == null ? nil : "+tmp+")")},$$3.$$s=self,$$3.$$arity=1,$$3))},$LocalVariableNode_compile$2.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalAssignNode");var $nesting=[self].concat($parent_nesting),$LocalAssignNode_using_irb$ques$4,$LocalAssignNode_compile$5;self.$handle("lvasgn");self.$children("var_name","value");Opal.def(self,"$using_irb?",$LocalAssignNode_using_irb$ques$4=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},$LocalAssignNode_using_irb$ques$4.$$arity=0);return(Opal.def(self,"$compile",$LocalAssignNode_compile$5=function $$compile(){var $a,$b,self=this;if($truthy(self["$using_irb?"]())){self.$push(""+"Opal.irb_vars"+self.$property(self.$var_name().$to_s())+" = ")}else{self.$add_local(self.$var_name().$to_s());self.$push(""+self.$var_name()+" = ")}self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},$LocalAssignNode_compile$5.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalDeclareNode");var $nesting=[self].concat($parent_nesting),$LocalDeclareNode_compile$6;self.$handle("lvdeclare");self.$children("var_name");return(Opal.def(self,"$compile",$LocalDeclareNode_compile$6=function $$compile(){var self=this;self.$add_local(self.$var_name().$to_s());return nil},$LocalDeclareNode_compile$6.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InstanceVariableNode");var $nesting=[self].concat($parent_nesting),$InstanceVariableNode_var_name$7,$InstanceVariableNode_compile$8;self.$handle("ivar");self.$children("name");Opal.def(self,"$var_name",$InstanceVariableNode_var_name$7=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},$InstanceVariableNode_var_name$7.$$arity=0);return(Opal.def(self,"$compile",$InstanceVariableNode_compile$8=function $$compile(){var self=this,name=nil;name=self.$property(self.$var_name());self.$add_ivar(name);return self.$push(""+"self"+name)},$InstanceVariableNode_compile$8.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InstanceAssignNode");var $nesting=[self].concat($parent_nesting),$InstanceAssignNode_var_name$9,$InstanceAssignNode_compile$10;self.$handle("ivasgn");self.$children("name","value");Opal.def(self,"$var_name",$InstanceAssignNode_var_name$9=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},$InstanceAssignNode_var_name$9.$$arity=0);return(Opal.def(self,"$compile",$InstanceAssignNode_compile$10=function $$compile(){var $a,$b,self=this,name=nil;name=self.$property(self.$var_name());self.$push(""+"self"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},$InstanceAssignNode_compile$10.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"GlobalVariableNode");var $nesting=[self].concat($parent_nesting),$GlobalVariableNode_var_name$11,$GlobalVariableNode_compile$12;self.$handle("gvar");self.$children("name");Opal.def(self,"$var_name",$GlobalVariableNode_var_name$11=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},$GlobalVariableNode_var_name$11.$$arity=0);return(Opal.def(self,"$compile",$GlobalVariableNode_compile$12=function $$compile(){var self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$add_gvar(name);return self.$push(""+"$gvars"+name)},$GlobalVariableNode_compile$12.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode");var $nesting=[self].concat($parent_nesting),$BackRefNode_compile$13,$BackRefNode_handle_global_match$14,$BackRefNode_handle_pre_match$16,$BackRefNode_handle_post_match$18;self.$handle("back_ref");Opal.def(self,"$compile",$BackRefNode_compile$13=function $$compile(){var $iter=$BackRefNode_compile$13.$$p,$yield=$iter||nil,self=this,$case=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$BackRefNode_compile$13.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}self.$helper("gvars");return function(){$case=self.$var_name();if("&"["$==="]($case)){return self.$handle_global_match()}else if("'"["$==="]($case)){return self.$handle_post_match()}else if("`"["$==="]($case)){return self.$handle_pre_match()}else if("+"["$==="]($case)){return $send(self,Opal.find_super_dispatcher(self,"compile",$BackRefNode_compile$13,false),$zuper,$iter)}else{return self.$raise($$($nesting,"NotImplementedError"))}}()},$BackRefNode_compile$13.$$arity=0);Opal.def(self,"$handle_global_match",$BackRefNode_handle_global_match$14=function $$handle_global_match(){var $$15,self=this;return $send(self,"with_temp",[],($$15=function(tmp){var self=$$15.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")},$$15.$$s=self,$$15.$$arity=1,$$15))},$BackRefNode_handle_global_match$14.$$arity=0);Opal.def(self,"$handle_pre_match",$BackRefNode_handle_pre_match$16=function $$handle_pre_match(){var $$17,self=this;return $send(self,"with_temp",[],($$17=function(tmp){var self=$$17.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")},$$17.$$s=self,$$17.$$arity=1,$$17))},$BackRefNode_handle_pre_match$16.$$arity=0);return(Opal.def(self,"$handle_post_match",$BackRefNode_handle_post_match$18=function $$handle_post_match(){var $$19,self=this;return $send(self,"with_temp",[],($$19=function(tmp){var self=$$19.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")},$$19.$$s=self,$$19.$$arity=1,$$19))},$BackRefNode_handle_post_match$18.$$arity=0),nil)&&"handle_post_match"})($nesting[0],$$($nesting,"GlobalVariableNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"GlobalAssignNode");var $nesting=[self].concat($parent_nesting),$GlobalAssignNode_var_name$20,$GlobalAssignNode_compile$21;self.$handle("gvasgn");self.$children("name","value");Opal.def(self,"$var_name",$GlobalAssignNode_var_name$20=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},$GlobalAssignNode_var_name$20.$$arity=0);return(Opal.def(self,"$compile",$GlobalAssignNode_compile$21=function $$compile(){var $a,$b,self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$push(""+"$gvars"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},$GlobalAssignNode_compile$21.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"NthrefNode");var $nesting=[self].concat($parent_nesting),$NthrefNode_compile$22;self.$handle("nth_ref");self.$children("index");return(Opal.def(self,"$compile",$NthrefNode_compile$22=function $$compile(){var $$23,self=this;self.$helper("gvars");return $send(self,"with_temp",[],($$23=function(tmp){var self=$$23.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")},$$23.$$s=self,$$23.$$arity=1,$$23))},$NthrefNode_compile$22.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ClassVariableNode");var $nesting=[self].concat($parent_nesting),$ClassVariableNode_compile$24;self.$handle("cvar");self.$children("name");return(Opal.def(self,"$compile",$ClassVariableNode_compile$24=function $$compile(){var $$25,self=this;return $send(self,"with_temp",[],($$25=function(tmp){var self=$$25.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"(("+tmp+" = "+self.$class_variable_owner()+".$$cvars['"+self.$name()+"']) == null ? nil : "+tmp+")")},$$25.$$s=self,$$25.$$arity=1,$$25))},$ClassVariableNode_compile$24.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ClassVarAssignNode");var $nesting=[self].concat($parent_nesting),$ClassVarAssignNode_compile$26;self.$handle("cvasgn");self.$children("name","value");return(Opal.def(self,"$compile",$ClassVarAssignNode_compile$26=function $$compile(){var self=this;return self.$push(""+"(Opal.class_variable_set("+self.$class_variable_owner()+", '"+self.$name()+"', ",self.$expr(self.$value()),"))")},$ClassVarAssignNode_compile$26.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$magical_data_const?","$push","$const_scope","$recv","$name","$eval?","$compiler","$nil?","$==","$eof_content","$base","$expr","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode");var $nesting=[self].concat($parent_nesting),$ConstNode_compile$1,$ConstNode_magical_data_const$ques$2;self.$handle("const");self.$children("const_scope","name");Opal.def(self,"$compile",$ConstNode_compile$1=function $$compile(){var self=this;if($truthy(self["$magical_data_const?"]())){return self.$push("$__END__")}else if($truthy(self.$const_scope())){return self.$push("$$$(",self.$recv(self.$const_scope()),""+", '"+self.$name()+"')")}else if($truthy(self.$compiler()["$eval?"]())){return self.$push(""+"$$($nesting, '"+self.$name()+"')")}else{return self.$push(""+"$$($nesting, '"+self.$name()+"')")}},$ConstNode_compile$1.$$arity=0);return(Opal.def(self,"$magical_data_const?",$ConstNode_magical_data_const$ques$2=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$const_scope()["$nil?"]())?self.$name()["$=="]("DATA"):$b)?self.$compiler().$eof_content():$a},$ConstNode_magical_data_const$ques$2.$$arity=0),nil)&&"magical_data_const?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"CbaseNode");var $nesting=[self].concat($parent_nesting),$CbaseNode_compile$3;self.$handle("cbase");return(Opal.def(self,"$compile",$CbaseNode_compile$3=function $$compile(){var self=this;return self.$push("'::'")},$CbaseNode_compile$3.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstAssignNode");var $nesting=[self].concat($parent_nesting),$ConstAssignNode_compile$4;self.$handle("casgn");self.$children("base","name","value");return(Opal.def(self,"$compile",$ConstAssignNode_compile$4=function $$compile(){var self=this;if($truthy(self.$base())){return self.$push("Opal.const_set(",self.$expr(self.$base()),""+", '"+self.$name()+"', ",self.$expr(self.$value()),")")}else{return self.$push(""+"Opal.const_set($nesting[0], '"+self.$name()+"', ",self.$expr(self.$value()),")")}},$ConstAssignNode_compile$4.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["pathname"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$module=Opal.module;Opal.add_stubs(["$require","$include","$quote","$===","$to_s","$path","$respond_to?","$to_path","$is_a?","$nil?","$raise","$class","$==","$attr_reader","$!","$relative?","$chop_basename","$basename","$=~","$new","$source","$[]","$rindex","$sub","$absolute?","$expand_path","$plus","$unshift","$length","$!=","$empty?","$first","$shift","$+","$join","$dirname","$pop","$reverse_each","$directory?","$extname","$<=>","$nonzero?","$proc","$casecmp","$cleanpath","$inspect","$include?","$fill","$map","$entries"]);self.$require("corelib/comparable");(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Pathname");var $nesting=[self].concat($parent_nesting),$Pathname_initialize$1,$Pathname_$eq_eq$2,$Pathname_absolute$ques$3,$Pathname_relative$ques$4,$Pathname_chop_basename$5,$Pathname_root$ques$6,$Pathname_parent$7,$Pathname_sub$8,$Pathname_cleanpath$9,$Pathname_to_path$10,$Pathname_hash$11,$Pathname_expand_path$12,$Pathname_$plus$13,$Pathname_plus$14,$Pathname_join$15,$Pathname_split$17,$Pathname_dirname$18,$Pathname_basename$19,$Pathname_directory$ques$20,$Pathname_extname$21,$Pathname_$lt_eq_gt$22,$Pathname$23,$Pathname$24,$Pathname_relative_path_from$25,$Pathname_entries$26;self.$$prototype.path=nil;self.$include($$($nesting,"Comparable"));Opal.const_set($nesting[0],"SEPARATOR_PAT",new RegExp($$($nesting,"Regexp").$quote($$$($$($nesting,"File"),"SEPARATOR"))));Opal.def(self,"$initialize",$Pathname_initialize$1=function $$initialize(path){var self=this;if($truthy($$($nesting,"Pathname")["$==="](path))){self.path=path.$path().$to_s()}else if($truthy(path["$respond_to?"]("to_path"))){self.path=path.$to_path()}else if($truthy(path["$is_a?"]($$($nesting,"String")))){self.path=path}else if($truthy(path["$nil?"]())){self.$raise($$($nesting,"TypeError"),"no implicit conversion of nil into String")}else{self.$raise($$($nesting,"TypeError"),""+"no implicit conversion of "+path.$class()+" into String")}if(self.path["$=="]("\0")){return self.$raise($$($nesting,"ArgumentError"))}else{return nil}},$Pathname_initialize$1.$$arity=1);self.$attr_reader("path");Opal.def(self,"$==",$Pathname_$eq_eq$2=function(other){var self=this;return other.$path()["$=="](self.path)},$Pathname_$eq_eq$2.$$arity=1);Opal.def(self,"$absolute?",$Pathname_absolute$ques$3=function(){var self=this;return self["$relative?"]()["$!"]()},$Pathname_absolute$ques$3.$$arity=0);Opal.def(self,"$relative?",$Pathname_relative$ques$4=function(){var $a,$b,$c,self=this,path=nil,r=nil;path=self.path;while($truthy(r=self.$chop_basename(path))){$c=r,$b=Opal.to_ary($c),path=$b[0]==null?nil:$b[0],$c}return path["$=="]("")},$Pathname_relative$ques$4.$$arity=0);Opal.def(self,"$chop_basename",$Pathname_chop_basename$5=function $$chop_basename(path){var self=this,base=nil;base=$$($nesting,"File").$basename(path);if($truthy($$($nesting,"Regexp").$new(""+"^"+$$$($$($nesting,"Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))){return nil}else{return[path["$[]"](0,path.$rindex(base)),base]}},$Pathname_chop_basename$5.$$arity=1);Opal.def(self,"$root?",$Pathname_root$ques$6=function(){var self=this;return self.path["$=="]("/")},$Pathname_root$ques$6.$$arity=0);Opal.def(self,"$parent",$Pathname_parent$7=function $$parent(){var self=this,new_path=nil;new_path=self.path.$sub(/\/([^\/]+\/?$)/,"");if(new_path["$=="]("")){new_path=function(){if($truthy(self["$absolute?"]())){return"/"}else{return"."}return nil}()}return $$($nesting,"Pathname").$new(new_path)},$Pathname_parent$7.$$arity=0);Opal.def(self,"$sub",$Pathname_sub$8=function $$sub($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $$($nesting,"Pathname").$new($send(self.path,"sub",Opal.to_a(args)))},$Pathname_sub$8.$$arity=-1);Opal.def(self,"$cleanpath",$Pathname_cleanpath$9=function $$cleanpath(){var self=this;return Opal.normalize(self.path)},$Pathname_cleanpath$9.$$arity=0);Opal.def(self,"$to_path",$Pathname_to_path$10=function $$to_path(){var self=this;return self.path},$Pathname_to_path$10.$$arity=0);Opal.def(self,"$hash",$Pathname_hash$11=function $$hash(){var self=this;return self.path},$Pathname_hash$11.$$arity=0);Opal.def(self,"$expand_path",$Pathname_expand_path$12=function $$expand_path(){var self=this;return $$($nesting,"Pathname").$new($$($nesting,"File").$expand_path(self.path))},$Pathname_expand_path$12.$$arity=0);Opal.def(self,"$+",$Pathname_$plus$13=function(other){var self=this;if($truthy($$($nesting,"Pathname")["$==="](other))){}else{other=$$($nesting,"Pathname").$new(other)}return $$($nesting,"Pathname").$new(self.$plus(self.path,other.$to_s()))},$Pathname_$plus$13.$$arity=1);Opal.def(self,"$plus",$Pathname_plus$14=function $$plus(path1,path2){var $a,$b,$c,self=this,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,r1=nil,basename1=nil,suffix2=nil;prefix2=path2;index_list2=[];basename_list2=[];while($truthy(r2=self.$chop_basename(prefix2))){$c=r2,$b=Opal.to_ary($c),prefix2=$b[0]==null?nil:$b[0],basename2=$b[1]==null?nil:$b[1],$c;index_list2.$unshift(prefix2.$length());basename_list2.$unshift(basename2)}if($truthy(prefix2["$!="](""))){return path2}prefix1=path1;while($truthy(true)){while($truthy($truthy($c=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$c)){index_list2.$shift();basename_list2.$shift()}if($truthy(r1=self.$chop_basename(prefix1))){}else{break}$c=r1,$b=Opal.to_ary($c),prefix1=$b[0]==null?nil:$b[0],basename1=$b[1]==null?nil:$b[1],$c;if(basename1["$=="](".")){continue}if($truthy($truthy($b=$truthy($c=basename1["$=="](".."))?$c:basename_list2["$empty?"]())?$b:basename_list2.$first()["$!="](".."))){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift();basename_list2.$shift()}r1=self.$chop_basename(prefix1);if($truthy($truthy($a=r1["$!"]())?new RegExp($$($nesting,"SEPARATOR_PAT"))["$=~"]($$($nesting,"File").$basename(prefix1)):$a)){while($truthy($truthy($b=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$b)){index_list2.$shift();basename_list2.$shift()}}if($truthy(basename_list2["$empty?"]()["$!"]())){suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,false));if($truthy(r1)){return $$($nesting,"File").$join(prefix1,suffix2)}else{return $rb_plus(prefix1,suffix2)}}else if($truthy(r1)){return prefix1}else{return $$($nesting,"File").$dirname(prefix1)}},$Pathname_plus$14.$$arity=2);Opal.def(self,"$join",$Pathname_join$15=function $$join($a){try{var $post_args,args,$$16,self=this,result=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if($truthy(args["$empty?"]())){return self}result=args.$pop();if($truthy($$($nesting,"Pathname")["$==="](result))){}else{result=$$($nesting,"Pathname").$new(result)}if($truthy(result["$absolute?"]())){return result}$send(args,"reverse_each",[],($$16=function(arg){var self=$$16.$$s||this;if(arg==null){arg=nil}if($truthy($$($nesting,"Pathname")["$==="](arg))){}else{arg=$$($nesting,"Pathname").$new(arg)}result=$rb_plus(arg,result);if($truthy(result["$absolute?"]())){Opal.ret(result)}else{return nil}},$$16.$$s=self,$$16.$$arity=1,$$16));return $rb_plus(self,result)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$Pathname_join$15.$$arity=-1);Opal.def(self,"$split",$Pathname_split$17=function $$split(){var self=this;return[self.$dirname(),self.$basename()]},$Pathname_split$17.$$arity=0);Opal.def(self,"$dirname",$Pathname_dirname$18=function $$dirname(){var self=this;return $$($nesting,"Pathname").$new($$($nesting,"File").$dirname(self.path))},$Pathname_dirname$18.$$arity=0);Opal.def(self,"$basename",$Pathname_basename$19=function $$basename(){var self=this;return $$($nesting,"Pathname").$new($$($nesting,"File").$basename(self.path))},$Pathname_basename$19.$$arity=0);Opal.def(self,"$directory?",$Pathname_directory$ques$20=function(){var self=this;return $$($nesting,"File")["$directory?"](self.path)},$Pathname_directory$ques$20.$$arity=0);Opal.def(self,"$extname",$Pathname_extname$21=function $$extname(){var self=this;return $$($nesting,"File").$extname(self.path)},$Pathname_extname$21.$$arity=0);Opal.def(self,"$<=>",$Pathname_$lt_eq_gt$22=function(other){var self=this;return self.$path()["$<=>"](other.$path())},$Pathname_$lt_eq_gt$22.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.alias(self,"to_str","to_path");Opal.alias(self,"to_s","to_path");Opal.const_set($nesting[0],"SAME_PATHS",function(){if($truthy($$$($$($nesting,"File"),"FNM_SYSCASE")["$nonzero?"]())){return $send(self,"proc",[],($Pathname$23=function(a,b){var self=$Pathname$23.$$s||this;if(a==null){a=nil}if(b==null){b=nil}return a.$casecmp(b)["$=="](0)},$Pathname$23.$$s=self,$Pathname$23.$$arity=2,$Pathname$23))}else{return $send(self,"proc",[],($Pathname$24=function(a,b){var self=$Pathname$24.$$s||this;if(a==null){a=nil}if(b==null){b=nil}return a["$=="](b)},$Pathname$24.$$s=self,$Pathname$24.$$arity=2,$Pathname$24))}return nil}());Opal.def(self,"$relative_path_from",$Pathname_relative_path_from$25=function $$relative_path_from(base_directory){var $a,$b,$c,self=this,dest_directory=nil,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,relpath_names=nil;dest_directory=self.$cleanpath().$to_s();base_directory=base_directory.$cleanpath().$to_s();dest_prefix=dest_directory;dest_names=[];while($truthy(r=self.$chop_basename(dest_prefix))){$c=r,$b=Opal.to_ary($c),dest_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){dest_names.$unshift(basename)}}base_prefix=base_directory;base_names=[];while($truthy(r=self.$chop_basename(base_prefix))){$c=r,$b=Opal.to_ary($c),base_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){base_names.$unshift(basename)}}if($truthy($$($nesting,"SAME_PATHS")["$[]"](dest_prefix,base_prefix))){}else{self.$raise($$($nesting,"ArgumentError"),""+"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect())}while($truthy($truthy($b=$truthy($c=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$c)?$$($nesting,"SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$b)){dest_names.$shift();base_names.$shift()}if($truthy(base_names["$include?"](".."))){self.$raise($$($nesting,"ArgumentError"),""+"base_directory has ..: "+base_directory.$inspect())}base_names.$fill("..");relpath_names=$rb_plus(base_names,dest_names);if($truthy(relpath_names["$empty?"]())){return $$($nesting,"Pathname").$new(".")}else{return $$($nesting,"Pathname").$new($send($$($nesting,"File"),"join",Opal.to_a(relpath_names)))}},$Pathname_relative_path_from$25.$$arity=1);return(Opal.def(self,"$entries",$Pathname_entries$26=function $$entries(){var $$27,self=this;return $send($$($nesting,"Dir").$entries(self.path),"map",[],($$27=function(f){var self=$$27.$$s||this;if(f==null){f=nil}return self.$class().$new(f)},$$27.$$s=self,$$27.$$arity=1,$$27))},$Pathname_entries$26.$$arity=0),nil)&&"entries"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_Pathname$28;Opal.def(self,"$Pathname",$Kernel_Pathname$28=function $$Pathname(path){var self=this;return $$($nesting,"Pathname").$new(path)},$Kernel_Pathname$28.$$arity=1)}($nesting[0],$nesting)};Opal.modules["opal/nodes/runtime_helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$new","$children","$==","$s","$include?","$to_sym","$<<","$define_method","$to_proc","$meth","$__send__","$raise","$helper","$[]","$arglist","$js_truthy","$js_falsy"]);self.$require("set");self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RuntimeHelpers");var $nesting=[self].concat($parent_nesting),$RuntimeHelpers_s$1,$RuntimeHelpers_compatible$ques$2,$RuntimeHelpers_helper$3,$RuntimeHelpers_compile$4,$RuntimeHelpers$5,$RuntimeHelpers$6;Opal.const_set($nesting[0],"HELPERS",$$($nesting,"Set").$new());self.$children("recvr","meth","arglist");Opal.defs(self,"$s",$RuntimeHelpers_s$1=function $$s(type,$a){var $post_args,children,self=this;$post_args=Opal.slice.call(arguments,1,arguments.length);children=$post_args;return $$$($$$($$$("::","Opal"),"AST"),"Node").$new(type,children)},$RuntimeHelpers_s$1.$$arity=-2);Opal.defs(self,"$compatible?",$RuntimeHelpers_compatible$ques$2=function(recvr,meth){var $a,self=this;return($a=recvr["$=="](self.$s("const",nil,"Opal")))?$$($nesting,"HELPERS")["$include?"](meth.$to_sym()):recvr["$=="](self.$s("const",nil,"Opal"))},$RuntimeHelpers_compatible$ques$2.$$arity=2);Opal.defs(self,"$helper",$RuntimeHelpers_helper$3=function $$helper(name){var $iter=$RuntimeHelpers_helper$3.$$p,block=$iter||nil,self=this;if($iter)$RuntimeHelpers_helper$3.$$p=null;if($iter)$RuntimeHelpers_helper$3.$$p=null;$$($nesting,"HELPERS")["$<<"](name);return $send(self,"define_method",[""+"compile_"+name],block.$to_proc())},$RuntimeHelpers_helper$3.$$arity=1);Opal.def(self,"$compile",$RuntimeHelpers_compile$4=function $$compile(){var self=this;if($truthy($$($nesting,"HELPERS")["$include?"](self.$meth().$to_sym()))){return self.$__send__(""+"compile_"+self.$meth())}else{return self.$raise(""+"Helper not supported: "+self.$meth())}},$RuntimeHelpers_compile$4.$$arity=0);$send(self,"helper",["truthy?"],($RuntimeHelpers$5=function(){var self=$RuntimeHelpers$5.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("truthy? requires an object")}return self.$js_truthy(sexp)},$RuntimeHelpers$5.$$s=self,$RuntimeHelpers$5.$$arity=0,$RuntimeHelpers$5));return $send(self,"helper",["falsy?"],($RuntimeHelpers$6=function(){var self=$RuntimeHelpers$6.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("falsy? requires an object")}return self.$js_falsy(sexp)},$RuntimeHelpers$6.$$s=self,$RuntimeHelpers$6.$$arity=0,$RuntimeHelpers$6))})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require"]);self.$require("opal/rewriter");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Rewriters");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BreakFinder");var $nesting=[self].concat($parent_nesting),$BreakFinder_initialize$1,$BreakFinder_found_break$ques$2,$BreakFinder_on_break$3,$BreakFinder_stop_lookup$4;self.$$prototype.found_break=nil;Opal.def(self,"$initialize",$BreakFinder_initialize$1=function $$initialize(){var self=this;return self.found_break=false},$BreakFinder_initialize$1.$$arity=0);Opal.def(self,"$found_break?",$BreakFinder_found_break$ques$2=function(){var self=this;return self.found_break},$BreakFinder_found_break$ques$2.$$arity=0);Opal.def(self,"$on_break",$BreakFinder_on_break$3=function $$on_break(node){var self=this;self.found_break=true;return node},$BreakFinder_on_break$3.$$arity=1);Opal.def(self,"$stop_lookup",$BreakFinder_stop_lookup$4=function $$stop_lookup(node){var self=this;return nil},$BreakFinder_stop_lookup$4.$$arity=1);Opal.alias(self,"on_for","stop_lookup");Opal.alias(self,"on_while","stop_lookup");Opal.alias(self,"on_while_post","stop_lookup");Opal.alias(self,"on_until","stop_lookup");Opal.alias(self,"on_until_post","stop_lookup");return Opal.alias(self,"on_block","stop_lookup")})($nesting[0],$$$($$$($$($nesting,"Opal"),"Rewriters"),"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$attr_reader","$freeze","$[]=","$-","$define_method","$to_proc","$include?","$type","$s","$handle_special","$record_method?","$<<","$method_calls","$compiler","$to_sym","$meth","$using_irb?","$compile_irb_var","$default_compile","$private","$iter","$new","$process","$found_break?","$splat?","$invoke_using_send?","$compile_using_send","$compile_simple_call_chain","$compile_break_catcher","$helper","$push","$compile_receiver","$compile_method_name","$compile_arguments","$compile_block_pass","$recv","$receiver_sexp","$expr","$arglist","$empty?","$children","$iter_has_break?","$unshift","$line","$method_jsid","$any?","$==","$recvr","$mid_to_jsid","$to_s","$with_temp","$intern","$irb?","$top?","$scope","$nil?","$updated","$method","$arity","$[]","$compatible?","$compile","$sexp_with_arglist","$each","$add_special","$inline_operators?","$operator_helpers","$fragment","$call","$resolve","$requires","$file","$dirname","$cleanpath","$join","$Pathname","$inspect","$class_scope?","$required_trees","$force_encoding","$encoding","$+","$handle_block_given_call","$def?","$mid","$arity_check?","$push_nesting?","$first","$size","$last","$handle_part","$map","$is_a?","$expand_path","$split","$dynamic_require_severity","$===","$error","$warning","$each_with_object","$pop"]);self.$require("set");self.$require("pathname");self.$require("opal/nodes/base");self.$require("opal/nodes/runtime_helpers");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode");var $nesting=[self].concat($parent_nesting),$CallNode_add_special$1,$CallNode_initialize$2,$CallNode_compile$3,$CallNode_iter_has_break$ques$5,$CallNode_invoke_using_send$ques$6,$CallNode_default_compile$7,$CallNode_compile_using_send$8,$CallNode_compile_receiver$9,$CallNode_compile_method_name$10,$CallNode_compile_arguments$11,$CallNode_compile_block_pass$12,$CallNode_compile_break_catcher$13,$CallNode_compile_simple_call_chain$14,$CallNode_splat$ques$15,$CallNode_receiver_sexp$17,$CallNode_method_jsid$18,$CallNode_record_method$ques$19,$CallNode_compile_irb_var$20,$CallNode_using_irb$ques$22,$CallNode_sexp_with_arglist$23,$CallNode_handle_special$24,$CallNode$25,$CallNode$27,$CallNode$28,$CallNode$29,$CallNode$30,$CallNode$31,$CallNode$32,$CallNode$33,$CallNode$34,$CallNode$35,$CallNode$36,$CallNode$37,$CallNode_push_nesting$ques$38;self.$$prototype.sexp=self.$$prototype.compiler=self.$$prototype.level=nil;self.$handle("send");self.$attr_reader("recvr","meth","arglist","iter");Opal.const_set($nesting[0],"SPECIALS",$hash2([],{}));Opal.const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze());Opal.defs(self,"$add_special",$CallNode_add_special$1=function $$add_special(name,options){var $iter=$CallNode_add_special$1.$$p,handler=$iter||nil,self=this,$writer=nil;if($iter)$CallNode_add_special$1.$$p=null;if($iter)$CallNode_add_special$1.$$p=null;if(options==null){options=$hash2([],{})}$writer=[name,options];$send($$($nesting,"SPECIALS"),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return $send(self,"define_method",[""+"handle_"+name],handler.$to_proc())},$CallNode_add_special$1.$$arity=-2);Opal.def(self,"$initialize",$CallNode_initialize$2=function $$initialize($a){var $post_args,$b,$c,$iter=$CallNode_initialize$2.$$p,$yield=$iter||nil,self=this,args=nil,rest=nil,last_arg=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$CallNode_initialize$2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$CallNode_initialize$2,false),$zuper,$iter);$b=[].concat(Opal.to_a(self.sexp)),self.recvr=$b[0]==null?nil:$b[0],self.meth=$b[1]==null?nil:$b[1],args=$slice.call($b,2),$b;$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_arg=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_arg)?["iter","block_pass"]["$include?"](last_arg.$type()):$b)){self.iter=last_arg;args=rest}else{self.iter=nil}return self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)))},$CallNode_initialize$2.$$arity=-1);Opal.def(self,"$compile",$CallNode_compile$3=function $$compile(){try{var $$4,self=this;return $send(self,"handle_special",[],($$4=function(){var self=$$4.$$s||this;if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym())}if($truthy(self["$using_irb?"]())){Opal.ret(self.$compile_irb_var())}return self.$default_compile()},$$4.$$s=self,$$4.$$arity=0,$$4))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},$CallNode_compile$3.$$arity=0);self.$private();Opal.def(self,"$iter_has_break?",$CallNode_iter_has_break$ques$5=function(){var self=this,finder=nil;if($truthy(self.$iter())){}else{return false}finder=$$$($$$($$($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.$iter());return finder["$found_break?"]()},$CallNode_iter_has_break$ques$5.$$arity=0);Opal.def(self,"$invoke_using_send?",$CallNode_invoke_using_send$ques$6=function(){var $a,self=this;return $truthy($a=self.$iter())?$a:self["$splat?"]()},$CallNode_invoke_using_send$ques$6.$$arity=0);Opal.def(self,"$default_compile",$CallNode_default_compile$7=function $$default_compile(){var self=this;if($truthy(self["$invoke_using_send?"]())){self.$compile_using_send()}else{self.$compile_simple_call_chain()}return self.$compile_break_catcher()},$CallNode_default_compile$7.$$arity=0);Opal.def(self,"$compile_using_send",$CallNode_compile_using_send$8=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},$CallNode_compile_using_send$8.$$arity=0);Opal.def(self,"$compile_receiver",$CallNode_compile_receiver$9=function $$compile_receiver(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()))},$CallNode_compile_receiver$9.$$arity=0);Opal.def(self,"$compile_method_name",$CallNode_compile_method_name$10=function $$compile_method_name(){var self=this;return self.$push(""+", '"+self.$meth()+"'")},$CallNode_compile_method_name$10.$$arity=0);Opal.def(self,"$compile_arguments",$CallNode_compile_arguments$11=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self["$splat?"]())){return self.$push(self.$expr(self.$arglist()))}else if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push("[",self.$expr(self.$arglist()),"]")}},$CallNode_compile_arguments$11.$$arity=0);Opal.def(self,"$compile_block_pass",$CallNode_compile_block_pass$12=function $$compile_block_pass(){var self=this;if($truthy(self.$iter())){return self.$push(", ",self.$expr(self.$iter()))}else{return nil}},$CallNode_compile_block_pass$12.$$arity=0);Opal.def(self,"$compile_break_catcher",$CallNode_compile_break_catcher$13=function $$compile_break_catcher(){var self=this;if($truthy(self["$iter_has_break?"]())){self.$unshift("return ");self.$unshift("(function(){var $brk = Opal.new_brk(); try {");return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")}else{return nil}},$CallNode_compile_break_catcher$13.$$arity=0);Opal.def(self,"$compile_simple_call_chain",$CallNode_compile_simple_call_chain$14=function $$compile_simple_call_chain(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),"(",self.$expr(self.$arglist()),")")},$CallNode_compile_simple_call_chain$14.$$arity=0);Opal.def(self,"$splat?",$CallNode_splat$ques$15=function(){var $$16,self=this;return $send(self.$arglist().$children(),"any?",[],($$16=function(a){var self=$$16.$$s||this;if(a==null){a=nil}return a.$type()["$=="]("splat")},$$16.$$s=self,$$16.$$arity=1,$$16))},$CallNode_splat$ques$15.$$arity=0);Opal.def(self,"$receiver_sexp",$CallNode_receiver_sexp$17=function $$receiver_sexp(){var $a,self=this;return $truthy($a=self.$recvr())?$a:self.$s("self")},$CallNode_receiver_sexp$17.$$arity=0);Opal.def(self,"$method_jsid",$CallNode_method_jsid$18=function $$method_jsid(){var self=this;return self.$mid_to_jsid(self.$meth().$to_s())},$CallNode_method_jsid$18.$$arity=0);Opal.def(self,"$record_method?",$CallNode_record_method$ques$19=function(){var self=this;return true},$CallNode_record_method$ques$19.$$arity=0);Opal.def(self,"$compile_irb_var",$CallNode_compile_irb_var$20=function $$compile_irb_var(){var $$21,self=this;return $send(self,"with_temp",[],($$21=function(tmp){var self=$$21.$$s||this,lvar=nil,call=nil;if(tmp==null){tmp=nil}lvar=self.$meth();call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist"));return self.$push(""+"(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call),""+" : "+tmp+")")},$$21.$$s=self,$$21.$$arity=1,$$21))},$CallNode_compile_irb_var$20.$$arity=0);Opal.def(self,"$using_irb?",$CallNode_using_irb$ques$22=function(){var $a,$b,$c,$d,self=this;return $truthy($a=$truthy($b=$truthy($c=$truthy($d=self.compiler["$irb?"]())?self.$scope()["$top?"]():$d)?self.$arglist()["$=="](self.$s("arglist")):$c)?self.$recvr()["$nil?"]():$b)?self.$iter()["$nil?"]():$a},$CallNode_using_irb$ques$22.$$arity=0);Opal.def(self,"$sexp_with_arglist",$CallNode_sexp_with_arglist$23=function $$sexp_with_arglist(){var self=this;return self.sexp.$updated(nil,[self.$recvr(),self.$meth(),self.$arglist()])},$CallNode_sexp_with_arglist$23.$$arity=0);Opal.def(self,"$handle_special",$CallNode_handle_special$24=function $$handle_special(){var $iter=$CallNode_handle_special$24.$$p,compile_default=$iter||nil,self=this,method=nil;if($iter)$CallNode_handle_special$24.$$p=null;if($iter)$CallNode_handle_special$24.$$p=null;if($truthy($$($nesting,"SPECIALS")["$include?"](self.$meth()))){method=self.$method(""+"handle_"+self.$meth());if(method.$arity()["$=="](1)){return method["$[]"](compile_default)}else{return method["$[]"]()}}else if($truthy($$($nesting,"RuntimeHelpers")["$compatible?"](self.$recvr(),self.$meth()))){return self.$push($$($nesting,"RuntimeHelpers").$new(self.$sexp_with_arglist(),self.level,self.compiler).$compile())}else{return Opal.yieldX(compile_default,[])}},$CallNode_handle_special$24.$$arity=0);$send($$($nesting,"OPERATORS"),"each",[],($CallNode$25=function(operator,name){var self=$CallNode$25.$$s||this,$$26;if(operator==null){operator=nil}if(name==null){name=nil}return $send(self,"add_special",[operator.$to_sym()],($$26=function(compile_default){var self=$$26.$$s||this,$a,lhs=nil,rhs=nil;if(compile_default==null){compile_default=nil}if($truthy(self.$compiler()["$inline_operators?"]())){if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](operator.$to_sym())}self.$compiler().$operator_helpers()["$<<"](operator.$to_sym());$a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())],lhs=$a[0],rhs=$a[1],$a;self.$push(self.$fragment(""+"$rb_"+name+"("));self.$push(lhs);self.$push(self.$fragment(", "));self.$push(rhs);return self.$push(self.$fragment(")"))}else{return compile_default.$call()}},$$26.$$s=self,$$26.$$arity=1,$$26))},$CallNode$25.$$s=self,$CallNode$25.$$arity=2,$CallNode$25));$send(self,"add_special",["require"],($CallNode$27=function(compile_default){var self=$CallNode$27.$$s||this,str=nil;if(compile_default==null){compile_default=nil}str=$$($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()},$CallNode$27.$$s=self,$CallNode$27.$$arity=1,$CallNode$27));$send(self,"add_special",["require_relative"],($CallNode$28=function(){var self=$CallNode$28.$$s||this,arg=nil,file=nil,dir=nil;arg=self.$arglist().$children()["$[]"](0);file=self.$compiler().$file();if(arg.$type()["$=="]("str")){dir=$$($nesting,"File").$dirname(file);self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())}self.$push(self.$fragment(""+"self.$require("+file.$inspect()+"+ '/../' + "));self.$push(self.$process(self.$arglist()));return self.$push(self.$fragment(")"))},$CallNode$28.$$s=self,$CallNode$28.$$arity=0,$CallNode$28));$send(self,"add_special",["autoload"],($CallNode$29=function(compile_default){var self=$CallNode$29.$$s||this,str=nil;if(compile_default==null){compile_default=nil}if($truthy(self.$scope()["$class_scope?"]())){str=$$($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](1)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()}else{return nil}},$CallNode$29.$$s=self,$CallNode$29.$$arity=1,$CallNode$29));$send(self,"add_special",["require_tree"],($CallNode$30=function(compile_default){var self=$CallNode$30.$$s||this,$a,first_arg=nil,rest=nil,relative_path=nil,dir=nil,full_path=nil;if(compile_default==null){compile_default=nil}$a=[].concat(Opal.to_a(self.$arglist().$children())),first_arg=$a[0]==null?nil:$a[0],rest=$slice.call($a,1),$a;if(first_arg.$type()["$=="]("str")){relative_path=first_arg.$children()["$[]"](0);self.$compiler().$required_trees()["$<<"](relative_path);dir=$$($nesting,"File").$dirname(self.$compiler().$file());full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s();full_path.$force_encoding(relative_path.$encoding());first_arg=first_arg.$updated(nil,[full_path])}self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest));return compile_default.$call()},$CallNode$30.$$s=self,$CallNode$30.$$arity=1,$CallNode$30));$send(self,"add_special",["block_given?"],($CallNode$31=function(){var self=$CallNode$31.$$s||this;if(self.sexp==null)self.sexp=nil;return self.$push(self.$compiler().$handle_block_given_call(self.sexp))},$CallNode$31.$$s=self,$CallNode$31.$$arity=0,$CallNode$31));$send(self,"add_special",["__callee__"],($CallNode$32=function(){var self=$CallNode$32.$$s||this;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},$CallNode$32.$$s=self,$CallNode$32.$$arity=0,$CallNode$32));$send(self,"add_special",["__method__"],($CallNode$33=function(){var self=$CallNode$33.$$s||this;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},$CallNode$33.$$s=self,$CallNode$33.$$arity=0,$CallNode$33));$send(self,"add_special",["debugger"],($CallNode$34=function(){var self=$CallNode$34.$$s||this;return self.$push(self.$fragment("debugger"))},$CallNode$34.$$s=self,$CallNode$34.$$arity=0,$CallNode$34));$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],($CallNode$35=function(){var self=$CallNode$35.$$s||this;return self.$push(self.$fragment(""+"Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))},$CallNode$35.$$s=self,$CallNode$35.$$arity=0,$CallNode$35));$send(self,"add_special",["nesting"],($CallNode$36=function(compile_default){var self=$CallNode$36.$$s||this,push_nesting=nil;if(compile_default==null){compile_default=nil}push_nesting=self["$push_nesting?"]();if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},$CallNode$36.$$s=self,$CallNode$36.$$arity=1,$CallNode$36));$send(self,"add_special",["constants"],($CallNode$37=function(compile_default){var self=$CallNode$37.$$s||this,push_nesting=nil;if(compile_default==null){compile_default=nil}push_nesting=self["$push_nesting?"]();if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},$CallNode$37.$$s=self,$CallNode$37.$$arity=1,$CallNode$37));Opal.def(self,"$push_nesting?",$CallNode_push_nesting$ques$38=function(){var $a,$b,$c,self=this,recv=nil;recv=self.$children().$first();return($a=self.$children().$size()["$=="](2))?$truthy($b=recv["$nil?"]())?$b:($c=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):recv.$type()["$=="]("const"):self.$children().$size()["$=="](2)},$CallNode_push_nesting$ques$38.$$arity=0);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"DependencyResolver");var $nesting=[self].concat($parent_nesting),$DependencyResolver_initialize$39,$DependencyResolver_resolve$40,$DependencyResolver_handle_part$41,$DependencyResolver_expand_path$43;self.$$prototype.sexp=self.$$prototype.compiler=nil;Opal.def(self,"$initialize",$DependencyResolver_initialize$39=function $$initialize(compiler,sexp){var self=this;self.compiler=compiler;return self.sexp=sexp},$DependencyResolver_initialize$39.$$arity=2);Opal.def(self,"$resolve",$DependencyResolver_resolve$40=function $$resolve(){var self=this;return self.$handle_part(self.sexp)},$DependencyResolver_resolve$40.$$arity=0);Opal.def(self,"$handle_part",$DependencyResolver_handle_part$41=function $$handle_part(sexp){var $a,$b,$$42,self=this,type=nil,recv=nil,meth=nil,args=nil,parts=nil,msg=nil,$case=nil;type=sexp.$type();if(type["$=="]("str")){return sexp.$children()["$[]"](0)}else if(type["$=="]("send")){$b=sexp.$children(),$a=Opal.to_ary($b),recv=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$b;parts=$send(args,"map",[],($$42=function(s){var self=$$42.$$s||this;if(s==null){s=nil}return self.$handle_part(s)},$$42.$$s=self,$$42.$$arity=1,$$42));if($truthy($truthy($a=$truthy($b=recv["$is_a?"]($$$($$$($$$("::","Opal"),"AST"),"Node")))?recv.$type()["$=="]("const"):$b)?recv.$children().$last()["$=="]("File"):$a)){if(meth["$=="]("expand_path")){return $send(self,"expand_path",Opal.to_a(parts))}else if(meth["$=="]("join")){return self.$expand_path(parts.$join("/"))}else if(meth["$=="]("dirname")){return self.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,true)).$join("/"))}}}msg="Cannot handle dynamic require";return function(){$case=self.compiler.$dynamic_require_severity();if("error"["$==="]($case)){return self.compiler.$error(msg,self.sexp.$line())}else if("warning"["$==="]($case)){return self.compiler.$warning(msg,self.sexp.$line())}else{return nil}}()},$DependencyResolver_handle_part$41.$$arity=1);return(Opal.def(self,"$expand_path",$DependencyResolver_expand_path$43=function $$expand_path(path,base){var $$44,self=this;if(base==null){base=""}return $send((""+base+"/"+path).$split("/"),"each_with_object",[[]],($$44=function(part,p){var self=$$44.$$s||this;if(part==null){part=nil}if(p==null){p=nil}if(part["$=="]("")){return nil}else if(part["$=="]("..")){return p.$pop()}else{return p["$<<"](part)}},$$44.$$s=self,$$44.$$arity=2,$$44)).$join("/")},$DependencyResolver_expand_path$43.$$arity=-2),nil)&&"expand_path"}($nesting[0],null,$nesting)})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$helper","$conditional_send","$recv","$receiver_sexp","$push","$compile_method_name","$compile_arguments","$compile_block_pass"]);self.$require("opal/nodes/call");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"CSendNode");var $nesting=[self].concat($parent_nesting),$CSendNode_default_compile$1;self.$handle("csend");return(Opal.def(self,"$default_compile",$CSendNode_default_compile$1=function $$default_compile(){var $$2,self=this;self.$helper("send");return $send(self,"conditional_send",[self.$recv(self.$receiver_sexp())],($$2=function(receiver_temp){var self=$$2.$$s||this;if(receiver_temp==null){receiver_temp=nil}self.$push("$send(",receiver_temp);self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},$$2.$$s=self,$$2.$$arity=1,$$2))},$CSendNode_default_compile$1.$$arity=0),nil)&&"default_compile"})($nesting[0],$$($nesting,"CallNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$recv","$recvr","$expr","$property","$value","$<<","$default_compile","$meth","$receiver_sexp","$method_jsid","$compile_arguments","$iter","$s","$lhs","$rhs","$process"]);self.$require("opal/nodes/base");self.$require("opal/nodes/call");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsAttrNode");var $nesting=[self].concat($parent_nesting),$JsAttrNode_compile$1;self.$handle("jsattr");self.$children("recvr","property");return(Opal.def(self,"$compile",$JsAttrNode_compile$1=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"]")},$JsAttrNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsAttrAsgnNode");var $nesting=[self].concat($parent_nesting),$JsAttrAsgnNode_compile$2;self.$handle("jsattrasgn");self.$children("recvr","property","value");return(Opal.def(self,"$compile",$JsAttrAsgnNode_compile$2=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"] = ",self.$expr(self.$value()))},$JsAttrAsgnNode_compile$2.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsCallNode");var $nesting=[self].concat($parent_nesting),$JsCallNode_initialize$3,$JsCallNode_compile$4,$JsCallNode_method_jsid$5,$JsCallNode_compile_using_send$6;self.$$prototype.iter=self.$$prototype.arglist=nil;self.$handle("jscall");Opal.def(self,"$initialize",$JsCallNode_initialize$3=function $$initialize($a){var $post_args,$iter=$JsCallNode_initialize$3.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$JsCallNode_initialize$3.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$JsCallNode_initialize$3,false),$zuper,$iter);if($truthy(self.iter)){self.arglist=self.arglist["$<<"](self.iter)}return self.iter=nil},$JsCallNode_initialize$3.$$arity=-1);Opal.def(self,"$compile",$JsCallNode_compile$4=function $$compile(){var self=this;return self.$default_compile()},$JsCallNode_compile$4.$$arity=0);Opal.def(self,"$method_jsid",$JsCallNode_method_jsid$5=function $$method_jsid(){var self=this;return""+"."+self.$meth()},$JsCallNode_method_jsid$5.$$arity=0);return(Opal.def(self,"$compile_using_send",$JsCallNode_compile_using_send$6=function $$compile_using_send(){var self=this;self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),".apply(null");self.$compile_arguments();if($truthy(self.$iter())){self.$push(".concat(",self.$expr(self.$iter()),")")}return self.$push(")")},$JsCallNode_compile_using_send$6.$$arity=0),nil)&&"compile_using_send"})($nesting[0],$$($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Match3Node");var $nesting=[self].concat($parent_nesting),$Match3Node_compile$7;self.$$prototype.level=nil;self.$handle("match_with_lvasgn");self.$children("lhs","rhs");return(Opal.def(self,"$compile",$Match3Node_compile$7=function $$compile(){var self=this,sexp=nil;sexp=self.$s("send",self.$lhs(),"=~",self.$rhs());return self.$push(self.$process(sexp,self.level))},$Match3Node_compile$7.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/scope"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$attr_accessor","$attr_reader","$indent","$scope","$compiler","$scope=","$-","$==","$!","$class?","$dup","$push","$map","$ivars","$gvars","$parser_indent","$empty?","$join","$+","$fragment","$def_in_class?","$add_proto_ivar","$include?","$<<","$has_local?","$has_temp?","$pop","$next_temp","$loop","$succ","$uses_block!","$identify!","$compact","$parent","$name","$scope_name","$mid","$unique_temp","$add_scope_temp","$def?","$type","$nil?","$rescue_else_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode");var $nesting=[self].concat($parent_nesting),$ScopeNode_initialize$1,$ScopeNode_in_scope$2,$ScopeNode_class_scope$ques$4,$ScopeNode_class$ques$5,$ScopeNode_module$ques$6,$ScopeNode_sclass$ques$7,$ScopeNode_top$ques$8,$ScopeNode_iter$ques$9,$ScopeNode_def$ques$10,$ScopeNode_def_in_class$ques$11,$ScopeNode_to_vars$12,$ScopeNode_add_scope_ivar$17,$ScopeNode_add_scope_gvar$18,$ScopeNode_add_proto_ivar$19,$ScopeNode_add_arg$20,$ScopeNode_add_scope_local$21,$ScopeNode_has_local$ques$22,$ScopeNode_add_scope_temp$23,$ScopeNode_has_temp$ques$24,$ScopeNode_new_temp$25,$ScopeNode_next_temp$26,$ScopeNode_queue_temp$28,$ScopeNode_push_while$29,$ScopeNode_pop_while$30,$ScopeNode_in_while$ques$31,$ScopeNode_uses_block$excl$32,$ScopeNode_identify$excl$33,$ScopeNode_find_parent_def$34,$ScopeNode_super_chain$35,$ScopeNode_uses_block$ques$36,$ScopeNode_has_rescue_else$ques$37,$ScopeNode_in_ensure$38,$ScopeNode_in_ensure$ques$39;self.$$prototype.type=self.$$prototype.defs=self.$$prototype.parent=self.$$prototype.temps=self.$$prototype.locals=self.$$prototype.compiler=self.$$prototype.proto_ivars=self.$$prototype.ivars=self.$$prototype.gvars=self.$$prototype.args=self.$$prototype.queue=self.$$prototype.while_stack=self.$$prototype.identity=self.$$prototype.uses_block=self.$$prototype.in_ensure=nil;self.$attr_accessor("parent");self.$attr_accessor("name");self.$attr_accessor("block_name");self.$attr_reader("scope_name");self.$attr_reader("locals");self.$attr_reader("ivars");self.$attr_reader("gvars");self.$attr_accessor("mid");self.$attr_accessor("defs");self.$attr_reader("methods");self.$attr_accessor("uses_super");self.$attr_accessor("uses_zuper");self.$attr_accessor("catch_return","has_break");self.$attr_accessor("rescue_else_sexp");Opal.def(self,"$initialize",$ScopeNode_initialize$1=function $$initialize($a){var $post_args,$iter=$ScopeNode_initialize$1.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ScopeNode_initialize$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$ScopeNode_initialize$1,false),$zuper,$iter);self.locals=[];self.temps=[];self.args=[];self.ivars=[];self.gvars=[];self.parent=nil;self.queue=[];self.unique="a";self.while_stack=[];self.identity=nil;self.defs=nil;self.methods=[];self.uses_block=false;self.in_ensure=false;return self.proto_ivars=[]},$ScopeNode_initialize$1.$$arity=-1);Opal.def(self,"$in_scope",$ScopeNode_in_scope$2=function $$in_scope(){var $$3,$iter=$ScopeNode_in_scope$2.$$p,$yield=$iter||nil,self=this;if($iter)$ScopeNode_in_scope$2.$$p=null;return $send(self,"indent",[],($$3=function(){var self=$$3.$$s||this,$writer=nil;if(self.parent==null)self.parent=nil;self.parent=self.$compiler().$scope();$writer=[self];$send(self.$compiler(),"scope=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.yield1($yield,self);$writer=[self.parent];$send(self.$compiler(),"scope=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$3.$$s=self,$$3.$$arity=0,$$3))},$ScopeNode_in_scope$2.$$arity=0);Opal.def(self,"$class_scope?",$ScopeNode_class_scope$ques$4=function(){var $a,self=this;return $truthy($a=self.type["$=="]("class"))?$a:self.type["$=="]("module")},$ScopeNode_class_scope$ques$4.$$arity=0);Opal.def(self,"$class?",$ScopeNode_class$ques$5=function(){var self=this;return self.type["$=="]("class")},$ScopeNode_class$ques$5.$$arity=0);Opal.def(self,"$module?",$ScopeNode_module$ques$6=function(){var self=this;return self.type["$=="]("module")},$ScopeNode_module$ques$6.$$arity=0);Opal.def(self,"$sclass?",$ScopeNode_sclass$ques$7=function(){var self=this;return self.type["$=="]("sclass")},$ScopeNode_sclass$ques$7.$$arity=0);Opal.def(self,"$top?",$ScopeNode_top$ques$8=function(){var self=this;return self.type["$=="]("top")},$ScopeNode_top$ques$8.$$arity=0);Opal.def(self,"$iter?",$ScopeNode_iter$ques$9=function(){var self=this;return self.type["$=="]("iter")},$ScopeNode_iter$ques$9.$$arity=0);Opal.def(self,"$def?",$ScopeNode_def$ques$10=function(){var $a,self=this;return $truthy($a=self.type["$=="]("def"))?$a:self.type["$=="]("defs")},$ScopeNode_def$ques$10.$$arity=0);Opal.def(self,"$def_in_class?",$ScopeNode_def_in_class$ques$11=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.defs["$!"]())?self.type["$=="]("def"):$c)?self.parent:$b)?self.parent["$class?"]():$a},$ScopeNode_def_in_class$ques$11.$$arity=0);Opal.def(self,"$to_vars",$ScopeNode_to_vars$12=function $$to_vars(){var $$13,$$14,$$15,$a,$$16,self=this,vars=nil,iv=nil,gv=nil,indent=nil,str=nil,pvars=nil,result=nil;vars=self.temps.$dup();$send(vars,"push",Opal.to_a($send(self.locals,"map",[],($$13=function(l){var self=$$13.$$s||this;if(l==null){l=nil}return""+l+" = nil"},$$13.$$s=self,$$13.$$arity=1,$$13))));iv=$send(self.$ivars(),"map",[],($$14=function(ivar){var self=$$14.$$s||this;if(ivar==null){ivar=nil}return""+"if (self"+ivar+" == null) self"+ivar+" = nil;\n"},$$14.$$s=self,$$14.$$arity=1,$$14));gv=$send(self.$gvars(),"map",[],($$15=function(gvar){var self=$$15.$$s||this;if(gvar==null){gvar=nil}return""+"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"},$$15.$$s=self,$$15.$$arity=1,$$15));indent=self.compiler.$parser_indent();str=function(){if($truthy(vars["$empty?"]())){return""}else{return""+"var "+vars.$join(", ")+";\n"}return nil}();if($truthy(self.$ivars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+iv.$join(indent))}if($truthy(self.$gvars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+gv.$join(indent))}if($truthy($truthy($a=self["$class?"]())?self.proto_ivars["$empty?"]()["$!"]():$a)){pvars=$send(self.proto_ivars,"map",[],($$16=function(i){var self=$$16.$$s||this;if(i==null){i=nil}return""+"self.$$prototype"+i},$$16.$$s=self,$$16.$$arity=1,$$16)).$join(" = ");result=""+str+"\n"+indent+pvars+" = nil;"}else{result=str}return self.$fragment(result)},$ScopeNode_to_vars$12.$$arity=0);Opal.def(self,"$add_scope_ivar",$ScopeNode_add_scope_ivar$17=function $$add_scope_ivar(ivar){var self=this;if($truthy(self["$def_in_class?"]())){return self.parent.$add_proto_ivar(ivar)}else if($truthy(self.ivars["$include?"](ivar))){return nil}else{return self.ivars["$<<"](ivar)}},$ScopeNode_add_scope_ivar$17.$$arity=1);Opal.def(self,"$add_scope_gvar",$ScopeNode_add_scope_gvar$18=function $$add_scope_gvar(gvar){var self=this;if($truthy(self.gvars["$include?"](gvar))){return nil}else{return self.gvars["$<<"](gvar)}},$ScopeNode_add_scope_gvar$18.$$arity=1);Opal.def(self,"$add_proto_ivar",$ScopeNode_add_proto_ivar$19=function $$add_proto_ivar(ivar){var self=this;if($truthy(self.proto_ivars["$include?"](ivar))){return nil}else{return self.proto_ivars["$<<"](ivar)}},$ScopeNode_add_proto_ivar$19.$$arity=1);Opal.def(self,"$add_arg",$ScopeNode_add_arg$20=function $$add_arg(arg){var self=this;if($truthy(self.args["$include?"](arg))){}else{self.args["$<<"](arg)}return arg},$ScopeNode_add_arg$20.$$arity=1);Opal.def(self,"$add_scope_local",$ScopeNode_add_scope_local$21=function $$add_scope_local(local){var self=this;if($truthy(self["$has_local?"](local))){return nil}return self.locals["$<<"](local)},$ScopeNode_add_scope_local$21.$$arity=1);Opal.def(self,"$has_local?",$ScopeNode_has_local$ques$22=function(local){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.locals["$include?"](local))?$b:self.args["$include?"](local))?$a:self.temps["$include?"](local))){return true}if($truthy($truthy($a=self.parent)?self.type["$=="]("iter"):$a)){return self.parent["$has_local?"](local)}return false},$ScopeNode_has_local$ques$22.$$arity=1);Opal.def(self,"$add_scope_temp",$ScopeNode_add_scope_temp$23=function $$add_scope_temp(tmp){var self=this;if($truthy(self["$has_temp?"](tmp))){return nil}return self.temps.$push(tmp)},$ScopeNode_add_scope_temp$23.$$arity=1);Opal.def(self,"$has_temp?",$ScopeNode_has_temp$ques$24=function(tmp){var self=this;return self.temps["$include?"](tmp)},$ScopeNode_has_temp$ques$24.$$arity=1);Opal.def(self,"$new_temp",$ScopeNode_new_temp$25=function $$new_temp(){var self=this,tmp=nil;if($truthy(self.queue["$empty?"]())){}else{return self.queue.$pop()}tmp=self.$next_temp();self.temps["$<<"](tmp);return tmp},$ScopeNode_new_temp$25.$$arity=0);Opal.def(self,"$next_temp",$ScopeNode_next_temp$26=function $$next_temp(){var $$27,self=this,tmp=nil;tmp=nil;(function(){var $brk=Opal.new_brk();try{return $send(self,"loop",[],($$27=function(){var self=$$27.$$s||this;if(self.unique==null)self.unique=nil;tmp=""+"$"+self.unique;self.unique=self.unique.$succ();if($truthy(self["$has_local?"](tmp))){return nil}else{Opal.brk(nil,$brk)}},$$27.$$s=self,$$27.$$brk=$brk,$$27.$$arity=0,$$27))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();return tmp},$ScopeNode_next_temp$26.$$arity=0);Opal.def(self,"$queue_temp",$ScopeNode_queue_temp$28=function $$queue_temp(name){var self=this;return self.queue["$<<"](name)},$ScopeNode_queue_temp$28.$$arity=1);Opal.def(self,"$push_while",$ScopeNode_push_while$29=function $$push_while(){var self=this,info=nil;info=$hash2([],{});self.while_stack.$push(info);return info},$ScopeNode_push_while$29.$$arity=0);Opal.def(self,"$pop_while",$ScopeNode_pop_while$30=function $$pop_while(){var self=this;return self.while_stack.$pop()},$ScopeNode_pop_while$30.$$arity=0);Opal.def(self,"$in_while?",$ScopeNode_in_while$ques$31=function(){var self=this;return self.while_stack["$empty?"]()["$!"]()},$ScopeNode_in_while$ques$31.$$arity=0);Opal.def(self,"$uses_block!",$ScopeNode_uses_block$excl$32=function(){var $a,self=this;if($truthy(($a=self.type["$=="]("iter"))?self.parent:self.type["$=="]("iter"))){return self.parent["$uses_block!"]()}else{self.uses_block=true;return self["$identify!"]()}},$ScopeNode_uses_block$excl$32.$$arity=0);Opal.def(self,"$identify!",$ScopeNode_identify$excl$33=function(name){var $a,$b,$c,self=this;if(name==null){name=nil}if($truthy(self.identity)){return self.identity}name=$truthy($a=name)?$a:[$truthy($b=self.$parent())?$truthy($c=self.$parent().$name())?$c:self.$parent().$scope_name():$b,self.$mid()].$compact().$join("_");self.identity=self.compiler.$unique_temp(name);if($truthy(self.parent)){self.parent.$add_scope_temp(self.identity)}return self.identity},$ScopeNode_identify$excl$33.$$arity=-1);self.$attr_reader("identity");Opal.def(self,"$find_parent_def",$ScopeNode_find_parent_def$34=function $$find_parent_def(){var $a,self=this,scope=nil;scope=self;while($truthy(scope=scope.$parent())){if($truthy(scope["$def?"]())){return scope}}return nil},$ScopeNode_find_parent_def$34.$$arity=0);Opal.def(self,"$super_chain",$ScopeNode_super_chain$35=function $$super_chain(){var $a,self=this,chain=nil,scope=nil,defn=nil,mid=nil;$a=[[],self,"null","null"],chain=$a[0],scope=$a[1],defn=$a[2],mid=$a[3],$a;while($truthy(scope)){if(scope.$type()["$=="]("iter")){chain["$<<"](scope["$identify!"]());if($truthy(scope.$parent())){scope=scope.$parent()}}else if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"]();mid=""+"'"+scope.$mid()+"'";break}else{break}}return[chain,defn,mid]},$ScopeNode_super_chain$35.$$arity=0);Opal.def(self,"$uses_block?",$ScopeNode_uses_block$ques$36=function(){var self=this;return self.uses_block},$ScopeNode_uses_block$ques$36.$$arity=0);Opal.def(self,"$has_rescue_else?",$ScopeNode_has_rescue_else$ques$37=function(){var self=this;return self.$rescue_else_sexp()["$nil?"]()["$!"]()},$ScopeNode_has_rescue_else$ques$37.$$arity=0);Opal.def(self,"$in_ensure",$ScopeNode_in_ensure$38=function $$in_ensure(){var $iter=$ScopeNode_in_ensure$38.$$p,$yield=$iter||nil,self=this,result=nil;if($iter)$ScopeNode_in_ensure$38.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},$ScopeNode_in_ensure$38.$$arity=0);return(Opal.def(self,"$in_ensure?",$ScopeNode_in_ensure$ques$39=function(){var self=this;return self.in_ensure},$ScopeNode_in_ensure$ques$39.$$arity=0),nil)&&"in_ensure?"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/module"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$stmt","$body","$s","$empty_line","$to_vars","$cid","$nil?","$expr"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ModuleNode");var $nesting=[self].concat($parent_nesting),$ModuleNode_compile$1,$ModuleNode_name_and_base$3;self.$handle("module");self.$children("cid","body");Opal.def(self,"$compile",$ModuleNode_compile$1=function $$compile(){var $a,$b,$$2,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("module");self.$push("(function($base, $parent_nesting) {");self.$line(""+" var self = $module($base, '"+name+"');");$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this,$c,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$stmt($truthy($c=self.$body())?$c:self.$s("nil"));self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},$$2.$$s=self,$$2.$$arity=0,$$2));return self.$line("})(",base,", $nesting)")},$ModuleNode_compile$1.$$arity=0);return(Opal.def(self,"$name_and_base",$ModuleNode_name_and_base$3=function $$name_and_base(){var $a,$b,self=this,base=nil,name=nil;$b=self.$cid().$children(),$a=Opal.to_ary($b),base=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$b;if($truthy(base["$nil?"]())){return[name,"$nesting[0]"]}else{return[name,self.$expr(base)]}},$ModuleNode_name_and_base$3.$$arity=0),nil)&&"name_and_base"})($nesting[0],$$($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/class"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$body_code","$empty_line","$to_vars","$super_code","$sup","$expr","$stmt","$returns","$compiler","$body","$s"]);self.$require("opal/nodes/module");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ClassNode");var $nesting=[self].concat($parent_nesting),$ClassNode_compile$1,$ClassNode_super_code$3,$ClassNode_body_code$4;self.$handle("class");self.$children("cid","sup","body");Opal.def(self,"$compile",$ClassNode_compile$1=function $$compile(){var $a,$b,$$2,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("klass");self.$push("(function($base, $super, $parent_nesting) {");self.$line(""+" var self = $klass($base, $super, '"+name+"');");$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$body_code();self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},$$2.$$s=self,$$2.$$arity=0,$$2));return self.$line("})(",base,", ",self.$super_code(),", $nesting)")},$ClassNode_compile$1.$$arity=0);Opal.def(self,"$super_code",$ClassNode_super_code$3=function $$super_code(){var self=this;if($truthy(self.$sup())){return self.$expr(self.$sup())}else{return"null"}},$ClassNode_super_code$3.$$arity=0);return(Opal.def(self,"$body_code",$ClassNode_body_code$4=function $$body_code(){var $a,self=this;return self.$stmt(self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil")))},$ClassNode_body_code$4.$$arity=0),nil)&&"body_code"})($nesting[0],$$($nesting,"ModuleNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$push","$in_scope","$add_temp","$stmt","$returns","$compiler","$body","$line","$to_vars","$scope","$recv","$object"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SingletonClassNode");var $nesting=[self].concat($parent_nesting),$SingletonClassNode_compile$1;self.$handle("sclass");self.$children("object","body");return(Opal.def(self,"$compile",$SingletonClassNode_compile$1=function $$compile(){var $$2,self=this;self.$push("(function(self, $parent_nesting) {");$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this,body_stmt=nil;self.$add_temp("$nesting = [self].concat($parent_nesting)");body_stmt=self.$stmt(self.$compiler().$returns(self.$body()));self.$line(self.$scope().$to_vars());return self.$line(body_stmt)},$$2.$$s=self,$$2.$$arity=0,$$2));return self.$line("})(Opal.get_singleton_class(",self.$recv(self.$object()),"), $nesting)")},$SingletonClassNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$add_arg","$scope","$name","$push","$to_s"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArgNode");var $nesting=[self].concat($parent_nesting),$ArgNode_compile$1;self.$handle("arg");self.$children("name");return(Opal.def(self,"$compile",$ArgNode_compile$1=function $$compile(){var self=this;self.$scope().$add_arg(self.$name());return self.$push(self.$name().$to_s())},$ArgNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/arity_check"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$new","$args_node","$args","$optargs","$restarg","$postargs","$kwargs","$kwoptargs","$kwrestarg","$arity","$arity=","$scope","$-","$arity_check?","$compiler","$empty?","$arity_checks","$inspect","$to_s","$mid","$line","$push","$join","$compact","$size","$all_args","$!","$-@","$<","$+","$>","$<<","$any?","$has_only_optional_kwargs?","$negative_arity","$positive_arity","$select","$include?","$type","$has_required_kwargs?","$all?","$==","$def?","$class_scope?","$top?","$parent","$class?","$name","$module?","$identity"]);self.$require("opal/nodes/base");self.$require("opal/rewriters/arguments");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode");var $nesting=[self].concat($parent_nesting),$ArityCheckNode_initialize$1,$ArityCheckNode_compile$2,$ArityCheckNode_kwargs$3,$ArityCheckNode_all_args$4,$ArityCheckNode_arity_checks$5,$ArityCheckNode_arity$6,$ArityCheckNode_negative_arity$7,$ArityCheckNode_positive_arity$9,$ArityCheckNode_has_only_optional_kwargs$ques$10,$ArityCheckNode_has_required_kwargs$ques$12;self.$$prototype.kwargs=self.$$prototype.kwoptargs=self.$$prototype.kwrestarg=self.$$prototype.all_args=self.$$prototype.args=self.$$prototype.optargs=self.$$prototype.restarg=self.$$prototype.postargs=self.$$prototype.arity_checks=nil;self.$handle("arity_check");self.$children("args_node");Opal.def(self,"$initialize",$ArityCheckNode_initialize$1=function $$initialize($a){var $post_args,$iter=$ArityCheckNode_initialize$1.$$p,$yield=$iter||nil,self=this,arguments$=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ArityCheckNode_initialize$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$ArityCheckNode_initialize$1,false),$zuper,$iter);arguments$=$$$($$($nesting,"Rewriters"),"Arguments").$new(self.$args_node().$children());self.args=arguments$.$args();self.optargs=arguments$.$optargs();self.restarg=arguments$.$restarg();self.postargs=arguments$.$postargs();self.kwargs=arguments$.$kwargs();self.kwoptargs=arguments$.$kwoptargs();return self.kwrestarg=arguments$.$kwrestarg()},$ArityCheckNode_initialize$1.$$arity=-1);Opal.def(self,"$compile",$ArityCheckNode_compile$2=function $$compile(){var self=this,$writer=nil,meth=nil;$writer=[self.$arity()];$send(self.$scope(),"arity=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(self.$compiler()["$arity_check?"]())){}else{return nil}if($truthy(self.$arity_checks()["$empty?"]())){return nil}else{meth=self.$scope().$mid().$to_s().$inspect();self.$line("var $arity = arguments.length;");return self.$push(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.ac($arity, "+self.$arity()+", this, "+meth+"); }")}},$ArityCheckNode_compile$2.$$arity=0);Opal.def(self,"$kwargs",$ArityCheckNode_kwargs$3=function $$kwargs(){var self=this;return[].concat(Opal.to_a(self.kwargs)).concat(Opal.to_a(self.kwoptargs)).concat([self.kwrestarg]).$compact()},$ArityCheckNode_kwargs$3.$$arity=0);Opal.def(self,"$all_args",$ArityCheckNode_all_args$4=function $$all_args(){var $a,self=this;return self.all_args=$truthy($a=self.all_args)?$a:[].concat(Opal.to_a(self.args)).concat(Opal.to_a(self.optargs)).concat([self.restarg]).concat(Opal.to_a(self.postargs)).concat(Opal.to_a(self.$kwargs())).$compact()},$ArityCheckNode_all_args$4.$$arity=0);Opal.def(self,"$arity_checks",$ArityCheckNode_arity_checks$5=function $$arity_checks(){var $a,$b,$c,self=this,arity=nil,min_arity=nil,max_arity=nil;if($truthy(($a=self["arity_checks"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.arity_checks}arity=self.$all_args().$size();arity=$rb_minus(arity,self.optargs.$size());if($truthy(self.restarg)){arity=$rb_minus(arity,1)}arity=$rb_minus(arity,self.$kwargs().$size());if($truthy($truthy($b=$truthy($c=self.optargs["$empty?"]()["$!"]())?$c:self.$kwargs()["$empty?"]()["$!"]())?$b:self.restarg)){arity=$rb_minus(arity["$-@"](),1)}self.arity_checks=[];if($truthy($rb_lt(arity,0))){min_arity=$rb_plus(arity,1)["$-@"]();max_arity=self.$all_args().$size();if($truthy($rb_gt(min_arity,0))){self.arity_checks["$<<"](""+"$arity < "+min_arity)}if($truthy(self.restarg)){}else{self.arity_checks["$<<"](""+"$arity > "+max_arity)}}else{self.arity_checks["$<<"](""+"$arity !== "+arity)}return self.arity_checks},$ArityCheckNode_arity_checks$5.$$arity=0);Opal.def(self,"$arity",$ArityCheckNode_arity$6=function $$arity(){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.restarg)?$b:self.optargs["$any?"]())?$a:self["$has_only_optional_kwargs?"]())){return self.$negative_arity()}else{return self.$positive_arity()}},$ArityCheckNode_arity$6.$$arity=0);Opal.def(self,"$negative_arity",$ArityCheckNode_negative_arity$7=function $$negative_arity(){var $$8,self=this,required_plain_args=nil,result=nil;required_plain_args=$send(self.$all_args(),"select",[],($$8=function(arg){var self=$$8.$$s||this;if(arg==null){arg=nil}return["arg","mlhs"]["$include?"](arg.$type())},$$8.$$s=self,$$8.$$arity=1,$$8));result=required_plain_args.$size();if($truthy(self["$has_required_kwargs?"]())){result=$rb_plus(result,1)}result=$rb_minus(result["$-@"](),1);return result},$ArityCheckNode_negative_arity$7.$$arity=0);Opal.def(self,"$positive_arity",$ArityCheckNode_positive_arity$9=function $$positive_arity(){var self=this,result=nil;result=self.$all_args().$size();result=$rb_minus(result,self.$kwargs().$size());if($truthy(self.$kwargs()["$any?"]())){result=$rb_plus(result,1)}return result},$ArityCheckNode_positive_arity$9.$$arity=0);Opal.def(self,"$has_only_optional_kwargs?",$ArityCheckNode_has_only_optional_kwargs$ques$10=function(){var $a,$$11,self=this;return $truthy($a=self.$kwargs()["$any?"]())?$send(self.$kwargs(),"all?",[],($$11=function(arg){var self=$$11.$$s||this;if(arg==null){arg=nil}return["kwoptarg","kwrestarg"]["$include?"](arg.$type())},$$11.$$s=self,$$11.$$arity=1,$$11)):$a},$ArityCheckNode_has_only_optional_kwargs$ques$10.$$arity=0);return(Opal.def(self,"$has_required_kwargs?",$ArityCheckNode_has_required_kwargs$ques$12=function(){var $$13,self=this;return $send(self.$kwargs(),"any?",[],($$13=function(arg){var self=$$13.$$s||this;if(arg==null){arg=nil}return arg.$type()["$=="]("kwarg")},$$13.$$s=self,$$13.$$arity=1,$$13))},$ArityCheckNode_has_required_kwargs$ques$12.$$arity=0),nil)&&"has_required_kwargs?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterArityCheckNode");var $nesting=[self].concat($parent_nesting),$IterArityCheckNode_compile$14;self.$handle("iter_arity_check");return(Opal.def(self,"$compile",$IterArityCheckNode_compile$14=function $$compile(){var $a,$b,$c,self=this,$writer=nil,parent_scope=nil,context=nil,identity=nil;$writer=[self.$arity()];$send(self.$scope(),"arity=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(self.$compiler()["$arity_check?"]())){}else{return nil}if($truthy(self.$arity_checks()["$empty?"]())){return nil}else{parent_scope=self.$scope();while(!$truthy($truthy($b=$truthy($c=parent_scope["$def?"]())?$c:parent_scope["$class_scope?"]())?$b:parent_scope["$top?"]())){parent_scope=parent_scope.$parent()}context=function(){if($truthy(parent_scope["$top?"]())){return"'
'"}else if($truthy(parent_scope["$def?"]())){return""+"'"+parent_scope.$mid()+"'"}else if($truthy(parent_scope["$class?"]())){return""+"''"}else if($truthy(parent_scope["$module?"]())){return""+"''"}else{return nil}return nil}();identity=self.$scope().$identity();self.$line(""+"if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {");self.$line(" var $arity = arguments.length;");self.$line(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+self.$arity()+", "+context+"); }");return self.$line("}")}},$IterArityCheckNode_compile$14.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"ArityCheckNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$helper","$line"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"EnsureKwargsAreKwargs");var $nesting=[self].concat($parent_nesting),$EnsureKwargsAreKwargs_compile$1;self.$handle("ensure_kwargs_are_kwargs");return(Opal.def(self,"$compile",$EnsureKwargsAreKwargs_compile$1=function $$compile(){var self=this;self.$helper("hash2");self.$line("if ($kwargs == null) {");self.$line(" $kwargs = $hash2([], {});");self.$line("} else if (!$kwargs.$$is_hash) {");self.$line(" throw Opal.ArgumentError.$new('expected kwargs');");return self.$line("}")},$EnsureKwargsAreKwargs_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$uses_block!","$scope","$add_arg","$name","$block_name=","$-","$identity","$block_name","$add_temp","$line"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractBlockarg");var $nesting=[self].concat($parent_nesting),$ExtractBlockarg_compile$1;self.$handle("extract_blockarg");self.$children("name");return(Opal.def(self,"$compile",$ExtractBlockarg_compile$1=function $$compile(){var self=this,$writer=nil,scope_name=nil,yielder=nil;self.$scope()["$uses_block!"]();self.$scope().$add_arg(self.$name());$writer=[self.$name()];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];scope_name=self.$scope().$identity();yielder=self.$scope().$block_name();self.$add_temp(""+"$iter = "+scope_name+".$$p");self.$add_temp(""+yielder+" = $iter || nil");return self.$line(""+"if ($iter) "+scope_name+".$$p = null;")},$ExtractBlockarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$<<","$used_kwargs","$scope","$add_temp","$lvar_name","$line","$inspect","$to_s"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractKwarg");var $nesting=[self].concat($parent_nesting),$ExtractKwarg_compile$1;self.$$prototype.sexp=nil;self.$handle("extract_kwarg");self.$children("lvar_name");return(Opal.def(self,"$compile",$ExtractKwarg_compile$1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$scope().$used_kwargs()["$<<"](key_name);self.$add_temp(self.$lvar_name());self.$line(""+"if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {");self.$line(""+" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');");self.$line("}");return self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")},$ExtractKwarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$add_temp","$line"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractKwargs");var $nesting=[self].concat($parent_nesting),$ExtractKwargs_compile$1;self.$handle("extract_kwargs");return(Opal.def(self,"$compile",$ExtractKwargs_compile$1=function $$compile(){var self=this;self.$add_temp("$kwargs");return self.$line("$kwargs = Opal.extract_kwargs($post_args)")},$ExtractKwargs_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$<<","$used_kwargs","$scope","$add_temp","$lvar_name","$line","$inspect","$to_s","$==","$default_value","$expr"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractKwoptarg");var $nesting=[self].concat($parent_nesting),$ExtractKwoptarg_compile$1;self.$$prototype.sexp=nil;self.$handle("extract_kwoptarg");self.$children("lvar_name","default_value");return(Opal.def(self,"$compile",$ExtractKwoptarg_compile$1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$scope().$used_kwargs()["$<<"](key_name);self.$add_temp(self.$lvar_name());self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];");if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$lvar_name()+" == null) {");self.$line(""+" "+self.$lvar_name()+" = ",self.$expr(self.$default_value()));return self.$line("}")},$ExtractKwoptarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$name","$add_temp","$line","$used_kwargs","$map","$scope","$join"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractKwrestarg");var $nesting=[self].concat($parent_nesting),$ExtractKwrestarg_compile$1,$ExtractKwrestarg_used_kwargs$2;self.$handle("extract_kwrestarg");self.$children("name");Opal.def(self,"$compile",$ExtractKwrestarg_compile$1=function $$compile(){var self=this;if($truthy(self.$name())){self.$add_temp(self.$name());return self.$line(""+self.$name()+" = Opal.kwrestargs($kwargs, "+self.$used_kwargs()+");")}else{return nil}},$ExtractKwrestarg_compile$1.$$arity=0);return(Opal.def(self,"$used_kwargs",$ExtractKwrestarg_used_kwargs$2=function $$used_kwargs(){var $$3,self=this,args=nil;args=$send(self.$scope().$used_kwargs(),"map",[],($$3=function(arg_name){var self=$$3.$$s||this;if(arg_name==null){arg_name=nil}return""+"'"+arg_name+"': true"},$$3.$$s=self,$$3.$$arity=1,$$3));return""+"{"+args.$join(",")+"}"},$ExtractKwrestarg_used_kwargs$2.$$arity=0),nil)&&"used_kwargs"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$==","$[]","$default_value","$line","$name","$expr"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractOptargNode");var $nesting=[self].concat($parent_nesting),$ExtractOptargNode_compile$1;self.$handle("extract_optarg");self.$children("name","default_value");return(Opal.def(self,"$compile",$ExtractOptargNode_compile$1=function $$compile(){var self=this;if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = ",self.$expr(self.$default_value()),";");return self.$line("}")},$ExtractOptargNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$add_temp","$name","$line"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractPostArg");var $nesting=[self].concat($parent_nesting),$ExtractPostArg_compile$1;self.$handle("extract_post_arg");self.$children("name");return(Opal.def(self,"$compile",$ExtractPostArg_compile$1=function $$compile(){var self=this;self.$add_temp(self.$name());self.$line(""+self.$name()+" = $post_args[0];");self.$line("$post_args.splice(0, 1);");self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = nil");return self.$line("}")},$ExtractPostArg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$add_temp","$name","$line","$args_to_keep","$==","$[]","$default_value","$expr"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractPostOptarg");var $nesting=[self].concat($parent_nesting),$ExtractPostOptarg_compile$1;self.$handle("extract_post_optarg");self.$children("name","default_value","args_to_keep");return(Opal.def(self,"$compile",$ExtractPostOptarg_compile$1=function $$compile(){var self=this;self.$add_temp(self.$name());self.$line(""+"if ($post_args.length > "+self.$args_to_keep()+") {");self.$line(""+" "+self.$name()+" = $post_args[0];");self.$line(" $post_args.splice(0, 1);");self.$line("}");if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = ",self.$expr(self.$default_value()),";");return self.$line("}")},$ExtractPostOptarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name","$add_temp","$==","$args_to_keep","$line","$!="]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExtractRestarg");var $nesting=[self].concat($parent_nesting),$ExtractRestarg_compile$1;self.$handle("extract_restarg");self.$children("name","args_to_keep");return(Opal.def(self,"$compile",$ExtractRestarg_compile$1=function $$compile(){var self=this;if($truthy(self.$name())){self.$add_temp(self.$name());if(self.$args_to_keep()["$=="](0)){return self.$line(""+self.$name()+" = $post_args;")}else{return self.$line(""+self.$name()+" = $post_args.splice(0, $post_args.length - "+self.$args_to_keep()+");")}}else if($truthy(self.$args_to_keep()["$!="](0))){return self.$line(""+"$post_args.splice(0, $post_args.length - "+self.$args_to_keep()+");")}else{return nil}},$ExtractRestarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$next_temp","$scope","$add_arg","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"FakeArgNode");var $nesting=[self].concat($parent_nesting),$FakeArgNode_compile$1;self.$handle("fake_arg");return(Opal.def(self,"$compile",$FakeArgNode_compile$1=function $$compile(){var self=this,name=nil;name=self.$scope().$next_temp();self.$scope().$add_arg(name);return self.$push(name)},$FakeArgNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$line","$name"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InitializeIterarg");var $nesting=[self].concat($parent_nesting),$InitializeIterarg_compile$1;self.$handle("initialize_iter_arg");self.$children("name");return(Opal.def(self,"$compile",$InitializeIterarg_compile$1=function $$compile(){var self=this;self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = nil;");return self.$line("}")},$InitializeIterarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$<<","$locals","$scope","$name","$add_arg","$line"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"InitializeShadowarg");var $nesting=[self].concat($parent_nesting),$InitializeShadowarg_compile$1;self.$handle("initialize_shadowarg");self.$children("name");return(Opal.def(self,"$compile",$InitializeShadowarg_compile$1=function $$compile(){var self=this;self.$scope().$locals()["$<<"](self.$name());self.$scope().$add_arg(self.$name());return self.$line(""+self.$name()+" = nil;")},$InitializeShadowarg_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/parameters"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$children","$map","$public_send","$type","$join","$compact"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Parameters");var $nesting=[self].concat($parent_nesting),$Parameters_initialize$1,$Parameters_to_code$2,$Parameters_on_arg$4,$Parameters_on_mlhs$5,$Parameters_on_optarg$6,$Parameters_on_restarg$7,$Parameters_on_kwarg$8,$Parameters_on_kwoptarg$9,$Parameters_on_kwrestarg$10,$Parameters_on_blockarg$11,$Parameters_on_shadowarg$12;self.$$prototype.args=nil;Opal.def(self,"$initialize",$Parameters_initialize$1=function $$initialize(args){var self=this;return self.args=args.$children()},$Parameters_initialize$1.$$arity=1);Opal.def(self,"$to_code",$Parameters_to_code$2=function $$to_code(){var $$3,self=this,stringified_parameters=nil;stringified_parameters=$send(self.args,"map",[],($$3=function(arg){var self=$$3.$$s||this;if(arg==null){arg=nil}return $send(self,"public_send",[""+"on_"+arg.$type()].concat(Opal.to_a(arg)))},$$3.$$s=self,$$3.$$arity=1,$$3));return""+"["+stringified_parameters.$compact().$join(", ")+"]"},$Parameters_to_code$2.$$arity=0);Opal.def(self,"$on_arg",$Parameters_on_arg$4=function $$on_arg(arg_name){var self=this;return""+"['req', '"+arg_name+"']"},$Parameters_on_arg$4.$$arity=1);Opal.def(self,"$on_mlhs",$Parameters_on_mlhs$5=function $$on_mlhs($a){var $post_args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);return"['req']"},$Parameters_on_mlhs$5.$$arity=-1);Opal.def(self,"$on_optarg",$Parameters_on_optarg$6=function $$on_optarg(arg_name,_default_value){var self=this;return""+"['opt', '"+arg_name+"']"},$Parameters_on_optarg$6.$$arity=2);Opal.def(self,"$on_restarg",$Parameters_on_restarg$7=function $$on_restarg(arg_name){var self=this;if(arg_name==null){arg_name=nil}if($truthy(arg_name)){return""+"['rest', '"+arg_name+"']"}else{return"['rest']"}},$Parameters_on_restarg$7.$$arity=-1);Opal.def(self,"$on_kwarg",$Parameters_on_kwarg$8=function $$on_kwarg(arg_name){var self=this;return""+"['keyreq', '"+arg_name+"']"},$Parameters_on_kwarg$8.$$arity=1);Opal.def(self,"$on_kwoptarg",$Parameters_on_kwoptarg$9=function $$on_kwoptarg(arg_name,_default_value){var self=this;return""+"['key', '"+arg_name+"']"},$Parameters_on_kwoptarg$9.$$arity=2);Opal.def(self,"$on_kwrestarg",$Parameters_on_kwrestarg$10=function $$on_kwrestarg(arg_name){var self=this;if(arg_name==null){arg_name=nil}if($truthy(arg_name)){return""+"['keyrest', '"+arg_name+"']"}else{return"['keyrest']"}},$Parameters_on_kwrestarg$10.$$arity=-1);Opal.def(self,"$on_blockarg",$Parameters_on_blockarg$11=function $$on_blockarg(arg_name){var self=this;return""+"['block', '"+arg_name+"']"},$Parameters_on_blockarg$11.$$arity=1);return(Opal.def(self,"$on_shadowarg",$Parameters_on_shadowarg$12=function $$on_shadowarg(_arg_name){var self=this;return nil},$Parameters_on_shadowarg$12.$$arity=1),nil)&&"on_shadowarg"})($nesting[0],null,$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$add_temp","$line","$offset"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Args");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"PreparePostArgs");var $nesting=[self].concat($parent_nesting),$PreparePostArgs_compile$1;self.$handle("prepare_post_args");self.$children("offset");return(Opal.def(self,"$compile",$PreparePostArgs_compile$1=function $$compile(){var self=this;self.$add_temp("$post_args");return self.$line(""+"$post_args = Opal.slice.call(arguments, "+self.$offset()+", arguments.length)")},$PreparePostArgs_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$each_with_index","$children","$!=","$push","$process"]);self.$require("opal/nodes/base");self.$require("opal/nodes/args/arg");self.$require("opal/nodes/args/arity_check");self.$require("opal/nodes/args/ensure_kwargs_are_kwargs");self.$require("opal/nodes/args/extract_block_arg");self.$require("opal/nodes/args/extract_kwarg");self.$require("opal/nodes/args/extract_kwargs");self.$require("opal/nodes/args/extract_kwoptarg");self.$require("opal/nodes/args/extract_kwrestarg");self.$require("opal/nodes/args/extract_optarg");self.$require("opal/nodes/args/extract_post_arg");self.$require("opal/nodes/args/extract_post_optarg");self.$require("opal/nodes/args/extract_restarg");self.$require("opal/nodes/args/fake_arg");self.$require("opal/nodes/args/initialize_iterarg");self.$require("opal/nodes/args/initialize_shadowarg");self.$require("opal/nodes/args/parameters");self.$require("opal/nodes/args/prepare_post_args");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArgsNode");var $nesting=[self].concat($parent_nesting),$ArgsNode_compile$1;self.$handle("args");return(Opal.def(self,"$compile",$ArgsNode_compile$1=function $$compile(){var $$2,self=this;return $send(self.$children(),"each_with_index",[],($$2=function(arg,idx){var self=$$2.$$s||this;if(arg==null){arg=nil}if(idx==null){idx=nil}if($truthy(idx["$!="](0))){self.$push(", ")}return self.$push(self.$process(arg))},$$2.$$s=self,$$2.$$arity=2,$$2))},$ArgsNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$attr_reader","$attr_accessor","$[]","$meta","$s","$original_args","$push","$process","$arity_check_node","$uses_block?","$scope","$identity","$block_name","$add_temp","$line","$to_code","$new"]);self.$require("opal/nodes/scope");self.$require("opal/nodes/args/parameters");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs");var $nesting=[self].concat($parent_nesting),$NodeWithArgs_initialize$1,$NodeWithArgs_arity_check_node$2,$NodeWithArgs_compile_arity_check$3,$NodeWithArgs_compile_block_arg$4,$NodeWithArgs_parameters_code$5;self.$$prototype.sexp=nil;self.$attr_reader("used_kwargs");self.$attr_accessor("arity");self.$attr_reader("original_args");Opal.def(self,"$initialize",$NodeWithArgs_initialize$1=function $$initialize($a){var $post_args,$iter=$NodeWithArgs_initialize$1.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$NodeWithArgs_initialize$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$NodeWithArgs_initialize$1,false),$zuper,$iter);self.original_args=self.sexp.$meta()["$[]"]("original_args");self.used_kwargs=[];return self.arity=0},$NodeWithArgs_initialize$1.$$arity=-1);Opal.def(self,"$arity_check_node",$NodeWithArgs_arity_check_node$2=function $$arity_check_node(){var self=this;return self.$s("arity_check",self.$original_args())},$NodeWithArgs_arity_check_node$2.$$arity=0);Opal.def(self,"$compile_arity_check",$NodeWithArgs_compile_arity_check$3=function $$compile_arity_check(){var self=this;return self.$push(self.$process(self.$arity_check_node()))},$NodeWithArgs_compile_arity_check$3.$$arity=0);Opal.def(self,"$compile_block_arg",$NodeWithArgs_compile_block_arg$4=function $$compile_block_arg(){var $a,self=this,scope_name=nil,yielder=nil;if($truthy(self.$scope()["$uses_block?"]())){scope_name=self.$scope().$identity();yielder=$truthy($a=self.$scope().$block_name())?$a:"$yield";self.$add_temp(""+"$iter = "+scope_name+".$$p");self.$add_temp(""+yielder+" = $iter || nil");return self.$line(""+"if ($iter) "+scope_name+".$$p = null;")}else{return nil}},$NodeWithArgs_compile_block_arg$4.$$arity=0);return(Opal.def(self,"$parameters_code",$NodeWithArgs_parameters_code$5=function $$parameters_code(){var self=this;return $$$($$($nesting,"Args"),"Parameters").$new(self.$original_args()).$to_code()},$NodeWithArgs_parameters_code$5.$$arity=0),nil)&&"parameters_code"})($nesting[0],$$($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/iter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$in_scope","$identify!","$scope","$add_temp","$process","$inline_args","$compile_arity_check","$stmt","$returned_body","$to_vars","$line","$unshift","$push","$contains_break?","$arity","$arity_check?","$compiler","$parameters_code","$has_top_level_mlhs_arg?","$has_trailing_comma_in_args?","$block_arg","$block_name=","$-","$each","$args","$first","$==","$<<","$updated","$body","$returns","$s","$any?","$original_args","$type","$loc","$expression","$source","$match","$new","$found_break?"]);self.$require("opal/nodes/node_with_args");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode");var $nesting=[self].concat($parent_nesting),$IterNode_compile$1,$IterNode_compile_block_arg$3,$IterNode_extract_underscore_args$4,$IterNode_returned_body$6,$IterNode_has_top_level_mlhs_arg$ques$7,$IterNode_has_trailing_comma_in_args$ques$9,$IterNode_arity_check_node$10,$IterNode_contains_break$ques$11;self.$$prototype.sexp=nil;self.$handle("iter");self.$children("inline_args","body");Opal.def(self,"$compile",$IterNode_compile$1=function $$compile(){var $$2,self=this,inline_params=nil,to_vars=nil,identity=nil,body_code=nil;inline_params=nil;to_vars=identity=body_code=nil;$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this;identity=self.$scope()["$identify!"]();self.$add_temp(""+"self = "+identity+".$$s || this");inline_params=self.$process(self.$inline_args());self.$compile_arity_check();body_code=self.$stmt(self.$returned_body());return to_vars=self.$scope().$to_vars()},$$2.$$s=self,$$2.$$arity=0,$$2));self.$line(body_code);self.$unshift(to_vars);self.$unshift(""+"("+identity+" = function(",inline_params,"){");self.$push(""+"}, "+identity+".$$s = self,");if($truthy(self["$contains_break?"]())){self.$push(""+" "+identity+".$$brk = $brk,")}self.$push(""+" "+identity+".$$arity = "+self.$arity()+",");if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+" "+identity+".$$parameters = "+self.$parameters_code()+",")}if($truthy(self["$has_top_level_mlhs_arg?"]())){self.$push(""+" "+identity+".$$has_top_level_mlhs_arg = true,")}if($truthy(self["$has_trailing_comma_in_args?"]())){self.$push(""+" "+identity+".$$has_trailing_comma_in_args = true,")}return self.$push(""+" "+identity+")")},$IterNode_compile$1.$$arity=0);Opal.def(self,"$compile_block_arg",$IterNode_compile_block_arg$3=function $$compile_block_arg(){var self=this,$writer=nil,scope_name=nil;if($truthy(self.$block_arg())){$writer=[self.$block_arg()];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$scope().$add_temp(self.$block_arg());scope_name=self.$scope()["$identify!"]();self.$line(""+self.$block_arg()+" = "+scope_name+".$$p || nil;");return self.$line(""+"if ("+self.$block_arg()+") "+scope_name+".$$p = null;")}else{return nil}},$IterNode_compile_block_arg$3.$$arity=0);Opal.def(self,"$extract_underscore_args",$IterNode_extract_underscore_args$4=function $$extract_underscore_args(){var $$5,self=this,valid_args=nil,caught_blank_argument=nil;valid_args=[];caught_blank_argument=false;$send(self.$args().$children(),"each",[],($$5=function(arg){var self=$$5.$$s||this,arg_name=nil;if(arg==null){arg=nil}arg_name=arg.$children().$first();if(arg_name["$=="]("_")){if($truthy(caught_blank_argument)){return nil}else{caught_blank_argument=true;return valid_args["$<<"](arg)}}else{return valid_args["$<<"](arg)}},$$5.$$s=self,$$5.$$arity=1,$$5));return self.sexp=self.sexp.$updated(nil,[self.$args().$updated(nil,valid_args),self.$body()])},$IterNode_extract_underscore_args$4.$$arity=0);Opal.def(self,"$returned_body",$IterNode_returned_body$6=function $$returned_body(){var $a,self=this;return self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil"))},$IterNode_returned_body$6.$$arity=0);Opal.def(self,"$has_top_level_mlhs_arg?",$IterNode_has_top_level_mlhs_arg$ques$7=function(){var $$8,self=this;return $send(self.$original_args().$children(),"any?",[],($$8=function(arg){var self=$$8.$$s||this;if(arg==null){arg=nil}return arg.$type()["$=="]("mlhs")},$$8.$$s=self,$$8.$$arity=1,$$8))},$IterNode_has_top_level_mlhs_arg$ques$7.$$arity=0);Opal.def(self,"$has_trailing_comma_in_args?",$IterNode_has_trailing_comma_in_args$ques$9=function(){var $a,self=this,args_source=nil;if($truthy($truthy($a=self.$original_args().$loc())?self.$original_args().$loc().$expression():$a)){args_source=self.$original_args().$loc().$expression().$source();return args_source.$match(/,\s*\|/)}else{return nil}},$IterNode_has_trailing_comma_in_args$ques$9.$$arity=0);Opal.def(self,"$arity_check_node",$IterNode_arity_check_node$10=function $$arity_check_node(){var self=this;return self.$s("iter_arity_check",self.$original_args())},$IterNode_arity_check_node$10.$$arity=0);return(Opal.def(self,"$contains_break?",$IterNode_contains_break$ques$11=function(){var self=this,finder=nil;finder=$$$($$$($$($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.sexp);return finder["$found_break?"]()},$IterNode_contains_break$ques$11.$$arity=0),nil)&&"contains_break?"})($nesting[0],$$($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/def"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$in_scope","$mid","$mid=","$scope","$-","$==","$type","$defs=","$identify!","$identity","$block_name=","$process","$inline_args","$stmt","$returns","$compiler","$stmts","$compile_block_arg","$add_temp","$compile_arity_check","$uses_zuper","$prepare_super","$unshift","$current_indent","$to_vars","$line","$catch_return","$push","$valid_name?","$arity","$arity_check?","$parameters_code","$parse_comments?","$comments_code","$enable_source_location?","$source_location","$wrap_with_definition","$wrap","$expr?","$name","$source_buffer","$expression","$loc","$+","$join","$map","$comments","$inspect","$text","$add_local"]);self.$require("opal/nodes/node_with_args");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DefNode");var $nesting=[self].concat($parent_nesting),$DefNode_compile$1,$DefNode_wrap_with_definition$3,$DefNode_source_location$4,$DefNode_comments_code$5,$DefNode_prepare_super$7;self.$$prototype.sexp=nil;self.$handle("def");self.$children("mid","inline_args","stmts");Opal.def(self,"$compile",$DefNode_compile$1=function $$compile(){var $$2,self=this,inline_params=nil,scope_name=nil,function_name=nil;inline_params=nil;scope_name=nil;$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this,$writer=nil,stmt_code=nil;if(self.sexp==null)self.sexp=nil;$writer=[self.$mid()];$send(self.$scope(),"mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if(self.sexp.$type()["$=="]("defs")){$writer=[true];$send(self.$scope(),"defs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}self.$scope()["$identify!"]();scope_name=self.$scope().$identity();$writer=["$yield"];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];inline_params=self.$process(self.$inline_args());stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts()));self.$compile_block_arg();self.$add_temp("self = this");self.$compile_arity_check();if($truthy(self.$scope().$uses_zuper())){self.$prepare_super()}self.$unshift(""+"\n"+self.$current_indent(),self.$scope().$to_vars());self.$line(stmt_code);if($truthy(self.$scope().$catch_return())){self.$unshift("try {\n");self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }");return self.$push(" throw $returner; }")}else{return nil}},$$2.$$s=self,$$2.$$arity=0,$$2));function_name=function(){if($truthy(self["$valid_name?"](self.$mid()))){return""+" $$"+self.$mid()}else{return""}return nil}();self.$unshift(") {");self.$unshift(inline_params);self.$unshift(""+"function"+function_name+"(");if($truthy(scope_name)){self.$unshift(""+scope_name+" = ")}self.$line("}");self.$push(""+", "+scope_name+".$$arity = "+self.$arity());if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+", "+scope_name+".$$parameters = "+self.$parameters_code())}if($truthy(self.$compiler()["$parse_comments?"]())){self.$push(""+", "+scope_name+".$$comments = "+self.$comments_code())}if($truthy(self.$compiler()["$enable_source_location?"]())){self.$push(""+", "+scope_name+".$$source_location = "+self.$source_location())}return self.$wrap_with_definition()},$DefNode_compile$1.$$arity=0);Opal.def(self,"$wrap_with_definition",$DefNode_wrap_with_definition$3=function $$wrap_with_definition(){var self=this;self.$wrap(""+"Opal.def(self, '$"+self.$mid()+"', ",")");if($truthy(self["$expr?"]())){return self.$wrap("(",""+", nil) && '"+self.$mid()+"'")}else{return self.$unshift(""+"\n"+self.$current_indent())}},$DefNode_wrap_with_definition$3.$$arity=0);Opal.def(self,"$source_location",$DefNode_source_location$4=function $$source_location(){var self=this,file=nil,line=nil;file=self.sexp.$loc().$expression().$source_buffer().$name();line=self.sexp.$loc().$line();return""+"['"+file+"', "+line+"]"},$DefNode_source_location$4.$$arity=0);Opal.def(self,"$comments_code",$DefNode_comments_code$5=function $$comments_code(){var $$6,self=this;return $rb_plus($rb_plus("[",$send(self.$comments(),"map",[],($$6=function(comment){var self=$$6.$$s||this;if(comment==null){comment=nil}return comment.$text().$inspect()},$$6.$$s=self,$$6.$$arity=1,$$6)).$join(", ")),"]")},$DefNode_comments_code$5.$$arity=0);return(Opal.def(self,"$prepare_super",$DefNode_prepare_super$7=function $$prepare_super(){var self=this;self.$add_local("$zuper");self.$add_local("$zuper_i");self.$add_local("$zuper_ii");self.$line("// Prepare super implicit arguments");self.$line("for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {");self.$line(" $zuper[$zuper_i] = arguments[$zuper_i];");return self.$line("}")},$DefNode_prepare_super$7.$$arity=0),nil)&&"prepare_super"})($nesting[0],$$($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$unshift","$expr","$recvr","$mid","$push","$expr?","$wrap"]);self.$require("opal/nodes/def");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DefsNode");var $nesting=[self].concat($parent_nesting),$DefsNode_wrap_with_definition$1;self.$handle("defs");self.$children("recvr","mid","inline_args","stmts");return(Opal.def(self,"$wrap_with_definition",$DefsNode_wrap_with_definition$1=function $$wrap_with_definition(){var self=this;self.$unshift("Opal.defs(",self.$expr(self.$recvr()),""+", '$"+self.$mid()+"', ");self.$push(")");if($truthy(self["$expr?"]())){return self.$wrap("(",""+", nil) && '"+self.$mid()+"'")}else{return nil}},$DefsNode_wrap_with_definition$1.$$arity=0),nil)&&"wrap_with_definition"})($nesting[0],$$($nesting,"DefNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$truthy","$falsy","$push","$js_truthy","$test","$indent","$line","$stmt","$==","$type","$needs_wrapper?","$wrap","$returns","$compiler","$true_body","$s","$false_body","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode");var $nesting=[self].concat($parent_nesting),$IfNode_compile$1,$IfNode_truthy$4,$IfNode_falsy$5,$IfNode_needs_wrapper$ques$6;self.$handle("if");self.$children("test","true_body","false_body");Opal.def(self,"$compile",$IfNode_compile$1=function $$compile(){var $$2,$$3,self=this,truthy=nil,falsy=nil;truthy=self.$truthy();falsy=self.$falsy();self.$push("if (",self.$js_truthy(self.$test()),") {");if($truthy(truthy)){$send(self,"indent",[],($$2=function(){var self=$$2.$$s||this;return self.$line(self.$stmt(truthy))},$$2.$$s=self,$$2.$$arity=0,$$2))}if($truthy(falsy)){if(falsy.$type()["$=="]("if")){self.$line("} else ",self.$stmt(falsy))}else{self.$line("} else {");$send(self,"indent",[],($$3=function(){var self=$$3.$$s||this;return self.$line(self.$stmt(falsy))},$$3.$$s=self,$$3.$$arity=0,$$3));self.$line("}")}}else{self.$push("}")}if($truthy(self["$needs_wrapper?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},$IfNode_compile$1.$$arity=0);Opal.def(self,"$truthy",$IfNode_truthy$4=function $$truthy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$true_body())?$a:self.$s("nil"))}else{return self.$true_body()}},$IfNode_truthy$4.$$arity=0);Opal.def(self,"$falsy",$IfNode_falsy$5=function $$falsy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$false_body())?$a:self.$s("nil"))}else{return self.$false_body()}},$IfNode_falsy$5.$$arity=0);return(Opal.def(self,"$needs_wrapper?",$IfNode_needs_wrapper$ques$6=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},$IfNode_needs_wrapper$ques$6.$$arity=0),nil)&&"needs_wrapper?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"IFlipFlop");var $nesting=[self].concat($parent_nesting),$IFlipFlop_compile$7;self.$handle("iflipflop");return(Opal.def(self,"$compile",$IFlipFlop_compile$7=function $$compile(){var self=this;return self.$push("true")},$IFlipFlop_compile$7.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"EFlipFlop");var $nesting=[self].concat($parent_nesting),$EFlipFlop_compile$8;self.$handle("eflipflop");return(Opal.def(self,"$compile",$EFlipFlop_compile$8=function $$compile(){var self=this;return self.$push("true")},$EFlipFlop_compile$8.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/logic"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$in_while?","$push","$expr_or_nil","$value","$wrap","$size","$children","$===","$s","$first","$compile_while","$iter?","$scope","$compile_iter","$error","$[]","$while_loop","$stmt?","$line","$break_val","$nil?","$expr","$[]=","$-","$identity","$==","$empty_splat?","$recv","$type","$rhs","$compile_if","$compile_ternary","$raise","$helper","$with_temp","$lhs","$indent","$js_truthy_optimize","$>","$find_parent_def","$expr?","$def?","$return_in_iter?","$return_expr_in_def?","$scope_to_catch_return","$catch_return=","$return_val","$to_s"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"NextNode");var $nesting=[self].concat($parent_nesting),$NextNode_compile$1,$NextNode_value$2;self.$handle("next");Opal.def(self,"$compile",$NextNode_compile$1=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$push("continue;")}else{self.$push(self.$expr_or_nil(self.$value()));return self.$wrap("return ",";")}},$NextNode_compile$1.$$arity=0);return(Opal.def(self,"$value",$NextNode_value$2=function $$value(){var self=this,$case=nil;return function(){$case=self.$children().$size();if((0)["$==="]($case)){return self.$s("nil")}else if(1["$==="]($case)){return self.$children().$first()}else{return $send(self,"s",["array"].concat(Opal.to_a(self.$children())))}}()},$NextNode_value$2.$$arity=0),nil)&&"value"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BreakNode");var $nesting=[self].concat($parent_nesting),$BreakNode_compile$3,$BreakNode_compile_while$4,$BreakNode_compile_iter$5,$BreakNode_break_val$6;self.$handle("break");self.$children("value");Opal.def(self,"$compile",$BreakNode_compile$3=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$error("void value expression: cannot use break outside of iter/while")}},$BreakNode_compile$3.$$arity=0);Opal.def(self,"$compile_while",$BreakNode_compile_while$4=function $$compile_while(){var self=this;if($truthy(self.$while_loop()["$[]"]("closure"))){return self.$push("return ",self.$expr_or_nil(self.$value()))}else{return self.$push("break;")}},$BreakNode_compile_while$4.$$arity=0);Opal.def(self,"$compile_iter",$BreakNode_compile_iter$5=function $$compile_iter(){var self=this;if($truthy(self["$stmt?"]())){}else{self.$error("break must be used as a statement")}return self.$line("Opal.brk(",self.$break_val(),", $brk)")},$BreakNode_compile_iter$5.$$arity=0);return(Opal.def(self,"$break_val",$BreakNode_break_val$6=function $$break_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else{return self.$expr(self.$value())}},$BreakNode_break_val$6.$$arity=0),nil)&&"break_val"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RedoNode");var $nesting=[self].concat($parent_nesting),$RedoNode_compile$7,$RedoNode_compile_while$8,$RedoNode_compile_iter$9;self.$handle("redo");Opal.def(self,"$compile",$RedoNode_compile$7=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$push("REDO()")}},$RedoNode_compile$7.$$arity=0);Opal.def(self,"$compile_while",$RedoNode_compile_while$8=function $$compile_while(){var self=this,$writer=nil;$writer=["use_redo",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push(""+self.$while_loop()["$[]"]("redo_var")+" = true; continue;")},$RedoNode_compile_while$8.$$arity=0);return(Opal.def(self,"$compile_iter",$RedoNode_compile_iter$9=function $$compile_iter(){var self=this;return self.$push(""+"return "+self.$scope().$identity()+".apply(null, $slice.call(arguments))")},$RedoNode_compile_iter$9.$$arity=0),nil)&&"compile_iter"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SplatNode");var $nesting=[self].concat($parent_nesting),$SplatNode_empty_splat$ques$10,$SplatNode_compile$11;self.$handle("splat");self.$children("value");Opal.def(self,"$empty_splat?",$SplatNode_empty_splat$ques$10=function(){var self=this;return self.$value()["$=="](self.$s("array"))},$SplatNode_empty_splat$ques$10.$$arity=0);return(Opal.def(self,"$compile",$SplatNode_compile$11=function $$compile(){var self=this;if($truthy(self["$empty_splat?"]())){return self.$push("[]")}else{return self.$push("Opal.to_a(",self.$recv(self.$value()),")")}},$SplatNode_compile$11.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOp");var $nesting=[self].concat($parent_nesting),$BinaryOp_compile$12,$BinaryOp_compile_ternary$13,$BinaryOp_compile_if$14;Opal.def(self,"$compile",$BinaryOp_compile$12=function $$compile(){var self=this;if(self.$rhs().$type()["$=="]("break")){return self.$compile_if()}else{return self.$compile_ternary()}},$BinaryOp_compile$12.$$arity=0);Opal.def(self,"$compile_ternary",$BinaryOp_compile_ternary$13=function $$compile_ternary(){var self=this;return self.$raise($$($nesting,"NotImplementedError"))},$BinaryOp_compile_ternary$13.$$arity=0);return(Opal.def(self,"$compile_if",$BinaryOp_compile_if$14=function $$compile_if(){var self=this;return self.$raise($$($nesting,"NotImplementedError"))},$BinaryOp_compile_if$14.$$arity=0),nil)&&"compile_if"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"OrNode");var $nesting=[self].concat($parent_nesting),$OrNode_compile_ternary$15,$OrNode_compile_if$17;self.$handle("or");self.$children("lhs","rhs");Opal.def(self,"$compile_ternary",$OrNode_compile_ternary$15=function $$compile_ternary(){var $$16,self=this;self.$helper("truthy");return $send(self,"with_temp",[],($$16=function(tmp){var self=$$16.$$s||this;if(tmp==null){tmp=nil}return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),""+") ? "+tmp+" : ",self.$expr(self.$rhs()),")")},$$16.$$s=self,$$16.$$arity=1,$$16))},$OrNode_compile_ternary$15.$$arity=0);return(Opal.def(self,"$compile_if",$OrNode_compile_if$17=function $$compile_if(){var $$18,self=this;self.$helper("truthy");return $send(self,"with_temp",[],($$18=function(tmp){var self=$$18.$$s||this,$$19,$$20;if(tmp==null){tmp=nil}self.$push(""+"if ($truthy("+tmp+" = ",self.$expr(self.$lhs()),")) {");$send(self,"indent",[],($$19=function(){var self=$$19.$$s||this;return self.$line(tmp)},$$19.$$s=self,$$19.$$arity=0,$$19));self.$line("} else {");$send(self,"indent",[],($$20=function(){var self=$$20.$$s||this;return self.$line(self.$expr(self.$rhs()))},$$20.$$s=self,$$20.$$arity=0,$$20));return self.$line("}")},$$18.$$s=self,$$18.$$arity=1,$$18))},$OrNode_compile_if$17.$$arity=0),nil)&&"compile_if"})($nesting[0],$$($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"AndNode");var $nesting=[self].concat($parent_nesting),$AndNode_compile_ternary$21,$AndNode_compile_if$23;self.$handle("and");self.$children("lhs","rhs");Opal.def(self,"$compile_ternary",$AndNode_compile_ternary$21=function $$compile_ternary(){var $$22,self=this,truthy_opt=nil;truthy_opt=nil;return $send(self,"with_temp",[],($$22=function(tmp){var self=$$22.$$s||this;if(tmp==null){tmp=nil}if($truthy(truthy_opt=self.$js_truthy_optimize(self.$lhs()))){self.$push(""+"(("+tmp+" = ",truthy_opt);self.$push(") ? ");self.$push(self.$expr(self.$rhs()));return self.$push(" : ",self.$expr(self.$lhs()),")")}else{self.$helper("truthy");return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),") ? ",self.$expr(self.$rhs()),""+" : "+tmp+")")}},$$22.$$s=self,$$22.$$arity=1,$$22))},$AndNode_compile_ternary$21.$$arity=0);return(Opal.def(self,"$compile_if",$AndNode_compile_if$23=function $$compile_if(){var $a,$$24,$$25,self=this,condition=nil;self.$helper("truthy");condition=$truthy($a=self.$js_truthy_optimize(self.$lhs()))?$a:self.$expr(self.$lhs());self.$line("if ($truthy(",condition,")) {");$send(self,"indent",[],($$24=function(){var self=$$24.$$s||this;return self.$line(self.$expr(self.$rhs()))},$$24.$$s=self,$$24.$$arity=0,$$24));self.$line("} else {");$send(self,"indent",[],($$25=function(){var self=$$25.$$s||this;return self.$line(self.$expr(self.$lhs()))},$$25.$$s=self,$$25.$$arity=0,$$25));return self.$line("}")},$AndNode_compile_if$23.$$arity=0),nil)&&"compile_if"})($nesting[0],$$($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ReturnNode");var $nesting=[self].concat($parent_nesting),$ReturnNode_return_val$26,$ReturnNode_return_in_iter$ques$27,$ReturnNode_return_expr_in_def$ques$28,$ReturnNode_scope_to_catch_return$29,$ReturnNode_compile$30;self.$handle("return");self.$children("value");Opal.def(self,"$return_val",$ReturnNode_return_val$26=function $$return_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else if($truthy($rb_gt(self.$children().$size(),1))){return self.$expr($send(self,"s",["array"].concat(Opal.to_a(self.$children()))))}else{return self.$expr(self.$value())}},$ReturnNode_return_val$26.$$arity=0);Opal.def(self,"$return_in_iter?",$ReturnNode_return_in_iter$ques$27=function(){var $a,self=this,parent_def=nil;if($truthy($truthy($a=self.$scope()["$iter?"]())?parent_def=self.$scope().$find_parent_def():$a)){return parent_def}else{return nil}},$ReturnNode_return_in_iter$ques$27.$$arity=0);Opal.def(self,"$return_expr_in_def?",$ReturnNode_return_expr_in_def$ques$28=function(){var $a,self=this;if($truthy($truthy($a=self["$expr?"]())?self.$scope()["$def?"]():$a)){return self.$scope()}else{return nil}},$ReturnNode_return_expr_in_def$ques$28.$$arity=0);Opal.def(self,"$scope_to_catch_return",$ReturnNode_scope_to_catch_return$29=function $$scope_to_catch_return(){var $a,self=this;return $truthy($a=self["$return_in_iter?"]())?$a:self["$return_expr_in_def?"]()},$ReturnNode_scope_to_catch_return$29.$$arity=0);return(Opal.def(self,"$compile",$ReturnNode_compile$30=function $$compile(){var self=this,def_scope=nil,$writer=nil;if($truthy(def_scope=self.$scope_to_catch_return())){$writer=[true];$send(def_scope,"catch_return=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push("Opal.ret(",self.$return_val(),")")}else if($truthy(self["$stmt?"]())){return self.$push("return ",self.$return_val())}else{return self.$raise($$($nesting,"SyntaxError"),"void value expression: cannot return as an expression")}},$ReturnNode_compile$30.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JSReturnNode");var $nesting=[self].concat($parent_nesting),$JSReturnNode_compile$31;self.$handle("js_return");self.$children("value");return(Opal.def(self,"$compile",$JSReturnNode_compile$31=function $$compile(){var self=this;self.$push("return ");return self.$push(self.$expr(self.$value()))},$JSReturnNode_compile$31.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"JSTempNode");var $nesting=[self].concat($parent_nesting),$JSTempNode_compile$32;self.$handle("js_tmp");self.$children("value");return(Opal.def(self,"$compile",$JSTempNode_compile$32=function $$compile(){var self=this;return self.$push(self.$value().$to_s())},$JSTempNode_compile$32.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BlockPassNode");var $nesting=[self].concat($parent_nesting),$BlockPassNode_compile$33;self.$handle("block_pass");self.$children("value");return(Opal.def(self,"$compile",$BlockPassNode_compile$33=function $$compile(){var self=this;return self.$push(self.$expr(self.$s("send",self.$value(),"to_proc",self.$s("arglist"))))},$BlockPassNode_compile$33.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/definitions"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$each","$line","$expr","$push","$new_name","$old_name","$empty?","$stmt?","$compile_children","$simple_children?","$compile_inline_children","$>","$size","$wrap","$==","$returned_children","$+","$returns","$compiler","$s","$process","$freeze","$none?","$include?","$type","$map","$each_with_index","$reject","$to_proc"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"UndefNode");var $nesting=[self].concat($parent_nesting),$UndefNode_compile$1;self.$handle("undef");self.$children("value");return(Opal.def(self,"$compile",$UndefNode_compile$1=function $$compile(){var $$2,self=this;return $send(self.$children(),"each",[],($$2=function(child){var self=$$2.$$s||this;if(child==null){child=nil}return self.$line("Opal.udef(self, '$' + ",self.$expr(child),");")},$$2.$$s=self,$$2.$$arity=1,$$2))},$UndefNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"AliasNode");var $nesting=[self].concat($parent_nesting),$AliasNode_compile$3;self.$handle("alias");self.$children("new_name","old_name");return(Opal.def(self,"$compile",$AliasNode_compile$3=function $$compile(){var self=this;return self.$push("Opal.alias(self, ",self.$expr(self.$new_name()),", ",self.$expr(self.$old_name()),")")},$AliasNode_compile$3.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode");var $nesting=[self].concat($parent_nesting),$BeginNode_compile$4,$BeginNode_returned_children$5,$BeginNode_compile_children$6,$BeginNode_simple_children$ques$8,$BeginNode_compile_inline_children$10;self.$$prototype.level=self.$$prototype.returned_children=nil;self.$handle("begin");Opal.def(self,"$compile",$BeginNode_compile$4=function $$compile(){var self=this;if($truthy(self.$children()["$empty?"]())){return self.$push("nil")}if($truthy(self["$stmt?"]())){return self.$compile_children(self.$children(),self.level)}else if($truthy(self["$simple_children?"]())){self.$compile_inline_children(self.$children(),self.level);if($truthy($rb_gt(self.$children().$size(),1))){return self.$wrap("(",")")}else{return nil}}else if(self.$children().$size()["$=="](1)){return self.$compile_inline_children(self.$returned_children(),self.level)}else{self.$compile_children(self.$returned_children(),self.level);return self.$wrap("(function() {","})()")}},$BeginNode_compile$4.$$arity=0);Opal.def(self,"$returned_children",$BeginNode_returned_children$5=function $$returned_children(){var $a,$b,$c,self=this,rest=nil,last_child=nil;return self.returned_children=$truthy($a=self.returned_children)?$a:($b=[].concat(Opal.to_a(self.$children())),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b,function(){if($truthy(last_child)){return $rb_plus(rest,[self.$compiler().$returns(last_child)])}else{return[self.$s("nil")]}return nil}())},$BeginNode_returned_children$5.$$arity=0);Opal.def(self,"$compile_children",$BeginNode_compile_children$6=function $$compile_children(children,level){var $$7,self=this;return $send(children,"each",[],($$7=function(child){var self=$$7.$$s||this;if(child==null){child=nil}return self.$line(self.$process(child,level),";")},$$7.$$s=self,$$7.$$arity=1,$$7))},$BeginNode_compile_children$6.$$arity=2);Opal.const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze());Opal.def(self,"$simple_children?",$BeginNode_simple_children$ques$8=function(){var $$9,self=this;return $send(self.$children(),"none?",[],($$9=function(child){var self=$$9.$$s||this;if(child==null){child=nil}return $$($nesting,"COMPLEX_CHILDREN")["$include?"](child.$type())},$$9.$$s=self,$$9.$$arity=1,$$9))},$BeginNode_simple_children$ques$8.$$arity=0);return(Opal.def(self,"$compile_inline_children",$BeginNode_compile_inline_children$10=function $$compile_inline_children(children,level){var $$11,$$12,self=this,processed_children=nil;processed_children=$send(children,"map",[],($$11=function(child){var self=$$11.$$s||this;if(child==null){child=nil}return self.$process(child,level)},$$11.$$s=self,$$11.$$arity=1,$$11));return $send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],($$12=function(child,idx){var self=$$12.$$s||this;if(child==null){child=nil}if(idx==null){idx=nil}if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(child)},$$12.$$s=self,$$12.$$arity=2,$$12))},$BeginNode_compile_inline_children$10.$$arity=2),nil)&&"compile_inline_children"})($nesting[0],$$($nesting,"ScopeNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"KwBeginNode");var $nesting=[self].concat($parent_nesting);return self.$handle("kwbegin")})($nesting[0],$$($nesting,"BeginNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/yield"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$find_yielding_scope","$uses_block!","$block_name","$block_name=","$-","$yields_single_arg?","$children","$push","$expr","$first","$wrap","$s","$uses_splat?","$scope","$def?","$parent","$!","$==","$size","$any?","$type","$handle","$compile_call"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BaseYieldNode");var $nesting=[self].concat($parent_nesting),$BaseYieldNode_compile_call$1,$BaseYieldNode_find_yielding_scope$2,$BaseYieldNode_yields_single_arg$ques$3,$BaseYieldNode_uses_splat$ques$4;Opal.def(self,"$compile_call",$BaseYieldNode_compile_call$1=function $$compile_call(){var $a,self=this,yielding_scope=nil,$writer=nil,block_name=nil;yielding_scope=self.$find_yielding_scope();yielding_scope["$uses_block!"]();$truthy($a=yielding_scope.$block_name())?$a:($writer=["$yield"],$send(yielding_scope,"block_name=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]);block_name=yielding_scope.$block_name();if($truthy(self["$yields_single_arg?"](self.$children()))){self.$push(self.$expr(self.$children().$first()));return self.$wrap(""+"Opal.yield1("+block_name+", ",")")}else{self.$push(self.$expr($send(self,"s",["arglist"].concat(Opal.to_a(self.$children())))));if($truthy(self["$uses_splat?"](self.$children()))){return self.$wrap(""+"Opal.yieldX("+block_name+", ",")")}else{return self.$wrap(""+"Opal.yieldX("+block_name+", [","])")}}},$BaseYieldNode_compile_call$1.$$arity=0);Opal.def(self,"$find_yielding_scope",$BaseYieldNode_find_yielding_scope$2=function $$find_yielding_scope(){var $a,$b,self=this,working=nil;working=self.$scope();while($truthy(working)){if($truthy($truthy($b=working.$block_name())?$b:working["$def?"]())){break}working=working.$parent()}return working},$BaseYieldNode_find_yielding_scope$2.$$arity=0);Opal.def(self,"$yields_single_arg?",$BaseYieldNode_yields_single_arg$ques$3=function(children){var $a,self=this;return $truthy($a=self["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$a},$BaseYieldNode_yields_single_arg$ques$3.$$arity=1);return(Opal.def(self,"$uses_splat?",$BaseYieldNode_uses_splat$ques$4=function(children){var $$5,self=this;return $send(children,"any?",[],($$5=function(child){var self=$$5.$$s||this;if(child==null){child=nil}return child.$type()["$=="]("splat")},$$5.$$s=self,$$5.$$arity=1,$$5))},$BaseYieldNode_uses_splat$ques$4.$$arity=1),nil)&&"uses_splat?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"YieldNode");var $nesting=[self].concat($parent_nesting),$YieldNode_compile$6;self.$handle("yield");return(Opal.def(self,"$compile",$YieldNode_compile$6=function $$compile(){var self=this;return self.$compile_call()},$YieldNode_compile$6.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"BaseYieldNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ReturnableYieldNode");var $nesting=[self].concat($parent_nesting),$ReturnableYieldNode_compile$7;self.$handle("returnable_yield");return(Opal.def(self,"$compile",$ReturnableYieldNode_compile$7=function $$compile(){var self=this;self.$compile_call();return self.$wrap("return ",";")},$ReturnableYieldNode_compile$7.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"BaseYieldNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/rescue"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$push","$in_ensure","$line","$stmt","$body_sexp","$indent","$has_rescue_else?","$unshift","$rescue_else_code","$process","$compiler","$ensr_sexp","$wrap_in_closure?","$wrap","$returns","$begn","$ensr","$s","$recv?","$expr?","$rescue_else_sexp","$scope","$stmt?","$detect","$[]","$!=","$type","$rescue_else_sexp=","$-","$handle_rescue_else_manually?","$body_code","$each_with_index","$==","$nil?","$body","$!","$in_ensure?","$expr","$klasses","$lvar","$rescue_body","$klasses_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"EnsureNode");var $nesting=[self].concat($parent_nesting),$EnsureNode_compile$1,$EnsureNode_body_sexp$6,$EnsureNode_ensr_sexp$7,$EnsureNode_wrap_in_closure$ques$8,$EnsureNode_rescue_else_code$9;self.$handle("ensure");self.$children("begn","ensr");Opal.def(self,"$compile",$EnsureNode_compile$1=function $$compile(){var $$2,$$3,self=this;self.$push("try {");$send(self,"in_ensure",[],($$2=function(){var self=$$2.$$s||this;return self.$line(self.$stmt(self.$body_sexp()))},$$2.$$s=self,$$2.$$arity=0,$$2));self.$line("} finally {");$send(self,"indent",[],($$3=function(){var self=$$3.$$s||this,$$4;if(self.level==null)self.level=nil;if($truthy(self["$has_rescue_else?"]())){self.$unshift("var $no_errors = true; ");self.$line("var $rescue_else_result;");self.$line("if ($no_errors) { ");$send(self,"indent",[],($$4=function(){var self=$$4.$$s||this,$$5;self.$line("$rescue_else_result = (function() {");$send(self,"indent",[],($$5=function(){var self=$$5.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},$$5.$$s=self,$$5.$$arity=0,$$5));return self.$line("})();")},$$4.$$s=self,$$4.$$arity=0,$$4));self.$line("}");self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level));return self.$line("if ($no_errors) { return $rescue_else_result; }")}else{return self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}},$$3.$$s=self,$$3.$$arity=0,$$3));self.$line("}");if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() { ","; })()")}else{return nil}},$EnsureNode_compile$1.$$arity=0);Opal.def(self,"$body_sexp",$EnsureNode_body_sexp$6=function $$body_sexp(){var self=this;if($truthy(self["$wrap_in_closure?"]())){return self.$compiler().$returns(self.$begn())}else{return self.$begn()}},$EnsureNode_body_sexp$6.$$arity=0);Opal.def(self,"$ensr_sexp",$EnsureNode_ensr_sexp$7=function $$ensr_sexp(){var $a,self=this;return $truthy($a=self.$ensr())?$a:self.$s("nil")},$EnsureNode_ensr_sexp$7.$$arity=0);Opal.def(self,"$wrap_in_closure?",$EnsureNode_wrap_in_closure$ques$8=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?$a:self["$has_rescue_else?"]()},$EnsureNode_wrap_in_closure$ques$8.$$arity=0);return(Opal.def(self,"$rescue_else_code",$EnsureNode_rescue_else_code$9=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},$EnsureNode_rescue_else_code$9.$$arity=0),nil)&&"rescue_else_code"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RescueNode");var $nesting=[self].concat($parent_nesting),$RescueNode_compile$10,$RescueNode_body_code$17,$RescueNode_rescue_else_code$18,$RescueNode_handle_rescue_else_manually$ques$19;self.$handle("rescue");self.$children("body");Opal.def(self,"$compile",$RescueNode_compile$10=function $$compile(){var $$11,$$12,$$13,$$15,$a,self=this,$writer=nil,_has_rescue_handlers=nil;$writer=[$send(self.$children()["$[]"]($range(1,-1,false)),"detect",[],($$11=function(sexp){var self=$$11.$$s||this,$a;if(sexp==null){sexp=nil}return $truthy($a=sexp)?sexp.$type()["$!="]("resbody"):$a},$$11.$$s=self,$$11.$$arity=1,$$11))];$send(self.$scope(),"rescue_else_sexp=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];_has_rescue_handlers=false;if($truthy(self["$handle_rescue_else_manually?"]())){self.$line("var $no_errors = true;")}self.$push("try {");$send(self,"indent",[],($$12=function(){var self=$$12.$$s||this;return self.$line(self.$stmt(self.$body_code()))},$$12.$$s=self,$$12.$$arity=0,$$12));self.$line("} catch ($err) {");$send(self,"indent",[],($$13=function(){var self=$$13.$$s||this,$$14;if($truthy(self["$has_rescue_else?"]())){self.$line("$no_errors = false;")}$send(self.$children()["$[]"]($range(1,-1,false)),"each_with_index",[],($$14=function(child,idx){var self=$$14.$$s||this,$a;if(self.level==null)self.level=nil;if(child==null){child=nil}if(idx==null){idx=nil}if($truthy($truthy($a=child)?child.$type()["$=="]("resbody"):$a)){}else{return nil}_has_rescue_handlers=true;if(idx["$=="](0)){}else{self.$push(" else ")}return self.$line(self.$process(child,self.level))},$$14.$$s=self,$$14.$$arity=2,$$14));return self.$push(" else { throw $err; }")},$$13.$$s=self,$$13.$$arity=0,$$13));self.$line("}");if($truthy(self["$handle_rescue_else_manually?"]())){self.$push("finally {");$send(self,"indent",[],($$15=function(){var self=$$15.$$s||this,$$16;self.$line("if ($no_errors) { ");$send(self,"indent",[],($$16=function(){var self=$$16.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},$$16.$$s=self,$$16.$$arity=0,$$16));return self.$line("}")},$$15.$$s=self,$$15.$$arity=0,$$15));self.$push("}")}if($truthy($truthy($a=self["$expr?"]())?$a:self["$recv?"]())){return self.$wrap("(function() { ","})()")}else{return nil}},$RescueNode_compile$10.$$arity=0);Opal.def(self,"$body_code",$RescueNode_body_code$17=function $$body_code(){var $a,self=this,body_code=nil;body_code=function(){if($truthy($truthy($a=self.$body()["$nil?"]())?$a:self.$body().$type()["$=="]("resbody"))){return self.$s("nil")}else{return self.$body()}return nil}();if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},$RescueNode_body_code$17.$$arity=0);Opal.def(self,"$rescue_else_code",$RescueNode_rescue_else_code$18=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},$RescueNode_rescue_else_code$18.$$arity=0);return(Opal.def(self,"$handle_rescue_else_manually?",$RescueNode_handle_rescue_else_manually$ques$19=function(){var $a,self=this;return $truthy($a=self.$scope()["$in_ensure?"]()["$!"]())?self.$scope()["$has_rescue_else?"]():$a},$RescueNode_handle_rescue_else_manually$ques$19.$$arity=0),nil)&&"handle_rescue_else_manually?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ResBodyNode");var $nesting=[self].concat($parent_nesting),$ResBodyNode_compile$20,$ResBodyNode_klasses$23,$ResBodyNode_rescue_body$24;self.$handle("resbody");self.$children("klasses_sexp","lvar","body");Opal.def(self,"$compile",$ResBodyNode_compile$20=function $$compile(){var $$21,self=this;self.$push("if (Opal.rescue($err, ",self.$expr(self.$klasses()),")) {");$send(self,"indent",[],($$21=function(){var self=$$21.$$s||this,$$22;if($truthy(self.$lvar())){self.$push(self.$expr(self.$lvar()),"$err;")}self.$line("try {");$send(self,"indent",[],($$22=function(){var self=$$22.$$s||this;return self.$line(self.$stmt(self.$rescue_body()))},$$22.$$s=self,$$22.$$arity=0,$$22));return self.$line("} finally { Opal.pop_exception() }")},$$21.$$s=self,$$21.$$arity=0,$$21));return self.$line("}")},$ResBodyNode_compile$20.$$arity=0);Opal.def(self,"$klasses",$ResBodyNode_klasses$23=function $$klasses(){var $a,self=this;return $truthy($a=self.$klasses_sexp())?$a:self.$s("array",self.$s("const",nil,"StandardError"))},$ResBodyNode_klasses$23.$$arity=0);return(Opal.def(self,"$rescue_body",$ResBodyNode_rescue_body$24=function $$rescue_body(){var $a,self=this,body_code=nil;body_code=$truthy($a=self.$body())?$a:self.$s("nil");if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},$ResBodyNode_rescue_body$24.$$arity=0),nil)&&"rescue_body"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RetryNode");var $nesting=[self].concat($parent_nesting),$RetryNode_compile$25;self.$handle("retry");return(Opal.def(self,"$compile",$RetryNode_compile$25=function $$compile(){var self=this;return self.$push(self.$stmt(self.$s("send",nil,"retry")))},$RetryNode_compile$25.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/case"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$in_case","$compiler","$compile_code","$needs_closure?","$wrap","$condition","$[]=","$case_stmt","$-","$add_local","$push","$expr","$each_with_index","$case_parts","$line","$type","$===","$returns","$==","$stmt","$!","$stmt?","$[]","$when_checks","$js_truthy","$s","$process","$body_code","$last"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"CaseNode");var $nesting=[self].concat($parent_nesting),$CaseNode_compile$1,$CaseNode_compile_code$3,$CaseNode_needs_closure$ques$5,$CaseNode_case_parts$6,$CaseNode_case_stmt$7;self.$handle("case");self.$children("condition");Opal.def(self,"$compile",$CaseNode_compile$1=function $$compile(){var $$2,self=this;return $send(self.$compiler(),"in_case",[],($$2=function(){var self=$$2.$$s||this;self.$compile_code();if($truthy(self["$needs_closure?"]())){return self.$wrap("(function() {","})()")}else{return nil}},$$2.$$s=self,$$2.$$arity=0,$$2))},$CaseNode_compile$1.$$arity=0);Opal.def(self,"$compile_code",$CaseNode_compile_code$3=function $$compile_code(){var $$4,$a,self=this,handled_else=nil,$writer=nil;handled_else=false;if($truthy(self.$condition())){$writer=["cond",true];$send(self.$case_stmt(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_local("$case");self.$push("$case = ",self.$expr(self.$condition()),";")}$send(self.$case_parts(),"each_with_index",[],($$4=function(wen,idx){var self=$$4.$$s||this,$case=nil;if(wen==null){wen=nil}if(idx==null){idx=nil}if($truthy(wen)){}else{return nil}self.$line();return function(){$case=wen.$type();if("when"["$==="]($case)){if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}if(idx["$=="](0)){}else{self.$push("else ")}return self.$push(self.$stmt(wen))}else{handled_else=true;if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}return self.$push("else {",self.$stmt(wen),"}")}}()},$$4.$$s=self,$$4.$$arity=2,$$4));if($truthy($truthy($a=self["$needs_closure?"]())?handled_else["$!"]():$a)){self.$line();return self.$push("else { return nil }")}else{return nil}},$CaseNode_compile_code$3.$$arity=0);Opal.def(self,"$needs_closure?",$CaseNode_needs_closure$ques$5=function(){var self=this;return self["$stmt?"]()["$!"]()},$CaseNode_needs_closure$ques$5.$$arity=0);Opal.def(self,"$case_parts",$CaseNode_case_parts$6=function $$case_parts(){var self=this;return self.$children()["$[]"]($range(1,-1,false))},$CaseNode_case_parts$6.$$arity=0);return(Opal.def(self,"$case_stmt",$CaseNode_case_stmt$7=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},$CaseNode_case_stmt$7.$$arity=0),nil)&&"case_stmt"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"WhenNode");var $nesting=[self].concat($parent_nesting),$WhenNode_compile$8,$WhenNode_when_checks$10,$WhenNode_case_stmt$11,$WhenNode_body_code$12;self.$$prototype.level=nil;self.$handle("when");self.$children("whens","body");Opal.def(self,"$compile",$WhenNode_compile$8=function $$compile(){var $$9,self=this;self.$push("if (");$send(self.$when_checks(),"each_with_index",[],($$9=function(check,idx){var self=$$9.$$s||this,call=nil;if(check==null){check=nil}if(idx==null){idx=nil}if(idx["$=="](0)){}else{self.$push(" || ")}if(check.$type()["$=="]("splat")){self.$push("(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {");if($truthy(self.$case_stmt()["$[]"]("cond"))){self.$push("if ($splt[i]['$===']($case)) { return true; }")}else{self.$push("if (",self.$js_truthy(check),")) { return true; }")}return self.$push("} return false; })(",self.$expr(check.$children()["$[]"](0)),")")}else if($truthy(self.$case_stmt()["$[]"]("cond"))){call=self.$s("send",check,"===",self.$s("arglist",self.$s("js_tmp","$case")));return self.$push(self.$expr(call))}else{return self.$push(self.$js_truthy(check))}},$$9.$$s=self,$$9.$$arity=2,$$9));return self.$push(") {",self.$process(self.$body_code(),self.level),"}")},$WhenNode_compile$8.$$arity=0);Opal.def(self,"$when_checks",$WhenNode_when_checks$10=function $$when_checks(){var self=this;return self.$children()["$[]"]($range(0,-2,false))},$WhenNode_when_checks$10.$$arity=0);Opal.def(self,"$case_stmt",$WhenNode_case_stmt$11=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},$WhenNode_case_stmt$11.$$arity=0);return(Opal.def(self,"$body_code",$WhenNode_body_code$12=function $$body_code(){var $a,self=this;return $truthy($a=self.$children().$last())?$a:self.$s("nil")},$WhenNode_body_code$12.$$arity=0),nil)&&"body_code"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/super"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include?","$type","$s","$helper","$push","$compile_receiver","$compile_method","$compile_arguments","$compile_block_pass","$private","$def?","$scope","$find_parent_def","$==","$raise_exception?","$implicit_args?","$to_s","$mid","$def_scope","$identify!","$defs","$method_id","$def_scope_identity","$defined_check_param","$super_chain","$join","$map","$implicit_arguments_param","$super_method_invocation","$iter?","$super_block_invocation","$raise","$handle","$wrap","$uses_block!","$compile_using_send","$iter","$uses_zuper=","$-","$block_name","$!","$<<","$empty?","$children","$arglist","$expr","$==="]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"BaseSuperNode");var $nesting=[self].concat($parent_nesting),$BaseSuperNode_initialize$1,$BaseSuperNode_compile_using_send$2,$BaseSuperNode_def_scope$3,$BaseSuperNode_raise_exception$ques$4,$BaseSuperNode_defined_check_param$5,$BaseSuperNode_implicit_args$ques$6,$BaseSuperNode_implicit_arguments_param$7,$BaseSuperNode_method_id$8,$BaseSuperNode_def_scope_identity$9,$BaseSuperNode_super_method_invocation$10,$BaseSuperNode_super_block_invocation$11,$BaseSuperNode_compile_method$13;self.$$prototype.sexp=self.$$prototype.def_scope=nil;Opal.def(self,"$initialize",$BaseSuperNode_initialize$1=function $$initialize($a){var $post_args,$b,$c,$iter=$BaseSuperNode_initialize$1.$$p,$yield=$iter||nil,self=this,args=nil,rest=nil,last_child=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$BaseSuperNode_initialize$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$BaseSuperNode_initialize$1,false),$zuper,$iter);args=[].concat(Opal.to_a(self.sexp));$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_child)?["iter","block_pass"]["$include?"](last_child.$type()):$b)){self.iter=last_child;args=rest}else{self.iter=self.$s("js_tmp","null")}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)));return self.recvr=self.$s("self")},$BaseSuperNode_initialize$1.$$arity=-1);Opal.def(self,"$compile_using_send",$BaseSuperNode_compile_using_send$2=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},$BaseSuperNode_compile_using_send$2.$$arity=0);self.$private();Opal.def(self,"$def_scope",$BaseSuperNode_def_scope$3=function $$def_scope(){var $a,self=this;return self.def_scope=$truthy($a=self.def_scope)?$a:function(){if($truthy(self.$scope()["$def?"]())){return self.$scope()}else{return self.$scope().$find_parent_def()}return nil}()},$BaseSuperNode_def_scope$3.$$arity=0);Opal.def(self,"$raise_exception?",$BaseSuperNode_raise_exception$ques$4=function(){var self=this;return self.sexp.$type()["$=="]("defined_super")},$BaseSuperNode_raise_exception$ques$4.$$arity=0);Opal.def(self,"$defined_check_param",$BaseSuperNode_defined_check_param$5=function $$defined_check_param(){var self=this;if($truthy(self["$raise_exception?"]())){return"true"}else{return"false"}},$BaseSuperNode_defined_check_param$5.$$arity=0);Opal.def(self,"$implicit_args?",$BaseSuperNode_implicit_args$ques$6=function(){var self=this;return self.sexp.$type()["$=="]("zsuper")},$BaseSuperNode_implicit_args$ques$6.$$arity=0);Opal.def(self,"$implicit_arguments_param",$BaseSuperNode_implicit_arguments_param$7=function $$implicit_arguments_param(){var self=this;if($truthy(self["$implicit_args?"]())){return"true"}else{return"false"}},$BaseSuperNode_implicit_arguments_param$7.$$arity=0);Opal.def(self,"$method_id",$BaseSuperNode_method_id$8=function $$method_id(){var self=this;return self.$def_scope().$mid().$to_s()},$BaseSuperNode_method_id$8.$$arity=0);Opal.def(self,"$def_scope_identity",$BaseSuperNode_def_scope_identity$9=function $$def_scope_identity(){var self=this;return self.$def_scope()["$identify!"](self.$def_scope().$mid())},$BaseSuperNode_def_scope_identity$9.$$arity=0);Opal.def(self,"$super_method_invocation",$BaseSuperNode_super_method_invocation$10=function $$super_method_invocation(){var self=this;if($truthy(self.$def_scope().$defs())){return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+", self.$$class.$$prototype)"}else{return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+")"}},$BaseSuperNode_super_method_invocation$10.$$arity=0);Opal.def(self,"$super_block_invocation",$BaseSuperNode_super_block_invocation$11=function $$super_block_invocation(){var $a,$b,$$12,self=this,chain=nil,cur_defn=nil,mid=nil,trys=nil;$b=self.$scope().$super_chain(),$a=Opal.to_ary($b),chain=$a[0]==null?nil:$a[0],cur_defn=$a[1]==null?nil:$a[1],mid=$a[2]==null?nil:$a[2],$b;trys=$send(chain,"map",[],($$12=function(c){var self=$$12.$$s||this;if(c==null){c=nil}return""+c+".$$def"},$$12.$$s=self,$$12.$$arity=1,$$12)).$join(" || ");return""+"Opal.find_iter_super_dispatcher(self, "+mid+", ("+trys+" || "+cur_defn+"), "+self.$defined_check_param()+", "+self.$implicit_arguments_param()+")"},$BaseSuperNode_super_block_invocation$11.$$arity=0);return(Opal.def(self,"$compile_method",$BaseSuperNode_compile_method$13=function $$compile_method(){var self=this;self.$push(", ");if($truthy(self.$scope()["$def?"]())){return self.$push(self.$super_method_invocation())}else if($truthy(self.$scope()["$iter?"]())){return self.$push(self.$super_block_invocation())}else{return self.$raise("super must be called from method body or block")}},$BaseSuperNode_compile_method$13.$$arity=0),nil)&&"compile_method"})($nesting[0],$$($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DefinedSuperNode");var $nesting=[self].concat($parent_nesting),$DefinedSuperNode_compile$14;self.$handle("defined_super");return(Opal.def(self,"$compile",$DefinedSuperNode_compile$14=function $$compile(){var self=this;self.$compile_receiver();self.$compile_method();return self.$wrap("((",') != null ? "super" : nil)')},$DefinedSuperNode_compile$14.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SuperNode");var $nesting=[self].concat($parent_nesting),$SuperNode_initialize$15,$SuperNode_compile$16;self.$handle("super");Opal.def(self,"$initialize",$SuperNode_initialize$15=function $$initialize($a){var $post_args,$iter=$SuperNode_initialize$15.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$SuperNode_initialize$15.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$SuperNode_initialize$15,false),$zuper,$iter);if($truthy(self.$scope()["$def?"]())){return self.$scope()["$uses_block!"]()}else{return nil}},$SuperNode_initialize$15.$$arity=-1);return(Opal.def(self,"$compile",$SuperNode_compile$16=function $$compile(){var self=this;return self.$compile_using_send()},$SuperNode_compile$16.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode");var $nesting=[self].concat($parent_nesting),$ZsuperNode_initialize$17,$ZsuperNode_compile$18,$ZsuperNode_compile_arguments$19,$ZsuperNode_block_name$20;self.$handle("zsuper");Opal.def(self,"$initialize",$ZsuperNode_initialize$17=function $$initialize($a){var $post_args,$iter=$ZsuperNode_initialize$17.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$ZsuperNode_initialize$17.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$ZsuperNode_initialize$17,false),$zuper,$iter);if(self.$iter().$type()["$=="]("iter")){return nil}else{self.$scope()["$uses_block!"]();return self.iter=self.$s("js_tmp","$iter")}},$ZsuperNode_initialize$17.$$arity=-1);Opal.def(self,"$compile",$ZsuperNode_compile$18=function $$compile(){var $a,self=this,$writer=nil,implicit_args=nil,block_pass=nil;if($truthy(self.$def_scope())){$writer=[true];$send(self.$def_scope(),"uses_zuper=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];implicit_args=[self.$s("js_tmp","$zuper")];if($truthy($truthy($a=self.$block_name())?self.$iter()["$!"]():$a)){block_pass=self.$s("block_pass",self.$s("lvar",self.$block_name()));implicit_args["$<<"](block_pass)}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(implicit_args)))}return self.$compile_using_send()},$ZsuperNode_compile$18.$$arity=0);Opal.def(self,"$compile_arguments",$ZsuperNode_compile_arguments$19=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push(self.$expr(self.$arglist()))}},$ZsuperNode_compile_arguments$19.$$arity=0);return(Opal.def(self,"$block_name",$ZsuperNode_block_name$20=function $$block_name(){var self=this,$case=nil;return function(){$case=self.$def_scope();if($$$($$$($$($nesting,"Opal"),"Nodes"),"IterNode")["$==="]($case)){return self.$def_scope().$block_name()}else if($$$($$$($$($nesting,"Opal"),"Nodes"),"DefNode")["$==="]($case)){return self.$def_scope().$block_name()}else{return self.$raise(""+"Don't know what to do with super in the scope "+self.$def_scope())}}()},$ZsuperNode_block_name$20.$$arity=0),nil)&&"block_name"})($nesting[0],$$($nesting,"SuperNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","1.0.5")}($nesting[0],$nesting)};Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$version_comment","$opening","$in_scope","$stmt","$stmts","$is_a?","$eval?","$compiler","$add_temp","$add_used_helpers","$add_used_operators","$line","$to_vars","$scope","$compile_method_stubs","$compile_irb_vars","$compile_end_construct","$closing","$requirable?","$inspect","$module_name","$file","$returns","$body","$irb?","$to_a","$helpers","$each","$operator_helpers","$[]","$method_missing?","$method_calls","$join","$map","$empty?","$eof_content"]);self.$require("pathname");self.$require("opal/version");self.$require("opal/nodes/scope");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode");var $nesting=[self].concat($parent_nesting),$TopNode_compile$1,$TopNode_opening$3,$TopNode_closing$4,$TopNode_stmts$5,$TopNode_compile_irb_vars$6,$TopNode_add_used_helpers$7,$TopNode_add_used_operators$9,$TopNode_compile_method_stubs$11,$TopNode_compile_end_construct$13,$TopNode_version_comment$14;self.$handle("top");self.$children("body");Opal.def(self,"$compile",$TopNode_compile$1=function $$compile(){var $$2,self=this;self.$push(self.$version_comment());self.$opening();$send(self,"in_scope",[],($$2=function(){var self=$$2.$$s||this,body_code=nil;body_code=self.$stmt(self.$stmts());if($truthy(body_code["$is_a?"]($$($nesting,"Array")))){}else{body_code=[body_code]}if($truthy(self.$compiler()["$eval?"]())){self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]")}else{self.$add_temp("self = Opal.top");self.$add_temp("$nesting = []")}self.$add_temp("nil = Opal.nil");self.$add_temp("$$$ = Opal.const_get_qualified");self.$add_temp("$$ = Opal.const_get_relative");self.$add_used_helpers();self.$add_used_operators();self.$line(self.$scope().$to_vars());self.$compile_method_stubs();self.$compile_irb_vars();self.$compile_end_construct();return self.$line(body_code)},$$2.$$s=self,$$2.$$arity=0,$$2));return self.$closing()},$TopNode_compile$1.$$arity=0);Opal.def(self,"$opening",$TopNode_opening$3=function $$opening(){var self=this;if($truthy(self.$compiler()["$requirable?"]())){return self.$line(""+"Opal.modules["+$$$($$($nesting,"Opal"),"Compiler").$module_name(self.$compiler().$file()).$inspect()+"] = function(Opal) {")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("(function(Opal, self) {")}else{return self.$line("(function(Opal) {")}},$TopNode_opening$3.$$arity=0);Opal.def(self,"$closing",$TopNode_closing$4=function $$closing(){var self=this;if($truthy(self.$compiler()["$requirable?"]())){return self.$line("};\n")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("})(Opal, self)")}else{return self.$line("})(Opal);\n")}},$TopNode_closing$4.$$arity=0);Opal.def(self,"$stmts",$TopNode_stmts$5=function $$stmts(){var self=this;return self.$compiler().$returns(self.$body())},$TopNode_stmts$5.$$arity=0);Opal.def(self,"$compile_irb_vars",$TopNode_compile_irb_vars$6=function $$compile_irb_vars(){var self=this;if($truthy(self.$compiler()["$irb?"]())){return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }")}else{return nil}},$TopNode_compile_irb_vars$6.$$arity=0);Opal.def(self,"$add_used_helpers",$TopNode_add_used_helpers$7=function $$add_used_helpers(){var $$8,self=this,helpers=nil;helpers=self.$compiler().$helpers().$to_a();return $send(helpers.$to_a(),"each",[],($$8=function(h){var self=$$8.$$s||this;if(h==null){h=nil}return self.$add_temp(""+"$"+h+" = Opal."+h)},$$8.$$s=self,$$8.$$arity=1,$$8))},$TopNode_add_used_helpers$7.$$arity=0);Opal.def(self,"$add_used_operators",$TopNode_add_used_operators$9=function $$add_used_operators(){var $$10,self=this,operators=nil;operators=self.$compiler().$operator_helpers().$to_a();return $send(operators,"each",[],($$10=function(op){var self=$$10.$$s||this,name=nil;if(op==null){op=nil}name=$$$($$$($$($nesting,"Nodes"),"CallNode"),"OPERATORS")["$[]"](op);self.$line(""+"function $rb_"+name+"(lhs, rhs) {");self.$line(""+" return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs "+op+" rhs : lhs['$"+op+"'](rhs);");return self.$line("}")},$$10.$$s=self,$$10.$$arity=1,$$10))},$TopNode_add_used_operators$9.$$arity=0);Opal.def(self,"$compile_method_stubs",$TopNode_compile_method_stubs$11=function $$compile_method_stubs(){var $$12,self=this,calls=nil,stubs=nil;if($truthy(self.$compiler()["$method_missing?"]())){calls=self.$compiler().$method_calls();stubs=$send(calls.$to_a(),"map",[],($$12=function(k){var self=$$12.$$s||this;if(k==null){k=nil}return""+"'$"+k+"'"},$$12.$$s=self,$$12.$$arity=1,$$12)).$join(", ");if($truthy(stubs["$empty?"]())){return nil}else{return self.$line(""+"Opal.add_stubs(["+stubs+"]);")}}else{return nil}},$TopNode_compile_method_stubs$11.$$arity=0);Opal.def(self,"$compile_end_construct",$TopNode_compile_end_construct$13=function $$compile_end_construct(){var self=this,content=nil;if($truthy(content=self.$compiler().$eof_content())){self.$line("var $__END__ = Opal.Object.$new();");return self.$line(""+"$__END__.$read = function() { return "+content.$inspect()+"; };")}else{return nil}},$TopNode_compile_end_construct$13.$$arity=0);return(Opal.def(self,"$version_comment",$TopNode_version_comment$14=function $$version_comment(){var self=this;return""+"/* Generated by Opal "+$$$($$($nesting,"Opal"),"VERSION")+" */"},$TopNode_version_comment$14.$$arity=0),nil)&&"version_comment"})($nesting[0],$$($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/while"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$with_temp","$js_truthy","$test","$in_while","$compiler","$wrap_in_closure?","$[]=","$while_loop","$-","$stmt","$body","$uses_redo?","$push","$while_open","$while_close","$line","$wrap","$[]","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"WhileNode");var $nesting=[self].concat($parent_nesting),$WhileNode_compile$1,$WhileNode_while_open$4,$WhileNode_while_close$5,$WhileNode_uses_redo$ques$6,$WhileNode_wrap_in_closure$ques$7;self.$handle("while");self.$children("test","body");Opal.def(self,"$compile",$WhileNode_compile$1=function $$compile(){var $$2,self=this;$send(self,"with_temp",[],($$2=function(redo_var){var self=$$2.$$s||this,$$3,test_code=nil;if(redo_var==null){redo_var=nil}test_code=self.$js_truthy(self.$test());$send(self.$compiler(),"in_while",[],($$3=function(){var self=$$3.$$s||this,$writer=nil,body_code=nil;if($truthy(self["$wrap_in_closure?"]())){$writer=["closure",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=["redo_var",redo_var];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];body_code=self.$stmt(self.$body());if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false; "+self.$while_open()+redo_var+" || ");self.$push(test_code);self.$push(self.$while_close())}else{self.$push(self.$while_open(),test_code,self.$while_close())}if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false;")}return self.$line(body_code)},$$3.$$s=self,$$3.$$arity=0,$$3));return self.$line("}")},$$2.$$s=self,$$2.$$arity=1,$$2));if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},$WhileNode_compile$1.$$arity=0);Opal.def(self,"$while_open",$WhileNode_while_open$4=function $$while_open(){var self=this;return"while ("},$WhileNode_while_open$4.$$arity=0);Opal.def(self,"$while_close",$WhileNode_while_close$5=function $$while_close(){var self=this;return") {"},$WhileNode_while_close$5.$$arity=0);Opal.def(self,"$uses_redo?",$WhileNode_uses_redo$ques$6=function(){var self=this;return self.$while_loop()["$[]"]("use_redo")},$WhileNode_uses_redo$ques$6.$$arity=0);return(Opal.def(self,"$wrap_in_closure?",$WhileNode_wrap_in_closure$ques$7=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},$WhileNode_wrap_in_closure$ques$7.$$arity=0),nil)&&"wrap_in_closure?"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"WhilePostNode");var $nesting=[self].concat($parent_nesting);return self.$handle("while_post")})($nesting[0],$$($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"UntilNode");var $nesting=[self].concat($parent_nesting),$UntilNode_while_open$8,$UntilNode_while_close$9;self.$handle("until");Opal.def(self,"$while_open",$UntilNode_while_open$8=function $$while_open(){var self=this;return"while (!("},$UntilNode_while_open$8.$$arity=0);return(Opal.def(self,"$while_close",$UntilNode_while_close$9=function $$while_close(){var self=this;return")) {"},$UntilNode_while_close$9.$$arity=0),nil)&&"while_close"})($nesting[0],$$($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"UntilPostNode");var $nesting=[self].concat($parent_nesting);return self.$handle("until_post")})($nesting[0],$$($nesting,"UntilNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/hash"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$handle","$attr_accessor","$each","$children","$type","$===","$<<","$[]","$all?","$keys","$include?","$has_kwsplat","$compile_merge","$simple_keys?","$compile_hash2","$compile_hash","$helper","$==","$empty?","$expr","$s","$each_with_index","$push","$wrap","$times","$size","$inspect","$to_s","$values","$[]=","$-","$join","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"HashNode");var $nesting=[self].concat($parent_nesting),$HashNode_initialize$1,$HashNode_simple_keys$ques$3,$HashNode_compile$5,$HashNode_compile_merge$6,$HashNode_compile_hash$9,$HashNode_compile_hash2$11;self.$handle("hash");self.$attr_accessor("has_kwsplat","keys","values");Opal.def(self,"$initialize",$HashNode_initialize$1=function $$initialize($a){var $post_args,$$2,$iter=$HashNode_initialize$1.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$HashNode_initialize$1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);$send(self,Opal.find_super_dispatcher(self,"initialize",$HashNode_initialize$1,false),$zuper,$iter);self.has_kwsplat=false;self.keys=[];self.values=[];return $send(self.$children(),"each",[],($$2=function(child){var self=$$2.$$s||this,$case=nil;if(self.keys==null)self.keys=nil;if(self.values==null)self.values=nil;if(child==null){child=nil}return function(){$case=child.$type();if("kwsplat"["$==="]($case)){return self.has_kwsplat=true}else if("pair"["$==="]($case)){self.keys["$<<"](child.$children()["$[]"](0));return self.values["$<<"](child.$children()["$[]"](1))}else{return nil}}()},$$2.$$s=self,$$2.$$arity=1,$$2))},$HashNode_initialize$1.$$arity=-1);Opal.def(self,"$simple_keys?",$HashNode_simple_keys$ques$3=function(){var $$4,self=this;return $send(self.$keys(),"all?",[],($$4=function(key){var self=$$4.$$s||this;if(key==null){key=nil}return["sym","str"]["$include?"](key.$type())},$$4.$$s=self,$$4.$$arity=1,$$4))},$HashNode_simple_keys$ques$3.$$arity=0);Opal.def(self,"$compile",$HashNode_compile$5=function $$compile(){var self=this;if($truthy(self.$has_kwsplat())){return self.$compile_merge()}else if($truthy(self["$simple_keys?"]())){return self.$compile_hash2()}else{return self.$compile_hash()}},$HashNode_compile$5.$$arity=0);Opal.def(self,"$compile_merge",$HashNode_compile_merge$6=function $$compile_merge(){var $a,$$7,$$8,self=this,result=nil,seq=nil;self.$helper("hash");$a=[[],[]],result=$a[0],seq=$a[1],$a;$send(self.$children(),"each",[],($$7=function(child){var self=$$7.$$s||this;if(child==null){child=nil}if(child.$type()["$=="]("kwsplat")){if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}result["$<<"](self.$expr(child));return seq=[]}else{return seq["$<<"](child)}},$$7.$$s=self,$$7.$$arity=1,$$7));if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}return $send(result,"each_with_index",[],($$8=function(fragment,idx){var self=$$8.$$s||this;if(fragment==null){fragment=nil}if(idx==null){idx=nil}if(idx["$=="](0)){return self.$push(fragment)}else{return self.$push(".$merge(",fragment,")")}},$$8.$$s=self,$$8.$$arity=2,$$8))},$HashNode_compile_merge$6.$$arity=0);Opal.def(self,"$compile_hash",$HashNode_compile_hash$9=function $$compile_hash(){var $$10,self=this;self.$helper("hash");$send(self.$children(),"each_with_index",[],($$10=function(pair,idx){var self=$$10.$$s||this,$a,$b,key=nil,value=nil;if(pair==null){pair=nil}if(idx==null){idx=nil}$b=pair.$children(),$a=Opal.to_ary($b),key=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$b;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(key),", ",self.$expr(value))},$$10.$$s=self,$$10.$$arity=2,$$10));return self.$wrap("$hash(",")")},$HashNode_compile_hash$9.$$arity=0);return(Opal.def(self,"$compile_hash2",$HashNode_compile_hash2$11=function $$compile_hash2(){var $a,$$12,$$13,self=this,hash_obj=nil,hash_keys=nil;$a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],$a;self.$helper("hash2");$send(self.$keys().$size(),"times",[],($$12=function(idx){var self=$$12.$$s||this,key=nil,$writer=nil;if(idx==null){idx=nil}key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect();if($truthy(hash_obj["$include?"](key))){}else{hash_keys["$<<"](key)}$writer=[key,self.$expr(self.$values()["$[]"](idx))];$send(hash_obj,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$$12.$$s=self,$$12.$$arity=1,$$12));$send(hash_keys,"each_with_index",[],($$13=function(key,idx){var self=$$13.$$s||this;if(key==null){key=nil}if(idx==null){idx=nil}if(idx["$=="](0)){}else{self.$push(", ")}self.$push(""+key+": ");return self.$push(hash_obj["$[]"](key))},$$13.$$s=self,$$13.$$arity=2,$$13));return self.$wrap(""+"$hash2(["+hash_keys.$join(", ")+"], {","})")},$HashNode_compile_hash2$11.$$arity=0),nil)&&"compile_hash2"})($nesting[0],$$($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"KwSplatNode");var $nesting=[self].concat($parent_nesting),$KwSplatNode_compile$14;self.$handle("kwsplat");self.$children("value");return(Opal.def(self,"$compile",$KwSplatNode_compile$14=function $$compile(){var self=this;return self.$push("Opal.to_hash(",self.$expr(self.$value()),")")},$KwSplatNode_compile$14.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$empty?","$children","$push","$each","$==","$type","$expr","$<<","$fragment"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArrayNode");var $nesting=[self].concat($parent_nesting),$ArrayNode_compile$1;self.$handle("array");return(Opal.def(self,"$compile",$ArrayNode_compile$1=function $$compile(){var $a,$$2,self=this,code=nil,work=nil,join=nil;if($truthy(self.$children()["$empty?"]())){return self.$push("[]")}$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],($$2=function(child){var self=$$2.$$s||this,splat=nil,part=nil;if(child==null){child=nil}splat=child.$type()["$=="]("splat");part=self.$expr(child);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")"))}else{code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](part)}},$$2.$$s=self,$$2.$$arity=1,$$2));if($truthy(work["$empty?"]())){}else{join=[self.$fragment("["),work,self.$fragment("]")];if($truthy(code["$empty?"]())){code=join}else{code.$push([self.$fragment(".concat("),join,self.$fragment(")")])}}return self.$push(code)},$ArrayNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$type","$value","$===","$push","$inspect","$to_s","$==","$size","$[]","$compile_defined_send","$wrap","$compile_defined_ivar","$compile_defined_super","$compile_defined_yield","$compile_defined_xstr","$compile_defined_const","$compile_defined_cvar","$compile_defined_gvar","$compile_defined_back_ref","$compile_defined_nth_ref","$compile_defined_array","$respond_to?","$__send__","$new_temp","$scope","$expr","$wrap_with_try_catch","$mid_to_jsid","$compile_defined","$compile_send_recv_doesnt_raise","$each","$s","$uses_block!","$block_name","$find_parent_def","$nil?","$class_variable_owner","$helper","$include?","$each_with_index"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"DefinedNode");var $nesting=[self].concat($parent_nesting),$DefinedNode_compile$1,$DefinedNode_compile_defined$2,$DefinedNode_wrap_with_try_catch$3,$DefinedNode_compile_send_recv_doesnt_raise$4,$DefinedNode_compile_defined_send$5,$DefinedNode_compile_defined_ivar$7,$DefinedNode_compile_defined_super$8,$DefinedNode_compile_defined_yield$9,$DefinedNode_compile_defined_xstr$10,$DefinedNode_compile_defined_const$11,$DefinedNode_compile_defined_cvar$12,$DefinedNode_compile_defined_gvar$13,$DefinedNode_compile_defined_back_ref$14,$DefinedNode_compile_defined_nth_ref$15,$DefinedNode_compile_defined_array$16;self.$handle("defined?");self.$children("value");Opal.def(self,"$compile",$DefinedNode_compile$1=function $$compile(){var $a,self=this,$case=nil;return function(){$case=self.$value().$type();if("self"["$==="]($case)||"nil"["$==="]($case)||"false"["$==="]($case)||"true"["$==="]($case)){return self.$push(self.$value().$type().$to_s().$inspect())}else if("lvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"gvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"op_asgn"["$==="]($case)||"or_asgn"["$==="]($case)||"and_asgn"["$==="]($case)){return self.$push("'assignment'")}else if("lvar"["$==="]($case)){return self.$push("'local-variable'")}else if("begin"["$==="]($case)){if($truthy(($a=self.$value().$children().$size()["$=="](1))?self.$value().$children()["$[]"](0).$type()["$=="]("masgn"):self.$value().$children().$size()["$=="](1))){return self.$push("'assignment'")}else{return self.$push("'expression'")}}else if("send"["$==="]($case)){self.$compile_defined_send(self.$value());return self.$wrap("("," ? 'method' : nil)")}else if("ivar"["$==="]($case)){self.$compile_defined_ivar(self.$value());return self.$wrap("("," ? 'instance-variable' : nil)")}else if("zsuper"["$==="]($case)||"super"["$==="]($case)){return self.$compile_defined_super()}else if("yield"["$==="]($case)){self.$compile_defined_yield();return self.$wrap("("," ? 'yield' : nil)")}else if("xstr"["$==="]($case)){return self.$compile_defined_xstr(self.$value())}else if("const"["$==="]($case)){self.$compile_defined_const(self.$value());return self.$wrap("("," ? 'constant' : nil)")}else if("cvar"["$==="]($case)){self.$compile_defined_cvar(self.$value());return self.$wrap("("," ? 'class variable' : nil)")}else if("gvar"["$==="]($case)){self.$compile_defined_gvar(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("back_ref"["$==="]($case)){self.$compile_defined_back_ref();return self.$wrap("("," ? 'global-variable' : nil)")}else if("nth_ref"["$==="]($case)){self.$compile_defined_nth_ref();return self.$wrap("("," ? 'global-variable' : nil)")}else if("array"["$==="]($case)){self.$compile_defined_array(self.$value());return self.$wrap("("," ? 'expression' : nil)")}else{return self.$push("'expression'")}}()},$DefinedNode_compile$1.$$arity=0);Opal.def(self,"$compile_defined",$DefinedNode_compile_defined$2=function $$compile_defined(node){var self=this,type=nil,node_tmp=nil;type=node.$type();if($truthy(self["$respond_to?"](""+"compile_defined_"+type))){return self.$__send__(""+"compile_defined_"+type,node)}else{node_tmp=self.$scope().$new_temp();self.$push(""+"("+node_tmp+" = ",self.$expr(node),")");return node_tmp}},$DefinedNode_compile_defined$2.$$arity=1);Opal.def(self,"$wrap_with_try_catch",$DefinedNode_wrap_with_try_catch$3=function $$wrap_with_try_catch(code){var self=this,returning_tmp=nil;returning_tmp=self.$scope().$new_temp();self.$push(""+"("+returning_tmp+" = (function() { try {");self.$push(""+" return "+code+";");self.$push("} catch ($err) {");self.$push(" if (Opal.rescue($err, [Opal.Exception])) {");self.$push(" try {");self.$push(" return false;");self.$push(" } finally { Opal.pop_exception() }");self.$push(" } else { throw $err; }");self.$push("}})())");return returning_tmp},$DefinedNode_wrap_with_try_catch$3.$$arity=1);Opal.def(self,"$compile_send_recv_doesnt_raise",$DefinedNode_compile_send_recv_doesnt_raise$4=function $$compile_send_recv_doesnt_raise(recv_code){var self=this;return self.$wrap_with_try_catch(recv_code)},$DefinedNode_compile_send_recv_doesnt_raise$4.$$arity=1);Opal.def(self,"$compile_defined_send",$DefinedNode_compile_defined_send$5=function $$compile_defined_send(node){var $a,$$6,self=this,recv=nil,method_name=nil,args=nil,mid=nil,recv_code=nil,recv_tmp=nil,recv_value_tmp=nil,meth_tmp=nil;$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;mid=self.$mid_to_jsid(method_name.$to_s());if($truthy(recv)){recv_code=self.$compile_defined(recv);self.$push(" && ");if(recv.$type()["$=="]("send")){recv_code=self.$compile_send_recv_doesnt_raise(recv_code);self.$push(" && ")}recv_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_tmp+" = ",recv_code,""+", "+recv_tmp+") && ")}else{recv_tmp="self"}recv_value_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_value_tmp+" = "+recv_tmp+") && ");meth_tmp=self.$scope().$new_temp();self.$push(""+"((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)");self.$push(""+" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))");$send(args,"each",[],($$6=function(arg){var self=$$6.$$s||this,$case=nil;if(arg==null){arg=nil}return function(){$case=arg.$type();if("block_pass"["$==="]($case)){return nil}else{self.$push(" && ");return self.$compile_defined(arg)}}()},$$6.$$s=self,$$6.$$arity=1,$$6));self.$wrap("(",")");return""+meth_tmp+"()"},$DefinedNode_compile_defined_send$5.$$arity=1);Opal.def(self,"$compile_defined_ivar",$DefinedNode_compile_defined_ivar$7=function $$compile_defined_ivar(node){var self=this,name=nil,tmp=nil;name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));tmp=self.$scope().$new_temp();self.$push(""+"("+tmp+" = self['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)");return tmp},$DefinedNode_compile_defined_ivar$7.$$arity=1);Opal.def(self,"$compile_defined_super",$DefinedNode_compile_defined_super$8=function $$compile_defined_super(){var self=this;return self.$push(self.$expr(self.$s("defined_super")))},$DefinedNode_compile_defined_super$8.$$arity=0);Opal.def(self,"$compile_defined_yield",$DefinedNode_compile_defined_yield$9=function $$compile_defined_yield(){var $a,self=this,block_name=nil;self.$scope()["$uses_block!"]();block_name=$truthy($a=self.$scope().$block_name())?$a:self.$scope().$find_parent_def().$block_name();self.$push(""+"("+block_name+" != null && "+block_name+" !== nil)");return block_name},$DefinedNode_compile_defined_yield$9.$$arity=0);Opal.def(self,"$compile_defined_xstr",$DefinedNode_compile_defined_xstr$10=function $$compile_defined_xstr(node){var self=this;return self.$push("(typeof(",self.$expr(node),') !== "undefined")')},$DefinedNode_compile_defined_xstr$10.$$arity=1);Opal.def(self,"$compile_defined_const",$DefinedNode_compile_defined_const$11=function $$compile_defined_const(node){var $a,self=this,const_scope=nil,const_name=nil,const_tmp=nil,const_scope_tmp=nil;$a=[].concat(Opal.to_a(node)),const_scope=$a[0]==null?nil:$a[0],const_name=$a[1]==null?nil:$a[1],$a;const_tmp=self.$scope().$new_temp();if($truthy(const_scope["$nil?"]())){self.$push(""+"("+const_tmp+" = $$($nesting, '"+const_name+"', 'skip_raise'))")}else if(const_scope["$=="](self.$s("cbase"))){self.$push(""+"("+const_tmp+" = $$$('::', '"+const_name+"', 'skip_raise'))")}else{const_scope_tmp=self.$compile_defined(const_scope);self.$push(""+" && ("+const_tmp+" = $$$("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")}return const_tmp},$DefinedNode_compile_defined_const$11.$$arity=1);Opal.def(self,"$compile_defined_cvar",$DefinedNode_compile_defined_cvar$12=function $$compile_defined_cvar(node){var $a,self=this,cvar_name=nil,_=nil,cvar_tmp=nil;$a=[].concat(Opal.to_a(node)),cvar_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;cvar_tmp=self.$scope().$new_temp();self.$push(""+"("+cvar_tmp+" = "+self.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)");return cvar_tmp},$DefinedNode_compile_defined_cvar$12.$$arity=1);Opal.def(self,"$compile_defined_gvar",$DefinedNode_compile_defined_gvar$13=function $$compile_defined_gvar(node){var self=this,name=nil,gvar_temp=nil;self.$helper("gvars");name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));gvar_temp=self.$scope().$new_temp();if($truthy(["~","!"]["$include?"](name))){self.$push(""+"("+gvar_temp+" = ",self.$expr(node)," || true)")}else{self.$push(""+"("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)")}return gvar_temp},$DefinedNode_compile_defined_gvar$13.$$arity=1);Opal.def(self,"$compile_defined_back_ref",$DefinedNode_compile_defined_back_ref$14=function $$compile_defined_back_ref(){var self=this,back_ref_temp=nil;self.$helper("gvars");back_ref_temp=self.$scope().$new_temp();self.$push(""+"("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)");return back_ref_temp},$DefinedNode_compile_defined_back_ref$14.$$arity=0);Opal.def(self,"$compile_defined_nth_ref",$DefinedNode_compile_defined_nth_ref$15=function $$compile_defined_nth_ref(){var self=this,nth_ref_tmp=nil;self.$helper("gvars");nth_ref_tmp=self.$scope().$new_temp();self.$push(""+"("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)");return nth_ref_tmp},$DefinedNode_compile_defined_nth_ref$15.$$arity=0);return(Opal.def(self,"$compile_defined_array",$DefinedNode_compile_defined_array$16=function $$compile_defined_array(node){var $$17,self=this;return $send(node.$children(),"each_with_index",[],($$17=function(child,idx){var self=$$17.$$s||this;if(child==null){child=nil}if(idx==null){idx=nil}if(idx["$=="](0)){}else{self.$push(" && ")}return self.$compile_defined(child)},$$17.$$s=self,$$17.$$arity=2,$$17))},$DefinedNode_compile_defined_array$16.$$arity=1),nil)&&"compile_defined_array"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/masgn"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$freeze","$handle","$children","$new_temp","$scope","$==","$type","$rhs","$push","$expr","$any?","$size","$compile_masgn","$lhs","$queue_temp","$take_while","$!=","$drop","$each_with_index","$compile_assignment","$empty?","$shift","$[]","$<<","$dup","$s","$!","$>=","$updated","$include?","$+","$last","$raise"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode");var $nesting=[self].concat($parent_nesting),$MassAssignNode_compile$1,$MassAssignNode_compile_masgn$3,$MassAssignNode_compile_assignment$7;Opal.const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze());self.$handle("masgn");self.$children("lhs","rhs");Opal.def(self,"$compile",$MassAssignNode_compile$1=function $$compile(){var $$2,self=this,array=nil,rhs_len=nil,retval=nil;array=self.$scope().$new_temp();if(self.$rhs().$type()["$=="]("array")){self.$push(""+array+" = ",self.$expr(self.$rhs()));rhs_len=function(){if($truthy($send(self.$rhs().$children(),"any?",[],($$2=function(c){var self=$$2.$$s||this;if(c==null){c=nil}return c.$type()["$=="]("splat")},$$2.$$s=self,$$2.$$arity=1,$$2)))){return nil}else{return self.$rhs().$children().$size()}return nil}();self.$compile_masgn(self.$lhs().$children(),array,rhs_len);self.$push(""+", "+array)}else if(self.$rhs().$type()["$=="]("begin")){retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}else{retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}return self.$scope().$queue_temp(array)},$MassAssignNode_compile$1.$$arity=0);Opal.def(self,"$compile_masgn",$MassAssignNode_compile_masgn$3=function $$compile_masgn(lhs_items,array,len){var $$4,$$5,$$6,self=this,pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;if(len==null){len=nil}pre_splat=$send(lhs_items,"take_while",[],($$4=function(child){var self=$$4.$$s||this;if(child==null){child=nil}return child.$type()["$!="]("splat")},$$4.$$s=self,$$4.$$arity=1,$$4));post_splat=lhs_items.$drop(pre_splat.$size());$send(pre_splat,"each_with_index",[],($$5=function(child,idx){var self=$$5.$$s||this;if(child==null){child=nil}if(idx==null){idx=nil}return self.$compile_assignment(child,array,idx,len)},$$5.$$s=self,$$5.$$arity=2,$$5));if($truthy(post_splat["$empty?"]())){return nil}else{splat=post_splat.$shift();if($truthy(post_splat["$empty?"]())){if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+")"));self.$push(", ");return self.$push(self.$expr(part))}else{return nil}}else{tmp=self.$scope().$new_temp();self.$push(""+", "+tmp+" = "+array+".length - "+post_splat.$size());self.$push(""+", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp);if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")"));self.$push(", ");self.$push(self.$expr(part))}$send(post_splat,"each_with_index",[],($$6=function(child,idx){var self=$$6.$$s||this;if(child==null){child=nil}if(idx==null){idx=nil}if(idx["$=="](0)){return self.$compile_assignment(child,array,tmp)}else{return self.$compile_assignment(child,array,""+tmp+" + "+idx)}},$$6.$$s=self,$$6.$$arity=2,$$6));return self.$scope().$queue_temp(tmp)}}},$MassAssignNode_compile_masgn$3.$$arity=-3);return(Opal.def(self,"$compile_assignment",$MassAssignNode_compile_assignment$7=function $$compile_assignment(child,array,idx,len){var $a,self=this,assign=nil,part=nil,tmp=nil;if(len==null){len=nil}assign=function(){if($truthy($truthy($a=len["$!"]())?$a:$rb_ge(idx,len))){return self.$s("js_tmp",""+"("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])")}else{return self.$s("js_tmp",""+array+"["+idx+"]")}return nil}();part=child.$updated();if($truthy($$($nesting,"SIMPLE_ASSIGNMENT")["$include?"](child.$type()))){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("send")){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("attrasgn")){part.$last()["$<<"](assign)}else if(child.$type()["$=="]("mlhs")){tmp=self.$scope().$new_temp();self.$push(""+", ("+tmp+" = Opal.to_ary("+assign.$children()["$[]"](0)+")");self.$compile_masgn(child.$children(),tmp);self.$push(")");self.$scope().$queue_temp(tmp);return nil}else{self.$raise(""+"Bad child node in masgn LHS: "+child+". LHS: "+self.$lhs())}self.$push(", ");return self.$push(self.$expr(part))},$MassAssignNode_compile_assignment$7.$$arity=-4),nil)&&"compile_assignment"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$each","$children","$==","$type","$expr","$empty?","$<<","$fragment","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArglistNode");var $nesting=[self].concat($parent_nesting),$ArglistNode_compile$1;self.$handle("arglist");return(Opal.def(self,"$compile",$ArglistNode_compile$1=function $$compile(){var $a,$$2,self=this,code=nil,work=nil,join=nil;$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],($$2=function(current){var self=$$2.$$s||this,splat=nil,arg=nil;if(current==null){current=nil}splat=current.$type()["$=="]("splat");arg=self.$expr(current);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](arg)}else{code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](arg)}},$$2.$$s=self,$$2.$$arity=1,$$2));if($truthy(work["$empty?"]())){}else{join=work;if($truthy(code["$empty?"]())){code=join}else{code["$<<"](self.$fragment(".concat(["))["$<<"](join)["$<<"](self.$fragment("])"))}}return $send(self,"push",Opal.to_a(code))},$ArglistNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/x_string"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range,$lambda=Opal.lambda;Opal.add_stubs(["$handle","$unpack_return","$children","$strip_empty_children","$single_line?","$compile_single_line","$each","$compile_child","$recv?","$wrap","$push","$private","$type","$===","$source","$expression","$loc","$new","$scope","$expr","$raise","$shift","$empty?","$s","$==","$strip","$=~","$!","$pop","$extract_last_value","$rstrip","$expr?","$end_with?","$warning","$compiler","$line","$[]","$size","$none?","$first","$dup","$nil?","$any?","$last"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode");var $nesting=[self].concat($parent_nesting),$XStringNode_compile$1,$XStringNode_compile_child$3,$XStringNode_compile_single_line$4,$XStringNode_extract_last_value$6,$XStringNode_single_line$ques$7,$XStringNode_unpack_return$9,$XStringNode_strip_empty_children$10;self.$$prototype.should_add_semicolon=self.$$prototype.returning=nil;self.$handle("xstr");Opal.def(self,"$compile",$XStringNode_compile$1=function $$compile(){var $$2,self=this,unpacked_children=nil,stripped_children=nil;self.should_add_semicolon=false;unpacked_children=self.$unpack_return(self.$children());stripped_children=self.$strip_empty_children(unpacked_children);if($truthy(self["$single_line?"](stripped_children))){self.$compile_single_line(stripped_children)}else{$send(unpacked_children,"each",[],($$2=function(c){var self=$$2.$$s||this;if(c==null){c=nil}return self.$compile_child(c)},$$2.$$s=self,$$2.$$arity=1,$$2))}if($truthy(self["$recv?"]())){self.$wrap("(",")")}if($truthy(self.should_add_semicolon)){return self.$push(";")}else{return nil}},$XStringNode_compile$1.$$arity=0);self.$private();Opal.def(self,"$compile_child",$XStringNode_compile_child$3=function $$compile_child(child){var self=this,$case=nil,value=nil;return function(){$case=child.$type();if("str"["$==="]($case)){value=child.$loc().$expression().$source();return self.$push($$($nesting,"Fragment").$new(value,self.$scope(),child))}else if("begin"["$==="]($case)||"gvar"["$==="]($case)||"ivar"["$==="]($case)||"nil"["$==="]($case)){return self.$push(self.$expr(child))}else{return self.$raise(""+"Unsupported xstr part: "+child.$type())}}()},$XStringNode_compile_child$3.$$arity=1);Opal.def(self,"$compile_single_line",$XStringNode_compile_single_line$4=function $$compile_single_line(children){var $a,$$5,self=this,has_embeded_return=nil,first_child=nil,single_child=nil,first_value=nil,last_child=nil,last_value=nil;has_embeded_return=false;first_child=children.$shift();single_child=children["$empty?"]();first_child=$truthy($a=first_child)?$a:self.$s("nil");if(first_child.$type()["$=="]("str")){first_value=first_child.$loc().$expression().$source().$strip();has_embeded_return=first_value["$=~"](/^return\b/)}if($truthy($truthy($a=self.returning)?has_embeded_return["$!"]():$a)){self.$push("return ")}last_child=$truthy($a=children.$pop())?$a:first_child;if(last_child.$type()["$=="]("str")){last_value=self.$extract_last_value(last_child)}if($truthy(single_child)){}else{self.should_add_semicolon=false;self.$compile_child(first_child);$send(children,"each",[],($$5=function(c){var self=$$5.$$s||this;if(c==null){c=nil}return self.$compile_child(c)},$$5.$$s=self,$$5.$$arity=1,$$5))}if(last_child.$type()["$=="]("str")){return self.$push($$($nesting,"Fragment").$new(last_value,self.$scope(),last_child))}else{return self.$compile_child(last_child)}},$XStringNode_compile_single_line$4.$$arity=1);Opal.def(self,"$extract_last_value",$XStringNode_extract_last_value$6=function $$extract_last_value(last_child){var $a,$b,self=this,last_value=nil;last_value=last_child.$loc().$expression().$source().$rstrip();if($truthy($truthy($a=$truthy($b=self.returning)?$b:self["$expr?"]())?last_value["$end_with?"](";"):$a)){self.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line());last_value=last_value["$[]"]($range(0,-2,false))}if($truthy(self.returning)){self.should_add_semicolon=true}return last_value},$XStringNode_extract_last_value$6.$$arity=1);Opal.def(self,"$single_line?",$XStringNode_single_line$ques$7=function(children){var $a,$$8,self=this;return $truthy($a=children.$size()["$=="](1))?$a:$send(children,"none?",[],($$8=function(c){var self=$$8.$$s||this,$b;if(c==null){c=nil}return($b=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):c.$type()["$=="]("str")},$$8.$$s=self,$$8.$$arity=1,$$8))},$XStringNode_single_line$ques$7.$$arity=1);Opal.def(self,"$unpack_return",$XStringNode_unpack_return$9=function $$unpack_return(children){var self=this,first_child=nil;first_child=children.$first();self.returning=false;if(first_child.$type()["$=="]("js_return")){self.returning=true;children=first_child.$children()}return children},$XStringNode_unpack_return$9.$$arity=1);return(Opal.def(self,"$strip_empty_children",$XStringNode_strip_empty_children$10=function $$strip_empty_children(children){var $$11,$a,$b,self=this,empty_line=nil;children=children.$dup();empty_line=$lambda(($$11=function(child){var self=$$11.$$s||this,$a,$b;if(child==null){child=nil}return $truthy($a=child["$nil?"]())?$a:($b=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():child.$type()["$=="]("str")},$$11.$$s=self,$$11.$$arity=1,$$11));while($truthy($truthy($b=children["$any?"]())?empty_line["$[]"](children.$first()):$b)){children.$shift()}while($truthy($truthy($b=children["$any?"]())?empty_line["$[]"](children.$last()):$b)){children.$pop()}return children},$XStringNode_strip_empty_children$10.$$arity=1),nil)&&"strip_empty_children"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$helper","$push","$expr","$iter"]);self.$require("opal/nodes/call");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"Nodes");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"LambdaNode");var $nesting=[self].concat($parent_nesting),$LambdaNode_compile$1;self.$handle("lambda");self.$children("iter");return(Opal.def(self,"$compile",$LambdaNode_compile$1=function $$compile(){var self=this;self.$helper("lambda");return self.$push("$lambda(",self.$expr(self.$iter()),")")},$LambdaNode_compile$1.$$arity=0),nil)&&"compile"})($nesting[0],$$($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/nodes/base");self.$require("opal/nodes/literal");self.$require("opal/nodes/variables");self.$require("opal/nodes/constants");self.$require("opal/nodes/call");self.$require("opal/nodes/csend");self.$require("opal/nodes/call_special");self.$require("opal/nodes/module");self.$require("opal/nodes/class");self.$require("opal/nodes/singleton_class");self.$require("opal/nodes/args");self.$require("opal/nodes/args/arity_check");self.$require("opal/nodes/iter");self.$require("opal/nodes/def");self.$require("opal/nodes/defs");self.$require("opal/nodes/if");self.$require("opal/nodes/logic");self.$require("opal/nodes/definitions");self.$require("opal/nodes/yield");self.$require("opal/nodes/rescue");self.$require("opal/nodes/case");self.$require("opal/nodes/super");self.$require("opal/nodes/top");self.$require("opal/nodes/while");self.$require("opal/nodes/hash");self.$require("opal/nodes/array");self.$require("opal/nodes/defined");self.$require("opal/nodes/masgn");self.$require("opal/nodes/arglist");self.$require("opal/nodes/x_string");return self.$require("opal/nodes/lambda")};Opal.modules["opal/eof_content"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$empty?","$[]","$last_token_position","$drop_while","$lines","$==","$join","$private","$last","$end_pos"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"EofContent");var $nesting=[self].concat($parent_nesting),$EofContent_initialize$1,$EofContent_eof$2,$EofContent_last_token_position$4;self.$$prototype.tokens=self.$$prototype.source=nil;Opal.const_set($nesting[0],"DATA_SEPARATOR","__END__\n");Opal.def(self,"$initialize",$EofContent_initialize$1=function $$initialize(tokens,source){var self=this;self.tokens=tokens;return self.source=source},$EofContent_initialize$1.$$arity=2);Opal.def(self,"$eof",$EofContent_eof$2=function $$eof(){var $$3,$a,self=this,eof_content=nil;if($truthy(self.tokens["$empty?"]())){return nil}eof_content=self.source["$[]"](Opal.Range.$new(self.$last_token_position(),-1,false));if($truthy(eof_content)){}else{return nil}eof_content=$send(eof_content.$lines(),"drop_while",[],($$3=function(line){var self=$$3.$$s||this;if(line==null){line=nil}return line["$=="]("\n")},$$3.$$s=self,$$3.$$arity=1,$$3));if(eof_content["$[]"](0)["$=="]("__END__\n")){eof_content=$truthy($a=eof_content["$[]"]($range(1,-1,false)))?$a:[];return eof_content.$join()}else if(eof_content["$=="](["__END__"])){return""}else{return nil}},$EofContent_eof$2.$$arity=0);self.$private();return(Opal.def(self,"$last_token_position",$EofContent_last_token_position$4=function $$last_token_position(){var $a,$b,self=this,_=nil,last_token_info=nil,last_token_range=nil;$b=self.tokens.$last(),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_info=$a[1]==null?nil:$a[1],$b;$b=last_token_info,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_range=$a[1]==null?nil:$a[1],$b;return last_token_range.$end_pos()},$EofContent_last_token_position$4.$$arity=0),nil)&&"last_token_position"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/errors"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$attr_accessor","$new","$respond_to?","$location","$location=","$-","$diagnostic","$diagnostic=","$to_a","$backtrace","$unshift","$to_s","$set_backtrace","$path","$lineno","$+","$label","$line","$lineno=","$source_line","$label=","$expression"]);return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting),$Opal_opal_location_from_error$2,$Opal_add_opal_location_to_error$3;(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Error");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"GemNotFound");var $nesting=[self].concat($parent_nesting),$GemNotFound_initialize$1;self.$attr_reader("gem_name");return(Opal.def(self,"$initialize",$GemNotFound_initialize$1=function $$initialize(gem_name){var $iter=$GemNotFound_initialize$1.$$p,$yield=$iter||nil,self=this;if($iter)$GemNotFound_initialize$1.$$p=null;self.gem_name=gem_name;return $send(self,Opal.find_super_dispatcher(self,"initialize",$GemNotFound_initialize$1,false),[""+"can't find gem "+gem_name],null)},$GemNotFound_initialize$1.$$arity=1),nil)&&"initialize"})($nesting[0],$$($nesting,"Error"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"CompilationError");var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("location")})($nesting[0],$$($nesting,"Error"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"ParsingError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"CompilationError"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"RewritingError");var $nesting=[self].concat($parent_nesting);return nil})($nesting[0],$$($nesting,"ParsingError"),$nesting);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"SyntaxError");var $nesting=[self].concat($parent_nesting);return self.$attr_accessor("location")})($nesting[0],$$$("::","SyntaxError"),$nesting);Opal.defs(self,"$opal_location_from_error",$Opal_opal_location_from_error$2=function $$opal_location_from_error(error){var self=this,opal_location=nil,$writer=nil;opal_location=$$($nesting,"OpalBacktraceLocation").$new();if($truthy(error["$respond_to?"]("location"))){$writer=[error.$location()];$send(opal_location,"location=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(error["$respond_to?"]("diagnostic"))){$writer=[error.$diagnostic()];$send(opal_location,"diagnostic=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return opal_location},$Opal_opal_location_from_error$2.$$arity=1);Opal.defs(self,"$add_opal_location_to_error",$Opal_add_opal_location_to_error$3=function $$add_opal_location_to_error(opal_location,error){var self=this,backtrace=nil;backtrace=error.$backtrace().$to_a();backtrace.$unshift(opal_location.$to_s());error.$set_backtrace(backtrace);return error},$Opal_add_opal_location_to_error$3.$$arity=2);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalBacktraceLocation");var $nesting=[self].concat($parent_nesting),$OpalBacktraceLocation_initialize$4,$OpalBacktraceLocation_to_s$5,$OpalBacktraceLocation_diagnostic$eq$6,$OpalBacktraceLocation_location$eq$7;self.$attr_accessor("path","lineno","label");Opal.def(self,"$initialize",$OpalBacktraceLocation_initialize$4=function $$initialize(path,lineno,label){var $a,self=this;if(path==null){path=nil}if(lineno==null){lineno=nil}if(label==null){label=nil}return $a=[path,lineno,label],self.path=$a[0],self.lineno=$a[1],self.label=$a[2],$a},$OpalBacktraceLocation_initialize$4.$$arity=-1);Opal.def(self,"$to_s",$OpalBacktraceLocation_to_s$5=function $$to_s(){var self=this,string=nil;string=self.$path();if($truthy(self.$lineno())){string=$rb_plus(string,""+":"+self.$lineno())}string=$rb_plus(string,":in ");if($truthy(self.$label())){string=$rb_plus(string,""+"`"+self.$label()+"'")}else{string=$rb_plus(string,"unknown")}return string},$OpalBacktraceLocation_to_s$5.$$arity=0);Opal.alias(self,"line","lineno");Opal.def(self,"$diagnostic=",$OpalBacktraceLocation_diagnostic$eq$6=function(diagnostic){var self=this,$writer=nil;if($truthy(diagnostic)){}else{return nil}$writer=[diagnostic.$location()];$send(self,"location=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$OpalBacktraceLocation_diagnostic$eq$6.$$arity=1);return(Opal.def(self,"$location=",$OpalBacktraceLocation_location$eq$7=function(location){var self=this,$writer=nil;if($truthy(location)){}else{return nil}$writer=[location.$line()];$send(self,"lineno=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(location["$respond_to?"]("source_line"))){$writer=[location.$source_line()];$send(self,"label=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if($truthy(location["$respond_to?"]("expression"))){$writer=[location.$expression().$source_line()];$send(self,"label=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},$OpalBacktraceLocation_location$eq$7.$$arity=1),nil)&&"location="})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/compiler"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$compile","$new","$freeze","$join","$dirname","$first","$split","$basename","$to_s","$cleanpath","$Pathname","$[]","$define_method","$fetch","$!","$include?","$raise","$inspect","$compiler_option","$attr_reader","$attr_accessor","$parse","$re_raise_with_location","$flatten","$process","$end_with?","$code","$last","$<<","$fragment","$s","$map","$to_proc","$file","$source=","$-","$default_parser","$tokenize","$associate_locations","$eof","$location=","$opal_location_from_error","$path=","$label","$strip","$lines","$to_i","$line","$label=","$message","$set_backtrace","$backtrace","$add_opal_location_to_error","$warn","$empty?","$gsub","$+","$start_with?","$helpers","$new_temp","$queue_temp","$push_while","$indent","$pop_while","$in_while?","$nil?","$scope","$handlers","$type","$compile_to_fragments","$error","$returns","$===","$updated","$children","$loc","$uses_block!","$block_name","$find_parent_def"]);self.$require("set");self.$require("opal/parser");self.$require("opal/fragment");self.$require("opal/nodes");self.$require("opal/eof_content");self.$require("opal/errors");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting),$Opal_compile$1;Opal.defs(self,"$compile",$Opal_compile$1=function $$compile(source,options){var self=this;if(options==null){options=$hash2([],{})}return $$($nesting,"Compiler").$new(source,options).$compile()},$Opal_compile$1.$$arity=-2);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Compiler");var $nesting=[self].concat($parent_nesting),$Compiler_module_name$2,$Compiler_compiler_option$3,$Compiler_initialize$6,$Compiler_compile$7,$Compiler_parse$9,$Compiler_source_map$11,$Compiler_helpers$12,$Compiler_operator_helpers$13,$Compiler_method_calls$14,$Compiler_error$15,$Compiler_re_raise_with_location$16,$Compiler_warning$17,$Compiler_parser_indent$18,$Compiler_s$19,$Compiler_fragment$20,$Compiler_unique_temp$21,$Compiler_helper$22,$Compiler_indent$23,$Compiler_with_temp$24,$Compiler_in_while$25,$Compiler_in_case$27,$Compiler_in_while$ques$28,$Compiler_process$29,$Compiler_handlers$30,$Compiler_requires$31,$Compiler_required_trees$32,$Compiler_returns$33,$Compiler_handle_block_given_call$35;self.$$prototype.fragments=self.$$prototype.source=self.$$prototype.buffer=self.$$prototype.helpers=self.$$prototype.operator_helpers=self.$$prototype.method_calls=self.$$prototype.indent=self.$$prototype.unique=self.$$prototype.scope=self.$$prototype.case_stmt=self.$$prototype.handlers=self.$$prototype.requires=self.$$prototype.required_trees=nil;Opal.const_set($nesting[0],"INDENT"," ");Opal.const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze());Opal.defs(self,"$module_name",$Compiler_module_name$2=function $$module_name(path){var self=this;path=$$($nesting,"File").$join($$($nesting,"File").$dirname(path),$$($nesting,"File").$basename(path).$split(".").$first());return self.$Pathname(path).$cleanpath().$to_s()},$Compiler_module_name$2.$$arity=1);Opal.defs(self,"$compiler_option",$Compiler_compiler_option$3=function $$compiler_option(name,default_value,options){var $a,$$4,self=this,mid=nil,valid_values=nil;if(options==null){options=$hash2([],{})}mid=options["$[]"]("as");valid_values=options["$[]"]("valid_values");return $send(self,"define_method",[$truthy($a=mid)?$a:name],($$4=function(){var self=$$4.$$s||this,$$5,$b,value=nil;if(self.options==null)self.options=nil;value=$send(self.options,"fetch",[name],($$5=function(){var self=$$5.$$s||this;return default_value},$$5.$$s=self,$$5.$$arity=0,$$5));if($truthy($truthy($b=valid_values)?valid_values["$include?"](value)["$!"]():$b)){self.$raise($$($nesting,"ArgumentError"),""+(""+"invalid value "+value.$inspect()+" for option "+name.$inspect()+" ")+(""+"(valid values: "+valid_values.$inspect()+")"))}return value},$$4.$$s=self,$$4.$$arity=0,$$4))},$Compiler_compiler_option$3.$$arity=-3);self.$compiler_option("file","(file)");self.$compiler_option("method_missing",true,$hash2(["as"],{as:"method_missing?"}));self.$compiler_option("arity_check",false,$hash2(["as"],{as:"arity_check?"}));self.$compiler_option("freezing",true,$hash2(["as"],{as:"freezing?"}));self.$compiler_option("tainting",true,$hash2(["as"],{as:"tainting?"}));self.$compiler_option("irb",false,$hash2(["as"],{as:"irb?"}));self.$compiler_option("dynamic_require_severity","ignore",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]}));self.$compiler_option("requirable",false,$hash2(["as"],{as:"requirable?"}));self.$compiler_option("inline_operators",true,$hash2(["as"],{as:"inline_operators?"}));self.$compiler_option("eval",false,$hash2(["as"],{as:"eval?"}));self.$compiler_option("enable_source_location",false,$hash2(["as"],{as:"enable_source_location?"}));self.$compiler_option("parse_comments",false,$hash2(["as"],{as:"parse_comments?"}));self.$attr_reader("result");self.$attr_reader("fragments");self.$attr_accessor("scope");self.$attr_reader("case_stmt");self.$attr_reader("eof_content");self.$attr_reader("comments");Opal.def(self,"$initialize",$Compiler_initialize$6=function $$initialize(source,options){var self=this;if(options==null){options=$hash2([],{})}self.source=source;self.indent="";self.unique=0;self.options=options;self.comments=$$($nesting,"Hash").$new([]);return self.case_stmt=nil},$Compiler_initialize$6.$$arity=-2);Opal.def(self,"$compile",$Compiler_compile$7=function $$compile(){var $$8,self=this;self.$parse();self.fragments=$send(self,"re_raise_with_location",[],($$8=function(){var self=$$8.$$s||this;if(self.sexp==null)self.sexp=nil;return self.$process(self.sexp).$flatten()},$$8.$$s=self,$$8.$$arity=0,$$8));if($truthy(self.fragments.$last().$code()["$end_with?"]("\n"))){}else{self.fragments["$<<"](self.$fragment("\n",nil,self.$s("newline")))}return self.result=$send(self.fragments,"map",[],"code".$to_proc()).$join("")},$Compiler_compile$7.$$arity=0);Opal.def(self,"$parse",$Compiler_parse$9=function $$parse(){var $a,$b,$$10,self=this,$writer=nil,sexp=nil,comments=nil,tokens=nil;self.buffer=$$$($$$($$$("::","Opal"),"Parser"),"SourceBuffer").$new(self.$file(),1);$writer=[self.source];$send(self.buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.parser=$$$($$($nesting,"Opal"),"Parser").$default_parser();$b=$send(self,"re_raise_with_location",[],($$10=function(){var self=$$10.$$s||this;if(self.parser==null)self.parser=nil;if(self.buffer==null)self.buffer=nil;return self.parser.$tokenize(self.buffer)},$$10.$$s=self,$$10.$$arity=0,$$10)),$a=Opal.to_ary($b),sexp=$a[0]==null?nil:$a[0],comments=$a[1]==null?nil:$a[1],tokens=$a[2]==null?nil:$a[2],$b;self.sexp=self.$s("top",$truthy($a=sexp)?$a:self.$s("nil"));self.comments=$$$($$$($$$("::","Parser"),"Source"),"Comment").$associate_locations(sexp,comments);return self.eof_content=$$($nesting,"EofContent").$new(tokens,self.source).$eof()},$Compiler_parse$9.$$arity=0);Opal.def(self,"$source_map",$Compiler_source_map$11=function $$source_map(){var self=this;return $$$($$$($$$("::","Opal"),"SourceMap"),"File").$new(self.fragments,self.$file(),self.source)},$Compiler_source_map$11.$$arity=0);Opal.def(self,"$helpers",$Compiler_helpers$12=function $$helpers(){var $a,self=this;return self.helpers=$truthy($a=self.helpers)?$a:$$($nesting,"Set").$new(["breaker","slice"])},$Compiler_helpers$12.$$arity=0);Opal.def(self,"$operator_helpers",$Compiler_operator_helpers$13=function $$operator_helpers(){var $a,self=this;return self.operator_helpers=$truthy($a=self.operator_helpers)?$a:$$($nesting,"Set").$new()},$Compiler_operator_helpers$13.$$arity=0);Opal.def(self,"$method_calls",$Compiler_method_calls$14=function $$method_calls(){var $a,self=this;return self.method_calls=$truthy($a=self.method_calls)?$a:$$($nesting,"Set").$new()},$Compiler_method_calls$14.$$arity=0);Opal.def(self,"$error",$Compiler_error$15=function $$error(msg,line){var self=this,error=nil,$writer=nil;if(line==null){line=nil}error=$$$($$$("::","Opal"),"SyntaxError").$new(msg);$writer=[$$$($$($nesting,"Opal"),"OpalBacktraceLocation").$new(self.$file(),line)];$send(error,"location=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$raise(error)},$Compiler_error$15.$$arity=-2);Opal.def(self,"$re_raise_with_location",$Compiler_re_raise_with_location$16=function $$re_raise_with_location(){var $a,$iter=$Compiler_re_raise_with_location$16.$$p,$yield=$iter||nil,self=this,error=nil,opal_location=nil,$writer=nil,new_error=nil;if($iter)$Compiler_re_raise_with_location$16.$$p=null;try{return Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[$$($nesting,"StandardError"),$$$($$$("::","Opal"),"SyntaxError")])){error=$err;try{opal_location=$$$("::","Opal").$opal_location_from_error(error);$writer=[self.$file()];$send(opal_location,"path=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$truthy($a=opal_location.$label())?$a:($writer=[self.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]);new_error=$$$($$$("::","Opal"),"SyntaxError").$new(error.$message());new_error.$set_backtrace(error.$backtrace());$$$("::","Opal").$add_opal_location_to_error(opal_location,new_error);return self.$raise(new_error)}finally{Opal.pop_exception()}}else{throw $err}}},$Compiler_re_raise_with_location$16.$$arity=0);Opal.def(self,"$warning",$Compiler_warning$17=function $$warning(msg,line){var self=this;if(line==null){line=nil}return self.$warn(""+"warning: "+msg+" -- "+self.$file()+":"+line)},$Compiler_warning$17.$$arity=-2);Opal.def(self,"$parser_indent",$Compiler_parser_indent$18=function $$parser_indent(){var self=this;return self.indent},$Compiler_parser_indent$18.$$arity=0);Opal.def(self,"$s",$Compiler_s$19=function $$s(type,$a){var $post_args,children,self=this;$post_args=Opal.slice.call(arguments,1,arguments.length);children=$post_args;return $$$($$$($$$("::","Opal"),"AST"),"Node").$new(type,children)},$Compiler_s$19.$$arity=-2);Opal.def(self,"$fragment",$Compiler_fragment$20=function $$fragment(str,scope,sexp){var self=this;if(sexp==null){sexp=nil}return $$($nesting,"Fragment").$new(str,scope,sexp)},$Compiler_fragment$20.$$arity=-3);Opal.def(self,"$unique_temp",$Compiler_unique_temp$21=function $$unique_temp(name){var $a,self=this,unique=nil;name=name.$to_s();if($truthy($truthy($a=name)?name["$empty?"]()["$!"]():$a)){name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")}unique=self.unique=$rb_plus(self.unique,1);return""+function(){if($truthy(name["$start_with?"]("$"))){return nil}else{return"$"}return nil}()+name+"$"+unique},$Compiler_unique_temp$21.$$arity=1);Opal.def(self,"$helper",$Compiler_helper$22=function $$helper(name){var self=this;return self.$helpers()["$<<"](name)},$Compiler_helper$22.$$arity=1);Opal.def(self,"$indent",$Compiler_indent$23=function $$indent(){var $iter=$Compiler_indent$23.$$p,$yield=$iter||nil,self=this,indent=nil,res=nil;if($iter)$Compiler_indent$23.$$p=null;indent=self.indent;self.indent=$rb_plus(self.indent,$$($nesting,"INDENT"));self.space=""+"\n"+self.indent;res=Opal.yieldX($yield,[]);self.indent=indent;self.space=""+"\n"+self.indent;return res},$Compiler_indent$23.$$arity=0);Opal.def(self,"$with_temp",$Compiler_with_temp$24=function $$with_temp(){var $iter=$Compiler_with_temp$24.$$p,$yield=$iter||nil,self=this,tmp=nil,res=nil;if($iter)$Compiler_with_temp$24.$$p=null;tmp=self.scope.$new_temp();res=Opal.yield1($yield,tmp);self.scope.$queue_temp(tmp);return res},$Compiler_with_temp$24.$$arity=0);Opal.def(self,"$in_while",$Compiler_in_while$25=function $$in_while(){var $$26,$iter=$Compiler_in_while$25.$$p,$yield=$iter||nil,self=this,result=nil;if($iter)$Compiler_in_while$25.$$p=null;if($yield!==nil){}else{return nil}self.while_loop=self.scope.$push_while();result=$send(self,"indent",[],($$26=function(){var self=$$26.$$s||this;return Opal.yieldX($yield,[])},$$26.$$s=self,$$26.$$arity=0,$$26));self.scope.$pop_while();return result},$Compiler_in_while$25.$$arity=0);Opal.def(self,"$in_case",$Compiler_in_case$27=function $$in_case(){var $iter=$Compiler_in_case$27.$$p,$yield=$iter||nil,self=this,old=nil;if($iter)$Compiler_in_case$27.$$p=null;if($yield!==nil){}else{return nil}old=self.case_stmt;self.case_stmt=$hash2([],{});Opal.yieldX($yield,[]);return self.case_stmt=old},$Compiler_in_case$27.$$arity=0);Opal.def(self,"$in_while?",$Compiler_in_while$ques$28=function(){var self=this;return self.scope["$in_while?"]()},$Compiler_in_while$ques$28.$$arity=0);Opal.def(self,"$process",$Compiler_process$29=function $$process(sexp,level){var self=this,handler=nil;if(level==null){level="expr"}if($truthy(sexp["$nil?"]())){return self.$fragment("",self.$scope())}if($truthy(handler=self.$handlers()["$[]"](sexp.$type()))){return handler.$new(sexp,level,self).$compile_to_fragments()}else{return self.$error(""+"Unsupported sexp: "+sexp.$type())}},$Compiler_process$29.$$arity=-2);Opal.def(self,"$handlers",$Compiler_handlers$30=function $$handlers(){var $a,self=this;return self.handlers=$truthy($a=self.handlers)?$a:$$$($$$($$($nesting,"Opal"),"Nodes"),"Base").$handlers()},$Compiler_handlers$30.$$arity=0);Opal.def(self,"$requires",$Compiler_requires$31=function $$requires(){var $a,self=this;return self.requires=$truthy($a=self.requires)?$a:[]},$Compiler_requires$31.$$arity=0);Opal.def(self,"$required_trees",$Compiler_required_trees$32=function $$required_trees(){var $a,self=this;return self.required_trees=$truthy($a=self.required_trees)?$a:[]},$Compiler_required_trees$32.$$arity=0);Opal.def(self,"$returns",$Compiler_returns$33=function $$returns(sexp){var $a,$b,$$34,self=this,$case=nil,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;if($truthy(sexp)){}else{return self.$returns(self.$s("nil"))}return function(){$case=sexp.$type();if("undef"["$==="]($case)){return self.$returns(self.$s("begin",sexp,self.$s("nil")))}else if("break"["$==="]($case)||"next"["$==="]($case)||"redo"["$==="]($case)){return sexp}else if("yield"["$==="]($case)){return sexp.$updated("returnable_yield",nil)}else if("when"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(when_sexp)).concat([self.$returns(then_sexp)]))}else if("rescue"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),body_sexp=$a[0]==null?nil:$a[0],$b=$a.length-1,$b=$b<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=$a[$b]==null?nil:$a[$b],$a;resbodies=$send(resbodies,"map",[],($$34=function(resbody){var self=$$34.$$s||this;if(resbody==null){resbody=nil}return self.$returns(resbody)},$$34.$$s=self,$$34.$$arity=1,$$34));if($truthy(else_sexp)){else_sexp=self.$returns(else_sexp)}return sexp.$updated(nil,[self.$returns(body_sexp)].concat(Opal.to_a(resbodies)).concat([else_sexp]))}else if("resbody"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),klass=$a[0]==null?nil:$a[0],lvar=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[klass,lvar,self.$returns(body)])}else if("ensure"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),rescue_sexp=$a[0]==null?nil:$a[0],ensure_body=$a[1]==null?nil:$a[1],$a;sexp=sexp.$updated(nil,[self.$returns(rescue_sexp),ensure_body]);return self.$s("js_return",sexp)}else if("begin"["$==="]($case)||"kwbegin"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,rest=$slice.call($a,0,$b),last=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(rest)).concat([self.$returns(last)]))}else if("while"["$==="]($case)||"until"["$==="]($case)||"while_post"["$==="]($case)||"until_post"["$==="]($case)){return sexp}else if("return"["$==="]($case)||"js_return"["$==="]($case)||"returnable_yield"["$==="]($case)){return sexp}else if("xstr"["$==="]($case)){return sexp.$updated(nil,[$send(self,"s",["js_return"].concat(Opal.to_a(sexp.$children())))])}else if("if"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),cond=$a[0]==null?nil:$a[0],true_body=$a[1]==null?nil:$a[1],false_body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[cond,self.$returns(true_body),self.$returns(false_body)])}else{return self.$s("js_return",sexp).$updated(nil,nil,$hash2(["location"],{location:sexp.$loc()}))}}()},$Compiler_returns$33.$$arity=1);return(Opal.def(self,"$handle_block_given_call",$Compiler_handle_block_given_call$35=function $$handle_block_given_call(sexp){var $a,self=this,scope=nil;self.scope["$uses_block!"]();if($truthy(self.scope.$block_name())){return self.$fragment(""+"("+self.scope.$block_name()+" !== nil)",self.$scope(),sexp)}else if($truthy($truthy($a=scope=self.scope.$find_parent_def())?scope.$block_name():$a)){return self.$fragment(""+"("+scope.$block_name()+" !== nil)",scope,sexp)}else{return self.$fragment("false",scope,sexp)}},$Compiler_handle_block_given_call$35.$$arity=1),nil)&&"handle_block_given_call"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/erb"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$compile","$new","$fix_quotes","$find_contents","$find_code","$wrap_compiled","$require_erb","$prepared_source","$gsub","$+","$last_match","$=~","$sub"]);self.$require("opal/compiler");return function($base,$parent_nesting){var self=$module($base,"Opal");var $nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var self=$module($base,"ERB");var $nesting=[self].concat($parent_nesting),$ERB_compile$1;Opal.defs(self,"$compile",$ERB_compile$1=function $$compile(source,file_name){var self=this;if(file_name==null){file_name="(erb)"}return $$($nesting,"Compiler").$new(source,file_name).$compile()},$ERB_compile$1.$$arity=-2);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Compiler");var $nesting=[self].concat($parent_nesting),$Compiler_initialize$2,$Compiler_prepared_source$3,$Compiler_compile$4,$Compiler_fix_quotes$5,$Compiler_require_erb$6,$Compiler_find_contents$7,$Compiler_find_code$9,$Compiler_wrap_compiled$11;self.$$prototype.prepared_source=self.$$prototype.source=self.$$prototype.file_name=nil;Opal.const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/);Opal.def(self,"$initialize",$Compiler_initialize$2=function $$initialize(source,file_name){var $a,self=this;if(file_name==null){file_name="(erb)"}return $a=[source,file_name,source],self.source=$a[0],self.file_name=$a[1],self.result=$a[2],$a},$Compiler_initialize$2.$$arity=-2);Opal.def(self,"$prepared_source",$Compiler_prepared_source$3=function $$prepared_source(){var $a,self=this,source=nil;return self.prepared_source=$truthy($a=self.prepared_source)?$a:(source=self.source,source=self.$fix_quotes(source),source=self.$find_contents(source),source=self.$find_code(source),source=self.$wrap_compiled(source),source=self.$require_erb(source),source)},$Compiler_prepared_source$3.$$arity=0);Opal.def(self,"$compile",$Compiler_compile$4=function $$compile(){var self=this;return $$($nesting,"Opal").$compile(self.$prepared_source())},$Compiler_compile$4.$$arity=0);Opal.def(self,"$fix_quotes",$Compiler_fix_quotes$5=function $$fix_quotes(result){var self=this;return result.$gsub('"','\\"')},$Compiler_fix_quotes$5.$$arity=1);Opal.def(self,"$require_erb",$Compiler_require_erb$6=function $$require_erb(result){var self=this;return $rb_plus('require "erb";',result)},$Compiler_require_erb$6.$$arity=1);Opal.def(self,"$find_contents",$Compiler_find_contents$7=function $$find_contents(result){var $$8,self=this;return $send(result,"gsub",[/<%=([\s\S]+?)%>/],($$8=function(){var self=$$8.$$s||this,inner=nil;inner=$$($nesting,"Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"');if($truthy(inner["$=~"]($$($nesting,"BLOCK_EXPR")))){return""+'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("'}else{return""+'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}},$$8.$$s=self,$$8.$$arity=0,$$8))},$Compiler_find_contents$7.$$arity=1);Opal.def(self,"$find_code",$Compiler_find_code$9=function $$find_code(result){var $$10,self=this;return $send(result,"gsub",[/<%([\s\S]+?)%>/],($$10=function(){var self=$$10.$$s||this,inner=nil;inner=$$($nesting,"Regexp").$last_match(1).$gsub(/\\"/,'"');return""+'")\n'+inner+'\noutput_buffer.append("'},$$10.$$s=self,$$10.$$arity=0,$$10))},$Compiler_find_code$9.$$arity=1);return(Opal.def(self,"$wrap_compiled",$Compiler_wrap_compiled$11=function $$wrap_compiled(result){var self=this,path=nil;path=self.file_name.$sub(new RegExp(""+"\\.opalerb"+$$($nesting,"REGEXP_END")),"");return""+"Template.new('"+path+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'},$Compiler_wrap_compiled$11.$$arity=1),nil)&&"wrap_compiled"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$require","$coerce_to!","$merge","$compile","$eval"]);self.$require("corelib/string/unpack");self.$require("opal/compiler");self.$require("opal/erb");self.$require("opal/version");(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting),$Kernel_eval$1,$Kernel_require_remote$2;Opal.def(self,"$eval",$Kernel_eval$1=function(str){var self=this,default_eval_options=nil,compiling_options=nil,code=nil;str=$$($nesting,"Opal")["$coerce_to!"](str,$$($nesting,"String"),"to_str");default_eval_options=$hash2(["file","eval"],{file:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);code=$$($nesting,"Opal").$compile(str,compiling_options);return function(self){return eval(code)}(self)},$Kernel_eval$1.$$arity=1);Opal.def(self,"$require_remote",$Kernel_require_remote$2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},$Kernel_require_remote$2.$$arity=1)})($nesting[0],$nesting);Opal.compile=function(str,options){if(options){options=Opal.hash(options)}return Opal.Opal.$compile(str,options)};Opal["eval"]=function(str,options){return eval(Opal.compile(str,options))};function run_ruby_scripts(){var tag,tags=document.getElementsByTagName("script");for(var i=0,len=tags.length;i>","$exception?","$[]","$resolved?","$rejected?","$!","$error","$include?","$action","$realized?","$raise","$^","$call","$resolve!","$exception!","$any?","$each","$reject!","$there_can_be_only_one!","$then","$to_proc","$fail","$always","$trace","$class","$object_id","$+","$inspect","$act?","$nil?","$prev","$push","$concat","$it","$proc","$reverse","$pop","$<=","$length","$shift","$-","$wait","$map","$reduce","$try","$tap","$all?","$find"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Promise");var $nesting=[self].concat($parent_nesting),$Promise_value$1,$Promise_error$2,$Promise_when$3,$Promise_initialize$4,$Promise_value$5,$Promise_act$ques$6,$Promise_action$7,$Promise_exception$ques$8,$Promise_realized$ques$9,$Promise_resolved$ques$10,$Promise_rejected$ques$11,$Promise_$$12,$Promise_$lt$lt$13,$Promise_$gt$gt$14,$Promise_resolve$15,$Promise_resolve$excl$16,$Promise_reject$18,$Promise_reject$excl$19,$Promise_exception$excl$21,$Promise_then$22,$Promise_then$excl$23,$Promise_fail$24,$Promise_fail$excl$25,$Promise_always$26,$Promise_always$excl$27,$Promise_trace$28,$Promise_trace$excl$29,$Promise_there_can_be_only_one$excl$30,$Promise_inspect$31;self.$$prototype.value=self.$$prototype.action=self.$$prototype.exception=self.$$prototype.realized=self.$$prototype.next=self.$$prototype.delayed=self.$$prototype.error=self.$$prototype.prev=nil;Opal.defs(self,"$value",$Promise_value$1=function $$value(value){var self=this;return self.$new().$resolve(value)},$Promise_value$1.$$arity=1);Opal.defs(self,"$error",$Promise_error$2=function $$error(value){var self=this;return self.$new().$reject(value)},$Promise_error$2.$$arity=1);Opal.defs(self,"$when",$Promise_when$3=function $$when($a){var $post_args,promises,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);promises=$post_args;return $$($nesting,"When").$new(promises)},$Promise_when$3.$$arity=-1);self.$attr_reader("error","prev","next");Opal.def(self,"$initialize",$Promise_initialize$4=function $$initialize(action){var self=this;if(action==null){action=$hash2([],{})}self.action=action;self.realized=false;self.exception=false;self.value=nil;self.error=nil;self.delayed=false;self.prev=nil;return self.next=[]},$Promise_initialize$4.$$arity=-1);Opal.def(self,"$value",$Promise_value$5=function $$value(){var self=this;if($truthy($$($nesting,"Promise")["$==="](self.value))){return self.value.$value()}else{return self.value}},$Promise_value$5.$$arity=0);Opal.def(self,"$act?",$Promise_act$ques$6=function(){var $a,self=this;return $truthy($a=self.action["$key?"]("success"))?$a:self.action["$key?"]("always")},$Promise_act$ques$6.$$arity=0);Opal.def(self,"$action",$Promise_action$7=function $$action(){var self=this;return self.action.$keys()},$Promise_action$7.$$arity=0);Opal.def(self,"$exception?",$Promise_exception$ques$8=function(){var self=this;return self.exception},$Promise_exception$ques$8.$$arity=0);Opal.def(self,"$realized?",$Promise_realized$ques$9=function(){var self=this;return self.realized["$!="](false)},$Promise_realized$ques$9.$$arity=0);Opal.def(self,"$resolved?",$Promise_resolved$ques$10=function(){var self=this;return self.realized["$=="]("resolve")},$Promise_resolved$ques$10.$$arity=0);Opal.def(self,"$rejected?",$Promise_rejected$ques$11=function(){var self=this;return self.realized["$=="]("reject")},$Promise_rejected$ques$11.$$arity=0);Opal.def(self,"$^",$Promise_$$12=function(promise){var self=this;promise["$<<"](self);self["$>>"](promise);return promise},$Promise_$$12.$$arity=1);Opal.def(self,"$<<",$Promise_$lt$lt$13=function(promise){var self=this;self.prev=promise;return self},$Promise_$lt$lt$13.$$arity=1);Opal.def(self,"$>>",$Promise_$gt$gt$14=function(promise){var $a,self=this;self.next["$<<"](promise);if($truthy(self["$exception?"]())){promise.$reject(self.delayed["$[]"](0))}else if($truthy(self["$resolved?"]())){promise.$resolve(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$value()}return nil}())}else if($truthy(self["$rejected?"]())){if($truthy($truthy($a=self.action["$key?"]("failure")["$!"]())?$a:$$($nesting,"Promise")["$==="](function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.error}return nil}()))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}else if($truthy(promise.$action()["$include?"]("always"))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}}return self},$Promise_$gt$gt$14.$$arity=1);Opal.def(self,"$resolve",$Promise_resolve$15=function $$resolve(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise($$($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy($$($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{block=$truthy($a=self.action["$[]"]("success"))?$a:self.action["$[]"]("always");if($truthy(block)){value=block.$call(value)}self["$resolve!"](value)}catch($err){if(Opal.rescue($err,[$$($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},$Promise_resolve$15.$$arity=-1);Opal.def(self,"$resolve!",$Promise_resolve$excl$16=function(value){var $$17,self=this;self.realized="resolve";self.value=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],($$17=function(p){var self=$$17.$$s||this;if(p==null){p=nil}return p.$resolve(value)},$$17.$$s=self,$$17.$$arity=1,$$17))}else{return self.delayed=[value]}},$Promise_resolve$excl$16.$$arity=1);Opal.def(self,"$reject",$Promise_reject$18=function $$reject(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise($$($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy($$($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{block=$truthy($a=self.action["$[]"]("failure"))?$a:self.action["$[]"]("always");if($truthy(block)){value=block.$call(value)}if($truthy(self.action["$key?"]("always"))){self["$resolve!"](value)}else{self["$reject!"](value)}}catch($err){if(Opal.rescue($err,[$$($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},$Promise_reject$18.$$arity=-1);Opal.def(self,"$reject!",$Promise_reject$excl$19=function(value){var $$20,self=this;self.realized="reject";self.error=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],($$20=function(p){var self=$$20.$$s||this;if(p==null){p=nil}return p.$reject(value)},$$20.$$s=self,$$20.$$arity=1,$$20))}else{return self.delayed=[value]}},$Promise_reject$excl$19.$$arity=1);Opal.def(self,"$exception!",$Promise_exception$excl$21=function(error){var self=this;self.exception=true;return self["$reject!"](error)},$Promise_exception$excl$21.$$arity=1);Opal.def(self,"$then",$Promise_then$22=function $$then(){var $iter=$Promise_then$22.$$p,block=$iter||nil,self=this;if($iter)$Promise_then$22.$$p=null;if($iter)$Promise_then$22.$$p=null;return self["$^"]($$($nesting,"Promise").$new($hash2(["success"],{success:block})))},$Promise_then$22.$$arity=0);Opal.def(self,"$then!",$Promise_then$excl$23=function(){var $iter=$Promise_then$excl$23.$$p,block=$iter||nil,self=this;if($iter)$Promise_then$excl$23.$$p=null;if($iter)$Promise_then$excl$23.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"then",[],block.$to_proc())},$Promise_then$excl$23.$$arity=0);Opal.alias(self,"do","then");Opal.alias(self,"do!","then!");Opal.def(self,"$fail",$Promise_fail$24=function $$fail(){var $iter=$Promise_fail$24.$$p,block=$iter||nil,self=this;if($iter)$Promise_fail$24.$$p=null;if($iter)$Promise_fail$24.$$p=null;return self["$^"]($$($nesting,"Promise").$new($hash2(["failure"],{failure:block})))},$Promise_fail$24.$$arity=0);Opal.def(self,"$fail!",$Promise_fail$excl$25=function(){var $iter=$Promise_fail$excl$25.$$p,block=$iter||nil,self=this;if($iter)$Promise_fail$excl$25.$$p=null;if($iter)$Promise_fail$excl$25.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"fail",[],block.$to_proc())},$Promise_fail$excl$25.$$arity=0);Opal.alias(self,"rescue","fail");Opal.alias(self,"catch","fail");Opal.alias(self,"rescue!","fail!");Opal.alias(self,"catch!","fail!");Opal.def(self,"$always",$Promise_always$26=function $$always(){var $iter=$Promise_always$26.$$p,block=$iter||nil,self=this;if($iter)$Promise_always$26.$$p=null;if($iter)$Promise_always$26.$$p=null;return self["$^"]($$($nesting,"Promise").$new($hash2(["always"],{always:block})))},$Promise_always$26.$$arity=0);Opal.def(self,"$always!",$Promise_always$excl$27=function(){var $iter=$Promise_always$excl$27.$$p,block=$iter||nil,self=this;if($iter)$Promise_always$excl$27.$$p=null;if($iter)$Promise_always$excl$27.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"always",[],block.$to_proc())},$Promise_always$excl$27.$$arity=0);Opal.alias(self,"finally","always");Opal.alias(self,"ensure","always");Opal.alias(self,"finally!","always!");Opal.alias(self,"ensure!","always!");Opal.def(self,"$trace",$Promise_trace$28=function $$trace(depth){var $iter=$Promise_trace$28.$$p,block=$iter||nil,self=this;if($iter)$Promise_trace$28.$$p=null;if($iter)$Promise_trace$28.$$p=null;if(depth==null){depth=nil}return self["$^"]($$($nesting,"Trace").$new(depth,block))},$Promise_trace$28.$$arity=-1);Opal.def(self,"$trace!",$Promise_trace$excl$29=function($a){var $iter=$Promise_trace$excl$29.$$p,block=$iter||nil,$post_args,args,self=this;if($iter)$Promise_trace$excl$29.$$p=null;if($iter)$Promise_trace$excl$29.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;self["$there_can_be_only_one!"]();return $send(self,"trace",Opal.to_a(args),block.$to_proc())},$Promise_trace$excl$29.$$arity=-1);Opal.def(self,"$there_can_be_only_one!",$Promise_there_can_be_only_one$excl$30=function(){var self=this;if($truthy(self.next["$any?"]())){return self.$raise($$($nesting,"ArgumentError"),"a promise has already been chained")}else{return nil}},$Promise_there_can_be_only_one$excl$30.$$arity=0);Opal.def(self,"$inspect",$Promise_inspect$31=function $$inspect(){var $a,self=this,result=nil;result=""+"#<"+self.$class()+"("+self.$object_id()+")";if($truthy(self.next["$any?"]())){result=$rb_plus(result,""+" >> "+self.next.$inspect())}result=$rb_plus(result,function(){if($truthy(self["$realized?"]())){return""+": "+($truthy($a=self.value)?$a:self.error).$inspect()+">"}else{return">"}return nil}());return result},$Promise_inspect$31.$$arity=0);(function($base,$super,$parent_nesting){var self=$klass($base,$super,"Trace");var $nesting=[self].concat($parent_nesting),$Trace_it$32,$Trace_initialize$33;Opal.defs(self,"$it",$Trace_it$32=function $$it(promise){var $a,self=this,current=nil,prev=nil;current=[];if($truthy($truthy($a=promise["$act?"]())?$a:promise.$prev()["$nil?"]())){current.$push(promise.$value())}prev=promise.$prev();if($truthy(prev)){return current.$concat(self.$it(prev))}else{return current}},$Trace_it$32.$$arity=1);return(Opal.def(self,"$initialize",$Trace_initialize$33=function $$initialize(depth,block){var $$34,$iter=$Trace_initialize$33.$$p,$yield=$iter||nil,self=this;if($iter)$Trace_initialize$33.$$p=null;self.depth=depth;return $send(self,Opal.find_super_dispatcher(self,"initialize",$Trace_initialize$33,false),[$hash2(["success"],{success:$send(self,"proc",[],($$34=function(){var self=$$34.$$s||this,$a,trace=nil;trace=$$($nesting,"Trace").$it(self).$reverse();trace.$pop();if($truthy($truthy($a=depth)?$rb_le(depth,trace.$length()):$a)){trace.$shift($rb_minus(trace.$length(),depth))}return $send(block,"call",Opal.to_a(trace))},$$34.$$s=self,$$34.$$arity=0,$$34))})],null)},$Trace_initialize$33.$$arity=2),nil)&&"initialize"})($nesting[0],self,$nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"When");var $nesting=[self].concat($parent_nesting),$When_initialize$35,$When_each$37,$When_collect$39,$When_inject$41,$When_wait$43,$When_$gt$gt$45,$When_try$47;self.$$prototype.wait=nil;Opal.def(self,"$initialize",$When_initialize$35=function $$initialize(promises){var $$36,$iter=$When_initialize$35.$$p,$yield=$iter||nil,self=this;if($iter)$When_initialize$35.$$p=null;if(promises==null){promises=[]}$send(self,Opal.find_super_dispatcher(self,"initialize",$When_initialize$35,false),[],null);self.wait=[];return $send(promises,"each",[],($$36=function(promise){var self=$$36.$$s||this;if(promise==null){promise=nil}return self.$wait(promise)},$$36.$$s=self,$$36.$$arity=1,$$36))},$When_initialize$35.$$arity=-1);Opal.def(self,"$each",$When_each$37=function $$each(){var $iter=$When_each$37.$$p,block=$iter||nil,$$38,self=this;if($iter)$When_each$37.$$p=null;if($iter)$When_each$37.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],($$38=function(values){var self=$$38.$$s||this;if(values==null){values=nil}return $send(values,"each",[],block.$to_proc())},$$38.$$s=self,$$38.$$arity=1,$$38))},$When_each$37.$$arity=0);Opal.def(self,"$collect",$When_collect$39=function $$collect(){var $iter=$When_collect$39.$$p,block=$iter||nil,$$40,self=this;if($iter)$When_collect$39.$$p=null;if($iter)$When_collect$39.$$p=null;if($truthy(block)){}else{self.$raise($$($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],($$40=function(values){var self=$$40.$$s||this;if(values==null){values=nil}return $$($nesting,"When").$new($send(values,"map",[],block.$to_proc()))},$$40.$$s=self,$$40.$$arity=1,$$40))},$When_collect$39.$$arity=0);Opal.def(self,"$inject",$When_inject$41=function $$inject($a){var $iter=$When_inject$41.$$p,block=$iter||nil,$post_args,args,$$42,self=this;if($iter)$When_inject$41.$$p=null;if($iter)$When_inject$41.$$p=null;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;return $send(self,"then",[],($$42=function(values){var self=$$42.$$s||this;if(values==null){values=nil}return $send(values,"reduce",Opal.to_a(args),block.$to_proc())},$$42.$$s=self,$$42.$$arity=1,$$42))},$When_inject$41.$$arity=-1);Opal.alias(self,"map","collect");Opal.alias(self,"reduce","inject");Opal.def(self,"$wait",$When_wait$43=function $$wait(promise){var $$44,self=this;if($truthy($$($nesting,"Promise")["$==="](promise))){}else{promise=$$($nesting,"Promise").$value(promise)}if($truthy(promise["$act?"]())){promise=promise.$then()}self.wait["$<<"](promise);$send(promise,"always",[],($$44=function(){var self=$$44.$$s||this;if(self.next==null)self.next=nil;if($truthy(self.next["$any?"]())){return self.$try()}else{return nil}},$$44.$$s=self,$$44.$$arity=0,$$44));return self},$When_wait$43.$$arity=1);Opal.alias(self,"and","wait");Opal.def(self,"$>>",$When_$gt$gt$45=function($a){var $post_args,$$46,$iter=$When_$gt$gt$45.$$p,$yield=$iter||nil,self=this,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)$When_$gt$gt$45.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$post_args=Opal.slice.call(arguments,0,arguments.length);return $send($send(self,Opal.find_super_dispatcher(self,">>",$When_$gt$gt$45,false),$zuper,$iter),"tap",[],($$46=function(){var self=$$46.$$s||this;return self.$try()},$$46.$$s=self,$$46.$$arity=0,$$46))},$When_$gt$gt$45.$$arity=-1);return(Opal.def(self,"$try",$When_try$47=function(){var self=this,promise=nil;if($truthy($send(self.wait,"all?",[],"realized?".$to_proc()))){promise=$send(self.wait,"find",[],"rejected?".$to_proc());if($truthy(promise)){return self.$reject(promise.$error())}else{return self.$resolve($send(self.wait,"map",[],"value".$to_proc()))}}else{return nil}},$When_try$47.$$arity=0),nil)&&"try"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["time"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$strftime"]);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Time");var $nesting=[self].concat($parent_nesting),$Time_parse$1,$Time_iso8601$2;Opal.defs(self,"$parse",$Time_parse$1=function $$parse(str){var self=this;return new Date(Date.parse(str))},$Time_parse$1.$$arity=1);return(Opal.def(self,"$iso8601",$Time_iso8601$2=function $$iso8601(){var self=this;return self.$strftime("%FT%T%z")},$Time_iso8601$2.$$arity=0),nil)&&"iso8601"}($nesting[0],null,$nesting)};Opal.modules["dxopal/patches/require_remote"]=function(Opal){var $require_remote$1,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require","$eval"]);self.$require("opal-parser");return(Opal.def(self,"$require_remote",$require_remote$1=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.overrideMimeType("text/plain");r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},$require_remote$1.$$arity=1),nil)&&"require_remote"};Opal.modules["dxopal/patches/require_dxopal"]=function(Opal){var $require$1,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send;Opal.add_stubs(["$==","$dxopal_orig_require"]);(function($base,$parent_nesting){var self=$module($base,"Kernel");var $nesting=[self].concat($parent_nesting);Opal.alias(self,"dxopal_orig_require","require")})($nesting[0],$nesting);return(Opal.def(self,"$require",$require$1=function $$require($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments,0,arguments.length);args=$post_args;if(args["$=="](["dxopal"])){return nil}else{return $send(self,"dxopal_orig_require",Opal.to_a(args))}},$require$1.$$arity=-1),nil)&&"require"};(function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var $console$1,self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.const_get_qualified,$$=Opal.const_get_relative,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$call","$name","$class","$Array","$backtrace","$raise","$new","$[]=","$-","$join","$sort","$keys","$>=","$[]","$inspect","$+"]);self.$require("opal");self.$require("console");Opal.def(self,"$console",$console$1=function $$console(){var self=this;if($gvars.console==null)$gvars.console=nil;return $gvars.console},$console$1.$$arity=0);self.$require("dxopal/constants/colors");self.$require("dxopal/font");self.$require("dxopal/input");self.$require("dxopal/input/key_codes");self.$require("dxopal/image");self.$require("dxopal/sound");self.$require("dxopal/sound_effect");self.$require("dxopal/sprite");self.$require("dxopal/window");self.$require("dxopal/version");self.$require("opal-parser");self.$require("singleton");self.$require("delegate");self.$require("forwardable");self.$require("pp");self.$require("promise");self.$require("set");self.$require("time");self.$require("dxopal/patches/require_remote");self.$require("dxopal/patches/require_dxopal");(function($base,$parent_nesting){var self=$module($base,"DXOpal");var $nesting=[self].concat($parent_nesting),$DXOpal_dump_error$2,$DXOpal$3,$DXOpal_p_$4;self.$include($$$($$$($$($nesting,"DXOpal"),"Constants"),"Colors"));self.$include($$$($$$($$($nesting,"DXOpal"),"Input"),"KeyCodes"));self.$include($$$($$$($$($nesting,"DXOpal"),"Input"),"MouseCodes"));self.$include($$$($$$($$($nesting,"DXOpal"),"SoundEffect"),"WaveTypes"));Opal.defs(self,"$dump_error",$DXOpal_dump_error$2=function $$dump_error(){var $iter=$DXOpal_dump_error$2.$$p,block=$iter||nil,self=this,ex=nil,div=nil;if($iter)$DXOpal_dump_error$2.$$p=null;if($iter)$DXOpal_dump_error$2.$$p=null;try{return block.$call()}catch($err){if(Opal.rescue($err,[$$($nesting,"Exception")])){ex=$err;try{div=document.getElementById("dxopal-errors");if($truthy(div&&!ex.DXOpalPrinted)){div.textContent="ERROR: "+ex.$class().$name();var ul=document.createElement("ul");self.$Array(ex.$backtrace()).forEach(function(line){var li=document.createElement("li");li.textContent=line;ul.appendChild(li)});div.appendChild(ul);ex.DXOpalPrinted=true}return self.$raise(ex)}finally{Opal.pop_exception()}}else{throw $err}}},$DXOpal_dump_error$2.$$arity=0);Opal.const_set($nesting[0],"P_CT",$send($$($nesting,"Hash"),"new",[],($DXOpal$3=function(h,k){var self=$DXOpal$3.$$s||this,$writer=nil;if(h==null){h=nil}if(k==null){k=nil}$writer=[k,0];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$DXOpal$3.$$s=self,$DXOpal$3.$$arity=2,$DXOpal$3)));Opal.def(self,"$p_",$DXOpal_p_$4=function $$p_(hash,n){var self=this,key=nil,$writer=nil;if(n==null){n=10}key=hash.$keys().$sort().$join();if($truthy($rb_ge($$($nesting,"P_CT")["$[]"](key),n))){return nil}console.log(hash.$inspect());$writer=[key,$rb_plus($$($nesting,"P_CT")["$[]"](key),1)];$send($$($nesting,"P_CT"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},$DXOpal_p_$4.$$arity=-2)})($nesting[0],$nesting);(function(){var P_CT={};Opal.DXOpal.p_=function(key,obj,n){n=n||10;P_CT[key]=P_CT[key]||0;if(P_CT[key] Module: DXOpal - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -109,7 +109,7 @@

VERSION =
-
"1.5.1"
+
"1.5.2"
@@ -125,9 +125,9 @@

diff --git a/doc/api/DXOpal/Constants.html b/doc/api/DXOpal/Constants.html index 7282e7c..5440083 100644 --- a/doc/api/DXOpal/Constants.html +++ b/doc/api/DXOpal/Constants.html @@ -6,15 +6,15 @@ Module: DXOpal::Constants - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -105,9 +105,9 @@

Defined Under Namespace

diff --git a/doc/api/DXOpal/Constants/Colors.html b/doc/api/DXOpal/Constants/Colors.html index ae11666..e220c86 100644 --- a/doc/api/DXOpal/Constants/Colors.html +++ b/doc/api/DXOpal/Constants/Colors.html @@ -6,15 +6,15 @@ Module: DXOpal::Constants::Colors - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -83,7 +83,18 @@ +

Overview

+
+ +

Pre-defined ARGB colors

+ +
+
+
+ + +

Constant Summary @@ -151,9 +162,9 @@

diff --git a/doc/api/DXOpal/Font.html b/doc/api/DXOpal/Font.html index a5ec84a..4de3e7d 100644 --- a/doc/api/DXOpal/Font.html +++ b/doc/api/DXOpal/Font.html @@ -6,15 +6,15 @@ Class: DXOpal::Font - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -99,7 +99,18 @@ +

Overview

+
+ +

Represents a font Used by Window.draw_font, etc.

+ +
+
+
+ + +
@@ -301,7 +312,7 @@

-

Returns a new instance of Font

+

Returns a new instance of Font.

@@ -529,9 +540,9 @@

diff --git a/doc/api/DXOpal/Image.html b/doc/api/DXOpal/Image.html index 40a1337..d8c43f5 100644 --- a/doc/api/DXOpal/Image.html +++ b/doc/api/DXOpal/Image.html @@ -6,15 +6,15 @@ Class: DXOpal::Image - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -101,7 +101,18 @@ +

Overview

+
+ +

Represents an image Each instance of Image has its own off-screen canvas.

+ + +
+
+
+ +

Constant Summary @@ -1212,7 +1223,7 @@

-

Returns the value of attribute canvas

+

Returns the value of attribute canvas.

@@ -1255,7 +1266,7 @@

-

Returns the value of attribute ctx

+

Returns the value of attribute ctx.

@@ -1298,7 +1309,7 @@

-

Returns the value of attribute height

+

Returns the value of attribute height.

@@ -1341,7 +1352,7 @@

-

Returns the value of attribute loaded

+

Returns the value of attribute loaded.

@@ -1384,7 +1395,7 @@

-

Returns the value of attribute promise

+

Returns the value of attribute promise.

@@ -1427,7 +1438,7 @@

-

Returns the value of attribute width

+

Returns the value of attribute width.

@@ -1971,9 +1982,9 @@

def _rgb(color) case color.length - when 4 # Just ignore alpha - - rgb = color[1, 3] + when 4 + # Just ignore alpha + rgb = color[1, 3] when 3 rgb = color else @@ -2071,12 +2082,12 @@

def _rgba_ary(color) case color.length - when 4 # color is ARGB in DXRuby, so move A to the last - - color[1, 3] + [color[0]/255.0] - when 3 # Complement 255 as alpha - - color + [1.0] + when 4 + # color is ARGB in DXRuby, so move A to the last + color[1, 3] + [color[0]/255.0] + when 3 + # Complement 255 as alpha + color + [1.0] else raise "invalid color: #{color.inspect}" end @@ -3207,9 +3218,9 @@

diff --git a/doc/api/DXOpal/Input.html b/doc/api/DXOpal/Input.html index af3bbf9..701ab34 100644 --- a/doc/api/DXOpal/Input.html +++ b/doc/api/DXOpal/Input.html @@ -6,15 +6,15 @@ Module: DXOpal::Input - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -896,7 +896,9 @@

142 143 144 -145 +145 +146 +147
# File 'lib/dxopal/input.rb', line 120
@@ -919,9 +921,11 @@ 

document.addEventListener('mouseup', function(ev){ #{@@mouse_info}.x = ev.pageX - #{@@canvas_x}; #{@@mouse_info}.y = ev.pageY - #{@@canvas_y}; + // ev.button => ev.buttons + table = { 0: 1, 1: 4, 2: 2, 3: 8, 4: 16 }; for (var k=1; k<=16; k<<=1) { - if ((ev.buttons & k) == 0 && #{@@pressing_mouse_buttons}[k]) { - #{@@pressing_mouse_buttons}[k] = -#{@@tick}; + if (#{@@pressing_mouse_buttons}[k]) { + #{@@pressing_mouse_buttons}[table[ev.button]] = -#{@@tick}; } } }); @@ -958,8 +962,6 @@

 
 
-183
-184
 185
 186
 187
@@ -1003,10 +1005,12 @@ 

225 226 227 -228

+228 +229 +230

-
# File 'lib/dxopal/input.rb', line 183
+      
# File 'lib/dxopal/input.rb', line 185
 
 def self._init_touch_events
   @@touches = {}
@@ -1143,17 +1147,17 @@ 

 
 
-230
-231
 232
-233
+233 +234 +235

-
# File 'lib/dxopal/input.rb', line 230
+      
# File 'lib/dxopal/input.rb', line 232
 
-def self._update_touch_info  # Clear old data
-
-  @@touches.delete_if{|id, t| t.released? && t._released_at < @@tick-1}
+def self._update_touch_info
+  # Clear old data
+  @@touches.delete_if{|id, t| t.released? && t._released_at < @@tick-1}
 end
@@ -1467,13 +1471,13 @@

 
 
-161
-162
 163
-164
+164 +165 +166

-
# File 'lib/dxopal/input.rb', line 161
+      
# File 'lib/dxopal/input.rb', line 163
 
 def self.mouse_down?(mouse_code)
   raise "missing argument of `mouse_down?'" unless mouse_code
@@ -1523,13 +1527,13 @@ 

 
 
-167
-168
 169
-170
+170 +171 +172

-
# File 'lib/dxopal/input.rb', line 167
+      
# File 'lib/dxopal/input.rb', line 169
 
 def self.mouse_push?(mouse_code)
   raise "missing argument of `mouse_push?'" unless mouse_code
@@ -1579,13 +1583,13 @@ 

 
 
-173
-174
 175
-176
+176 +177 +178

-
# File 'lib/dxopal/input.rb', line 173
+      
# File 'lib/dxopal/input.rb', line 175
 
 def self.mouse_release?(mouse_code)
   raise "missing argument of `mouse_release?'" unless mouse_code
@@ -1626,12 +1630,12 @@ 

 
 
-149
-150
-151
+151 +152 +153

-
# File 'lib/dxopal/input.rb', line 149
+      
# File 'lib/dxopal/input.rb', line 151
 
 def self.mouse_x
   return `#{@@mouse_info}.x`
@@ -1660,12 +1664,12 @@ 

 
 
-152
-153
-154
+154 +155 +156

-
# File 'lib/dxopal/input.rb', line 152
+      
# File 'lib/dxopal/input.rb', line 154
 
 def self.mouse_y
   return `#{@@mouse_info}.y`
@@ -1701,14 +1705,14 @@ 

 
 
-307
-308
 309
 310
-311
+311 +312 +313

-
# File 'lib/dxopal/input.rb', line 307
+      
# File 'lib/dxopal/input.rb', line 309
 
 def self.new_touches
   ret = @@new_touches
@@ -1759,12 +1763,12 @@ 

 
 
-253
-254
-255
+255 +256 +257

-
# File 'lib/dxopal/input.rb', line 253
+      
# File 'lib/dxopal/input.rb', line 255
 
 def self.touch_down?
   return `#{@@pressing_touch}[0] > 0`
@@ -1813,12 +1817,12 @@ 

 
 
-258
-259
-260
+260 +261 +262

-
# File 'lib/dxopal/input.rb', line 258
+      
# File 'lib/dxopal/input.rb', line 260
 
 def self.touch_push?
   return `#{@@pressing_touch}[0] == -(#{@@tick}-1)`
@@ -1867,12 +1871,12 @@ 

 
 
-263
-264
-265
+265 +266 +267

-
# File 'lib/dxopal/input.rb', line 263
+      
# File 'lib/dxopal/input.rb', line 265
 
 def self.touch_release?
   return `#{@@pressing_touch}[0] == -(#{@@tick}-1)`
@@ -1912,12 +1916,12 @@ 

 
 
-241
-242
-243
+243 +244 +245

-
# File 'lib/dxopal/input.rb', line 241
+      
# File 'lib/dxopal/input.rb', line 243
 
 def self.touch_x
   return `#{@@touch_info}.x`
@@ -1946,12 +1950,12 @@ 

 
 
-244
-245
-246
+246 +247 +248

-
# File 'lib/dxopal/input.rb', line 244
+      
# File 'lib/dxopal/input.rb', line 246
 
 def self.touch_y
   return `#{@@touch_info}.y`
@@ -1987,12 +1991,12 @@ 

 
 
-302
-303
-304
+304 +305 +306

-
# File 'lib/dxopal/input.rb', line 302
+      
# File 'lib/dxopal/input.rb', line 304
 
 def self.touches
   @@touches.values
@@ -2101,9 +2105,9 @@ 

diff --git a/doc/api/DXOpal/Input/KeyCodes.html b/doc/api/DXOpal/Input/KeyCodes.html index 5c23932..467d8a0 100644 --- a/doc/api/DXOpal/Input/KeyCodes.html +++ b/doc/api/DXOpal/Input/KeyCodes.html @@ -6,15 +6,15 @@ Module: DXOpal::Input::KeyCodes - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -83,7 +83,18 @@
+

Overview

+
+ +

List of key codes (event.code) developer.mozilla.org/ja/docs/Web/API/KeyboardEvent

+ +
+
+
+ + +

Constant Summary @@ -93,7 +104,18 @@

K_ESCAPE = - +
+
+ +

TODO: add event.code for those commented out (pull request welcome)

+ + +
+
+
+ + +
'Escape'
@@ -954,9 +976,9 @@

diff --git a/doc/api/DXOpal/Input/MouseCodes.html b/doc/api/DXOpal/Input/MouseCodes.html index e1b6d4a..f5b2c90 100644 --- a/doc/api/DXOpal/Input/MouseCodes.html +++ b/doc/api/DXOpal/Input/MouseCodes.html @@ -6,15 +6,15 @@ Module: DXOpal::Input::MouseCodes - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -142,9 +142,9 @@

diff --git a/doc/api/DXOpal/Input/Touch.html b/doc/api/DXOpal/Input/Touch.html index 424257e..0c1ac26 100644 --- a/doc/api/DXOpal/Input/Touch.html +++ b/doc/api/DXOpal/Input/Touch.html @@ -6,15 +6,15 @@ Class: DXOpal::Input::Touch - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -409,7 +409,7 @@

-

Returns a new instance of Touch

+

Returns a new instance of Touch.

@@ -423,15 +423,15 @@

 
 
-273
-274
 275
 276
 277
-278
+278 +279 +280 -
# File 'lib/dxopal/input.rb', line 273
+      
# File 'lib/dxopal/input.rb', line 275
 
 def initialize(id, x, y)
   @id = id
@@ -463,7 +463,7 @@ 

-

Returns the value of attribute _released_at

+

Returns the value of attribute _released_at.

@@ -477,12 +477,12 @@

 
 
-279
-280
-281
+281 +282 +283

-
# File 'lib/dxopal/input.rb', line 279
+      
# File 'lib/dxopal/input.rb', line 281
 
 def _released_at
   @_released_at
@@ -506,7 +506,7 @@ 

-

Returns the value of attribute data

+

Returns the value of attribute data.

@@ -520,12 +520,12 @@

 
 
-279
-280
-281
+281 +282 +283

-
# File 'lib/dxopal/input.rb', line 279
+      
# File 'lib/dxopal/input.rb', line 281
 
 def data
   @data
@@ -549,7 +549,7 @@ 

-

Returns the value of attribute id

+

Returns the value of attribute id.

@@ -563,12 +563,12 @@

 
 
-279
-280
-281
+281 +282 +283

-
# File 'lib/dxopal/input.rb', line 279
+      
# File 'lib/dxopal/input.rb', line 281
 
 def id
   @id
@@ -592,7 +592,7 @@ 

-

Returns the value of attribute x

+

Returns the value of attribute x.

@@ -606,12 +606,12 @@

 
 
-279
-280
-281
+281 +282 +283

-
# File 'lib/dxopal/input.rb', line 279
+      
# File 'lib/dxopal/input.rb', line 281
 
 def x
   @x
@@ -635,7 +635,7 @@ 

-

Returns the value of attribute y

+

Returns the value of attribute y.

@@ -649,12 +649,12 @@

 
 
-279
-280
-281
+281 +282 +283

-
# File 'lib/dxopal/input.rb', line 279
+      
# File 'lib/dxopal/input.rb', line 281
 
 def y
   @y
@@ -686,13 +686,13 @@ 

 
 
-291
-292
 293
-294
+294 +295 +296

-
# File 'lib/dxopal/input.rb', line 291
+      
# File 'lib/dxopal/input.rb', line 293
 
 def _move(x, y)
   @x = x
@@ -718,12 +718,12 @@ 

 
 
-296
-297
-298
+298 +299 +300

-
# File 'lib/dxopal/input.rb', line 296
+      
# File 'lib/dxopal/input.rb', line 298
 
 def _released(tick)
   @_released_at = tick
@@ -748,13 +748,13 @@ 

 
 
-286
-287
 288
-289
+289 +290 +291

-
# File 'lib/dxopal/input.rb', line 286
+      
# File 'lib/dxopal/input.rb', line 288
 
 def inspect
   rel = (released_at ? " released_at=#{released_at}" : "")
@@ -804,12 +804,12 @@ 

 
 
-282
-283
-284
+284 +285 +286

-
# File 'lib/dxopal/input.rb', line 282
+      
# File 'lib/dxopal/input.rb', line 284
 
 def released?
   !!@_released_at
@@ -824,9 +824,9 @@ 

diff --git a/doc/api/DXOpal/RemoteResource.html b/doc/api/DXOpal/RemoteResource.html index ee3eb8a..8df2107 100644 --- a/doc/api/DXOpal/RemoteResource.html +++ b/doc/api/DXOpal/RemoteResource.html @@ -6,15 +6,15 @@ Class: DXOpal::RemoteResource - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -99,7 +99,20 @@ -
+

Overview

+
+ +

A base class for resources acquired through JS Promises. Provides `<klass>.register` and `<klass>`. A subclass must impelment `<klass>._load`.

+ +

TODO: better name? (SoundEffect is not actually 'remote')

+ + +
+
+
+ + +

Direct Known Subclasses

Image, Sound

@@ -113,7 +126,18 @@

@@resources = - +
+
+ +

List of registered resources (Contains path_or_url)

+ + +
+
+
+ + +
Hash.new{|h,k| h[k] = {}}
@@ -613,9 +637,9 @@

diff --git a/doc/api/DXOpal/Sound.html b/doc/api/DXOpal/Sound.html index 480d5bf..8a879b0 100644 --- a/doc/api/DXOpal/Sound.html +++ b/doc/api/DXOpal/Sound.html @@ -6,15 +6,15 @@ Class: DXOpal::Sound - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -312,7 +312,7 @@

-

Returns a new instance of Sound

+

Returns a new instance of Sound.

@@ -360,7 +360,7 @@

-

Returns the value of attribute decoded

+

Returns the value of attribute decoded.

@@ -631,9 +631,9 @@

diff --git a/doc/api/DXOpal/SoundEffect.html b/doc/api/DXOpal/SoundEffect.html index ca165c8..8cef247 100644 --- a/doc/api/DXOpal/SoundEffect.html +++ b/doc/api/DXOpal/SoundEffect.html @@ -6,15 +6,15 @@ Class: DXOpal::SoundEffect - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -103,7 +103,29 @@ -

Defined Under Namespace

+

Overview

+
+ +

User-generated sound

+ +

Example:

+ +
v = 80
+SoundEffect.register(:sound1, 4000, WAVE_RECT, 5000) do
+  v = v - 0.03
+  [rand(300), v]
+end
+
+ +

This will generate a sound with WebAudio.

+ + +
+
+
+ + +

Defined Under Namespace

@@ -415,9 +437,9 @@

diff --git a/doc/api/DXOpal/SoundEffect/WaveTypes.html b/doc/api/DXOpal/SoundEffect/WaveTypes.html index 3ecb09a..23234f1 100644 --- a/doc/api/DXOpal/SoundEffect/WaveTypes.html +++ b/doc/api/DXOpal/SoundEffect/WaveTypes.html @@ -6,15 +6,15 @@ Module: DXOpal::SoundEffect::WaveTypes - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -126,9 +126,9 @@

diff --git a/doc/api/DXOpal/Sprite.html b/doc/api/DXOpal/Sprite.html index 726bff5..e14b235 100644 --- a/doc/api/DXOpal/Sprite.html +++ b/doc/api/DXOpal/Sprite.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -860,7 +860,7 @@

-

Returns a new instance of Sprite

+

Returns a new instance of Sprite.

@@ -1231,7 +1231,7 @@

-

Returns the value of attribute visible

+

Returns the value of attribute visible.

@@ -1274,7 +1274,7 @@

-

Returns the value of attribute x

+

Returns the value of attribute x.

@@ -1317,7 +1317,7 @@

-

Returns the value of attribute y

+

Returns the value of attribute y.

@@ -1360,7 +1360,7 @@

-

Returns the value of attribute z

+

Returns the value of attribute z.

@@ -1691,10 +1691,10 @@

# File 'lib/dxopal/sprite/physics.rb', line 60
 
-def self.matter_enabled?  # Note: we cannot use `!!` here because @matter_engine may be a JS object,
+def self.matter_enabled?
+  # Note: we cannot use `!!` here because @matter_engine may be a JS object,
   # which does not have Ruby's `!@` method
-
-  @matter_engine ? true : false
+  @matter_engine ? true : false
 end
@@ -2030,9 +2030,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionArea.html b/doc/api/DXOpal/Sprite/CollisionArea.html index c4ea6b3..91bf24c 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea.html +++ b/doc/api/DXOpal/Sprite/CollisionArea.html @@ -6,15 +6,15 @@ Module: DXOpal::Sprite::CollisionArea - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -83,7 +83,18 @@
-

Defined Under Namespace

+

Overview

+
+ +

Methods of Sprite related to collision checking

+ + +
+
+
+ + +

Defined Under Namespace

@@ -105,9 +116,9 @@

Defined Under Namespace

diff --git a/doc/api/DXOpal/Sprite/CollisionArea/Base.html b/doc/api/DXOpal/Sprite/CollisionArea/Base.html index b6a5e1f..47a4022 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea/Base.html +++ b/doc/api/DXOpal/Sprite/CollisionArea/Base.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite::CollisionArea::Base - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -133,7 +133,7 @@

Instance Attribute Summary collaps
-

Returns the value of attribute sprite.

+

Sprite corresponds to this hitarea.

@@ -307,7 +307,7 @@

-

Returns the value of attribute sprite

+

Sprite corresponds to this hitarea

@@ -639,9 +639,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionArea/Circle.html b/doc/api/DXOpal/Sprite/CollisionArea/Circle.html index 52c1061..81941ae 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea/Circle.html +++ b/doc/api/DXOpal/Sprite/CollisionArea/Circle.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite::CollisionArea::Circle - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -324,7 +324,7 @@

-

Returns a new instance of Circle

+

Returns a new instance of Circle.

@@ -374,7 +374,7 @@

-

Returns the value of attribute r

+

Returns the value of attribute r.

@@ -646,9 +646,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionArea/Point.html b/doc/api/DXOpal/Sprite/CollisionArea/Point.html index 10d5f2f..afce49a 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea/Point.html +++ b/doc/api/DXOpal/Sprite/CollisionArea/Point.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite::CollisionArea::Point - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -244,7 +244,7 @@

-

Returns a new instance of Point

+

Returns a new instance of Point.

@@ -438,9 +438,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionArea/Rect.html b/doc/api/DXOpal/Sprite/CollisionArea/Rect.html index 8b0a823..9c4244e 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea/Rect.html +++ b/doc/api/DXOpal/Sprite/CollisionArea/Rect.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite::CollisionArea::Rect - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -286,7 +286,7 @@

-

Returns a new instance of Rect

+

Returns a new instance of Rect.

@@ -539,9 +539,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionArea/Triangle.html b/doc/api/DXOpal/Sprite/CollisionArea/Triangle.html index 0a2373a..88b934d 100644 --- a/doc/api/DXOpal/Sprite/CollisionArea/Triangle.html +++ b/doc/api/DXOpal/Sprite/CollisionArea/Triangle.html @@ -6,15 +6,15 @@ Class: DXOpal::Sprite::CollisionArea::Triangle - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -242,7 +242,7 @@

-

Returns a new instance of Triangle

+

Returns a new instance of Triangle.

@@ -413,9 +413,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionCheck.html b/doc/api/DXOpal/Sprite/CollisionCheck.html index 54e0e98..510fc77 100644 --- a/doc/api/DXOpal/Sprite/CollisionCheck.html +++ b/doc/api/DXOpal/Sprite/CollisionCheck.html @@ -6,15 +6,15 @@ Module: DXOpal::Sprite::CollisionCheck - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -88,7 +88,18 @@ -

Defined Under Namespace

+

Overview

+
+ +

Methods of Sprite related to collision checking

+ + +
+
+
+ + +

Defined Under Namespace

@@ -905,9 +916,9 @@

diff --git a/doc/api/DXOpal/Sprite/CollisionCheck/ClassMethods.html b/doc/api/DXOpal/Sprite/CollisionCheck/ClassMethods.html index 3bd45b8..ad78fff 100644 --- a/doc/api/DXOpal/Sprite/CollisionCheck/ClassMethods.html +++ b/doc/api/DXOpal/Sprite/CollisionCheck/ClassMethods.html @@ -6,15 +6,15 @@ Module: DXOpal::Sprite::CollisionCheck::ClassMethods - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -120,7 +120,9 @@

-
+
+

Run collision checking for set of sprites - offences: Sprite or [Sprite] - defences: Sprite or [Sprite] - shot: method name - hit: method name.

+
@@ -143,7 +145,36 @@

-

+
+
+ +

Run collision checking for set of sprites

+
  • +

    offences: Sprite or [Sprite]

    +
  • +

    defences: Sprite or [Sprite]

    +
  • +

    shot: method name

    +
  • +

    hit: method name

    +
+ +

This method has two modes.

+
  • +

    If `offences` and `defences` are the same, collision check will be performed on each pair from the array. Method `hit` is called on the each sprite, with the other sprite as an argument.

    +
  • +

    Otherwise, collision check will be performed on each pair of offence sprite and defence sprite. In this case, method `shot` is called on the offence sprite and method `hit` is called on the defence sprite, with the other sprite as an argument.

    +
+ +

TODO: return true if any collition is detected TODO: skip collision checking if shot/hit returned `:discard`

+ + +
+
+
+ + +
@@ -335,7 +350,21 @@

-

@@ -189,9 +220,9 @@ 

offences = Array(offences) defences = Array(defences) i = j = 0 # trick to use i, j in the `#{}` - if offences.equal?(defences) # any-vs-any mode - - sprites = offences.select{|x| x.is_a?(Sprite)} + if offences.equal?(defences) + # any-vs-any mode + sprites = offences.select{|x| x.is_a?(Sprite)} n = sprites.length %x{ for (var i=0; i<n; i++) { @@ -227,9 +258,9 @@

diff --git a/doc/api/DXOpal/Sprite/Physics.html b/doc/api/DXOpal/Sprite/Physics.html index f29df7d..15aa78a 100644 --- a/doc/api/DXOpal/Sprite/Physics.html +++ b/doc/api/DXOpal/Sprite/Physics.html @@ -6,15 +6,15 @@ Module: DXOpal::Sprite::Physics - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -88,7 +88,20 @@ +

Overview

+
+ +

Experimental Matter.js (physics engine) support

+

You need to load matter.js in advance to using these features.

+ + +
+
+
+ + +
@@ -198,7 +211,9 @@

-
+
+

Create Matter Body and register it to the World - type: :rectangle, etc.

+
@@ -224,7 +239,7 @@

-

Returns the value of attribute _matter_body

+

Returns the value of attribute _matter_body.

@@ -284,9 +299,9 @@

# File 'lib/dxopal/sprite/physics.rb', line 27
 
-def _move_matter_body  # TODO: support non-default center_x, center_y
-
-  `Matter.Body.setPosition(#{@_matter_body},
+def _move_matter_body
+  # TODO: support non-default center_x, center_y
+  `Matter.Body.setPosition(#{@_matter_body},
      Matter.Vector.create(#{@x+@center_x}, #{@y+@center_y}))`
 end
+
+
+ +

Create Matter Body and register it to the World

+
  • +

    type: :rectangle, etc.

    +
+ + +
+
+
+ + +
@@ -387,9 +416,9 @@ 

diff --git a/doc/api/DXOpal/Window.html b/doc/api/DXOpal/Window.html index fb494fa..d2fb51d 100644 --- a/doc/api/DXOpal/Window.html +++ b/doc/api/DXOpal/Window.html @@ -6,15 +6,15 @@ Module: DXOpal::Window - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -959,9 +959,9 @@

# File 'lib/dxopal/window.rb', line 116
 
 def self._init
-  canvas = `document.getElementById("dxopal-canvas")`  # If user did not change Window.width/Window.height, set the canvas size here
-
-  self.width = @@width
+  canvas = `document.getElementById("dxopal-canvas")`
+  # If user did not change Window.width/Window.height, set the canvas size here
+  self.width = @@width
   self.height = @@height
   img = Image.new(self.width, self.height, canvas: canvas)
   Input._init(canvas)
@@ -2100,9 +2100,9 @@ 

diff --git a/doc/api/Kernel.html b/doc/api/Kernel.html index 8837a0f..698d51f 100644 --- a/doc/api/Kernel.html +++ b/doc/api/Kernel.html @@ -121,7 +121,7 @@

Overview

diff --git a/doc/api/_index.html b/doc/api/_index.html index c17d074..f6d9ca0 100644 --- a/doc/api/_index.html +++ b/doc/api/_index.html @@ -4,15 +4,15 @@ - Documentation by YARD 0.9.20 + Documentation by YARD 0.9.26 - + - + - @@ -52,7 +52,7 @@
-

Documentation by YARD 0.9.20

+

Documentation by YARD 0.9.26

Alphabetic Index

@@ -356,9 +356,9 @@

Namespace Listing A-Z

diff --git a/doc/api/class_list.html b/doc/api/class_list.html index 889e75f..398ac79 100644 --- a/doc/api/class_list.html +++ b/doc/api/class_list.html @@ -4,9 +4,9 @@ - + - + diff --git a/doc/api/css/style.css b/doc/api/css/style.css index 0bf7e2c..eb0dbc8 100644 --- a/doc/api/css/style.css +++ b/doc/api/css/style.css @@ -52,6 +52,7 @@ body { background: #fff; padding: 1.2em; padding-top: 0.2em; + box-sizing: border-box; } @media (max-width: 920px) { @@ -422,8 +423,8 @@ li.r2 { background: #fafafa; } #toc ol { padding-left: 1.8em; } #toc li { font-size: 1.1em; line-height: 1.7em; } #toc > ol > li { font-size: 1.1em; font-weight: bold; } -#toc ol > ol { font-size: 0.9em; } -#toc ol ol > ol { padding-left: 2.3em; } +#toc ol > li > ol { font-size: 0.9em; } +#toc ol ol > li > ol { padding-left: 2.3em; } #toc ol + li { margin-top: 0.3em; } #toc.hidden { padding: 10px; background: #fefefe; box-shadow: none; } #toc.hidden:hover { background: #fafafa; } diff --git a/doc/api/file.README.html b/doc/api/file.README.html index 98af5ee..c305efd 100644 --- a/doc/api/file.README.html +++ b/doc/api/file.README.html @@ -6,15 +6,15 @@ File: README - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -57,36 +57,37 @@
-

DXOpal

+
+

DXOpal

-

Game development framework for Opal, -has similar API to DXRuby

+

Game development framework for Opal, has similar API to DXRuby

-

How to use

+

How to use

-

see https://yhara.github.io/dxopal/

+

see yhara.github.io/dxopal/

-

License

+

License

MIT (including images and sounds under examples/)

-

Acknowledgements

+

Acknowledgements

+
  • +

    Opal

    +
  • +

    DXRuby

    +
  • +

    Bxfr examples/apple_catcher/sounds/Explosion2.wav is made by this

    +
-
    -
  • Opal
  • -
  • DXRuby
  • -
  • Bxfr examples/apple_catcher/sounds/Explosion2.wav is made by this
  • -
+

Contact

-

Contact

- -

https://github.com/yhara/dxopal

+

github.com/yhara/dxopal

diff --git a/doc/api/file_list.html b/doc/api/file_list.html index f2b7288..2b6df40 100644 --- a/doc/api/file_list.html +++ b/doc/api/file_list.html @@ -4,9 +4,9 @@ - + - + diff --git a/doc/api/frames.html b/doc/api/frames.html index 60223fe..1310783 100644 --- a/doc/api/frames.html +++ b/doc/api/frames.html @@ -2,9 +2,9 @@ - Documentation by YARD 0.9.20 + Documentation by YARD 0.9.26 - @@ -57,36 +57,37 @@
-

DXOpal

+
+

DXOpal

-

Game development framework for Opal, -has similar API to DXRuby

+

Game development framework for Opal, has similar API to DXRuby

-

How to use

+

How to use

-

see https://yhara.github.io/dxopal/

+

see yhara.github.io/dxopal/

-

License

+

License

MIT (including images and sounds under examples/)

-

Acknowledgements

+

Acknowledgements

+
  • +

    Opal

    +
  • +

    DXRuby

    +
  • +

    Bxfr examples/apple_catcher/sounds/Explosion2.wav is made by this

    +
-
    -
  • Opal
  • -
  • DXRuby
  • -
  • Bxfr examples/apple_catcher/sounds/Explosion2.wav is made by this
  • -
+

Contact

-

Contact

- -

https://github.com/yhara/dxopal

+

github.com/yhara/dxopal

diff --git a/doc/api/js/app.js b/doc/api/js/app.js index 368f44a..8d067fe 100644 --- a/doc/api/js/app.js +++ b/doc/api/js/app.js @@ -171,6 +171,7 @@ function generateTOC() { var counter = 0; var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; var i; + var curli; if ($('#filecontents h1').length > 1) tags.unshift('h1'); for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } var lastTag = parseInt(tags[0][1], 10); @@ -190,15 +191,25 @@ function generateTOC() { } if (thisTag > lastTag) { for (i = 0; i < thisTag - lastTag; i++) { - var tmp = $('
    '); toc.append(tmp); toc = tmp; + if ( typeof(curli) == "undefined" ) { + curli = $('
  1. '); + toc.append(curli); + } + toc = $('
      '); + curli.append(toc); + curli = undefined; } } if (thisTag < lastTag) { - for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); + for (i = 0; i < lastTag - thisTag; i++) { + toc = toc.parent(); + toc = toc.parent(); + } } var title = $(this).attr('toc-title'); if (typeof(title) == "undefined") title = $(this).text(); - toc.append('
    1. ' + title + '
    2. '); + curli =$('
    3. ' + title + '
    4. '); + toc.append(curli); lastTag = thisTag; }); if (!show) return; diff --git a/doc/api/method_list.html b/doc/api/method_list.html index 75ae183..211df20 100644 --- a/doc/api/method_list.html +++ b/doc/api/method_list.html @@ -4,9 +4,9 @@ - + - + @@ -1566,16 +1566,16 @@

      Method List

    5. - width - DXOpal::Window + #width + DXOpal::Image
    6. - #width - DXOpal::Image + width + DXOpal::Window
    7. diff --git a/doc/api/top-level-namespace.html b/doc/api/top-level-namespace.html index f7b0ee4..d1ee8aa 100644 --- a/doc/api/top-level-namespace.html +++ b/doc/api/top-level-namespace.html @@ -6,15 +6,15 @@ Top Level Namespace - — Documentation by YARD 0.9.20 + — Documentation by YARD 0.9.26 - + - + - @@ -183,9 +183,9 @@

      # File 'lib/dxopal/patches/require_dxopal.rb', line 24
       
       def require(*args)
      -  if args == ['dxopal']    # Do nothing, because DXOpal is already loaded and you don't need to find it
      -
      -  else
      +  if args == ['dxopal']
      +    # Do nothing, because DXOpal is already loaded and you don't need to find it
      +  else
           dxopal_orig_require(*args)
         end
       end
      @@ -241,9 +241,9 @@

diff --git a/lib/dxopal/version.rb b/lib/dxopal/version.rb index 8b4b0d6..4fe2945 100644 --- a/lib/dxopal/version.rb +++ b/lib/dxopal/version.rb @@ -1,3 +1,3 @@ module DXOpal - VERSION = "1.5.1" + VERSION = "1.5.2" end