(function(undefined) { // @note // A few conventions for the documentation of this file: // 1. Always use "//" (in contrast with "/**/") // 2. The syntax used is Yardoc (yardoc.org), which is intended for Ruby (se below) // 3. `@param` and `@return` types should be preceded by `JS.` when referring to // JavaScript constructors (e.g. `JS.Function`) otherwise Ruby is assumed. // 4. `nil` and `null` being unambiguous refer to the respective // objects/values in Ruby and JavaScript // 5. This is still WIP :) so please give feedback and suggestions on how // to improve or for alternative solutions // // The way the code is digested before going through Yardoc is a secret kept // in the docs repo (https://github.com/opal/docs/tree/master). var global_object = this, console; // Detect the global object if (typeof(global) !== 'undefined') { global_object = global; } if (typeof(window) !== 'undefined') { global_object = window; } // Setup a dummy console object if missing 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; // The actual class for BasicObject var BasicObject; // The actual Object class. // The leading underscore is to avoid confusion with window.Object() var _Object; // The actual Module class var Module; // 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; // Configure runtime behavior with regards to require and unsupported fearures Opal.config = { 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; // Nil object id is always 4 var nil_id = 4; // Generates even sequential numbers greater than 4 // (nil_id) to serve as unique ids for ruby objects var unique_id = nil_id; // Return next unique id Opal.uid = function() { unique_id += 2; return unique_id; }; // 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()); }; // Globals table Opal.gvars = {}; // Exit function, this should be replaced by platform specific implementation // (See nodejs and chrome for examples) Opal.exit = function(status) { if (Opal.gvars.DEBUG) console.log('Exited with status '+status); }; // keeps track of exceptions for $! Opal.exceptions = []; // @private // 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) { if (obj === undefined) { return "undefined"; } else if (obj === null) { return "null"; } else if (!obj.$$class) { return obj.toString(); } else { return obj.$inspect(); } } // Truth // ----- 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)) }; // Constants // --------- // // For future reference: // - The Rails autoloading guide (http://guides.rubyonrails.org/v5.0/autoloading_and_reloading_constants.html) // - @ConradIrwin's 2012 post on “Everything you ever wanted to know about constant lookup in Ruby” (http://cirw.in/blog/constant-lookup.html) // // Legend of MRI concepts/names: // - constant reference (cref): the module/class that acts as a namespace // - nesting: the namespaces wrapping the current scope, e.g. nesting inside // `module A; module B::C; end; end` is `[B::C, A]` // Get the cosntant in the scope of the current cref function const_get_name(cref, name) { if (cref) return cref.$$const[name]; } // Walk up the nesting array looking for the constant function const_lookup_nesting(nesting, name) { var i, ii, result, constant; if (nesting.length === 0) return; // If the nesting is not empty the constant is looked up in its elements // and in order. The ancestors of those elements are ignored. for (i = 0, ii = nesting.length; i < ii; i++) { constant = nesting[i].$$const[name]; if (constant != null) return constant; } } // Walk up the ancestors chain looking for the constant function const_lookup_ancestors(cref, name) { var i, ii, result, ancestors; if (cref == null) return; ancestors = Opal.ancestors(cref); for (i = 0, ii = ancestors.length; i < ii; i++) { if (ancestors[i].$$const && $hasOwn.call(ancestors[i].$$const, name)) { return ancestors[i].$$const[name]; } } } // Walk up Object's ancestors chain looking for the constant, // but only if cref is missing or a module. function const_lookup_Object(cref, name) { if (cref == null || cref.$$is_module) { return const_lookup_ancestors(_Object, name); } } // Call const_missing if nothing else worked function const_missing(cref, name, skip_missing) { if (!skip_missing) { return (cref || _Object).$const_missing(name); } } // Look for the constant just in the current cref or call `#const_missing` Opal.const_get_local = function(cref, name, skip_missing) { var result; if (cref == null) return; if (cref === '::') cref = _Object; if (!cref.$$is_a_module) { 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 `::`). Opal.const_get_qualified = function(cref, name, skip_missing) { var result, cache, cached, current_version = Opal.const_cache_version; if (cref == null) return; if (cref === '::') cref = _Object; if (!cref.$$is_a_module) { throw new Opal.TypeError(cref.toString() + " is not a class/module"); } if ((cache = cref.$$const_cache) == null) { cache = cref.$$const_cache = Object.create(null); } cached = cache[name]; if (cached == null || cached[0] !== current_version) { ((result = const_get_name(cref, name)) != null) || ((result = const_lookup_ancestors(cref, name)) != null); cache[name] = [current_version, result]; } else { result = cached[1]; } return result != null ? result : const_missing(cref, name, skip_missing); }; // Initialize the top level constant cache generation counter Opal.const_cache_version = 1; // Look for the constant in the open using the current nesting and the nearest // cref ancestors or call `#const_missing` (when the constant has no :: prefix). Opal.const_get_relative = function(nesting, name, skip_missing) { 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); } cached = cache[name]; if (cached == null || cached[0] !== current_version) { ((result = const_get_name(cref, name)) != null) || ((result = const_lookup_nesting(nesting, name)) != null) || ((result = const_lookup_ancestors(cref, name)) != null) || ((result = const_lookup_Object(cref, name)) != null); cache[name] = [current_version, result]; } else { result = cached[1]; } return result != null ? result : const_missing(cref, name, skip_missing); }; // Register the constant on a cref and opportunistically set the name of // unnamed classes/modules. Opal.const_set = function(cref, name, value) { if (cref == null || cref === '::') cref = _Object; if (value.$$is_a_module) { if (value.$$name == null || value.$$name === nil) value.$$name = name; if (value.$$base_module == null) value.$$base_module = cref; } cref.$$const = (cref.$$const || Object.create(null)); cref.$$const[name] = value; Opal.const_cache_version++; // Expose top level constants onto the Opal object if (cref === _Object) Opal[name] = value; return value; }; // Get all the constants reachable from a given cref, by default will include // inherited constants. Opal.constants = function(cref, inherit) { if (inherit == null) inherit = true; var module, modules = [cref], module_constants, i, ii, constants = {}, constant; if (inherit) modules = modules.concat(Opal.ancestors(cref)); if (inherit && cref.$$is_module) modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object)); for (i = 0, ii = modules.length; i < ii; i++) { module = modules[i]; // Don not show Objects constants unless we're querying Object itself if (cref !== _Object && module == _Object) break; for (constant in module.$$const) { constants[constant] = true; } } return Object.keys(constants); }; // Remove a constant from a cref. Opal.const_remove = function(cref, name) { Opal.const_cache_version++; if (cref.$$const[name] != null) { var old = cref.$$const[name]; delete cref.$$const[name]; return old; } if (cref.$$autoload != null && cref.$$autoload[name] != null) { delete cref.$$autoload[name]; return nil; } throw Opal.NameError.$new("constant "+cref+"::"+cref.$name()+" not defined"); }; // Modules & Classes // ----------------- // A `class Foo; end` expression in ruby is compiled to call this runtime // method which either returns an existing class of the given name, or creates // a new class in the given `base` scope. // // If a constant with the given name exists, then we check to make sure that // it is a class and also that the superclasses match. If either of these // fail, then we raise a `TypeError`. Note, `superclass` may be null if one // was not specified in the ruby code. // // We pass a constructor to this method of the form `function ClassName() {}` // 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 // 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. // // @param base [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; if (base == null) { base = _Object; } // If base is an object, use its class if (!base.$$is_class && !base.$$is_module) { base = base.$$class; } // If the superclass is a function then we're bridging a native JS class if (typeof(superclass) === 'function') { bridged = superclass; superclass = _Object; } // Try to find the class in the current scope klass = const_get_name(base, name); // If the class exists in the scope, then we must use that if (klass) { // Make sure the existing constant is a class, or raise error if (!klass.$$is_class) { 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; } // 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; // @property $$parent direct parent class // starts with the superclass, after klass inclusion is // the last included klass klass.$$parent = superclass; Opal.const_set(base, name, klass); // Name new class directly onto current scope (Opal.Foo.Baz = klass) base[name] = klass; if (bridged) { Opal.bridge(klass, alloc); } else { // Call .inherited() hook with new class on the superclass if (superclass.$inherited) { superclass.$inherited(klass); } } return klass; }; // 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'; } 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; // @property $$is_class Clearly mark this as a class klass.$$is_class = true; // @property $$class Classes are instances of the class Class klass.$$class = Class; return klass; }; // Define new module (or return existing module). The given `base` 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). // // If a module of the given name is already defined in the base, 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). // // Otherwise, a new module is created in the base 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 id [String] the name of the new (or existing) module // // @return [Module] 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; }; // 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; // @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; // @property $$is_module Clearly mark this as a module module.$$is_module = true; module.$$class = Module; // @property $$super // the superclass, doesn't get changed by module inclusions module.$$super = superclass; // @property $$parent // direct parent class or module // starts with the superclass, after module inclusion is // the last included module module.$$parent = superclass; return module; }; // Return the singleton class for the passed object. // // If the given object alredy has a singleton class, then it will be stored on // the object as the `$$meta` property. If this exists, then it is simply // returned back. // // Otherwise, a new singleton object for the class or object is created, set on // the object at `$$meta` for future use, and then returned. // // @param object [Object] the ruby object // @return [Class] the singleton class for object 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); }; // Build the singleton class for an existing class. Class object are built // with their singleton class already in the prototype chain and inheriting // from their superclass object (up to `Class` itself). // // NOTE: Actually in MRI a class' singleton class inherits from its // superclass' singleton class which in turn inherits from Class. // // @param klass [Class] // @return [Class] Opal.build_class_singleton_class = function(object) { var alloc, superclass, klass; if (object.$$meta) { return object.$$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); 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; }; // Build the singleton class for a Ruby (non class) Object. // // @param object [Object] // @return [Class] 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; }; // Returns an object containing all pairs of names/values // for all class variables defined in provided +module+ // and its ancestors. // // @param module [Module] // @return [Object] 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; } // Sets class variable with specified +name+ to +value+ // in provided +module+ // // @param module [Module] // @param name [String] // @param value [Object] 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; } // 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]; if ($hasOwn.call(ancestor.$$proto, name) && ancestor.$$proto[name] && !ancestor.$$proto[name].$$donated && !ancestor.$$proto[name].$$stub && ancestor !== from) { break; } if (ancestor === from) { target_constructor.prototype[name] = body 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) } } }; // 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]); } } // Associate the target as a bridged class for the current "donator" 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); } // 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 (dep_id === base_id) { return true; } if (has_cyclic_dep(base_id, dep[prop], prop, seen)) { return true; } } return false; } // The actual inclusion of a module into a class. // // ## Class `$$parent` and `iclass` // // To handle `super` calls, every class has a `$$parent`. This parent is // used to resolve the next class for a super call. A normal class would // have this point to its superclass. However, if a class includes a module // then this would need to take into account the module. The module would // also have to then point its `$$parent` to the actual superclass. We // cannot modify modules like this, because it might be included in more // then one class. To fix this, we actually insert an `iclass` as the class' // `$$parent` which can then point to the superclass. The `iclass` acts as // a proxy to the actual module, so the `super` chain can then search it for // the required method. // // @param module [Module] the module to include // @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; // 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; } } // 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') } 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 }; includer.$$parent = iclass; methods = module.$instance_methods(); for (i = methods.length - 1; i >= 0; i--) { Opal.update_includer(module, includer, '$' + methods[i]) } }; // 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 = {}; // For performance, some core Ruby classes are toll-free bridged to their // native JavaScript counterparts (e.g. a Ruby Array is a JavaScript Array). // // 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 // from Object. // // Example: // // Opal.bridge(self, Function); // // @param klass [Class] the Ruby class to bridge // @param constructor [JS.Function] native JavaScript constructor to use // @return [Class] returns the passed Ruby class // Opal.bridge = function(klass, constructor) { if (constructor.$$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); } } constructor.prototype.$$class = klass; constructor.$$bridge = klass; 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; } } return klass; }; // 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 } 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; } } // 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; } // if the includer is a module, recursively update all of its includres. if (includer.$$included_in) { Opal.update_includers(includer, jsid); } }; // 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; if (!included_in) { return; } for (i = 0, ii = included_in.length; i < ii; i++) { includee = included_in[i]; Opal.update_includer(module, includee, jsid); } }; // 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; while (parent) { result.push(parent); for (i = parent.$$inc.length-1; i >= 0; i--) { modules = Opal.ancestors(parent.$$inc[i]); for(j = 0, jj = modules.length; j < jj; j++) { result.push(modules[j]); } } // 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; } } return result; }; // Method Missing // -------------- // Methods stubs are used to facilitate method_missing in opal. A stub is a // placeholder function which just calls `method_missing` on the receiver. // If no method with the given name is actually defined on an object, then it // is obvious to say that the stub will be called instead, and then in turn // method_missing will be called. // // When a file in ruby gets compiled to javascript, it includes a call to // this function which adds stubs for every method name in the compiled file. // It should then be safe to assume that method_missing will work for any // method call detected. // // Method stubs are added to the BasicObject prototype, which every other // ruby object inherits, so all objects should handle method missing. A stub // is only added if the given property name (method name) is not already // defined. // // Note: all ruby methods have a `$` prefix in javascript, so all stubs will // have this prefix as well (to make this method more performant). // // Opal.add_stubs(["$foo", "$bar", "$baz="]); // // All stub functions will have a private `$$stub` property set to true so // that other internal methods can detect if a method is just a stub or not. // `Kernel#respond_to?` uses this property to detect a methods presence. // // @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; for (i = 0; i < ilength; i++) { method_name = stubs[i]; 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; } } } } }; // 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. // // @param prototype [Prototype] the target prototype // @param stub [String] stub name to add (e.g. "$foo") // @return [undefined] Opal.add_stub_for = function(prototype, stub) { var method_missing_stub = Opal.stub_for(stub); prototype[stub] = method_missing_stub; }; // Generate the method_missing stub for a given method name. // // @param method_name [String] The js-name of the method to stub (e.g. "$foo") // @return [undefined] Opal.stub_for = function(method_name) { function method_missing_stub() { // Copy any given block onto the method_missing dispatcher this.$method_missing.$$p = method_missing_stub.$$p; // Set block property to null ready for the next call (stop false-positives) method_missing_stub.$$p = null; // call method missing with correct args (remove '$' prefix on method name) var args_ary = new Array(arguments.length); for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = arguments[i]; } return this.$method_missing.apply(this, [method_name.slice(1)].concat(args_ary)); } method_missing_stub.$$stub = true; return method_missing_stub; }; // Methods // ------- // Arity count error dispatcher for methods // // @param actual [Fixnum] number of arguments given to method // @param expected [Fixnum] expected number of arguments // @param object [Object] owner of the method +meth+ // @param meth [String] method name that got wrong number of arguments // @raise [ArgumentError] Opal.ac = function(actual, expected, object, meth) { var inspect = ''; if (object.$$is_class || object.$$is_module) { inspect += object.$$name + '.'; } else { inspect += object.$$class.$$name + '#'; } inspect += meth; throw Opal.ArgumentError.$new('[' + inspect + '] wrong number of arguments(' + actual + ' for ' + expected + ')'); }; // Arity count error dispatcher for blocks // // @param actual [Fixnum] number of arguments given to block // @param expected [Fixnum] expected number of arguments // @param context [Object] context of the block definition // @raise [ArgumentError] Opal.block_ac = function(actual, expected, context) { var inspect = "`block in " + context + "'"; throw Opal.ArgumentError.$new(inspect + ': wrong number of arguments (' + actual + ' for ' + expected + ')'); }; // Super dispatcher Opal.find_super_dispatcher = function(obj, mid, current_func, defcheck, defs) { var dispatcher, super_method; if (defs) { if (obj.$$is_class || obj.$$is_module) { dispatcher = defs.$$super; } else { dispatcher = obj.$$class.$$proto; } } 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) { // method_missing hasn't been explicitly defined throw Opal.NoMethodError.$new('super: no superclass method `'+mid+"' for "+obj, mid); } return super_method; }; // Iter dispatcher for super in a block Opal.find_iter_super_dispatcher = function(obj, jsid, current_func, defcheck, implicit) { var call_jsid = jsid; if (!current_func) { throw Opal.RuntimeError.$new("super called outside of method"); } if (implicit && current_func.$$define_meth) { throw Opal.RuntimeError.$new("implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly"); } if (current_func.$$def) { call_jsid = current_func.$$jsid; } 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 // method. This helper simply throws an error which is then caught by the // method. This approach is expensive, so it is only used when absolutely // needed. // Opal.ret = function(val) { Opal.returner.$v = val; throw Opal.returner; }; // Used to break out of a block. Opal.brk = function(val, breaker) { breaker.$v = val; throw breaker; }; // Builds a new unique breaker, this is to avoid multiple nested breaks to get // in the way of each other. Opal.new_brk = function() { return new Error('unexpected break'); }; // handles yield calls for 1 yielded arg Opal.yield1 = function(block, arg) { if (typeof(block) !== "function") { throw Opal.LocalJumpError.$new("no block given"); } var has_mlhs = block.$$has_top_level_mlhs_arg, has_trailing_comma = block.$$has_trailing_comma_in_args; if (block.length > 1 || ((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); } }; // handles yield for > 1 yielded 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 < l; i++) { args_ary[i] = args[i]; } return block.apply(null, args_ary); } return block.apply(null, args); }; // Finds the corresponding exception match in candidates. Each candidate can // be a value, or an array of values. Returns null if not found. Opal.rescue = function(exception, candidates) { for (var i = 0; i < candidates.length; i++) { var candidate = candidates[i]; if (candidate.$$is_array) { var result = Opal.rescue(exception, candidate); if (result) { return result; } } else if (candidate === Opal.JS.Error) { return candidate; } else if (candidate['$==='](exception)) { return candidate; } } return null; }; Opal.is_a = function(object, klass) { if (object.$$meta === klass || object.$$class === klass) { return true; } if (object.$$is_number && klass.$$is_number_class) { return true; } var i, length, ancestors = Opal.ancestors(object.$$is_class ? Opal.get_singleton_class(object) : (object.$$meta || object.$$class)); for (i = 0, length = ancestors.length; i < length; i++) { if (ancestors[i] === klass) { return true; } } return false; }; // Helpers for extracting kwsplats // Used for: { **h } Opal.to_hash = function(value) { if (value.$$is_hash) { return value; } else if (value['$respond_to?']('to_hash', true)) { var hash = value.$to_hash(); if (hash.$$is_hash) { return hash; } else { throw Opal.TypeError.$new("Can't convert " + value.$$class + " to Hash (" + value.$$class + "#to_hash gives " + hash.$$class + ")"); } } else { throw Opal.TypeError.$new("no implicit conversion of " + value.$$class + " into Hash"); } }; // Helpers for implementing multiple assignment // Our code for extracting the values and assigning them only works if the // return value is a JS array. // So if we get an Array subclass, extract the wrapped JS array from it // Used for: a, b = something (no splat) Opal.to_ary = function(value) { if (value.$$is_array) { return value; } else if (value['$respond_to?']('to_ary', true)) { var ary = value.$to_ary(); if (ary === nil) { return [value]; } else if (ary.$$is_array) { return ary; } else { throw Opal.TypeError.$new("Can't convert " + value.$$class + " to Array (" + value.$$class + "#to_ary gives " + ary.$$class + ")"); } } else { return [value]; } }; // Used for: a, b = *something (with splat) Opal.to_a = function(value) { if (value.$$is_array) { // A splatted array must be copied return value.slice(); } else if (value['$respond_to?']('to_a', true)) { var ary = value.$to_a(); if (ary === nil) { return [value]; } else if (ary.$$is_array) { return ary; } else { throw Opal.TypeError.$new("Can't convert " + value.$$class + " to Array (" + value.$$class + "#to_a gives " + ary.$$class + ")"); } } else { return [value]; } }; // Used for extracting keyword arguments from arguments passed to // JS function. If provided +arguments+ list doesn't have a Hash // as a last item, returns a blank Hash. // // @param parameters [Array] // @return [Hash] // 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); 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 // keyword arguemnts passed to method, as well as the used args which are // the names of required and optional arguments defined. This method then // just returns all key/value pairs which have not been used, in a new // hash literal. // // @param given_args [Hash] all kwargs given to method // @param used_args [Object] all keys used as named kwargs // @return [Hash] // Opal.kwrestargs = function(given_args, used_args) { var keys = [], map = {}, key = null, given_map = given_args.$$smap; for (key in given_map) { if (!used_args[key]) { keys.push(key); map[key] = given_map[key]; } } return Opal.hash2(keys, map); }; // Calls passed method on a ruby object with arguments and block: // // Can take a method or a method name. // // 1. When method name gets passed it invokes it by its name // and calls 'method_missing' when object doesn't have this method. // Used internally by Opal to invoke method that takes a block or a splat. // 2. When method (i.e. method body) gets passed, it doesn't trigger 'method_missing' // because it doesn't know the name of the actual method. // Used internally by Opal to invoke 'super'. // // @example // var my_array = [1, 2, 3, 4] // Opal.send(my_array, 'length') # => 4 // Opal.send(my_array, my_array.$length) # => 4 // // Opal.send(my_array, 'reverse!') # => [4, 3, 2, 1] // Opal.send(my_array, my_array['$reverse!']') # => [4, 3, 2, 1] // // @param recv [Object] ruby object // @param method [Function, String] method body or name of the method // @param args [Array] arguments that will be passed to the method call // @param block [Function] ruby block // @return [Object] returning value of the method call Opal.send = function(recv, method, args, block) { var body = (typeof(method) === 'string') ? recv['$'+method] : method; if (body != null) { body.$$p = block; return body.apply(recv, args); } return recv.$method_missing.apply(recv, [method].concat(args)); } // 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 // can not determine the destination object, or the object is a Module // instance. This can get called by `Module#define_method` as well. // // ## Modules // // Any method defined on a module will come through this runtime helper. // The method is added to the module body, and the owner of the method is // set to be the module itself. This is used later when choosing which // method should show on a class if more than 1 included modules define // the same method. Finally, if the module is in `module_function` mode, // then the method is also defined onto the module itself. // // ## Classes // // This helper will only be called for classes when a method is being // defined indirectly; either through `Module#define_method`, or by a // literal `def` method inside an `instance_eval` or `class_eval` body. In // either case, the method is simply added to the class' prototype. A special // exception exists for `BasicObject` and `Object`. These two classes are // special because they are used in toll-free bridged classes. In each of // these two cases, extra work is required to define the methods on toll-free // bridged class' prototypes as well. // // ## Objects // // If a simple ruby object is the object, then the method is simply just // defined on the object as a singleton method. This would be the case when // a method is defined inside an `instance_eval` block. // // @param obj [Object, Class] the actual obj to define method for // @param jsid [String] the JavaScript friendly method name (e.g. '$foo') // @param body [JS.Function] the literal JavaScript function used as method // @return [null] // Opal.def = function(obj, 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)) { Opal.defn(obj, jsid, body); } else { Opal.defs(obj, jsid, body); } }; // 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); // is it a module? if (obj.$$is_module) { Opal.update_includers(obj, jsid); if (obj.$$module_function) { Opal.defs(obj, 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); } } // 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)); } 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) { 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)) { 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)); } } }; // Called from #undef_method. 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; // When running inside #instance_eval the alias refers to class methods. 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 the body is itself an alias use the original body // 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 // would be ovrewritten on the original body. alias = function() { var block = alias.$$p, args, i, ii; args = new Array(arguments.length); for(i = 0, ii = arguments.length; i < ii; i++) { args[i] = arguments[i]; } if (block != null) { alias.$$p = null } return Opal.send(this, body, args, block); }; // Try to make the browser pick the right name alias.displayName = name; alias.length = body.length; alias.$$arity = body.$$arity; alias.$$parameters = body.$$parameters; alias.$$source_location = body.$$source_location; alias.$$alias_of = body; alias.$$alias_name = name; Opal.defn(obj, id, alias); return obj; }; Opal.alias_native = function(obj, name, native_name) { var id = '$' + name, body = obj.$$proto[native_name]; if (typeof(body) !== "function" || body.$$stub) { throw Opal.NameError.$new("undefined native method `" + native_name + "' for class `" + obj.$name() + "'") } Opal.defn(obj, id, body); return obj; }; // Hashes // ------ Opal.hash_init = function(hash) { hash.$$smap = Object.create(null); hash.$$map = Object.create(null); hash.$$keys = []; }; Opal.hash_clone = function(from_hash, to_hash) { to_hash.$$none = from_hash.$$none; to_hash.$$proc = from_hash.$$proc; for (var i = 0, keys = from_hash.$$keys, smap = from_hash.$$smap, len = keys.length, key, value; i < len; i++) { key = keys[i]; if (key.$$is_string) { value = smap[key]; } else { value = key.value; key = key.key; } Opal.hash_put(to_hash, key, value); } }; Opal.hash_put = function(hash, key, value) { if (key.$$is_string) { if (!$hasOwn.call(hash.$$smap, key)) { hash.$$keys.push(key); } hash.$$smap[key] = value; return; } var key_hash, bucket, last_bucket; key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); if (!$hasOwn.call(hash.$$map, key_hash)) { bucket = {key: key, key_hash: key_hash, value: value}; hash.$$keys.push(bucket); hash.$$map[key_hash] = bucket; return; } bucket = hash.$$map[key_hash]; while (bucket) { if (key === bucket.key || key['$eql?'](bucket.key)) { last_bucket = undefined; bucket.value = value; break; } last_bucket = bucket; bucket = bucket.next; } if (last_bucket) { bucket = {key: key, key_hash: key_hash, value: value}; hash.$$keys.push(bucket); last_bucket.next = bucket; } }; Opal.hash_get = function(hash, key) { if (key.$$is_string) { if ($hasOwn.call(hash.$$smap, key)) { return hash.$$smap[key]; } return; } var key_hash, bucket; key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); if ($hasOwn.call(hash.$$map, key_hash)) { bucket = hash.$$map[key_hash]; while (bucket) { if (key === bucket.key || key['$eql?'](bucket.key)) { return bucket.value; } bucket = bucket.next; } } }; Opal.hash_delete = function(hash, key) { var i, keys = hash.$$keys, length = keys.length, value; if (key.$$is_string) { if (!$hasOwn.call(hash.$$smap, key)) { return; } for (i = 0; i < length; i++) { if (keys[i] === key) { keys.splice(i, 1); break; } } value = hash.$$smap[key]; delete hash.$$smap[key]; return value; } var key_hash = key.$hash(); if (!$hasOwn.call(hash.$$map, key_hash)) { return; } var bucket = hash.$$map[key_hash], last_bucket; while (bucket) { if (key === bucket.key || key['$eql?'](bucket.key)) { value = bucket.value; for (i = 0; i < length; i++) { if (keys[i] === bucket) { keys.splice(i, 1); break; } } if (last_bucket && bucket.next) { last_bucket.next = bucket.next; } else if (last_bucket) { delete last_bucket.next; } else if (bucket.next) { hash.$$map[key_hash] = bucket.next; } else { delete hash.$$map[key_hash]; } return value; } last_bucket = bucket; bucket = bucket.next; } }; Opal.hash_rehash = function(hash) { for (var i = 0, length = hash.$$keys.length, key_hash, bucket, last_bucket; i < length; i++) { if (hash.$$keys[i].$$is_string) { continue; } key_hash = hash.$$keys[i].key.$hash(); if (key_hash === hash.$$keys[i].key_hash) { continue; } bucket = hash.$$map[hash.$$keys[i].key_hash]; last_bucket = undefined; while (bucket) { if (bucket === hash.$$keys[i]) { if (last_bucket && bucket.next) { last_bucket.next = bucket.next; } else if (last_bucket) { delete last_bucket.next; } else if (bucket.next) { hash.$$map[hash.$$keys[i].key_hash] = bucket.next; } else { delete hash.$$map[hash.$$keys[i].key_hash]; } break; } last_bucket = bucket; bucket = bucket.next; } hash.$$keys[i].key_hash = key_hash; if (!$hasOwn.call(hash.$$map, key_hash)) { hash.$$map[key_hash] = hash.$$keys[i]; continue; } bucket = hash.$$map[key_hash]; last_bucket = undefined; while (bucket) { if (bucket === hash.$$keys[i]) { last_bucket = undefined; break; } last_bucket = bucket; bucket = bucket.next; } if (last_bucket) { last_bucket.next = hash.$$keys[i]; } } }; Opal.hash = function() { var arguments_length = arguments.length, args, hash, i, length, key, value; if (arguments_length === 1 && arguments[0].$$is_hash) { return arguments[0]; } hash = new Opal.Hash.$$alloc(); Opal.hash_init(hash); if (arguments_length === 1 && arguments[0].$$is_array) { args = arguments[0]; length = args.length; for (i = 0; i < length; i++) { if (args[i].length !== 2) { throw Opal.ArgumentError.$new("value not of length 2: " + args[i].$inspect()); } key = args[i][0]; value = args[i][1]; Opal.hash_put(hash, key, value); } return hash; } if (arguments_length === 1) { args = arguments[0]; for (key in args) { if ($hasOwn.call(args, key)) { value = args[key]; Opal.hash_put(hash, key, value); } } return hash; } if (arguments_length % 2 !== 0) { throw Opal.ArgumentError.$new("odd number of arguments for Hash"); } for (i = 0; i < arguments_length; i += 2) { key = arguments[i]; value = arguments[i + 1]; Opal.hash_put(hash, key, value); } return hash; }; // A faster Hash creator for hashes that just use symbols and // strings as keys. The map and keys array can be constructed at // compile time, so they are just added here by the constructor // function. // Opal.hash2 = function(keys, smap) { var hash = new Opal.Hash.$$alloc(); hash.$$smap = smap; hash.$$map = Object.create(null); hash.$$keys = keys; return hash; }; // Create a new range instance with first and last values, and whether the // range excludes the last value. // Opal.range = function(first, last, exc) { var range = new Opal.Range.$$alloc(); range.begin = first; range.end = last; range.excl = exc; return range; }; // Get the ivar name for a given name. // Mostly adds a trailing $ to reserved names. // Opal.ivar = function(name) { if ( // properties name === "constructor" || name === "displayName" || name === "__count__" || name === "__noSuchMethod__" || name === "__parent__" || name === "__proto__" || // methods name === "hasOwnProperty" || name === "valueOf" ) { return name + "$"; } return name; }; // Regexps // ------- // Escape Regexp special chars letting the resulting string be used to build // a new Regexp. // Opal.escape_regexp = function(str) { return str.replace(/([-[\]\/{}()*+?.^$\\| ])/g, '\\$1') .replace(/[\n]/g, '\\n') .replace(/[\r]/g, '\\r') .replace(/[\f]/g, '\\f') .replace(/[\t]/g, '\\t'); } // Require system // -------------- Opal.modules = {}; Opal.loaded_features = ['corelib/runtime']; Opal.current_dir = '.' Opal.require_table = {'corelib/runtime': true}; Opal.normalize = function(path) { var parts, part, new_parts = [], SEPARATOR = '/'; if (Opal.current_dir !== '.') { path = Opal.current_dir.replace(/\/*$/, '/') + path; } path = path.replace(/^\.\//, ''); path = path.replace(/\.(rb|opal|js)$/, ''); parts = path.split(SEPARATOR); for (var i = 0, ii = parts.length; i < ii; i++) { part = parts[i]; if (part === '') continue; (part === '..') ? new_parts.pop() : new_parts.push(part) } return new_parts.join(SEPARATOR); }; Opal.loaded = function(paths) { var i, l, path; for (i = 0, l = paths.length; i < l; i++) { path = Opal.normalize(paths[i]); if (Opal.require_table[path]) { return; } Opal.loaded_features.push(path); Opal.require_table[path] = true; } }; Opal.load = function(path) { path = Opal.normalize(path); Opal.loaded([path]); var module = Opal.modules[path]; if (module) { module(Opal); } else { var severity = Opal.config.missing_require_severity; var message = 'cannot load such file -- ' + path; if (severity === "error") { Opal.LoadError ? Opal.LoadError.$new(message) : function(){throw message}(); } else if (severity === "warning") { console.warn('WARNING: LoadError: ' + message); } } return true; }; Opal.require = function(path) { path = Opal.normalize(path); if (Opal.require_table[path]) { return false; } return Opal.load(path); }; // Initialization // -------------- // 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); // 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); // BasicObject can reach itself, avoid const_set to skip the $$base_module logic BasicObject.$$const["BasicObject"] = BasicObject; // Assign basic constants Opal.const_set(_Object, "BasicObject", BasicObject); Opal.const_set(_Object, "Object", _Object); Opal.const_set(_Object, "Module", Module); Opal.const_set(_Object, "Class", Class); // Fix booted classes to use their metaclass 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() { var to_s = this.$to_s(); if (to_s.$$is_string && typeof(to_s) === 'object') { // a string created using new String('string') return to_s.valueOf(); } 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; // Instantiate the top object Opal.top = new _Object.$$alloc(); // Nil Opal.klass(_Object, _Object, 'NilClass', NilClass_alloc); nil = Opal.nil = new NilClass_alloc(); nil.$$id = nil_id; nil.call = nil.apply = function() { throw Opal.LocalJumpError.$new('no block given'); }; 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.0 */ 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; 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 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 < l; i++) { args_ary[i] = args[i]; } return args_ary; } }, TMP_Opal_destructure_8.$$arity = 1); Opal.defs(self, '$respond_to?', TMP_Opal_respond_to$q_9 = function(obj, method) { var self = this; 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) { 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) { var self = this; name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($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)) }; 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) { var self = this; name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](name, Opal.const_get_relative($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))}; 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) { var self = this; const_name = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](const_name, Opal.const_get_relative($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))}; 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; 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]; } var method_name; for (var i = method_names.length - 1; i >= 0; i--) { method_name = method_names[i]; owner_class.$$proto['$'+method_name].$$pristine = true } ; return nil; }, TMP_Opal_pristine_14.$$arity = -2); })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/module"] = 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_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 < length; i++) { if (ancestors[i] === other) { return true; } } for (i = 0, ancestors = Opal.ancestors(other), length = ancestors.length; i < length; i++) { if (ancestors[i] === self) { return false; } } return nil; ; }, TMP_Module_$lt_4.$$arity = 1); Opal.defn(self, '$<=', TMP_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); Opal.defn(self, '$>', 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); // the closure here is needed because name will change at the next // cycle, I wish we could use let. var body = (function(ivar) { return function() { if (this[ivar] == null) { return nil; } else { return this[ivar]; } }; })(ivar); // initialize the instance variable as nil 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); // the closure here is needed because name will change at the next // cycle, I wish we could use let. var body = (function(ivar){ return function(value) { return this[ivar] = value; } })(ivar); body.$$parameters = [['req']]; body.$$arity = 1; // initialize the instance variable as nil 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 < ii; i++) { for (constant in nesting[i].$$const) { constants[constant] = true; } } return Object.keys(constants); } else { return Opal.constants(self, inherit) } }, TMP_Module_constants_23.$$arity = -1); Opal.defs(self, '$nesting', TMP_Module_nesting_24 = function $$nesting() { var self = this; return self.$$nesting || [] }, TMP_Module_nesting_24.$$arity = 0); Opal.defn(self, '$const_defined?', TMP_Module_const_defined$q_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)) }; var module, modules = [self], module_constants, i, ii; // Add up ancestors if inherit is true if (inherit) { modules = modules.concat(Opal.ancestors(self)); // Add Object's ancestors if it's a module – modules have no ancestors otherwise if (self.$$is_module) { modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object)); } } for (i = 0, ii = modules.length; i < ii; i++) { module = modules[i]; if (module.$$const[name] != null) { return true; } } return false; ; }, TMP_Module_const_defined$q_25.$$arity = -2); Opal.defn(self, '$const_get', TMP_Module_const_get_27 = function $$const_get(name, inherit) { var TMP_26, self = this; if (inherit == null) { inherit = true; } name = Opal.const_get_relative($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)) }; if (inherit) { return Opal.const_get_relative([self], name); } else { return Opal.const_get_local(self, name); } ; }, TMP_Module_const_get_27.$$arity = -2); Opal.defn(self, '$const_missing', TMP_Module_const_missing_28 = function $$const_missing(name) { var self = this, full_const_name = nil; if (self.$$autoload) { var file = self.$$autoload[name]; if (file) { self.$require(file); return self.$const_get(name); } } ; full_const_name = (function() {if (self['$=='](Opal.const_get_relative($nesting, 'Object'))) { return name } 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); Opal.defn(self, '$const_set', TMP_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))}; Opal.const_set(self, name, value); return value; }, TMP_Module_const_set_29.$$arity = 2); Opal.defn(self, '$public_constant', TMP_Module_public_constant_30 = function $$public_constant(const_name) { var self = this; return nil }, TMP_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; if ($iter) TMP_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")}; 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; 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]; } 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)")}})()); var id = '$' + name; block.$$jsid = name; block.$$s = null; block.$$def = block; block.$$define_meth = true; Opal.defn(self, id, block); return name; ; }, TMP_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; 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 < length; i++) { Opal.rdef(self, "$" + names[i]); } ; return self; }, TMP_Module_remove_method_33.$$arity = -1); Opal.defn(self, '$singleton_class?', TMP_Module_singleton_class$q_34 = function() { var self = this; return !!self.$$is_singleton }, TMP_Module_singleton_class$q_34.$$arity = 0); Opal.defn(self, '$include', TMP_Module_include_35 = function $$include($a_rest) { var self = this, mods; 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]; } 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)"); } (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 < 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); Opal.defn(self, '$include?', TMP_Module_include$q_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)"); } var i, ii, mod2, ancestors = Opal.ancestors(self); for (i = 0, ii = ancestors.length; i < ii; i++) { mod2 = ancestors[i]; if (mod2 === mod && mod2 !== self) { return true; } } return false; }, TMP_Module_include$q_37.$$arity = 1); Opal.defn(self, '$instance_method', TMP_Module_instance_method_38 = function $$instance_method(name) { var self = this; var meth = self.$$proto['$' + name]; if (!meth || meth.$$stub) { self.$raise(Opal.const_get_relative($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); }, TMP_Module_instance_method_38.$$arity = 1); Opal.defn(self, '$instance_methods', TMP_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)); } return methods; }, TMP_Module_instance_methods_39.$$arity = -1); Opal.defn(self, '$included', TMP_Module_included_40 = function $$included(mod) { var self = this; return nil }, TMP_Module_included_40.$$arity = 1); Opal.defn(self, '$extended', TMP_Module_extended_41 = function $$extended(mod) { var self = this; return nil }, TMP_Module_extended_41.$$arity = 1); Opal.defn(self, '$method_added', TMP_Module_method_added_42 = function $$method_added($a_rest) { var self = this; return nil }, TMP_Module_method_added_42.$$arity = -1); Opal.defn(self, '$method_removed', TMP_Module_method_removed_43 = function $$method_removed($a_rest) { var self = this; return nil }, TMP_Module_method_removed_43.$$arity = -1); Opal.defn(self, '$method_undefined', TMP_Module_method_undefined_44 = function $$method_undefined($a_rest) { var self = this; return nil }, TMP_Module_method_undefined_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; 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; 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)") }; $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; 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"))}; var old = block.$$s, result; block.$$s = null; result = block.apply(self, [self]); block.$$s = old; return result; ; }, TMP_Module_module_eval_45.$$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; 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 (block === nil) { self.$raise(Opal.const_get_relative($nesting, 'LocalJumpError'), "no block given") } var block_self = block.$$s, result; block.$$s = null; result = block.apply(self, args); block.$$s = block_self; return result; }, TMP_Module_module_exec_47.$$arity = -1); Opal.alias(self, "class_exec", "module_exec"); Opal.defn(self, '$method_defined?', TMP_Module_method_defined$q_48 = function(method) { var self = this; var body = self.$$proto['$' + method]; return (!!body) && !body.$$stub; }, TMP_Module_method_defined$q_48.$$arity = 1); Opal.defn(self, '$module_function', TMP_Module_module_function_49 = function $$module_function($a_rest) { var self = this, methods; 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]; } if (methods.length === 0) { self.$$module_function = true; } else { for (var i = 0, length = methods.length; i < length; i++) { var meth = methods[i], id = '$' + meth, func = self.$$proto[id]; Opal.defs(self, id, func); } } return self; }, TMP_Module_module_function_49.$$arity = -1); Opal.defn(self, '$name', TMP_Module_name_50 = function $$name() { var self = this; if (self.$$full_name) { return self.$$full_name; } var result = [], base = self; while (base) { // Give up if any of the ancestors is unnamed if (base.$$name === nil || base.$$name == null) return nil; result.unshift(base.$$name); base = base.$$base_module; if (base === Opal.Object) { break; } } if (result.length === 0) { return nil; } return self.$$full_name = result.join('::'); }, TMP_Module_name_50.$$arity = 0); Opal.defn(self, '$remove_const', TMP_Module_remove_const_51 = function $$remove_const(name) { var self = this; return Opal.const_remove(self, name) }, TMP_Module_remove_const_51.$$arity = 1); Opal.defn(self, '$to_s', TMP_Module_to_s_52 = 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); 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 < length; i++) { Opal.udef(self, "$" + names[i]); } ; return self; }, TMP_Module_undef_method_53.$$arity = -1); Opal.defn(self, '$instance_variables', TMP_Module_instance_variables_54 = function $$instance_variables() { var self = this, consts = nil; consts = (Opal.Module.$$nesting = $nesting, self.$constants()); var result = []; for (var name in self) { if (self.hasOwnProperty(name) && name.charAt(0) !== '$' && name !== 'constructor' && !consts['$include?'](name)) { result.push('@' + name); } } return result; ; }, TMP_Module_instance_variables_54.$$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; if ($iter) TMP_Module_dup_55.$$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.$copy_class_variables(self); copy.$copy_constants(self); return copy; }, TMP_Module_dup_55.$$arity = 0); Opal.defn(self, '$copy_class_variables', TMP_Module_copy_class_variables_56 = function $$copy_class_variables(other) { var self = this; for (var name in other.$$cvars) { 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) { var self = this; var name, other_constants = other.$$const; for (name in other_constants) { Opal.const_set(self, name, other_constants[name]); } }, TMP_Module_copy_constants_57.$$arity = 1), nil) && 'copy_constants'; })($nesting[0], null, $nesting) }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$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 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; Opal.defs(self, '$new', TMP_Class_new_1 = function(superclass) { var self = this, $iter = TMP_Class_new_1.$$p, block = $iter || nil; if (superclass == null) { superclass = Opal.const_get_relative($nesting, 'Object'); } if ($iter) TMP_Class_new_1.$$p = null; 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; superclass.$inherited(klass); Opal.module_initialize(klass, block); return klass; }, TMP_Class_new_1.$$arity = -1); Opal.defn(self, '$allocate', TMP_Class_allocate_2 = function $$allocate() { var self = this; var obj = new self.$$alloc(); obj.$$id = Opal.uid(); return obj; }, TMP_Class_allocate_2.$$arity = 0); Opal.defn(self, '$inherited', TMP_Class_inherited_3 = function $$inherited(cls) { var self = this; return nil }, TMP_Class_inherited_3.$$arity = 1); Opal.defn(self, '$initialize_dup', TMP_Class_initialize_dup_4 = function $$initialize_dup(original) { var self = this; self.$initialize_copy(original); self.$$name = null; self.$$full_name = null; ; }, TMP_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; 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; var object = self.$allocate(); Opal.send(object, object.$initialize, args, block); return object; }, TMP_Class_new_5.$$arity = -1); Opal.defn(self, '$superclass', TMP_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; if ($iter) TMP_Class_to_s_7.$$p = null; var singleton_of = self.$$singleton_of; if (singleton_of && (singleton_of.$$is_class || singleton_of.$$is_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); }, TMP_Class_to_s_7.$$arity = 0), nil) && 'to_s'; })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ 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.alias(self, "equal?", "=="); 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; // 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) { 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) }; /* Generated by Opal 0.11.0 */ 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', '$append_features', '$extended', '$length', '$respond_to?', '$[]', '$nil?', '$to_a', '$to_int', '$fetch', '$Integer', '$Float', '$to_ary', '$to_str', '$coerce_to', '$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; // set guard for infinite recursion 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 < ii; i++) { name = keys[i]; if (name.charAt(0) !== '$' && other.hasOwnProperty(name)) { self[name] = other[name]; } } }, TMP_Kernel_copy_instance_variables_12.$$arity = 1); Opal.defn(self, '$copy_singleton_methods', TMP_Kernel_copy_singleton_methods_13 = function $$copy_singleton_methods(other) { var self = this; var name; 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; 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 (name in other) { if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) { self[name] = other[name]; } } }, TMP_Kernel_copy_singleton_methods_13.$$arity = 1); Opal.defn(self, '$clone', TMP_Kernel_clone_14 = function $$clone($kwargs) { var self = this, freeze, copy = nil; 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 } 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); Opal.defn(self, '$initialize_clone', TMP_Kernel_initialize_clone_15 = function $$initialize_clone(other) { var self = this; return self.$initialize_copy(other) }, TMP_Kernel_initialize_clone_15.$$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; 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); Opal.defn(self, '$dup', TMP_Kernel_dup_17 = function $$dup() { var self = this, copy = nil; copy = self.$class().$allocate(); copy.$copy_instance_variables(self); copy.$initialize_dup(self); return copy; }, TMP_Kernel_dup_17.$$arity = 0); Opal.defn(self, '$initialize_dup', TMP_Kernel_initialize_dup_18 = function $$initialize_dup(other) { var self = this; return self.$initialize_copy(other) }, TMP_Kernel_initialize_dup_18.$$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; 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); Opal.alias(self, "to_enum", "enum_for"); Opal.defn(self, '$equal?', TMP_Kernel_equal$q_20 = function(other) { var self = this; return self === other }, TMP_Kernel_equal$q_20.$$arity = 1); Opal.defn(self, '$exit', TMP_Kernel_exit_21 = 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))) { block = $gvars.__at_exit__.$pop(); block.$call(); }; if (status == null) { status = 0 } else if (status.$$is_boolean) { status = status ? 0 : 1; } else if (status.$$is_numeric) { status = status.$to_i(); } else { status = 0 } Opal.exit(status); ; return nil; }, TMP_Kernel_exit_21.$$arity = -1); Opal.defn(self, '$extend', TMP_Kernel_extend_22 = function $$extend($a_rest) { var self = this, mods; 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]; } 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)"); } (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 = '', //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; 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 < len; i++) { switch (format_string.charAt(i)) { 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(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; case '<': case '\{': closing_brace_char = (format_string.charAt(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 < 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); 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; }, 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) { 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); } // 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'))) { // exception is fine } 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 * 1000); 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); }; /* Generated by Opal 0.11.0 */ 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); // Error.captureStackTrace() will use .name and .toString to build the // first line of the stack trace so it must be called after the error // has been initialized. // 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); } 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); }; /* Generated by Opal 0.11.0 */ 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.0"); Opal.const_set($nesting[0], 'RUBY_ENGINE_VERSION', "0.11.0"); Opal.const_set($nesting[0], 'RUBY_RELEASE_DATE', "2017-12-08"); 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')) + ")"); }; /* Generated by Opal 0.11.0 */ 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"); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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 < 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(['$===', '$>', '$<', '$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; } // check for infinite recursion 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) }; /* Generated by Opal 0.11.0 */ 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; // 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.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 /(?!)/; } // 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") } // deal with splat issues (related to https://github.com/opal/opal/issues/858) if (is_first_part_array) { parts = parts[0]; } options = undefined; quoted_validated = []; for (var i=0; i < parts.length; i++) { part = parts[i]; if (part.$$is_string) { quoted_validated.push(self.$escape(part)); } 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") } options = each_part_options; quoted_validated.push('('+part.source+')'); } else { quoted_validated.push(self.$escape((part).$to_str())); } } ; return self.$new((quoted_validated).$join("|"), options); }, TMP_union_4.$$arity = -1); return (Opal.defn(self, '$new', TMP_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"); if (regexp.charAt(regexp.length - 1) === '\\' && regexp.charAt(regexp.length - 2) !== '\\') { self.$raise(Opal.const_get_relative($nesting, 'RegexpError'), "" + "too short escape sequence: /" + (regexp) + "/") } if (options === undefined || options['$!']()) { return new RegExp(regexp); } 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'; } options = temp; } else { options = 'i'; } return new RegExp(regexp, options); }, TMP_new_5.$$arity = -2), nil) && 'new'; })(Opal.get_singleton_class(self), $nesting); Opal.defn(self, '$==', TMP_Regexp_$eq$eq_6 = function(other) { var self = this; return other.constructor == RegExp && self.toString() === other.toString() }, TMP_Regexp_$eq$eq_6.$$arity = 1); Opal.defn(self, '$===', TMP_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); Opal.defn(self, '$=~', TMP_Regexp_$eq$_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); Opal.alias(self, "eql?", "=="); Opal.defn(self, '$inspect', TMP_Regexp_inspect_9 = function $$inspect() { var self = this; var regexp_format = /^\/(.*)\/([^\/]*)$/; var value = self.toString(); var matches = regexp_format.exec(value); if (matches) { var regexp_pattern = matches[1]; var regexp_flags = matches[2]; var chars = regexp_pattern.split(''); var chars_length = chars.length; var char_escaped = false; var regexp_pattern_escaped = ''; for (var i = 0; i < chars_length; i++) { var current_char = chars[i]; if (!char_escaped && current_char == '/') { regexp_pattern_escaped = regexp_pattern_escaped.concat('\\'); } regexp_pattern_escaped = regexp_pattern_escaped.concat(current_char); if (current_char == '\\') { if (char_escaped) { // does not over escape char_escaped = false; } else { char_escaped = true; } } else { char_escaped = false; } } return '/' + regexp_pattern_escaped + '/' + regexp_flags; } else { return value; } }, TMP_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; if ($gvars["~"] == null) $gvars["~"] = nil; if ($iter) TMP_Regexp_match_10.$$p = null; 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 ($gvars["~"] = nil); } 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 ($gvars["~"] = nil); } } 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' : '')); while (true) { md = re.exec(string); if (md === null) { return ($gvars["~"] = nil); } if (md.index >= 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'; // 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' : '')); md = re.exec(string); if (md === null || md.index < pos) { return false; } else { return true; } }, TMP_Regexp_match$q_11.$$arity = -2); Opal.defn(self, '$~', TMP_Regexp_$_12 = function() { var self = this; if ($gvars._ == null) $gvars._ = nil; return self['$=~']($gvars._) }, TMP_Regexp_$_12.$$arity = 0); Opal.defn(self, '$source', TMP_Regexp_source_13 = function $$source() { var self = this; return self.source }, TMP_Regexp_source_13.$$arity = 0); Opal.defn(self, '$options', TMP_Regexp_options_14 = function $$options() { var self = this; if (self.uninitialized) { self.$raise(Opal.const_get_relative($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'); } if (self.ignoreCase) { result |= Opal.const_get_relative($nesting, 'IGNORECASE'); } return result; }, TMP_Regexp_options_14.$$arity = 0); Opal.defn(self, '$casefold?', TMP_Regexp_casefold$q_15 = function() { var self = this; return self.ignoreCase }, TMP_Regexp_casefold$q_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 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; def.matches = nil; self.$attr_reader("post_match", "pre_match", "regexp", "string"); Opal.defn(self, '$initialize', TMP_MatchData_initialize_16 = function $$initialize(regexp, match_groups) { var self = this; $gvars["~"] = self; self.regexp = regexp; self.begin = match_groups.index; self.string = match_groups.input; self.pre_match = match_groups.input.slice(0, match_groups.index); self.post_match = match_groups.input.slice(match_groups.index + match_groups[0].length); self.matches = []; for (var i = 0, length = match_groups.length; i < length; i++) { var group = match_groups[i]; if (group == null) { self.matches.push(nil); } else { self.matches.push(group); } } ; }, TMP_MatchData_initialize_16.$$arity = 2); Opal.defn(self, '$[]', TMP_MatchData_$$_17 = 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 $send(self.matches, '[]', Opal.to_a(args)) }, TMP_MatchData_$$_17.$$arity = -1); Opal.defn(self, '$offset', TMP_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") } return [self.begin, self.begin + self.matches[n].length]; }, TMP_MatchData_offset_18.$$arity = 1); Opal.defn(self, '$==', TMP_MatchData_$eq$eq_19 = function(other) { var $a, $b, $c, $d, self = this; if ($truthy(Opal.const_get_relative($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); Opal.alias(self, "eql?", "=="); Opal.defn(self, '$begin', TMP_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") } return self.begin; }, TMP_MatchData_begin_20.$$arity = 1); Opal.defn(self, '$end', TMP_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") } return self.begin + self.matches[n].length; }, TMP_MatchData_end_21.$$arity = 1); Opal.defn(self, '$captures', TMP_MatchData_captures_22 = function $$captures() { var self = this; return self.matches.slice(1) }, TMP_MatchData_captures_22.$$arity = 0); Opal.defn(self, '$inspect', TMP_MatchData_inspect_23 = function $$inspect() { var self = this; var str = "#"; }, 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 < args.length; i++) { if (args[i].$$is_range) { a = (args[i]).$to_a(); a.unshift(i, 1); 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"); if (index < 0) { index += self.matches.length; if (index < 0) { values.push(nil); continue; } } values.push(self.matches[index]); } return values; }, TMP_MatchData_values_at_27.$$arity = -1), nil) && 'values_at'; })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/string"] = function(Opal) { 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); } 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(['$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']); 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(); // All credit for the bit-twiddling magic code below goes to Mozilla // polyfill implementation of String.prototype.repeat() posted here: // 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") } 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 < other ? -1 : 0); } else { var cmp = other['$<=>'](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 < match.length) { return match[length += match.length]; } if (length >= 0 && length < match.length) { return match[length]; } return nil; } index = Opal.const_get_relative($nesting, 'Opal').$coerce_to(index, Opal.const_get_relative($nesting, 'Integer'), "to_int"); if (index < 0) { index += size; } if (length == null) { if (index >= 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 < length; i++) { Opal.yield1(block, self.charAt(i)); } ; return self; }, TMP_String_each_char_24.$$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; if ($gvars["/"] == null) $gvars["/"] = nil; if (separator == null) { separator = $gvars["/"]; } if ($iter) TMP_String_each_line_26.$$p = null; if ((block !== nil)) { } else { return self.$enum_for("each_line", separator) }; if (separator === nil) { Opal.yield1(block, self); return self; } separator = Opal.const_get_relative($nesting, 'Opal').$coerce_to(separator, Opal.const_get_relative($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] || "")); } } return self; } chomped = self.$chomp(separator); trailing = self.length != chomped.length; splitted = chomped.split(separator); for (i = 0, length = splitted.length; i < length; i++) { if (i < length - 1 || trailing) { Opal.yield1(block, splitted[i] + separator); } else { Opal.yield1(block, splitted[i]); } } ; return self; }, TMP_String_each_line_26.$$arity = -1); Opal.defn(self, '$empty?', TMP_String_empty$q_27 = function() { var self = this; return self.length === 0 }, TMP_String_empty$q_27.$$arity = 0); Opal.defn(self, '$end_with?', TMP_String_end_with$q_28 = function($a_rest) { var self = this, suffixes; 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]; } 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(); if (self.length >= 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 = { '\u0007': '\\a', '\u001b': '\\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 < width) { result += padstr; } return self + result.slice(0, width); ; }, TMP_String_ljust_38.$$arity = -2); Opal.defn(self, '$lstrip', TMP_String_lstrip_39 = function $$lstrip() { var self = this; return self.replace(/^\s*/, '') }, TMP_String_lstrip_39.$$arity = 0); Opal.defn(self, '$ascii_only?', TMP_String_ascii_only$q_40 = function() { var self = this; return self.match(/[ -~\n]*/)[0] === self }, TMP_String_ascii_only$q_40.$$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; if ($iter) TMP_String_match_41.$$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)") }; return $send(pattern, 'match', [self, pos], block.$to_proc()); }, TMP_String_match_41.$$arity = -2); Opal.defn(self, '$next', TMP_String_next_42 = function $$next() { var self = this; var i = self.length; if (i === 0) { return ''; } var result = self; var first_alphanum_char_index = self.search(/[a-zA-Z0-9]/); var carry = false; var code; while (i--) { code = self.charCodeAt(i); if ((code >= 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 < ii; i++) { result.push(''); } } return result; } if (match !== null && match[0] === '') { result.splice(limit - 1, result.length - 1, result.slice(limit - 1).join('')); return result; } if (limit >= 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; 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(); if (self.indexOf(prefix) === 0) { return true; } } return false; }, TMP_String_start_with$q_54.$$arity = -1); Opal.defn(self, '$strip', TMP_String_strip_55 = function $$strip() { var self = this; return self.replace(/^\s*/, '').replace(/[\s\u0000]*$/, '') }, TMP_String_strip_55.$$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; if ($iter) TMP_String_sub_56.$$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 = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); } var result = pattern.exec(self); if (result === null) { ($gvars["~"] = nil) return self.toString(); } Opal.const_get_relative($nesting, 'MatchData').$new(pattern, result) 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 (replacement.$$is_hash) { return self.slice(0, result.index) + (replacement)['$[]'](result[0]).$to_s() + self.slice(result.index + result[0].length); } 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 = result.length - 1; i > 0; 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 (; i < length; i++) { result += self.charCodeAt(i); } if (n <= 0) { return result; } return result & (Math.pow(2, n) - 1); }, TMP_String_sum_57.$$arity = -1); Opal.defn(self, '$swapcase', TMP_String_swapcase_58 = function $$swapcase() { var self = this; var str = self.replace(/([a-z]+)|([A-Z]+)/g, function($0,$1,$2) { return $1 ? $0.toUpperCase() : $0.toLowerCase(); }); if (self.constructor === String) { return str; } return self.$class().$new(str); }, TMP_String_swapcase_58.$$arity = 0); Opal.defn(self, '$to_f', TMP_String_to_f_59 = function $$to_f() { var self = this; if (self.charAt(0) === '_') { return 0; } var result = parseFloat(self.replace(/_/g, '')); if (isNaN(result) || result == Infinity || result == -Infinity) { return 0; } else { return result; } }, TMP_String_to_f_59.$$arity = 0); Opal.defn(self, '$to_i', TMP_String_to_i_60 = 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"); if (radix === 1 || radix < 0 || radix > 36) { 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; i < from_length; i++) { ch = from_chars[i]; if (last_from == null) { last_from = ch; from_chars_expanded.push(ch); } else if (ch === '-') { if (last_from === '-') { from_chars_expanded.push('-'); from_chars_expanded.push('-'); } else if (i == from_length - 1) { from_chars_expanded.push('-'); } else { in_range = true; } } else if (in_range) { 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") } for (c = start + 1; c < end; c++) { from_chars_expanded.push(String.fromCharCode(c)); } from_chars_expanded.push(ch); in_range = null; last_from = null; } else { from_chars_expanded.push(ch); } } from_chars = from_chars_expanded; from_length = from_chars.length; if (inverse) { for (i = 0; i < from_length; i++) { subs[from_chars[i]] = true; } } else { if (to_length > 0) { var to_chars_expanded = []; var last_to = null; in_range = false; for (i = 0; i < to_length; i++) { ch = to_chars[i]; if (last_to == null) { last_to = ch; to_chars_expanded.push(ch); } else if (ch === '-') { if (last_to === '-') { to_chars_expanded.push('-'); to_chars_expanded.push('-'); } else if (i == to_length - 1) { to_chars_expanded.push('-'); } else { in_range = true; } } else if (in_range) { 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") } for (c = start + 1; c < end; c++) { to_chars_expanded.push(String.fromCharCode(c)); } to_chars_expanded.push(ch); in_range = null; last_to = null; } else { to_chars_expanded.push(ch); } } to_chars = to_chars_expanded; to_length = to_chars.length; } var length_diff = from_length - to_length; if (length_diff > 0) { var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); for (i = 0; i < length_diff; i++) { to_chars.push(pad_char); } } for (i = 0; i < from_length; i++) { subs[from_chars[i]] = to_chars[i]; } } var new_str = '' for (i = 0, length = self.length; i < length; i++) { ch = self.charAt(i); var sub = subs[ch]; if (inverse) { new_str += (sub == null ? global_sub : ch); } else { new_str += (sub != null ? sub : ch); } } return new_str; ; }, TMP_String_tr_64.$$arity = 2); Opal.defn(self, '$tr_s', TMP_String_tr_s_65 = 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(); if (from.length == 0) { 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; i < from_length; i++) { ch = from_chars[i]; if (last_from == null) { last_from = ch; from_chars_expanded.push(ch); } else if (ch === '-') { if (last_from === '-') { from_chars_expanded.push('-'); from_chars_expanded.push('-'); } else if (i == from_length - 1) { from_chars_expanded.push('-'); } else { in_range = true; } } else if (in_range) { 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") } for (c = start + 1; c < end; c++) { from_chars_expanded.push(String.fromCharCode(c)); } from_chars_expanded.push(ch); in_range = null; last_from = null; } else { from_chars_expanded.push(ch); } } from_chars = from_chars_expanded; from_length = from_chars.length; if (inverse) { for (i = 0; i < from_length; i++) { subs[from_chars[i]] = true; } } else { if (to_length > 0) { var to_chars_expanded = []; var last_to = null; in_range = false; for (i = 0; i < to_length; i++) { ch = to_chars[i]; if (last_from == null) { last_from = ch; to_chars_expanded.push(ch); } else if (ch === '-') { if (last_to === '-') { to_chars_expanded.push('-'); to_chars_expanded.push('-'); } else if (i == to_length - 1) { to_chars_expanded.push('-'); } else { in_range = true; } } else if (in_range) { 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") } for (c = start + 1; c < end; c++) { to_chars_expanded.push(String.fromCharCode(c)); } to_chars_expanded.push(ch); in_range = null; last_from = null; } else { to_chars_expanded.push(ch); } } to_chars = to_chars_expanded; to_length = to_chars.length; } var length_diff = from_length - to_length; if (length_diff > 0) { var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); for (i = 0; i < length_diff; i++) { to_chars.push(pad_char); } } for (i = 0; i < from_length; i++) { subs[from_chars[i]] = to_chars[i]; } } var new_str = '' var last_substitute = null for (i = 0, length = self.length; i < length; i++) { ch = self.charAt(i); var sub = subs[ch] if (inverse) { if (sub == null) { if (last_substitute == null) { new_str += global_sub; last_substitute = true; } } else { new_str += ch; last_substitute = null; } } else { if (sub != null) { if (last_substitute == null || last_substitute !== sub) { new_str += sub; last_substitute = sub; } } else { new_str += ch; last_substitute = null; } } } return new_str; ; }, TMP_String_tr_s_65.$$arity = 2); Opal.defn(self, '$upcase', TMP_String_upcase_66 = function $$upcase() { var self = this; return self.toUpperCase() }, TMP_String_upcase_66.$$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; if (excl == null) { excl = false; } if ($iter) TMP_String_upto_67.$$p = null; if ((block !== nil)) { } 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"); var a, b, s = self.toString(); if (s.length === 1 && stop.length === 1) { a = s.charCodeAt(0); b = stop.charCodeAt(0); while (a <= b) { if (excl && a === b) { break; } block(String.fromCharCode(a)); a += 1; } } else if (parseInt(s, 10).toString() === s && parseInt(stop, 10).toString() === stop) { a = parseInt(s, 10); b = parseInt(stop, 10); while (a <= b) { if (excl && a === b) { break; } block(a.toString()); a += 1; } } else { while (s.length <= stop.length && s <= stop) { if (excl && s === stop) { break; } block(s); s = (s).$succ(); } } return self; ; }, TMP_String_upto_67.$$arity = -2); function char_class_from_char_sets(sets) { function explode_sequences_in_character_set(set) { var result = '', i, len = set.length, curr_char, skip_next_dash, char_code_from, char_code_upto, char_code; for (i = 0; i < len; i++) { curr_char = set.charAt(i); if (curr_char === '-' && i > 0 && i < (len - 1) && !skip_next_dash) { 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") } for (char_code = char_code_from + 1; char_code < char_code_upto + 1; char_code++) { result += String.fromCharCode(char_code); } skip_next_dash = true; i++; } else { skip_next_dash = (curr_char === '\\'); result += curr_char; } } return result; } function intersection(setA, setB) { if (setA.length === 0) { return setB; } var result = '', i, len = setA.length, chr; for (i = 0; i < len; i++) { chr = setA.charAt(i); if (setB.indexOf(chr) !== -1) { result += chr; } } return result; } var i, len, set, neg, chr, tmp, pos_intersection = '', 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"); neg = (set.charAt(0) === '^' && set.length > 1); 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; i < len; i++) { chr = pos_intersection.charAt(i); if (neg_intersection.indexOf(chr) === -1) { tmp += chr; } } pos_intersection = tmp; neg_intersection = ''; } if (pos_intersection.length > 0) { 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; 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'; })($nesting[0], String, $nesting); return Opal.const_set($nesting[0], 'Symbol', Opal.const_get_relative($nesting, 'String')); }; /* Generated by Opal 0.11.0 */ 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 < rhs : lhs['$<'](rhs); } 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_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; 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']); 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; i < length; i++) { value = Opal.yield1(block, all[i]); } } } else { while (n > 1) { for (i = 0, length = all.length; i < length; i++) { value = Opal.yield1(block, all[i]); } n--; } } ; }, TMP_Enumerable_cycle_21.$$arity = -1); Opal.defn(self, '$detect', TMP_Enumerable_detect_23 = function $$detect(ifnone) {try { var TMP_24, self = this, $iter = TMP_Enumerable_detect_23.$$p, block = $iter || nil; if ($iter) TMP_Enumerable_detect_23.$$p = null; if ((block !== nil)) { } else { return self.$enum_for("detect", ifnone) }; $send(self, 'each', [], (TMP_24 = function($a_rest){var self = TMP_24.$$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))) { Opal.ret(value) } else { return nil };}, TMP_24.$$s = self, TMP_24.$$arity = -1, TMP_24)); if (ifnone !== undefined) { if (typeof(ifnone) === 'function') { return ifnone(); } else { return ifnone; } } ; return nil; } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } }, TMP_Enumerable_detect_23.$$arity = -1); Opal.defn(self, '$drop', TMP_Enumerable_drop_25 = function $$drop(number) { var self = this; 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 drop negative size")}; var result = [], current = 0; self.$each.$$p = function() { if (number <= current) { result.push(Opal.const_get_relative($nesting, 'Opal').$destructure(arguments)); } current++; }; self.$each() return result; ; }, TMP_Enumerable_drop_25.$$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; if ($iter) TMP_Enumerable_drop_while_26.$$p = null; if ((block !== nil)) { } else { return self.$enum_for("drop_while") }; var result = [], dropping = true; self.$each.$$p = function() { var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); if (dropping) { var value = Opal.yield1(block, param); if ($falsy(value)) { dropping = false; result.push(param); } } else { result.push(param); } }; self.$each(); return result; ; }, TMP_Enumerable_drop_while_26.$$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; if ($iter) TMP_Enumerable_each_cons_27.$$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"); if ($truthy(n <= 0)) { self.$raise(Opal.const_get_relative($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; enum_size = self.$enumerator_size(); if ($truthy(enum_size['$nil?']())) { return nil } else if ($truthy(($truthy($a = enum_size['$=='](0)) ? $a : $rb_lt(enum_size, n)))) { return 0 } else { return $rb_plus($rb_minus(enum_size, n), 1) };}, TMP_28.$$s = self, TMP_28.$$arity = 0, TMP_28)) }; var buffer = [], result = nil; self.$each.$$p = function() { var element = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments); buffer.push(element); if (buffer.length > n) { 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; } // our "last" group, if smaller than n then won't have been yielded 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) }; /* Generated by Opal 0.11.0 */ 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 < 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; 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']); self.$require("corelib/enumerable"); return (function($base, $super, $parent_nesting) { function $Enumerator(){}; var self = $Enumerator = $klass($base, $super, 'Enumerator', $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; def.size = def.args = def.object = def.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; 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; var obj = self.$allocate(); obj.object = object; obj.size = block; obj.method = method; obj.args = args; return obj; }, 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; if ($iter) TMP_Enumerator_initialize_2.$$p = null; if ($truthy(block)) { self.object = $send(Opal.const_get_relative($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 nil }; } 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); 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; 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 ($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); Opal.defn(self, '$size', TMP_Enumerator_size_4 = function $$size() { var self = this; if ($truthy(Opal.const_get_relative($nesting, 'Proc')['$==='](self.size))) { return $send(self.size, 'call', Opal.to_a(self.args)) } else { return self.size } }, TMP_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; 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 }; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["with_index", offset], (TMP_6 = function(){var self = TMP_6.$$s || this; return self.$size()}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6)) }; var result, index = offset; self.$each.$$p = function() { var param = Opal.const_get_relative($nesting, 'Opal').$destructure(arguments), value = block(param, index); index++; return value; } return self.$each(); ; }, TMP_Enumerator_with_index_5.$$arity = -1); Opal.alias(self, "with_object", "each_with_object"); Opal.defn(self, '$inspect', TMP_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))) + ")") }; return $rb_plus(result, ">"); }, 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); }; /* Generated by Opal 0.11.0 */ 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') ? lhs < rhs : lhs['$<'](rhs); } function $rb_divide(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, $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); }; /* Generated by Opal 0.11.0 */ 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 < 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, $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']); 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 < size; i++) { self.push(obj); } } else { for (i = 0, value; i < size; i++) { value = block(i); self[i] = value; } } return self; }, TMP_Array_initialize_2.$$arity = -1); Opal.defs(self, '$try_convert', TMP_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); Opal.defn(self, '$&', TMP_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() }; var result = [], hash = $hash2([], {}), i, length, item; for (i = 0, length = other.length; i < length; i++) { Opal.hash_put(hash, other[i], true); } for (i = 0, length = self.length; i < length; i++) { item = self[i]; if (Opal.hash_delete(hash, item) !== undefined) { result.push(item); } } return result; ; }, TMP_Array_$_4.$$arity = 1); Opal.defn(self, '$|', TMP_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() }; var hash = $hash2([], {}), i, length, item; for (i = 0, length = self.length; i < length; i++) { Opal.hash_put(hash, self[i], true); } for (i = 0, length = other.length; i < length; i++) { Opal.hash_put(hash, other[i], true); } return hash.$keys(); ; }, TMP_Array_$_5.$$arity = 1); Opal.defn(self, '$*', TMP_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"); if ($truthy(other < 0)) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative argument")}; var result = [], converted = self.$to_a(); for (var i = 0; i < other; i++) { result = result.concat(converted); } return toArraySubclass(result, self.$class()); ; }, TMP_Array_$_6.$$arity = 1); Opal.defn(self, '$+', TMP_Array_$_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); Opal.defn(self, '$-', TMP_Array_$_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() }; if ($truthy(self.length === 0)) { return []}; if ($truthy(other.length === 0)) { return self.slice()}; var result = [], hash = $hash2([], {}), i, length, item; for (i = 0, length = other.length; i < length; i++) { Opal.hash_put(hash, other[i], true); } for (i = 0, length = self.length; i < length; i++) { item = self[i]; if (Opal.hash_get(hash, item) === undefined) { result.push(item); } } return result; ; }, TMP_Array_$_8.$$arity = 1); Opal.defn(self, '$<<', TMP_Array_$lt$lt_9 = function(object) { var self = this; self.push(object);; return self; }, TMP_Array_$lt$lt_9.$$arity = 1); Opal.defn(self, '$<=>', 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 < count; i++) { var tmp = (self[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; i < length; i++) { a = array[i]; b = other[i]; if (a.$$is_array) { if (b.$$is_array && b.length !== a.length) { return false; } if (!recursed.hasOwnProperty((a).$object_id())) { if (!_eqeq(a, b)) { return false; } } } else { if (!(a)['$=='](b)) { return false; } } } return true; } return _eqeq(self, other); }, TMP_Array_$eq$eq_11.$$arity = 1); function $array_slice_range(self, index) { var size = self.length, exclude, from, to, result; exclude = index.excl; from = Opal.Opal.$coerce_to(index.begin, Opal.Integer, 'to_int'); to = Opal.Opal.$coerce_to(index.end, Opal.Integer, 'to_int'); if (from < 0) { from += size; if (from < 0) { return nil; } } if (from > size) { 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; i < from; i++) { self[i] = nil; } } if (to < 0) { self.splice.apply(self, [from, 0].concat(data)); } else { self.splice.apply(self, [from, to - from].concat(data)); } return value; ; } else { if ($truthy(extra === undefined)) { length = 1 } else { length = value; value = extra; 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 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"); 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)); } } if (length < 0) { self.$raise(Opal.const_get_relative($nesting, 'IndexError'), "" + "negative length (" + (length) + ")") } if (index > size) { for (i = size; i < index; i++) { self[i] = nil; } } if (extra === undefined) { self[index] = value; } else { self.splice.apply(self, [index, length].concat(data)); } return value; ; }; }, TMP_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; if ($iter) TMP_Array_any$q_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); Opal.defn(self, '$assoc', TMP_Array_assoc_15 = function $$assoc(object) { var self = this; for (var i = 0, length = self.length, item; i < length; i++) { if (item = self[i], item.length && (item[0])['$=='](object)) { return item; } } return nil; }, TMP_Array_assoc_15.$$arity = 1); Opal.defn(self, '$at', TMP_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"); if (index < 0) { index += self.length; } if (index < 0 || index >= 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 (min < max) { mid = min + Math.floor((max - min) / 2); val = self[mid]; ret = Opal.yield1(block, val); if (ret === true) { satisfied = mid; smaller = true; } else if (ret === false || ret === nil) { smaller = false; } else if (ret.$$is_number) { if (ret === 0) { return mid; } smaller = (ret < 0); } else { self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "" + "wrong argument type " + ((ret).$class()) + " (must be numeric, true, false or nil)") } if (smaller) { max = mid; } else { min = mid + 1; } } return satisfied; ; }, TMP_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; if ($iter) TMP_Array_bsearch_18.$$p = null; if ((block !== nil)) { } else { return self.$enum_for("bsearch") }; index = $send(self, 'bsearch_index', [], block.$to_proc()); if (index != null && index.$$is_number) { return self[index]; } else { return index; } ; }, TMP_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; 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; if (n['$=='](nil)) { return Opal.const_get_qualified(Opal.const_get_relative($nesting, 'Float'), 'INFINITY') } 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_20.$$s = self, TMP_20.$$arity = 0, TMP_20)) }; if ($truthy(($truthy($a = self['$empty?']()) ? $a : n['$=='](0)))) { return nil}; var i, length, value; if (n === nil) { while (true) { for (i = 0, length = self.length; i < length; i++) { value = Opal.yield1(block, self[i]); } } } else { n = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](n, Opal.const_get_relative($nesting, 'Integer'), "to_int"); if (n <= 0) { return self; } while (n > 0) { for (i = 0, length = self.length; i < length; i++) { value = Opal.yield1(block, self[i]); } n--; } } ; return self; }, TMP_Array_cycle_19.$$arity = -1); Opal.defn(self, '$clear', TMP_Array_clear_21 = function $$clear() { var self = this; self.splice(0, self.length); return self; }, TMP_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; if (object == null) { object = nil; } if ($iter) TMP_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 ($truthy(($truthy($a = object) ? $a : block))) { return $send(self, Opal.find_super_dispatcher(self, 'count', TMP_Array_count_22, false), $zuper, $iter) } else { return self.$size() } }, TMP_Array_count_22.$$arity = -1); Opal.defn(self, '$initialize_copy', TMP_Array_initialize_copy_23 = function $$initialize_copy(other) { var self = this; return self.$replace(other) }, TMP_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; if ($iter) TMP_Array_collect_24.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["collect"], (TMP_25 = function(){var self = TMP_25.$$s || this; return self.$size()}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25)) }; var result = []; for (var i = 0, length = self.length; i < length; i++) { var value = Opal.yield1(block, self[i]); result.push(value); } return result; ; }, TMP_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; if ($iter) TMP_Array_collect$B_26.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["collect!"], (TMP_27 = function(){var self = TMP_27.$$s || this; return self.$size()}, TMP_27.$$s = self, TMP_27.$$arity = 0, TMP_27)) }; for (var i = 0, length = self.length; i < length; i++) { var value = Opal.yield1(block, self[i]); self[i] = value; } ; return self; }, TMP_Array_collect$B_26.$$arity = 0); function binomial_coefficient(n, k) { if (n === k || k === 0) { return 1; } if (k > 0 && 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 < length; i++) { Opal.yield1($yield, [self[i]]) } } else if (num === self.length) { Opal.yield1($yield, self.slice()) } else if (num >= 0 && num < self.length) { stack = []; for (i = 0; i <= num + 1; i++) { stack.push(0); } chosen = []; lev = 0; done = false; stack[0] = -1; while (!done) { chosen[lev] = self[stack[lev+1]]; while (lev < num - 1) { lev++; next = stack[lev+1] = stack[lev] + 1; chosen[lev] = self[next]; } Opal.yield1($yield, chosen.slice()) lev++; do { done = (lev === 0); stack[lev]++; lev--; } while ( stack[lev+1] + num === self.length + lev + 1 ); } } ; return self; }, TMP_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; if ($iter) TMP_Array_repeated_combination_30.$$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', ["repeated_combination", num], (TMP_31 = function(){var self = TMP_31.$$s || this; return binomial_coefficient(self.length + num - 1, num)}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31)) }; function iterate(max, from, buffer, self) { if (buffer.length == max) { var copy = buffer.slice(); Opal.yield1($yield, copy) return; } for (var i = from; i < self.length; i++) { buffer.push(self[i]); iterate(max, i, buffer, self); buffer.pop(); } } if (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 < length; i++) { if ((item = self[i]) !== nil) { result.push(item); } } return result; }, TMP_Array_compact_32.$$arity = 0); Opal.defn(self, '$compact!', TMP_Array_compact$B_33 = function() { var self = this; var original = self.length; for (var i = 0, length = self.length; i < length; i++) { if (self[i] === nil) { self.splice(i, 1); length--; i--; } } return self.length === original ? nil : self; }, TMP_Array_compact$B_33.$$arity = 0); Opal.defn(self, '$concat', TMP_Array_concat_36 = function $$concat($a_rest) { var TMP_34, TMP_35, self = this, others; 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() }; 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; for (var i = 0, length = other.length; i < length; i++) { self.push(other[i]); } }, TMP_35.$$s = self, TMP_35.$$arity = 1, TMP_35)); return self; }, TMP_Array_concat_36.$$arity = -1); Opal.defn(self, '$delete', TMP_Array_delete_37 = function(object) { var self = this, $iter = TMP_Array_delete_37.$$p, $yield = $iter || nil; if ($iter) TMP_Array_delete_37.$$p = null; var original = self.length; for (var i = 0, length = original; i < length; i++) { if ((self[i])['$=='](object)) { self.splice(i, 1); length--; i--; } } if (self.length === original) { if (($yield !== nil)) { return Opal.yieldX($yield, []); } return nil; } return object; }, TMP_Array_delete_37.$$arity = 1); Opal.defn(self, '$delete_at', TMP_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"); if (index < 0) { index += self.length; } if (index < 0 || index >= 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 < length; i++) { value = block(self[i]); if (value !== false && value !== nil) { self.splice(i, 1); length--; i--; } } ; return self; }, TMP_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; 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]; } item = self['$[]'](idx); if (item === nil || idxs.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") }; return $send(item, 'dig', Opal.to_a(idxs)); }, TMP_Array_dig_41.$$arity = -2); Opal.defn(self, '$drop', TMP_Array_drop_42 = function $$drop(number) { var self = this; if (number < 0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')) } return self.slice(number); }, TMP_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; if ($iter) TMP_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.$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); Opal.defn(self, '$each', TMP_Array_each_44 = function $$each() { var TMP_45, self = this, $iter = TMP_Array_each_44.$$p, block = $iter || nil; if ($iter) TMP_Array_each_44.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["each"], (TMP_45 = function(){var self = TMP_45.$$s || this; return self.$size()}, TMP_45.$$s = self, TMP_45.$$arity = 0, TMP_45)) }; for (var i = 0, length = self.length; i < length; i++) { var value = Opal.yield1(block, self[i]); } ; return self; }, TMP_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; if ($iter) TMP_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; return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47)) }; for (var i = 0, length = self.length; i < length; i++) { var value = Opal.yield1(block, i); } ; return self; }, TMP_Array_each_index_46.$$arity = 0); Opal.defn(self, '$empty?', TMP_Array_empty$q_48 = function() { var self = this; return self.length === 0 }, TMP_Array_empty$q_48.$$arity = 0); Opal.defn(self, '$eql?', TMP_Array_eql$q_49 = function(other) { var self = this; var recursed = {}; function _eql(array, other) { var i, length, a, b; if (!other.$$is_array) { return false; } other = other.$to_a(); if (array.length !== other.length) { return false; } recursed[(array).$object_id()] = true; for (i = 0, length = array.length; i < length; i++) { a = array[i]; b = other[i]; if (a.$$is_array) { if (b.$$is_array && b.length !== a.length) { return false; } if (!recursed.hasOwnProperty((a).$object_id())) { if (!_eql(a, b)) { return false; } } } else { if (!(a)['$eql?'](b)) { return false; } } } return true; } return _eql(self, other); }, TMP_Array_eql$q_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; if ($iter) TMP_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"); if (index < 0) { index += self.length; } if (index >= 0 && index < self.length) { return self[index]; } if (block !== nil && defaults != null) { self.$warn("warning: block supersedes default value argument") } if (block !== nil) { return block(original); } if (defaults != null) { return defaults; } if (self.length === 0) { self.$raise(Opal.const_get_relative($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)); } }, 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; 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; 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)")}; $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; i < right; i++) { self[i] = nil; } }; if ($truthy(right > this.length)) { this.length = right}; if ($truthy(block)) { for (length = this.length; left < right; left++) { value = block(left); self[left] = value; } } else { for (length = this.length; left < right; left++) { self[left] = obj; } }; return self; }, TMP_Array_fill_51.$$arity = -1); Opal.defn(self, '$first', TMP_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"); if (count < 0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size"); } return self.slice(0, count); }, TMP_Array_first_52.$$arity = -1); Opal.defn(self, '$flatten', TMP_Array_flatten_53 = function $$flatten(level) { var self = this; function _flatten(array, level) { var result = [], i, length, item, ary; array = (array).$to_a(); for (i = 0, length = array.length; i < length; i++) { item = array[i]; if (!Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { result.push(item); continue; } ary = (item).$to_ary(); if (ary === nil) { result.push(item); continue; } if (!ary.$$is_array) { self.$raise(Opal.const_get_relative($nesting, 'TypeError')); } if (ary === self) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); } switch (level) { case undefined: result = result.concat(_flatten(ary)); break; case 0: result.push(ary); break; default: result.push.apply(result, _flatten(ary, level - 1)); } } return result; } if (level !== undefined) { level = Opal.const_get_relative($nesting, 'Opal').$coerce_to(level, Opal.const_get_relative($nesting, 'Integer'), "to_int"); } return toArraySubclass(_flatten(self, level), self.$class()); }, TMP_Array_flatten_53.$$arity = -1); Opal.defn(self, '$flatten!', TMP_Array_flatten$B_54 = function(level) { var self = this; var flattened = self.$flatten(level); if (self.length == flattened.length) { for (var i = 0, length = self.length; i < length; i++) { if (self[i] !== flattened[i]) { break; } } if (i == length) { return nil; } } self.$replace(flattened); ; return self; }, TMP_Array_flatten$B_54.$$arity = -1); Opal.defn(self, '$hash', TMP_Array_hash_55 = function $$hash() { var self = this; var top = (Opal.hash_ids === undefined), result = ['A'], hash_id = self.$object_id(), item, i, key; try { if (top) { Opal.hash_ids = Object.create(null); } // return early for recursive structures if (Opal.hash_ids[hash_id]) { return 'self'; } for (key in Opal.hash_ids) { item = Opal.hash_ids[key]; if (self['$eql?'](item)) { return 'self'; } } Opal.hash_ids[hash_id] = self; for (i = 0; i < self.length; i++) { item = self[i]; result.push(item.$hash()); } return result.join(','); } finally { if (top) { Opal.hash_ids = undefined; } } }, TMP_Array_hash_55.$$arity = 0); Opal.defn(self, '$include?', TMP_Array_include$q_56 = function(member) { var self = this; for (var i = 0, length = self.length; i < length; i++) { if ((self[i])['$=='](member)) { return true; } } return false; }, TMP_Array_include$q_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; if ($iter) TMP_Array_index_57.$$p = null; var i, length, value; if (object != null && block !== nil) { self.$warn("warning: given block not used") } if (object != null) { for (i = 0, length = self.length; i < length; i++) { if ((self[i])['$=='](object)) { return i; } } } else if (block !== nil) { for (i = 0, length = self.length; i < length; i++) { value = block(self[i]); if (value !== false && value !== nil) { return i; } } } else { return self.$enum_for("index"); } return nil; }, TMP_Array_index_57.$$arity = -1); Opal.defn(self, '$insert', TMP_Array_insert_58 = function $$insert(index, $a_rest) { var self = this, objects; 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"); 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"); } } if (index > self.length) { for (var i = self.length; i < index; i++) { self.push(nil); } } self.splice.apply(self, [index, 0].concat(objects)); } ; return self; }, TMP_Array_insert_58.$$arity = -2); Opal.defn(self, '$inspect', TMP_Array_inspect_59 = function $$inspect() { var self = this; var result = [], id = self.$__id__(); for (var i = 0, length = self.length; i < length; i++) { var item = self['$[]'](i); if ((item).$__id__() === id) { result.push('[...]'); } else { result.push((item).$inspect()); } } return '[' + result.join(', ') + ']'; }, TMP_Array_inspect_59.$$arity = 0); Opal.defn(self, '$join', TMP_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)) { sep = $gvars[","]}; var result = []; var i, length, item, tmp; for (i = 0, length = self.length; i < length; i++) { item = self[i]; if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_str")) { tmp = (item).$to_str(); if (tmp !== nil) { result.push((tmp).$to_s()); continue; } } if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { tmp = (item).$to_ary(); if (tmp === self) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); } if (tmp !== nil) { result.push((tmp).$join(sep)); continue; } } if (Opal.const_get_relative($nesting, 'Opal')['$respond_to?'](item, "to_s")) { tmp = (item).$to_s(); if (tmp !== nil) { result.push(tmp); continue; } } 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")); } 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()); } ; }, TMP_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; if ($iter) TMP_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; return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62)) }; for (var i = 0, length = self.length, value; i < length; i++) { value = block(self[i]); if (value === false || value === nil) { self.splice(i, 1); length--; i--; } } ; return self; }, TMP_Array_keep_if_61.$$arity = 0); Opal.defn(self, '$last', TMP_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"); if (count < 0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size"); } if (count > self.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!"); // Returns the product of from, from-1, ..., from - how_many + 1. 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.length < num) { // no permutations, yield nothing } else if (num === 0) { // exactly one permutation: the zero-length array Opal.yield1(block, []) } else if (num === 1) { // this is a special, easy case for (var i = 0; i < self.length; i++) { Opal.yield1(block, [self[i]]) } } 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)); permute = function(num, perm, index, used, blk) { self = this; for(var i = 0; i < self.length; i++){ if(used['$[]'](i)['$!']()) { perm[index] = i; if(index < num - 1) { used[i] = true; permute.call(self, num, perm, index + 1, used, blk); used[i] = false; } else { output = []; for (var j = 0; j < perm.length; j++) { output.push(self[perm[j]]); } Opal.yield1(blk, output); } } } } if ((block !== nil)) { // offensive (both definitions) copy. offensive = self.slice(); permute.call(offensive, num, perm, 0, used, block); } else { permute.call(self, num, perm, 0, used, block); } } ; return self; }, TMP_Array_permutation_65.$$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; if ($iter) TMP_Array_repeated_permutation_67.$$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', ["repeated_permutation", num], (TMP_68 = function(){var self = TMP_68.$$s || this; if ($truthy($rb_ge(num, 0))) { return self.$size()['$**'](num) } else { return 0 }}, TMP_68.$$s = self, TMP_68.$$arity = 0, TMP_68)) }; function iterate(max, buffer, self) { if (buffer.length == max) { var copy = buffer.slice(); Opal.yield1($yield, copy) return; } for (var i = 0; i < self.length; i++) { buffer.push(self[i]); iterate(max, buffer, self); buffer.pop(); } } iterate(num, [], self.slice()); ; return self; }, TMP_Array_repeated_permutation_67.$$arity = 1); Opal.defn(self, '$pop', TMP_Array_pop_69 = 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"); if ($truthy(count < 0)) { self.$raise(Opal.const_get_relative($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) }; }, 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; i < n; i++) { arrays[i] = Opal.const_get_relative($nesting, 'Opal').$coerce_to(args[i - 1], Opal.const_get_relative($nesting, 'Array'), "to_ary"); } for (i = 0; i < n; i++) { len = arrays[i].length; if (len === 0) { return result || self; } resultlen *= len; if (resultlen > 2147483647) { 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 < n; i++) { subarray.push(arrays[i][counters[i]]); } if (result) { result.push(subarray); } else { Opal.yield1(block, subarray) } m = n - 1; counters[m]++; while (counters[m] === lengths[m]) { counters[m] = 0; if (--m < 0) break outer_loop; counters[m]++; } } return result || self; }, TMP_Array_product_70.$$arity = -1); Opal.defn(self, '$push', TMP_Array_push_71 = function $$push($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]; } for (var i = 0, length = objects.length; i < length; i++) { self.push(objects[i]); } ; return self; }, TMP_Array_push_71.$$arity = -1); Opal.defn(self, '$rassoc', TMP_Array_rassoc_72 = function $$rassoc(object) { var self = this; for (var i = 0, length = self.length, item; i < length; i++) { item = self[i]; if (item.length && item[1] !== undefined) { if ((item[1])['$=='](object)) { return item; } } } return nil; }, TMP_Array_rassoc_72.$$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; if ($iter) TMP_Array_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.$size()}, TMP_74.$$s = self, TMP_74.$$arity = 0, TMP_74)) }; var result = []; for (var i = 0, length = self.length, value; i < length; i++) { value = block(self[i]); if (value === false || value === nil) { result.push(self[i]); } } return result; ; }, TMP_Array_reject_73.$$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; if ($iter) TMP_Array_reject$B_75.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["reject!"], (TMP_76 = function(){var self = TMP_76.$$s || this; return self.$size()}, TMP_76.$$s = self, TMP_76.$$arity = 0, TMP_76)) }; original = self.$length(); $send(self, 'delete_if', [], block.$to_proc()); if (self.$length()['$=='](original)) { return nil } else { return self }; }, TMP_Array_reject$B_75.$$arity = 0); Opal.defn(self, '$replace', TMP_Array_replace_77 = 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() }; self.splice(0, self.length); self.push.apply(self, other); ; return self; }, TMP_Array_replace_77.$$arity = 1); Opal.defn(self, '$reverse', TMP_Array_reverse_78 = function $$reverse() { var self = this; return self.slice(0).reverse() }, TMP_Array_reverse_78.$$arity = 0); Opal.defn(self, '$reverse!', TMP_Array_reverse$B_79 = function() { var self = this; return self.reverse() }, TMP_Array_reverse$B_79.$$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; if ($iter) TMP_Array_reverse_each_80.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["reverse_each"], (TMP_81 = function(){var self = TMP_81.$$s || this; return self.$size()}, TMP_81.$$s = self, TMP_81.$$arity = 0, TMP_81)) }; $send(self.$reverse(), 'each', [], block.$to_proc()); return self; }, TMP_Array_reverse_each_80.$$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; if ($iter) TMP_Array_rindex_82.$$p = null; var i, value; if (object != null && block !== nil) { self.$warn("warning: given block not used") } if (object != null) { for (i = self.length - 1; 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(random < size)) { } else { self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "random value must be less than Array size") }; return random; }, TMP_SampleRandom_rand_86.$$arity = 1), nil) && 'rand'; })($nesting[0], null, $nesting); Opal.defn(self, '$sample', TMP_Array_sample_87 = 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))}; if ($truthy(options === undefined)) { if ($truthy((o = Opal.const_get_relative($nesting, 'Opal')['$coerce_to?'](count, Opal.const_get_relative($nesting, 'Hash'), "to_hash")))) { options = o; count = nil; } else { options = nil; count = Opal.const_get_relative($nesting, 'Opal').$coerce_to(count, Opal.const_get_relative($nesting, 'Integer'), "to_int"); } } 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"); }; if ($truthy(($truthy($a = count) ? count < 0 : $a))) { self.$raise(Opal.const_get_relative($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') }; if ($truthy(count)) { } else { return self[rng.$rand(self.length)] }; var abandon, spin, result, i, j, k, targetIndex, oldValue; if (count > self.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 (i < count) { k = rng.$rand(self.length); j = 0; while (j < i) { while (k === result[j]) { spin++; if (spin > 100) { 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 < count) { result[i] = self[result[i]]; i++; } return result; } } result = self.slice(); for (var c = 0; c < count; c++) { targetIndex = rng.$rand(self.length); oldValue = result[c]; result[c] = result[targetIndex]; result[targetIndex] = oldValue; } return count === self.length ? result : (result)['$[]'](0, count); } ; }, TMP_Array_sample_87.$$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; if ($iter) TMP_Array_select_88.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["select"], (TMP_89 = function(){var self = TMP_89.$$s || this; return self.$size()}, TMP_89.$$s = self, TMP_89.$$arity = 0, TMP_89)) }; var result = []; for (var i = 0, length = self.length, item, value; i < length; i++) { item = self[i]; value = Opal.yield1(block, item); if (value !== false && value !== nil) { result.push(item); } } return result; ; }, TMP_Array_select_88.$$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; if ($iter) TMP_Array_select$B_90.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["select!"], (TMP_91 = function(){var self = TMP_91.$$s || this; return self.$size()}, TMP_91.$$s = self, TMP_91.$$arity = 0, TMP_91)) }; var original = self.length; $send(self, 'keep_if', [], block.$to_proc()); return self.length === original ? nil : self; ; }, TMP_Array_select$B_90.$$arity = 0); Opal.defn(self, '$shift', TMP_Array_shift_92 = 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"); if ($truthy(count < 0)) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "negative array size")}; if ($truthy(self.length === 0)) { return []}; return self.splice(0, count); }, TMP_Array_shift_92.$$arity = -1); Opal.alias(self, "size", "length"); Opal.defn(self, '$shuffle', TMP_Array_shuffle_93 = function $$shuffle(rng) { var self = this; return self.$dup().$to_a()['$shuffle!'](rng) }, TMP_Array_shuffle_93.$$arity = -1); Opal.defn(self, '$shuffle!', TMP_Array_shuffle$B_94 = 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"); if (rng !== nil) { rng = rng['$[]']("random"); if (rng !== nil && rng['$respond_to?']("rand")) { randgen = rng; } } } while (i) { if (randgen) { j = randgen.$rand(i).$to_int(); if (j < 0) { self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "" + "random number too small " + (j)) } if (j >= 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 < self.length && range_start >= 0 && range_end < self.length && 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 < self.length && 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 < length; i++) { self.push(result[i]); } return self; }, 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; if ($iter) TMP_Array_sort_by$B_98.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["sort_by!"], (TMP_99 = function(){var self = TMP_99.$$s || this; return self.$size()}, TMP_99.$$s = self, TMP_99.$$arity = 0, TMP_99)) }; return self.$replace($send(self, 'sort_by', [], block.$to_proc())); }, TMP_Array_sort_by$B_98.$$arity = 0); Opal.defn(self, '$take', TMP_Array_take_100 = function $$take(count) { var self = this; if (count < 0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError')); } return self.slice(0, count); }, TMP_Array_take_100.$$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; if ($iter) TMP_Array_take_while_101.$$p = null; var result = []; for (var i = 0, length = self.length, item, value; i < length; i++) { item = self[i]; value = block(item); if (value === false || value === nil) { return result; } result.push(item); } return result; }, TMP_Array_take_while_101.$$arity = 0); Opal.defn(self, '$to_a', TMP_Array_to_a_102 = function $$to_a() { var self = this; return self }, TMP_Array_to_a_102.$$arity = 0); Opal.alias(self, "to_ary", "to_a"); Opal.defn(self, '$to_h', TMP_Array_to_h_103 = 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"); if (!ary.$$is_array) { self.$raise(Opal.const_get_relative($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()) + ")") } key = ary[0]; val = ary[1]; Opal.hash_put(hash, key, val); } return hash; }, TMP_Array_to_h_103.$$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; 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; 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() }; 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; 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 result; }, TMP_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; if ($iter) TMP_Array_uniq_107.$$p = null; var hash = $hash2([], {}), i, length, item, key; if (block === nil) { for (i = 0, length = self.length; i < length; i++) { item = self[i]; if (Opal.hash_get(hash, item) === undefined) { Opal.hash_put(hash, item, item); } } } else { for (i = 0, length = self.length; i < length; i++) { item = self[i]; key = Opal.yield1(block, item); if (Opal.hash_get(hash, key) === undefined) { Opal.hash_put(hash, key, item); } } } return toArraySubclass((hash).$values(), self.$class()); }, 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; if ($iter) TMP_Array_uniq$B_108.$$p = null; var original_length = self.length, hash = $hash2([], {}), i, length, item, key; for (i = 0, length = original_length; i < length; i++) { item = self[i]; key = (block === nil ? item : Opal.yield1(block, item)); if (Opal.hash_get(hash, key) === undefined) { Opal.hash_put(hash, key, item); continue; } self.splice(i, 1); length--; i--; } return self.length === original_length ? nil : self; }, TMP_Array_uniq$B_108.$$arity = 0); Opal.defn(self, '$unshift', TMP_Array_unshift_109 = function $$unshift($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]; } for (var i = objects.length - 1; 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 < start) { 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 { i = Opal.const_get_relative($nesting, 'Opal').$coerce_to(elem, Opal.const_get_relative($nesting, 'Integer'), "to_int"); return out['$<<'](self.$at(i)); }}, TMP_110.$$s = self, TMP_110.$$arity = 1, TMP_110)); return out; }, TMP_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; 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; var result = [], size = self.length, part, o, i, j, jj; for (j = 0, jj = others.length; j < jj; j++) { o = others[j]; if (o.$$is_array) { continue; } if (o.$$is_enumerator) { if (o.$size() === Infinity) { others[j] = o.$take(size); } else { others[j] = o.$to_a(); } 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(); } for (i = 0; i < size; i++) { part = [self[i]]; for (j = 0, jj = others.length; j < jj; j++) { o = others[j][i]; if (o == null) { o = nil; } part[j + 1] = o; } result[i] = part; } if (block !== nil) { for (i = 0; i < size; i++) { block(result[i]); } return nil; } return result; }, TMP_Array_zip_113.$$arity = -1); Opal.defs(self, '$inherited', TMP_Array_inherited_114 = function $$inherited(klass) { var self = this; klass.$$proto.$to_a = function() { return this.slice(0, this.length); } }, TMP_Array_inherited_114.$$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; if ($iter) TMP_Array_instance_variables_115.$$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"); })($nesting[0], Array, $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/hash"] = function(Opal) { 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_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 < argc; i++) { if (!argv[i].$$is_array) continue; switch(argv[i].length) { case 1: hash.$store(argv[i][0], nil); break; case 2: 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)") } } return hash; } if (argc % 2 !== 0) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "odd number of arguments for Hash") } hash = self.$allocate(); for (i = 0; i < argc; i += 2) { hash.$store(argv[i], argv[i + 1]); } return hash; }, TMP_Hash_$$_1.$$arity = -1); Opal.defs(self, '$allocate', TMP_Hash_allocate_2 = function $$allocate() { var self = this; var hash = new self.$$alloc(); Opal.hash_init(hash); hash.$$none = nil; hash.$$proc = nil; return hash; }, TMP_Hash_allocate_2.$$arity = 0); Opal.defs(self, '$try_convert', TMP_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); Opal.defn(self, '$initialize', TMP_Hash_initialize_4 = function $$initialize(defaults) { var self = this, $iter = TMP_Hash_initialize_4.$$p, block = $iter || nil; if ($iter) TMP_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.$$none = (defaults === undefined ? nil : defaults); self.$$proc = block; ; return self; }, TMP_Hash_initialize_4.$$arity = -1); Opal.defn(self, '$==', TMP_Hash_$eq$eq_5 = function(other) { var self = this; if (self === other) { return true; } if (!other.$$is_hash) { return false; } if (self.$$keys.length !== other.$$keys.length) { return false; } for (var i = 0, keys = self.$$keys, length = keys.length, key, value, other_value; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; other_value = other.$$smap[key]; } else { value = key.value; other_value = Opal.hash_get(other, key.key); } if (other_value === undefined || !value['$eql?'](other_value)) { return false; } } return true; }, TMP_Hash_$eq$eq_5.$$arity = 1); Opal.defn(self, '$>=', 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 < 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; 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)); return result; }, TMP_Hash_$gt$eq_7.$$arity = 1); Opal.defn(self, '$>', 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 < length; i++) { key = keys[i]; if (key.$$is_string) { if ((key)['$=='](object)) { return [key, self.$$smap[key]]; } } else { if ((key.key)['$=='](object)) { return [key.key, key.value]; } } } return nil; }, TMP_Hash_assoc_13.$$arity = 1); Opal.defn(self, '$clear', TMP_Hash_clear_14 = function $$clear() { var self = this; Opal.hash_init(self); return self; }, TMP_Hash_clear_14.$$arity = 0); Opal.defn(self, '$clone', TMP_Hash_clone_15 = function $$clone() { var self = this; var hash = new self.$$class.$$alloc(); Opal.hash_init(hash); Opal.hash_clone(self, hash); return hash; }, TMP_Hash_clone_15.$$arity = 0); Opal.defn(self, '$compact', TMP_Hash_compact_16 = function $$compact() { var self = this; var hash = Opal.hash(); for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } if (value !== nil) { Opal.hash_put(hash, key, value); } } return hash; }, TMP_Hash_compact_16.$$arity = 0); Opal.defn(self, '$compact!', TMP_Hash_compact$B_17 = function() { var self = this; var changes_were_made = false; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } if (value === nil) { if (Opal.hash_delete(self, key) !== undefined) { changes_were_made = true; length--; i--; } } } return changes_were_made ? self : nil; }, TMP_Hash_compact$B_17.$$arity = 0); Opal.defn(self, '$compare_by_identity', TMP_Hash_compare_by_identity_18 = function $$compare_by_identity() { var self = this; var i, ii, key, keys = self.$$keys, identity_hash; if (self.$$by_identity) return self; if (self.$$keys.length === 0) { self.$$by_identity = true return self; } identity_hash = $hash2([], {}).$compare_by_identity(); for(i = 0, ii = keys.length; i < ii; i++) { key = keys[i]; if (!key.$$is_string) key = key.key; Opal.hash_put(identity_hash, key, Opal.hash_get(self, key)); } self.$$by_identity = true; self.$$map = identity_hash.$$map; self.$$smap = identity_hash.$$smap; return self; }, TMP_Hash_compare_by_identity_18.$$arity = 0); Opal.defn(self, '$compare_by_identity?', TMP_Hash_compare_by_identity$q_19 = function() { var self = this; return self.$$by_identity === true }, TMP_Hash_compare_by_identity$q_19.$$arity = 0); Opal.defn(self, '$default', TMP_Hash_default_20 = function(key) { var self = this; if (key !== undefined && self.$$proc !== nil && self.$$proc !== undefined) { return self.$$proc.$call(self, key); } if (self.$$none === undefined) { return nil; } return self.$$none; }, TMP_Hash_default_20.$$arity = -1); Opal.defn(self, '$default=', TMP_Hash_default$eq_21 = function(object) { var self = this; self.$$proc = nil; self.$$none = object; return object; }, TMP_Hash_default$eq_21.$$arity = 1); Opal.defn(self, '$default_proc', TMP_Hash_default_proc_22 = function $$default_proc() { var self = this; if (self.$$proc !== undefined) { return self.$$proc; } return nil; }, TMP_Hash_default_proc_22.$$arity = 0); Opal.defn(self, '$default_proc=', TMP_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"); if ((proc)['$lambda?']() && (proc).$arity().$abs() !== 2) { self.$raise(Opal.const_get_relative($nesting, 'TypeError'), "default_proc takes two arguments"); } } self.$$none = nil; self.$$proc = proc; return default_proc; }, TMP_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; if ($iter) TMP_Hash_delete_24.$$p = null; var value = Opal.hash_delete(self, key); if (value !== undefined) { return value; } if (block !== nil) { return block.$call(key); } return nil; }, 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; if ($iter) TMP_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; return self.$size()}, TMP_26.$$s = self, TMP_26.$$arity = 0, TMP_26)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj !== false && obj !== nil) { if (Opal.hash_delete(self, key) !== undefined) { length--; i--; } } } return self; ; }, TMP_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; 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]; } item = self['$[]'](key); 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") }; return $send(item, 'dig', Opal.to_a(keys)); }, TMP_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; if ($iter) TMP_Hash_each_28.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["each"], (TMP_29 = function(){var self = TMP_29.$$s || this; return self.$size()}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29)) }; 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 { value = key.value; key = key.key; } Opal.yield1(block, [key, value]); } return self; ; }, TMP_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; if ($iter) TMP_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; return self.$size()}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { key = keys[i]; block(key.$$is_string ? key : key.key); } return self; ; }, TMP_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; if ($iter) TMP_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; return self.$size()}, TMP_33.$$s = self, TMP_33.$$arity = 0, TMP_33)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { key = keys[i]; block(key.$$is_string ? self.$$smap[key] : key.value); } return self; ; }, TMP_Hash_each_value_32.$$arity = 0); Opal.defn(self, '$empty?', TMP_Hash_empty$q_34 = function() { var self = this; return self.$$keys.length === 0 }, TMP_Hash_empty$q_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; if ($iter) TMP_Hash_fetch_35.$$p = null; var value = Opal.hash_get(self, key); if (value !== undefined) { return value; } if (block !== nil) { return block(key); } if (defaults !== undefined) { return defaults; } ; return self.$raise(Opal.const_get_relative($nesting, 'KeyError'), "" + "key not found: " + (key.$inspect())); }, TMP_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; 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); Opal.defn(self, '$flatten', TMP_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"); var result = []; 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 { value = key.value; key = key.key; } result.push(key); if (value.$$is_array) { if (level === 1) { result.push(value); continue; } result = result.concat((value).$flatten(level - 2)); continue; } result.push(value); } return result; ; }, TMP_Hash_flatten_38.$$arity = -1); Opal.defn(self, '$has_key?', TMP_Hash_has_key$q_39 = function(key) { var self = this; return Opal.hash_get(self, key) !== undefined }, TMP_Hash_has_key$q_39.$$arity = 1); Opal.defn(self, '$has_value?', TMP_Hash_has_value$q_40 = function(value) { var self = this; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { key = keys[i]; if (((key.$$is_string ? self.$$smap[key] : key.value))['$=='](value)) { return true; } } return false; }, TMP_Hash_has_value$q_40.$$arity = 1); Opal.defn(self, '$hash', TMP_Hash_hash_41 = function $$hash() { var self = this; var top = (Opal.hash_ids === undefined), hash_id = self.$object_id(), result = ['Hash'], key, item; try { if (top) { Opal.hash_ids = Object.create(null); } if (Opal[hash_id]) { return 'self'; } for (key in Opal.hash_ids) { item = Opal.hash_ids[key]; if (self['$eql?'](item)) { return 'self'; } } Opal.hash_ids[hash_id] = self; for (var i = 0, keys = self.$$keys, length = keys.length; i < length; i++) { key = keys[i]; if (key.$$is_string) { result.push([key, self.$$smap[key].$hash()]); } else { result.push([key.key_hash, key.value.$hash()]); } } return result.sort().join(); } finally { if (top) { Opal.hash_ids = undefined; } } }, TMP_Hash_hash_41.$$arity = 0); Opal.alias(self, "include?", "has_key?"); Opal.defn(self, '$index', TMP_Hash_index_42 = function $$index(object) { var self = this; 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 { value = key.value; key = key.key; } if ((value)['$=='](object)) { return key; } } return nil; }, TMP_Hash_index_42.$$arity = 1); Opal.defn(self, '$indexes', TMP_Hash_indexes_43 = function $$indexes($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 = []; for (var i = 0, length = args.length, key, value; i < length; i++) { key = args[i]; value = Opal.hash_get(self, key); if (value === undefined) { result.push(self.$default()); continue; } result.push(value); } return result; }, TMP_Hash_indexes_43.$$arity = -1); Opal.alias(self, "indices", "indexes"); var inspect_ids;; Opal.defn(self, '$inspect', TMP_Hash_inspect_44 = function $$inspect() { var self = this; var top = (inspect_ids === undefined), hash_id = self.$object_id(), result = []; try { if (top) { inspect_ids = {}; } if (inspect_ids.hasOwnProperty(hash_id)) { return '{...}'; } inspect_ids[hash_id] = true; 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 { value = key.value; key = key.key; } result.push(key.$inspect() + '=>' + 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; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } Opal.hash_put(hash, value, key); } return hash; }, TMP_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; if ($iter) TMP_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; return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47)) }; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj === false || obj === nil) { if (Opal.hash_delete(self, key) !== undefined) { length--; i--; } } } return self; ; }, TMP_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() { var self = this; var result = []; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { key = keys[i]; if (key.$$is_string) { result.push(key); } else { result.push(key.key); } } return result; }, TMP_Hash_keys_48.$$arity = 0); Opal.defn(self, '$length', TMP_Hash_length_49 = function $$length() { var self = this; return self.$$keys.length }, TMP_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; if ($iter) TMP_Hash_merge_50.$$p = null; return $send(self.$dup(), 'merge!', [other], block.$to_proc()) }, TMP_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; if ($iter) TMP_Hash_merge$B_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"); } var i, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; if (block === nil) { for (i = 0; i < length; i++) { key = other_keys[i]; if (key.$$is_string) { other_value = other.$$smap[key]; } else { other_value = key.value; key = key.key; } Opal.hash_put(self, key, other_value); } return self; } for (i = 0; i < length; i++) { key = other_keys[i]; if (key.$$is_string) { other_value = other.$$smap[key]; } else { other_value = key.value; key = key.key; } value = Opal.hash_get(self, key); if (value === undefined) { Opal.hash_put(self, key, other_value); continue; } Opal.hash_put(self, key, block(key, value, other_value)); } return self; }, TMP_Hash_merge$B_51.$$arity = 1); Opal.defn(self, '$rassoc', TMP_Hash_rassoc_52 = function $$rassoc(object) { var self = this; 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 { value = key.value; key = key.key; } if ((value)['$=='](object)) { return [key, value]; } } return nil; }, TMP_Hash_rassoc_52.$$arity = 1); Opal.defn(self, '$rehash', TMP_Hash_rehash_53 = function $$rehash() { var self = this; Opal.hash_rehash(self); return self; }, TMP_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; if ($iter) TMP_Hash_reject_54.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["reject"], (TMP_55 = function(){var self = TMP_55.$$s || this; return self.$size()}, TMP_55.$$s = self, TMP_55.$$arity = 0, TMP_55)) }; var hash = Opal.hash(); for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj === false || obj === nil) { Opal.hash_put(hash, key, value); } } return hash; ; }, TMP_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; if ($iter) TMP_Hash_reject$B_56.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["reject!"], (TMP_57 = function(){var self = TMP_57.$$s || this; return self.$size()}, TMP_57.$$s = self, TMP_57.$$arity = 0, TMP_57)) }; var changes_were_made = false; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj !== false && obj !== nil) { if (Opal.hash_delete(self, key) !== undefined) { changes_were_made = true; length--; i--; } } } return changes_were_made ? self : nil; ; }, TMP_Hash_reject$B_56.$$arity = 0); Opal.defn(self, '$replace', TMP_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"); Opal.hash_init(self); for (var i = 0, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; i < length; i++) { key = other_keys[i]; if (key.$$is_string) { other_value = other.$$smap[key]; } else { other_value = key.value; key = key.key; } Opal.hash_put(self, key, other_value); } ; if ($truthy(other.$default_proc())) { $writer = [other.$default_proc()]; $send(self, 'default_proc=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; } 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); Opal.defn(self, '$select', TMP_Hash_select_59 = function $$select() { var TMP_60, self = this, $iter = TMP_Hash_select_59.$$p, block = $iter || nil; if ($iter) TMP_Hash_select_59.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["select"], (TMP_60 = function(){var self = TMP_60.$$s || this; return self.$size()}, TMP_60.$$s = self, TMP_60.$$arity = 0, TMP_60)) }; var hash = Opal.hash(); for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj !== false && obj !== nil) { Opal.hash_put(hash, key, value); } } return hash; ; }, TMP_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; if ($iter) TMP_Hash_select$B_61.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["select!"], (TMP_62 = function(){var self = TMP_62.$$s || this; return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62)) }; var result = nil; for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } obj = block(key, value); if (obj === false || obj === nil) { if (Opal.hash_delete(self, key) !== undefined) { length--; i--; } result = self; } } return result; ; }, TMP_Hash_select$B_61.$$arity = 0); Opal.defn(self, '$shift', TMP_Hash_shift_63 = function $$shift() { var self = this; var keys = self.$$keys, key; if (keys.length > 0) { 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; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = self.$$smap[key]; } else { value = key.value; key = key.key; } result.push([key, value]); } return result; }, TMP_Hash_to_a_64.$$arity = 0); Opal.defn(self, '$to_h', TMP_Hash_to_h_65 = function $$to_h() { var self = this; if (self.$$class === Opal.Hash) { return self; } var hash = new Opal.Hash.$$alloc(); Opal.hash_init(hash); Opal.hash_clone(self, hash); return hash; }, TMP_Hash_to_h_65.$$arity = 0); Opal.defn(self, '$to_hash', TMP_Hash_to_hash_66 = function $$to_hash() { var self = this; return self }, TMP_Hash_to_hash_66.$$arity = 0); Opal.defn(self, '$to_proc', TMP_Hash_to_proc_68 = function $$to_proc() { var TMP_67, self = this; return $send(self, 'proc', [], (TMP_67 = function(key){var self = TMP_67.$$s || this; if (key == null) { self.$raise(Opal.const_get_relative($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); 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; if ($iter) TMP_Hash_transform_values_69.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["transform_values"], (TMP_70 = function(){var self = TMP_70.$$s || this; return self.$size()}, TMP_70.$$s = self, TMP_70.$$arity = 0, TMP_70)) }; 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 { value = key.value; key = key.key; } value = Opal.yield1(block, value); Opal.hash_put(result, key, value); } return result; ; }, TMP_Hash_transform_values_69.$$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; if ($iter) TMP_Hash_transform_values$B_71.$$p = null; if ($truthy(block)) { } else { return $send(self, 'enum_for', ["transform_values!"], (TMP_72 = function(){var self = TMP_72.$$s || this; return self.$size()}, TMP_72.$$s = self, TMP_72.$$arity = 0, TMP_72)) }; 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 { value = key.value; key = key.key; } value = Opal.yield1(block, value); Opal.hash_put(self, key, value); } return self; ; }, TMP_Hash_transform_values$B_71.$$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() { var self = this; var result = []; for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { key = keys[i]; if (key.$$is_string) { result.push(self.$$smap[key]); } else { result.push(key.value); } } return result; }, TMP_Hash_values_73.$$arity = 0), nil) && 'values'; })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/number"] = 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 < rhs : lhs['$<'](rhs); } 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_divide(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_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); } 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 < other; } else { return self.$__coerced__("<", other); } }, TMP_Number_$lt_12.$$arity = 1); Opal.defn(self, '$<=', TMP_Number_$lt$eq_13 = function(other) { var self = this; if (other.$$is_number) { return self <= other; } else { return self.$__coerced__("<=", other); } }, TMP_Number_$lt$eq_13.$$arity = 1); Opal.defn(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) { return -1; } else { return 0; } } else { return self.$__coerced__("<=>", 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 : 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; // 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) } }, 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; // 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'))))) { 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; // 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'))))) { 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; // 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) } }, 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; // 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 { 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 (0.415241 * ndigits - 0.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 < limit)) { return 0; } else if (step === Infinity || step === -Infinity) { 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'); if (err === Infinity || err === -Infinity) { return 0; } else { if (err > 0.5) { err = 0.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 && self < limit)) { return 0; } else { var ceil = Math.ceil, abs = Math.abs, lhs = abs(self - limit) + 1, rhs = abs(step); return ceil(lhs / rhs); } } ; if ((block !== nil)) { } else { positional_args = []; keyword_args = $hash2([], {}); if (limit !== undefined) { positional_args.push(limit); } if (step !== undefined) { positional_args.push(step); } if (to !== undefined) { Opal.hash_put(keyword_args, "to", to); } if (by !== undefined) { Opal.hash_put(keyword_args, "by", by); } if (!keyword_args['$empty?']()) { 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 stepSize()}, TMP_54.$$s = self, TMP_54.$$arity = 0, TMP_54)); }; validateParameters(); if (step === 0) { while (true) { block(self); } } if (self % 1 !== 0 || limit % 1 !== 0 || step % 1 !== 0) { var n = stepFloatSize(); if (n > 0) { if (step === Infinity || step === -Infinity) { block(self); } else { var i = 0, d; if (step > 0) { while (i < n) { d = i * step + self; if (limit < d) { d = limit; } block(d); i += 1; } } else { while (i < n) { d = i * step + self; if (limit > d) { 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; i < self; i++) { block(i); } ; return self; }, TMP_Number_times_55.$$arity = 0); Opal.defn(self, '$to_f', TMP_Number_to_f_57 = function $$to_f() { var self = this; return self }, TMP_Number_to_f_57.$$arity = 0); Opal.defn(self, '$to_i', TMP_Number_to_i_58 = function $$to_i() { var self = this; return parseInt(self, 10) }, TMP_Number_to_i_58.$$arity = 0); Opal.alias(self, "to_int", "to_i"); Opal.defn(self, '$to_r', TMP_Number_to_r_59 = 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 { $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(); } }, TMP_Number_to_r_59.$$arity = 0); Opal.defn(self, '$to_s', TMP_Number_to_s_60 = function $$to_s(base) { var $a, self = this; if (base == null) { base = 10; } 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"); 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; if ($iter) TMP_Number_divmod_61.$$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") } 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) } }, TMP_Number_divmod_61.$$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; if ($iter) TMP_Number_upto_62.$$p = null; if ((block !== nil)) { } else { return $send(self, 'enum_for', ["upto", stop], (TMP_63 = function(){var self = TMP_63.$$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_lt(stop, self))) { return 0 } else { return $rb_plus($rb_minus(stop, self), 1) };}, TMP_63.$$s = self, TMP_63.$$arity = 0, TMP_63)) }; 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_upto_62.$$arity = 1); Opal.defn(self, '$zero?', TMP_Number_zero$q_64 = function() { var self = this; return self == 0 }, TMP_Number_zero$q_64.$$arity = 0); Opal.defn(self, '$size', TMP_Number_size_65 = function $$size() { var self = this; return 4 }, TMP_Number_size_65.$$arity = 0); Opal.defn(self, '$nan?', TMP_Number_nan$q_66 = function() { var self = this; return isNaN(self) }, TMP_Number_nan$q_66.$$arity = 0); Opal.defn(self, '$finite?', TMP_Number_finite$q_67 = function() { var self = this; return self != Infinity && self != -Infinity && !isNaN(self) }, TMP_Number_finite$q_67.$$arity = 0); Opal.defn(self, '$infinite?', TMP_Number_infinite$q_68 = function() { var self = this; if (self == Infinity) { return +1; } else if (self == -Infinity) { return -1; } else { return nil; } }, TMP_Number_infinite$q_68.$$arity = 0); Opal.defn(self, '$positive?', TMP_Number_positive$q_69 = 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() { 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.2204460492503130808472633361816E-16); })($nesting[0], Opal.const_get_relative($nesting, 'Numeric'), $nesting); }; /* Generated by Opal 0.11.0 */ 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') ? lhs < 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); } 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 < limit; i++) { block(i); } return self; } if (self.begin.$$is_string && self.end.$$is_string) { $send(self.begin, 'upto', [self.end, self.excl], block.$to_proc()) return self; } ; 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())) }; while ($truthy($rb_lt(current['$<=>'](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; // 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); 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; // 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) } 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; // 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) } 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 { // 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'), size; if (err > 0.5) { err = 0.5; } if (self.excl) { size = floor((end - begin) / n - err); if (size * n + begin < end) { size++; } } else { size = floor((end - begin) / n + err) + 1 } return size; } } ; if (($yield !== nil)) { } else { return $send(self, 'enum_for', ["step", n], (TMP_14 = function(){var self = TMP_14.$$s || this; coerceStepSize(); return enumeratorSize(); }, TMP_14.$$s = self, TMP_14.$$arity = 0, TMP_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; if (self.begin == null) self.begin = nil; if (self.excl == null) self.excl = nil; if (self.end == null) self.end = nil; current = $rb_plus(self.begin, $rb_times(i, n)); if ($truthy(self.excl)) { if ($truthy($rb_ge(current, self.end))) { Opal.brk(nil, $brk)} } else if ($truthy($rb_gt(current, self.end))) { 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)) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); } 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") } ; $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)) { return Opal.yield1($yield, value); } else { return nil }}, TMP_16.$$s = self, TMP_16.$$arity = 2, TMP_16)); }; return self; }, TMP_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; if ($iter) TMP_Range_bsearch_17.$$p = null; if ((block !== nil)) { } 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())) }; return $send(self.$to_a(), 'bsearch', [], block.$to_proc()); }, TMP_Range_bsearch_17.$$arity = 0); Opal.defn(self, '$to_s', TMP_Range_to_s_18 = function $$to_s() { var self = this; return "" + (self.begin) + ((function() {if ($truthy(self.excl)) { return "..." } else { return ".." }; return nil; })()) + (self.end) }, TMP_Range_to_s_18.$$arity = 0); Opal.defn(self, '$inspect', TMP_Range_inspect_19 = function $$inspect() { var self = this; return "" + (self.begin.$inspect()) + ((function() {if ($truthy(self.excl)) { return "..." } else { return ".." }; return nil; })()) + (self.end.$inspect()) }, TMP_Range_inspect_19.$$arity = 0); Opal.defn(self, '$marshal_load', TMP_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() { var self = this; return [self.begin, self.end, self.excl].$hash() }, TMP_Range_hash_21.$$arity = 0), nil) && 'hash'; })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$raise', '$coerce_to!']); return (function($base, $super, $parent_nesting) { function $Proc(){}; var self = $Proc = $klass($base, $super, 'Proc', $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; 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; if ($iter) TMP_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") }; return block; }, TMP_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; 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 (block !== nil) { self.$$p = block; } var result, $brk = self.$$brk; if ($brk) { try { if (self.$$is_lambda) { result = self.apply(null, args); } else { result = Opal.yieldX(self, args); } } catch (err) { if (err === $brk) { return $brk.$v } else { throw err } } } else { if (self.$$is_lambda) { result = self.apply(null, args); } else { result = Opal.yieldX(self, args); } } return result; }, TMP_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() { var self = this; return self }, TMP_Proc_to_proc_3.$$arity = 0); Opal.defn(self, '$lambda?', TMP_Proc_lambda$q_4 = function() { var self = this; return !!self.$$is_lambda }, TMP_Proc_lambda$q_4.$$arity = 0); Opal.defn(self, '$arity', TMP_Proc_arity_5 = function $$arity() { var self = this; if (self.$$is_curried) { return -1; } else { return self.$$arity; } }, TMP_Proc_arity_5.$$arity = 0); Opal.defn(self, '$source_location', TMP_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); Opal.defn(self, '$binding', TMP_Proc_binding_7 = function $$binding() { var self = this; if (self.$$is_curried) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "Can't create Binding") }; return nil; }, TMP_Proc_binding_7.$$arity = 0); Opal.defn(self, '$parameters', TMP_Proc_parameters_8 = function $$parameters() { var self = this; if (self.$$is_curried) { return [["rest"]]; } else if (self.$$parameters) { if (self.$$is_lambda) { return self.$$parameters; } else { var result = [], i, length; for (i = 0, length = self.$$parameters.length; i < length; i++) { var parameter = self.$$parameters[i]; if (parameter[0] === 'req') { // required arguments always have name parameter = ['opt', parameter[1]]; } result.push(parameter); } return result; } } else { return []; } }, TMP_Proc_parameters_8.$$arity = 0); Opal.defn(self, '$curry', TMP_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"); if (self.$$is_lambda && arity !== self.length) { self.$raise(Opal.const_get_relative($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arity) + " for " + (self.length) + ")") } } function curried () { var args = $slice.call(arguments), length = args.length, 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) + ")") } 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) }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.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) }; /* Generated by Opal 0.11.0 */ 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"); }; /* Generated by Opal 0.11.0 */ 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; // 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; 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; // 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); }; /* Generated by Opal 0.11.0 */ 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 < length; i++) { var code = string.charCodeAt(i); if (code <= 0x7f) { Opal.yield1(block, code); } else { var encoded = encodeURIComponent(string.charAt(i)).substr(1).split('%'); for (var j = 0, encoded_length = encoded.length; j < encoded_length; j++) { Opal.yield1(block, parseInt(encoded[j], 16)); } } } }, TMP_each_byte_13.$$arity = 1); return (Opal.def(self, '$bytesize', TMP_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; 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; if ($iter) TMP_each_byte_16.$$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_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 < length; i++) { var code = string.charCodeAt(i); 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) { 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 < length; i++) { var code = string.charCodeAt(i); 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) { 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 < 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) { 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); }; /* Generated by Opal 0.11.0 */ 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 0.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 < 0.125) { r *= 8; ex--; } while (r > 1.0) { r *= 0.125; ex++; } r = (-0.46946116 * r + 1.072302) * r + 0.3812513; while (ex < 0) { r *= 0.5; ex++; } while (ex > 0) { r *= 2; ex--; } r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); r = (2.0 / 3.0) * r + (1.0 / 3.0) * 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 = 0.254829592, A2 = -0.284496736, A3 = 1.421413741, A4 = -1.453152027, A5 = 1.061405429, P = 0.3275911; var sign = 1; if (x < 0) { sign = -1; } x = Math.abs(x); var t = 1.0 / (1.0 + P * x); 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) { 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.0 / (0.5 * z + 1.0); var A1 = t * 0.17087277 + -0.82215223, A2 = t * A1 + 1.48851587, A3 = t * A2 + -1.13520398, A4 = t * A3 + 0.27886807, A5 = t * A4 + -0.18628806, A6 = t * A5 + 0.09678418, A7 = t * A6 + 0.37409196, A8 = t * A7 + 1.00002368, A9 = t * A8, A10 = -z * z - 1.26551223 + A9; var a = t * Math.exp(A10); if (x < 0.0) { return 2.0 - 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 = [ 0.99999999999999709182, 57.156235665862923517, -59.597960355475491248, 14.136097974741747174, -0.49191381609762019978, 0.33994649984811888699e-4, 0.46523628927048575665e-4, -0.98374475304879564677e-4, 0.15808870322491248884e-3, -0.21026444172410488319e-3, 0.21743961811521264320e-3, -0.16431810653676389022e-3, 0.84418223983852743293e-4, -0.26190838401581408670e-4, 0.36899182659531622704e-5 ]; 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 < 0.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.0) { 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; i < P.length; ++i) { x += P[i] / (n + i); } t = n + G + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x; ; }, TMP_Math_gamma_18.$$arity = 1); if ($truthy((typeof(Math.hypot) !== "undefined"))) { } else { Math.hypot = function(x, y) { return Math.sqrt(x * x + y * y) } }; Opal.defn(self, '$hypot', TMP_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); Opal.defn(self, '$ldexp', TMP_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); if (isNaN(exponent)) { self.$raise(Opal.const_get_relative($nesting, 'RangeError'), "float NaN out of range of integer"); } return mantissa * Math.pow(2, exponent); ; }, TMP_Math_ldexp_20.$$arity = 2); Opal.defn(self, '$lgamma', TMP_Math_lgamma_21 = function $$lgamma(n) { var self = this; if (n == -1) { 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]; } }, TMP_Math_lgamma_21.$$arity = 1); Opal.defn(self, '$log', TMP_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(base == null)) { return Opal.const_get_relative($nesting, 'Math').$checked("log", Opal.const_get_relative($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))); }; }, TMP_Math_log_22.$$arity = -2); if ($truthy((typeof(Math.log10) !== "undefined"))) { } else { Math.log10 = function(x) { return Math.log(x) / Math.LN10; } }; Opal.defn(self, '$log10', TMP_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((typeof(Math.log2) !== "undefined"))) { } else { Math.log2 = function(x) { return Math.log(x) / Math.LN2; } }; Opal.defn(self, '$log2', TMP_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); Opal.defn(self, '$sin', TMP_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); if ($truthy((typeof(Math.sinh) !== "undefined"))) { } else { Math.sinh = function(x) { return (Math.exp(x) - Math.exp(-x)) / 2; } }; Opal.defn(self, '$sinh', TMP_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); Opal.defn(self, '$sqrt', TMP_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); Opal.defn(self, '$tan', TMP_Math_tan_28 = function $$tan(x) { var self = this; x = Opal.const_get_relative($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); if ($truthy((typeof(Math.tanh) !== "undefined"))) { } else { Math.tanh = function(x) { if (x == Infinity) { return 1; } else if (x == -Infinity) { return -1; } else { return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x)); } } }; Opal.defn(self, '$tanh', TMP_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); })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/complex"] = function(Opal) { function $rb_times(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_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_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; 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); }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/rational"] = function(Opal) { function $rb_lt(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_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_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, $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.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); }; /* Generated by Opal 0.11.0 */ 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 < rhs : lhs['$<'](rhs); } function $rb_plus(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_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); } var self = Opal.top, $nesting = [], nil = Opal.nil, $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 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 * 1000); } 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 * 1000 + (frac / 1000)); }, 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 * 1000); 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 * 1000); 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 * 1000)); 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 * 1000)); 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()) / 1000}; 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 * 1000)); 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() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); }, TMP_Time_isdst_13.$$arity = 0); Opal.alias(self, "dst?", "isdst"); Opal.defn(self, '$dup', TMP_Time_dup_14 = function $$dup() { var self = this, copy = nil; copy = new Date(self.getTime()); copy.$copy_instance_variables(self); copy.$initialize_dup(self); return copy; }, TMP_Time_dup_14.$$arity = 0); Opal.defn(self, '$eql?', TMP_Time_eql$q_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); 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() + 1000); 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() * 1000 }, 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') < flags.indexOf('_')) { zero = false; } else { blank = false; } } switch (conv) { case 'Y': result += self.$year(); break; case 'C': zero = !blank; result += Math.round(self.$year() / 100); break; case 'y': zero = !blank; result += (self.$year() % 100); break; case 'm': zero = !blank; result += self.$mon(); break; case 'B': result += long_months[self.$mon() - 1]; break; case 'b': case 'h': blank = !zero; result += short_months[self.$mon() - 1]; break; case 'd': zero = !blank result += self.$day(); break; case 'e': blank = !zero result += self.$day(); break; case 'j': result += self.$yday(); break; case 'H': zero = !blank; result += self.$hour(); break; case 'k': blank = !zero; result += self.$hour(); break; case 'I': zero = !blank; result += (self.$hour() % 12 || 12); break; case 'l': blank = !zero; result += (self.$hour() % 12 || 12); break; case 'P': result += (self.$hour() >= 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() / 1000 }, 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() / 1000, 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.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() } 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); }; /* Generated by Opal 0.11.0 */ 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_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, $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 < len; i++) { if (!args[i].$$is_number) { self.$raise(Opal.const_get_relative($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; 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 }; 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") }; return $send(item, 'dig', Opal.to_a(keys)); }, TMP_Struct_dig_35.$$arity = -2), nil) && 'dig'; })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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; def.tty = def.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() { var self = this; return self.tty }, TMP_IO_tty$q_1.$$arity = 0); Opal.defn(self, '$closed?', TMP_IO_closed$q_2 = function() { var self = this; return self.closed }, TMP_IO_closed$q_2.$$arity = 0); self.$attr_accessor("write_proc"); Opal.defn(self, '$write', TMP_IO_write_3 = function $$write(string) { var self = this; self.write_proc(string); return string.$size(); }, TMP_IO_write_3.$$arity = 1); self.$attr_accessor("sync", "tty"); Opal.defn(self, '$flush', TMP_IO_flush_4 = function $$flush() { var self = this; return nil }, TMP_IO_flush_4.$$arity = 0); (function($base, $parent_nesting) { var $Writable, self = $Writable = $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; Opal.defn(self, '$<<', TMP_Writable_$lt$lt_5 = function(string) { var self = this; self.$write(string); return self; }, TMP_Writable_$lt$lt_5.$$arity = 1); Opal.defn(self, '$print', TMP_Writable_print_7 = function $$print($a_rest) { var TMP_6, self = this, args; 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[","])); return nil; }, TMP_Writable_print_7.$$arity = -1); Opal.defn(self, '$puts', TMP_Writable_puts_9 = function $$puts($a_rest) { var TMP_8, self = this, args, 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]; } 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)) }; return nil; }, TMP_Writable_puts_9.$$arity = -1); })($nesting[0], $nesting); return (function($base, $parent_nesting) { var $Readable, self = $Readable = $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; Opal.defn(self, '$readbyte', TMP_Readable_readbyte_10 = function $$readbyte() { var self = this; return self.$getbyte() }, TMP_Readable_readbyte_10.$$arity = 0); Opal.defn(self, '$readchar', TMP_Readable_readchar_11 = function $$readchar() { var self = this; return self.$getc() }, TMP_Readable_readchar_11.$$arity = 0); Opal.defn(self, '$readline', TMP_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); Opal.defn(self, '$readpartial', TMP_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); })($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())); 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)); $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)); $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')); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$include']); Opal.defs(self, '$to_s', TMP_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) { var self = this; return Opal.const_get_relative($nesting, 'Object').$include(mod) }, TMP_include_2.$$arity = 1); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$[]']); return (function($base, $super, $parent_nesting) { function $Dir(){}; var self = $Dir = $klass($base, $super, 'Dir', $Dir); var def = self.$$proto, $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; Opal.defn(self, '$chdir', TMP_chdir_1 = function $$chdir(dir) { var self = this, $iter = TMP_chdir_1.$$p, $yield = $iter || nil, prev_cwd = nil; if ($iter) TMP_chdir_1.$$p = null; return (function() { try { prev_cwd = Opal.current_dir; Opal.current_dir = dir; return Opal.yieldX($yield, []);; } finally { Opal.current_dir = prev_cwd }; })() }, TMP_chdir_1.$$arity = 1); Opal.defn(self, '$pwd', TMP_pwd_2 = function $$pwd() { var self = this; return Opal.current_dir || '.' }, TMP_pwd_2.$$arity = 0); Opal.alias(self, "getwd", "pwd"); return (Opal.defn(self, '$home', TMP_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'; })(Opal.get_singleton_class(self), $nesting) })($nesting[0], null, $nesting) }; /* Generated by Opal 0.11.0 */ Opal.modules["corelib/file"] = 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, $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?']); return (function($base, $super, $parent_nesting) { function $File(){}; var self = $File = $klass($base, $super, 'File', $File); var def = self.$$proto, $nesting = [self].concat($parent_nesting), windows_root_rx = nil; Opal.const_set($nesting[0], 'Separator', Opal.const_set($nesting[0], 'SEPARATOR', "/")); Opal.const_set($nesting[0], 'ALT_SEPARATOR', nil); Opal.const_set($nesting[0], 'PATH_SEPARATOR', ":"); 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; 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; if (basedir == null) { basedir = nil; } sep = Opal.const_get_relative($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_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)) { parts = path.$split(new RegExp("" + "[" + (sep_chars) + "]")); leading_sep = windows_root_rx.test(path) ? '' : path.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); abs = true; } 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"); abs = basedir_abs; }; var part; for (var i = 0, ii = parts.length; i < ii; i++) { part = parts[i]; if ( (part === nil) || (part === '' && ((new_parts.length === 0) || abs)) || (part === '.' && ((new_parts.length === 0) || abs)) ) { continue; } if (part === '..') { new_parts.pop(); } else { new_parts.push(part); } } if (!abs && parts[0] !== '.') { new_parts.$unshift(".") } ; new_path = new_parts.$join(sep); if ($truthy(abs)) { new_path = $rb_plus(leading_sep, new_path)}; return new_path; }, TMP_expand_path_1.$$arity = -2); Opal.alias(self, "realpath", "expand_path"); // Coerce a given path to a path string using #to_path and #to_str function $coerce_to_path(path) { if ($truthy((path)['$respond_to?']("to_path"))) { path = path.$to_path(); } path = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](path, Opal.const_get_relative($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')); } else { return Opal.escape_regexp($rb_plus(Opal.const_get_relative($nesting, 'SEPARATOR'), Opal.const_get_relative($nesting, 'ALT_SEPARATOR'))); } } ; Opal.defn(self, '$dirname', TMP_dirname_2 = function $$dirname(path) { var self = this, sep_chars = nil; sep_chars = $sep_chars(); path = $coerce_to_path(path); var absolute = path.match(new RegExp("" + "^[" + (sep_chars) + "]")); path = path.replace(new RegExp("" + "[" + (sep_chars) + "]+$"), ''); // remove trailing separators path = path.replace(new RegExp("" + "[^" + (sep_chars) + "]+$"), ''); // remove trailing basename path = path.replace(new RegExp("" + "[" + (sep_chars) + "]+$"), ''); // remove final trailing separators if (path === '') { return absolute ? '/' : '.'; } return path; ; }, TMP_dirname_2.$$arity = 1); Opal.defn(self, '$basename', TMP_basename_3 = function $$basename(name, suffix) { var self = this, sep_chars = nil; if (suffix == null) { suffix = nil; } sep_chars = $sep_chars(); name = $coerce_to_path(name); if (name.length == 0) { return name; } if (suffix !== nil) { suffix = Opal.const_get_relative($nesting, 'Opal')['$coerce_to!'](suffix, Opal.const_get_relative($nesting, 'String'), "to_str") } else { suffix = null; } name = name.replace(new RegExp("" + "(.)[" + (sep_chars) + "]*$"), '$1'); name = name.replace(new RegExp("" + "^(?:.*[" + (sep_chars) + "])?([^" + (sep_chars) + "]+)$"), '$1'); if (suffix === ".*") { name = name.replace(/\.[^\.]+$/, ''); } else if(suffix !== null) { suffix = Opal.escape_regexp(suffix); name = name.replace(new RegExp("" + (suffix) + "$"), ''); } return name; ; }, TMP_basename_3.$$arity = -2); Opal.defn(self, '$extname', TMP_extname_4 = function $$extname(path) { var $a, self = this, filename = nil, last_dot_idx = nil; 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 { return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) }; }, TMP_extname_4.$$arity = 1); Opal.defn(self, '$exist?', TMP_exist$q_5 = function(path) { var self = this; return Opal.modules[path] != null }, TMP_exist$q_5.$$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; files = []; for (var key in Opal.modules) { 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)); return file; }, TMP_directory$q_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; 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)) { 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 { 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; next_item = paths['$[]']($rb_plus(index, 1)); if ($truthy(next_item['$nil?']())) { return (result = "" + (result) + (item)) } 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)); return result; }, TMP_join_11.$$arity = -1); return (Opal.defn(self, '$split', TMP_split_12 = function $$split(path) { var self = this; return path.$split(Opal.const_get_relative($nesting, 'SEPARATOR')) }, TMP_split_12.$$arity = 1), nil) && 'split'; })(Opal.get_singleton_class(self), $nesting); })($nesting[0], Opal.const_get_relative($nesting, 'IO'), $nesting) }; /* Generated by Opal 0.11.0 */ 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; 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 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; self.__clocks__ = []; Opal.defs(self, '$__register_clock__', TMP_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); self.$__register_clock__("CLOCK_REALTIME", function() { return Date.now() }); monotonic = false; if (Opal.global.performance) { monotonic = function() { return performance.now() }; } else if (Opal.global.process && process.hrtime) { // let now be the base to get smaller numbers var hrtime_base = process.hrtime(); monotonic = function() { var hrtime = process.hrtime(hrtime_base); var us = (hrtime[1] / 1000) | 0; // cut below microsecs; return ((hrtime[0] * 1000) + (us / 1000)); }; } ; if ($truthy(monotonic)) { self.$__register_clock__("CLOCK_MONOTONIC", monotonic)}; Opal.defs(self, '$pid', TMP_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() { 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) { 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)))); var ms = clock(); switch (unit) { case 'float_second': return (ms / 1000); // number of seconds as a float (default) case 'float_millisecond': return (ms / 1); // number of milliseconds as a float case 'float_microsecond': return (ms * 1000); // number of microseconds as a float case 'second': return ((ms / 1000) | 0); // number of seconds as an integer 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)) } ; }, TMP_Process_clock_gettime_4.$$arity = -2); })($nesting[0], null, $nesting); (function($base, $super, $parent_nesting) { function $Signal(){}; var self = $Signal = $klass($base, $super, 'Signal', $Signal); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Signal_trap_5; return Opal.defs(self, '$trap', TMP_Signal_trap_5 = function $$trap($a_rest) { var self = this; return nil }, TMP_Signal_trap_5.$$arity = -1) })($nesting[0], null, $nesting); return (function($base, $super, $parent_nesting) { function $GC(){}; var self = $GC = $klass($base, $super, 'GC', $GC); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_GC_start_6; return Opal.defs(self, '$start', TMP_GC_start_6 = function $$start() { var self = this; return nil }, TMP_GC_start_6.$$arity = 0) })($nesting[0], null, $nesting); }; /* Generated by Opal 0.11.0 */ 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= 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 < l; i++) { var item = args[i], conv = self.$try_convert(item); converted[i] = conv === nil ? item : conv; } if (block !== nil) { converted.push(block); } return self.$Native(prop.apply(obj, converted)); } 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; if ($iter) TMP_Native_proc_5.$$p = null; if ($truthy(block)) { } else { self.$raise(Opal.const_get_relative($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; 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)); instance = self.$Native(this); // if global is current scope, run the block in the scope it was defined if (this === Opal.global) { return block.apply(self, args); } var self_ = block.$$s; block.$$s = null; try { return block.apply(instance, args); } finally { block.$$s = self_; } ;}, TMP_6.$$s = self, TMP_6.$$arity = -1, TMP_6)); }, TMP_Native_proc_5.$$arity = 0); (function($base, $parent_nesting) { var $Helpers, self = $Helpers = $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; 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; $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'); } } 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; 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)) } 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; 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())))) { return as.$new(value.$to_n()) } 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; 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); Opal.defn(self, '$native_reader', TMP_Helpers_native_reader_14 = function $$native_reader($a_rest) { var TMP_12, 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', [], (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; 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); Opal.defn(self, '$native_writer', TMP_Helpers_native_writer_17 = function $$native_writer($a_rest) { var TMP_15, 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', [], (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; 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); Opal.defn(self, '$native_accessor', TMP_Helpers_native_accessor_18 = function $$native_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, 'native_reader', Opal.to_a(names)); return $send(self, 'native_writer', Opal.to_a(names)); }, TMP_Helpers_native_accessor_18.$$arity = -1); })($nesting[0], $nesting); Opal.defs(self, '$included', TMP_Native_included_19 = function $$included(klass) { var self = this; 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; if ($truthy(Opal.const_get_qualified('::', '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() { var self = this; if (self["native"] == null) self["native"] = nil; return self["native"] }, TMP_Native_to_n_21.$$arity = 0); })($nesting[0], $nesting); (function($base, $parent_nesting) { var $Kernel, self = $Kernel = $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; Opal.defn(self, '$native?', TMP_Kernel_native$q_22 = function(value) { var self = this; return value == null || !value.$$class }, TMP_Kernel_native$q_22.$$arity = 1); Opal.defn(self, '$Native', TMP_Kernel_Native_25 = function $$Native(obj) { var TMP_23, TMP_24, self = this; 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 obj } }, TMP_Kernel_Native_25.$$arity = 1); self.$alias_method("_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; 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 ($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 self.$_Array(object); }, TMP_Kernel_Array_26.$$arity = -2); })($nesting[0], $nesting); (function($base, $super, $parent_nesting) { function $Object(){}; var self = $Object = $klass($base, $super, 'Object', $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; def["native"] = nil; self.$include(Opal.const_get_qualified('::', 'Native')); Opal.defn(self, '$==', TMP_Object_$eq$eq_27 = function(other) { var self = this; return self["native"] === Opal.const_get_qualified('::', 'Native').$try_convert(other) }, TMP_Object_$eq$eq_27.$$arity = 1); Opal.defn(self, '$has_key?', TMP_Object_has_key$q_28 = function(name) { var self = this; return Opal.hasOwnProperty.call(self["native"], name) }, TMP_Object_has_key$q_28.$$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; 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 (($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))) } }, TMP_Object_each_29.$$arity = -1); Opal.defn(self, '$[]', TMP_Object_$$_30 = function(key) { var self = this; var prop = self["native"][key]; if (prop instanceof Function) { return prop; } else { return Opal.const_get_qualified('::', 'Native').$call(self["native"], key) } }, TMP_Object_$$_30.$$arity = 1); Opal.defn(self, '$[]=', TMP_Object_$$$eq_31 = function(key, value) { var self = this, native$ = nil; native$ = Opal.const_get_qualified('::', 'Native').$try_convert(value); if ($truthy(native$ === nil)) { return self["native"][key] = value } else { return self["native"][key] = native$ }; }, TMP_Object_$$$eq_31.$$arity = 2); Opal.defn(self, '$merge!', TMP_Object_merge$B_32 = function(other) { var self = this; other = Opal.const_get_qualified('::', 'Native').$convert(other); for (var prop in other) { self["native"][prop] = other[prop]; } ; return self; }, TMP_Object_merge$B_32.$$arity = 1); Opal.defn(self, '$respond_to?', TMP_Object_respond_to$q_33 = 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); Opal.defn(self, '$respond_to_missing?', TMP_Object_respond_to_missing$q_34 = 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); 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; 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 (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()); } }, TMP_Object_method_missing_35.$$arity = -2); Opal.defn(self, '$nil?', TMP_Object_nil$q_36 = function() { var self = this; return false }, TMP_Object_nil$q_36.$$arity = 0); Opal.defn(self, '$is_a?', TMP_Object_is_a$q_37 = function(klass) { var self = this; return Opal.is_a(self, klass) }, TMP_Object_is_a$q_37.$$arity = 1); Opal.alias(self, "kind_of?", "is_a?"); Opal.defn(self, '$instance_of?', TMP_Object_instance_of$q_38 = function(klass) { var self = this; return self.$$class === klass }, TMP_Object_instance_of$q_38.$$arity = 1); Opal.defn(self, '$class', TMP_Object_class_39 = function() { var self = this; return self.$$class }, TMP_Object_class_39.$$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; 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() { 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); (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(); i < length; i++) { Opal.yield1(block, self['$[]'](i)); } ; return self; }, TMP_Array_each_43.$$arity = 0); Opal.defn(self, '$[]', TMP_Array_$$_44 = 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)) { return self["native"][self.named](index) } else { return self["native"][index] }} else if (Opal.const_get_relative($nesting, 'Integer')['$===']($case)) {if ($truthy(self.get)) { return self["native"][self.get](index) } else { return self["native"][index] }} else { return nil }})(); if ($truthy(result)) { if ($truthy(self.block)) { return self.block.$call(result) } else { return self.$Native(result) } } else { return nil }; }, TMP_Array_$$_44.$$arity = 1); Opal.defn(self, '$[]=', TMP_Array_$$$eq_45 = 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) } }, TMP_Array_$$$eq_45.$$arity = 2); Opal.defn(self, '$last', TMP_Array_last_46 = 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); result = []; while ($truthy($rb_ge(index, 0))) { result['$<<'](self['$[]'](index)); index = $rb_minus(index, 1); }; return result; } else { return self['$[]']($rb_minus(self.$length(), 1)) } }, TMP_Array_last_46.$$arity = -1); Opal.defn(self, '$length', TMP_Array_length_47 = function $$length() { var self = this; return self["native"][self.length] }, TMP_Array_length_47.$$arity = 0); Opal.alias(self, "to_ary", "to_a"); return (Opal.defn(self, '$inspect', TMP_Array_inspect_48 = 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); (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_to_n_49; return (Opal.defn(self, '$to_n', TMP_Numeric_to_n_49 = function $$to_n() { var self = this; return self.valueOf() }, TMP_Numeric_to_n_49.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Proc_to_n_50; return (Opal.defn(self, '$to_n', TMP_Proc_to_n_50 = function $$to_n() { var self = this; return self }, TMP_Proc_to_n_50.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_to_n_51; return (Opal.defn(self, '$to_n', TMP_String_to_n_51 = function $$to_n() { var self = this; return self.valueOf() }, TMP_String_to_n_51.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Regexp_to_n_52; return (Opal.defn(self, '$to_n', TMP_Regexp_to_n_52 = function $$to_n() { var self = this; return self.valueOf() }, TMP_Regexp_to_n_52.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchData_to_n_53; def.matches = nil; return (Opal.defn(self, '$to_n', TMP_MatchData_to_n_53 = function $$to_n() { var self = this; return self.matches }, TMP_MatchData_to_n_53.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_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; 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)); return result; }, TMP_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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_to_n_56; return (Opal.defn(self, '$to_n', TMP_Array_to_n_56 = function $$to_n() { var self = this; var result = []; 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)); } return result; }, TMP_Array_to_n_56.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Boolean_to_n_57; return (Opal.defn(self, '$to_n', TMP_Boolean_to_n_57 = function $$to_n() { var self = this; return self.valueOf() }, TMP_Boolean_to_n_57.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Time_to_n_58; return (Opal.defn(self, '$to_n', TMP_Time_to_n_58 = function $$to_n() { var self = this; return self }, TMP_Time_to_n_58.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NilClass_to_n_59; return (Opal.defn(self, '$to_n', TMP_NilClass_to_n_59 = function $$to_n() { var self = this; return null }, TMP_NilClass_to_n_59.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Hash_initialize_60, TMP_Hash_to_n_61; self.$alias_method("_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; if ($iter) TMP_Hash_initialize_60.$$p = null; if (defaults != null && (defaults.constructor === undefined || defaults.constructor === Object)) { var smap = self.$$smap, keys = self.$$keys, key, value; for (key in defaults) { value = defaults[key]; if (value && (value.constructor === undefined || value.constructor === Object)) { smap[key] = Opal.const_get_relative($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 self.$Native(item); }); smap[key] = value } else { smap[key] = self.$Native(value); } keys.push(key); } return self; } 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() { var self = this; var result = {}, keys = self.$$keys, smap = self.$$smap, key, value; for (var i = 0, length = keys.length; i < length; i++) { key = keys[i]; if (key.$$is_string) { value = smap[key]; } else { key = key.key; value = key.value; } result[key] = Opal.const_get_relative($nesting, 'Native').$try_convert(value, value); } return result; }, TMP_Hash_to_n_61.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_native_module_62; return (Opal.defn(self, '$native_module', TMP_Module_native_module_62 = function $$native_module() { var self = this; return Opal.global[self.$name()] = self }, TMP_Module_native_module_62.$$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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Class_native_alias_63, TMP_Class_native_class_64; Opal.defn(self, '$native_alias', TMP_Class_native_alias_63 = function $$native_alias(new_jsid, existing_mid) { var self = this; var aliased = self.$$proto['$' + 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.$$proto[new_jsid] = aliased; }, TMP_Class_native_alias_63.$$arity = 2); return (Opal.defn(self, '$native_class', TMP_Class_native_class_64 = function $$native_class() { var self = this; self.$native_module(); return self["new"] = self.$new;; }, TMP_Class_native_class_64.$$arity = 0), nil) && 'native_class'; })($nesting[0], null, $nesting); return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$include', '$raise', '$==', '$arity', '$instance_exec', '$to_proc', '$call', '$new']); self.$require("native"); (function($base, $super, $parent_nesting) { function $Console(){}; var self = $Console = $klass($base, $super, 'Console', $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; def["native"] = nil; self.$include(Opal.const_get_relative($nesting, 'Native')); Opal.defn(self, '$clear', TMP_Console_clear_1 = function $$clear() { var self = this; return self["native"].clear() }, TMP_Console_clear_1.$$arity = 0); Opal.defn(self, '$trace', TMP_Console_trace_2 = function $$trace() { var self = this; return self["native"].trace() }, TMP_Console_trace_2.$$arity = 0); Opal.defn(self, '$log', TMP_Console_log_3 = function $$log($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["native"].log.apply(self["native"], args) }, TMP_Console_log_3.$$arity = -1); Opal.defn(self, '$info', TMP_Console_info_4 = function $$info($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["native"].info.apply(self["native"], args) }, TMP_Console_info_4.$$arity = -1); Opal.defn(self, '$warn', TMP_Console_warn_5 = function $$warn($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["native"].warn.apply(self["native"], args) }, TMP_Console_warn_5.$$arity = -1); Opal.defn(self, '$error', TMP_Console_error_6 = function $$error($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["native"].error.apply(self["native"], args) }, TMP_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; if ($iter) TMP_Console_time_7.$$p = null; if ($truthy(block)) { } else { self.$raise(Opal.const_get_relative($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) } } finally { self["native"].timeEnd() }; })();; }, TMP_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; 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 ($truthy(block)) { } else { self.$raise(Opal.const_get_relative($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) } } 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; 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 ((block !== nil)) { } else { return nil }; self["native"].groupCollapsed.apply(self["native"], args); return (function() { try { if (block.$arity()['$=='](0)) { return $send(self, 'instance_exec', [], block.$to_proc()) } else { return block.$call(self) } } finally { self["native"].groupEnd() }; })();; }, TMP_Console_group$B_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 nil }; }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/constants/colors"] = 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 $Constants, self = $Constants = $module($base, 'Constants'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $parent_nesting) { var $Colors, self = $Colors = $module($base, 'Colors'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'C_BLACK', [255, 0, 0, 0]); Opal.const_set($nesting[0], 'C_RED', [255, 255, 0, 0]); Opal.const_set($nesting[0], 'C_GREEN', [255, 0, 255, 0]); Opal.const_set($nesting[0], 'C_BLUE', [255, 0, 0, 255]); Opal.const_set($nesting[0], 'C_YELLOW', [255, 255, 255, 0]); Opal.const_set($nesting[0], 'C_CYAN', [255, 0, 255, 255]); Opal.const_set($nesting[0], 'C_MAGENTA', [255, 255, 0, 255]); Opal.const_set($nesting[0], 'C_WHITE', [255, 255, 255, 255]); Opal.const_set($nesting[0], 'C_DEFAULT', [0, 0, 0, 0]); })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$new']); 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 $Font(){}; var self = $Font = $klass($base, $super, 'Font', $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__spec_str_6; def.size = def.orig_fontname = def.fontname = nil; Opal.defs(self, '$default', TMP_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) { var self = this; return (Opal.class_variable_set($Font, '@@default', f)) }, TMP_Font_default$eq_2.$$arity = 1); Opal.defn(self, '$initialize', TMP_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); Opal.defn(self, '$size', TMP_Font_size_4 = function $$size() { var self = this; return self.size }, TMP_Font_size_4.$$arity = 0); Opal.defn(self, '$fontname', TMP_Font_fontname_5 = function $$fontname() { var self = this; return self.orig_fontname }, TMP_Font_fontname_5.$$arity = 0); return (Opal.defn(self, '$_spec_str', TMP_Font__spec_str_6 = function $$_spec_str() { var self = this; return "" + (self.size) + "px " + (self.fontname) }, TMP_Font__spec_str_6.$$arity = 0), nil) && '_spec_str'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/input"] = 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, $truthy = Opal.truthy, $send = Opal.send; Opal.add_stubs(['$_init_mouse_events', '$keyevent_target', '$keyevent_target=', '$-', '$+', '$key_down?', '$_pressing_keys']); 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), 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; (function($base, $parent_nesting) { var $MouseCodes, self = $MouseCodes = $module($base, 'MouseCodes'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'M_LBUTTON', 1); Opal.const_set($nesting[0], 'M_RBUTTON', 2); Opal.const_set($nesting[0], 'M_MBUTTON', 4); 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() { 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) { 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())); 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)); self.$_init_mouse_events(); if ($truthy(Opal.const_get_relative($nesting, 'Input').$keyevent_target())) { return nil } 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() { var $a, self = this; return (Opal.class_variable_set($Input, '@@tick', $rb_plus((($a = $Input.$$cvars['@@tick']) == null ? nil : $a), 1))) }, TMP_Input__on_tick_3.$$arity = 0); Opal.defs(self, '$x', TMP_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')))) { ret = $rb_plus(ret, 1)}; if ($truthy(self['$key_down?'](Opal.const_get_relative($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) { 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')))) { ret = $rb_plus(ret, 1)}; if ($truthy(self['$key_down?'](Opal.const_get_relative($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) { 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) { 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.keyCode] = (($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.keyCode] = -(($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; 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; 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; 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); })($nesting[0], $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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', 27); Opal.const_set($nesting[0], 'K_MINUS', 189); Opal.const_set($nesting[0], 'K_BACK', 8); Opal.const_set($nesting[0], 'K_TAB', 9); Opal.const_set($nesting[0], 'K_Q', 81); Opal.const_set($nesting[0], 'K_W', 87); Opal.const_set($nesting[0], 'K_E', 69); Opal.const_set($nesting[0], 'K_R', 82); Opal.const_set($nesting[0], 'K_T', 84); Opal.const_set($nesting[0], 'K_Y', 89); Opal.const_set($nesting[0], 'K_U', 85); Opal.const_set($nesting[0], 'K_I', 73); Opal.const_set($nesting[0], 'K_O', 79); Opal.const_set($nesting[0], 'K_P', 80); Opal.const_set($nesting[0], 'K_LBRACKET', 219); Opal.const_set($nesting[0], 'K_RBRACKET', 221); Opal.const_set($nesting[0], 'K_RETURN', 13); Opal.const_set($nesting[0], 'K_A', 65); Opal.const_set($nesting[0], 'K_S', 83); Opal.const_set($nesting[0], 'K_D', 68); Opal.const_set($nesting[0], 'K_F', 70); Opal.const_set($nesting[0], 'K_G', 71); Opal.const_set($nesting[0], 'K_H', 72); Opal.const_set($nesting[0], 'K_J', 74); Opal.const_set($nesting[0], 'K_K', 75); Opal.const_set($nesting[0], 'K_L', 76); Opal.const_set($nesting[0], 'K_SEMICOLON', 186); Opal.const_set($nesting[0], 'K_BACKSLASH', 0); Opal.const_set($nesting[0], 'K_Z', 90); Opal.const_set($nesting[0], 'K_X', 88); Opal.const_set($nesting[0], 'K_C', 67); Opal.const_set($nesting[0], 'K_V', 86); Opal.const_set($nesting[0], 'K_B', 66); Opal.const_set($nesting[0], 'K_N', 78); Opal.const_set($nesting[0], 'K_M', 77); Opal.const_set($nesting[0], 'K_COMMA', 188); Opal.const_set($nesting[0], 'K_PERIOD', 190); Opal.const_set($nesting[0], 'K_SLASH', 191); Opal.const_set($nesting[0], 'K_SPACE', 32); Opal.const_set($nesting[0], 'K_F1', 112); Opal.const_set($nesting[0], 'K_F2', 113); Opal.const_set($nesting[0], 'K_F3', 114); Opal.const_set($nesting[0], 'K_F4', 115); Opal.const_set($nesting[0], 'K_F5', 116); Opal.const_set($nesting[0], 'K_F6', 117); Opal.const_set($nesting[0], 'K_F7', 118); Opal.const_set($nesting[0], 'K_F8', 119); Opal.const_set($nesting[0], 'K_F9', 120); Opal.const_set($nesting[0], 'K_F10', 121); Opal.const_set($nesting[0], 'K_F11', 122); Opal.const_set($nesting[0], 'K_F12', 123); Opal.const_set($nesting[0], 'K_F13', 124); Opal.const_set($nesting[0], 'K_F14', 125); Opal.const_set($nesting[0], 'K_F15', 126); Opal.const_set($nesting[0], 'K_PREVTRACK', 187); Opal.const_set($nesting[0], 'K_AT', 219); Opal.const_set($nesting[0], 'K_COLON', 186); Opal.const_set($nesting[0], 'K_UNDERLINE', 189); Opal.const_set($nesting[0], 'K_UP', 38); Opal.const_set($nesting[0], 'K_LEFT', 37); Opal.const_set($nesting[0], 'K_RIGHT', 39); Opal.const_set($nesting[0], 'K_DOWN', 40); Opal.const_set($nesting[0], 'K_BACKSPACE', 8); Opal.const_set($nesting[0], 'K_UPARROW', 38); Opal.const_set($nesting[0], 'K_LEFTARROW', 37); Opal.const_set($nesting[0], 'K_RIGHTARROW', 39); Opal.const_set($nesting[0], 'K_DOWNARROW', 40); })($nesting[0], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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, block, 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); block = $c_args.splice(0,1)[0]; if (block == null) { block = 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), block.$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) }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/image"] = function(Opal) { 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_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); } 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', '$add_class', '$new', '$_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 def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $Image(){}; var self = $Image = $klass($base, $super, 'Image', $Image); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Image__load_1, TMP_Image_initialize_2, TMP_Image__resize_3, TMP_Image_draw_4, TMP_Image_draw_scale_5, TMP_Image_draw_rot_6, TMP_Image_draw_ex_7, TMP_Image_draw_font_8, TMP_Image_$$_9, TMP_Image_$$$eq_10, TMP_Image_compare_11, TMP_Image_line_12, TMP_Image_box_13, TMP_Image_box_fill_14, TMP_Image_circle_15, TMP_Image_circle_fill_16, TMP_Image_triangle_17, TMP_Image_triangle_fill_18, TMP_Image_fill_19, TMP_Image_clear_20, TMP_Image_slice_21, TMP_Image_slice_tiles_24, TMP_Image_set_color_key_25, TMP_Image__draw_raw_image_26, TMP_Image__image_data_27, TMP_Image__put_image_data_28, TMP_Image__rgb_29, TMP_Image__rgba_30, TMP_Image__rgba_ary_31; def.canvas = def.width = def.height = def.ctx = nil; Opal.const_get_relative($nesting, 'RemoteResource').$add_class(Opal.const_get_relative($nesting, 'Image')); Opal.defs(self, '$_load', TMP_Image__load_1 = function $$_load(path_or_url) { var self = this, raw_img = nil, img_promise = nil, img = nil; raw_img = new Image(); img_promise = new Promise(function(resolve, reject) { raw_img.onload = function() { resolve(raw_img); }; raw_img.src = path_or_url; }); ; img = self.$new(0, 0); img_promise.then(function(raw_img){ img.$_resize(raw_img.width, raw_img.height); img.$_draw_raw_image(0, 0, raw_img); }); ; return [img, img_promise]; }, TMP_Image__load_1.$$arity = 1); Opal.defn(self, '$initialize', TMP_Image_initialize_2 = function $$initialize(width, height, $color, $kwargs) { var $a, self = this, $post_args, canvas, color; $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'); } } 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")); 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_2.$$arity = -3); self.$attr_reader("ctx", "canvas", "width", "height"); Opal.defn(self, '$_resize', TMP_Image__resize_3 = 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; ; }, TMP_Image__resize_3.$$arity = 2); Opal.defn(self, '$draw', TMP_Image_draw_4 = function $$draw(x, y, image) { var self = this; self.ctx.drawImage(image.$canvas(), x, y); ; return self; }, TMP_Image_draw_4.$$arity = 3); Opal.defn(self, '$draw_scale', TMP_Image_draw_scale_5 = 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_5.$$arity = -6); Opal.defn(self, '$draw_rot', TMP_Image_draw_rot_6 = 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_6.$$arity = -5); Opal.defn(self, '$draw_ex', TMP_Image_draw_ex_7 = function $$draw_ex(x, y, image, options) { var $a, self = this, scale_x = nil, scale_y = nil, center_x = nil, center_y = 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)); 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.0); self.ctx.scale(scale_x, scale_y); self.ctx.drawImage(image.$canvas(), x-cx, y-cy); self.ctx.setTransform(1, 0, 0, 1, 0, 0); // reset ; return self; }, TMP_Image_draw_ex_7.$$arity = -4); Opal.defn(self, '$draw_font', TMP_Image_draw_font_8 = 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; }, TMP_Image_draw_font_8.$$arity = -5); Opal.defn(self, '$[]', TMP_Image_$$_9 = 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; }, TMP_Image_$$_9.$$arity = 2); Opal.defn(self, '$[]=', TMP_Image_$$$eq_10 = function(x, y, color) { var self = this; return self.$box_fill(x, y, x, y, color) }, TMP_Image_$$$eq_10.$$arity = 3); Opal.defn(self, '$compare', TMP_Image_compare_11 = 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; // TODO: what is the right way to compare an Array and an Uint8ClampedArray? ret = rgba1[0] == rgba2[0] && rgba1[1] == rgba2[1] && rgba1[2] == rgba2[2] && rgba1[3] == rgba2[3] ; return ret; }, TMP_Image_compare_11.$$arity = 3); Opal.defn(self, '$line', TMP_Image_line_12 = 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, y1); ctx.lineTo(x2, y2); ctx.stroke(); ; return self; }, TMP_Image_line_12.$$arity = 5); Opal.defn(self, '$box', TMP_Image_box_13 = 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, y1, x2-x1+1, y2-y1+1); ctx.stroke(); ; return self; }, TMP_Image_box_13.$$arity = 5); Opal.defn(self, '$box_fill', TMP_Image_box_fill_14 = 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+1, y2-y1+1); ; return self; }, TMP_Image_box_fill_14.$$arity = 5); Opal.defn(self, '$circle', TMP_Image_circle_15 = function $$circle(x, y, r, color) { var self = this, ctx = nil; ctx = self.ctx; ctx.beginPath(); ctx.strokeStyle = self.$_rgba(color); ctx.arc(x, y, r, 0, Math.PI*2, false) ctx.stroke(); ; return self; }, TMP_Image_circle_15.$$arity = 4); Opal.defn(self, '$circle_fill', TMP_Image_circle_fill_16 = 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; }, TMP_Image_circle_fill_16.$$arity = 4); Opal.defn(self, '$triangle', TMP_Image_triangle_17 = 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, y1); ctx.lineTo(x2, y2); ctx.lineTo(x3, y3); ctx.lineTo(x1, y1); ctx.stroke(); ; return self; }, TMP_Image_triangle_17.$$arity = 7); Opal.defn(self, '$triangle_fill', TMP_Image_triangle_fill_18 = 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; }, TMP_Image_triangle_fill_18.$$arity = 7); Opal.defn(self, '$fill', TMP_Image_fill_19 = 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_19.$$arity = 1); Opal.defn(self, '$clear', TMP_Image_clear_20 = function $$clear() { var self = this; return self.$fill([0, 0, 0, 0]) }, TMP_Image_clear_20.$$arity = 0); Opal.defn(self, '$slice', TMP_Image_slice_21 = function $$slice(x, y, width, height) { var self = this, newimg = nil, data = nil; newimg = Opal.const_get_relative($nesting, 'Image').$new(width, height); data = self.$_image_data(x, y, width, height); newimg.$_put_image_data(data); return newimg; }, TMP_Image_slice_21.$$arity = 4); Opal.defn(self, '$slice_tiles', TMP_Image_slice_tiles_24 = function $$slice_tiles(xcount, ycount) { var TMP_22, 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_22 = function(v){var self = TMP_22.$$s || this, TMP_23; if (v == null) v = nil; return $send(Opal.Range.$new(0,xcount, true), 'map', [], (TMP_23 = function(u){var self = TMP_23.$$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_23.$$s = self, TMP_23.$$arity = 1, TMP_23))}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22)); }, TMP_Image_slice_tiles_24.$$arity = 2); Opal.defn(self, '$set_color_key', TMP_Image_set_color_key_25 = 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; i < buf.length; i += 4){ if (buf[i] == r && buf[i+1] == g && buf[i+2] == b) { buf[i+3] = 0 } } ; return self.$_put_image_data(data); }, TMP_Image_set_color_key_25.$$arity = 1); Opal.defn(self, '$_draw_raw_image', TMP_Image__draw_raw_image_26 = function $$_draw_raw_image(x, y, raw_img) { var self = this; self.ctx.drawImage(raw_img, x, y); }, TMP_Image__draw_raw_image_26.$$arity = 3); Opal.defn(self, '$_image_data', TMP_Image__image_data_27 = 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_27.$$arity = -1); Opal.defn(self, '$_put_image_data', TMP_Image__put_image_data_28 = 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_28.$$arity = -2); Opal.defn(self, '$_rgb', TMP_Image__rgb_29 = function $$_rgb(color) { var self = this, $case = nil, rgb = nil; $case = color.$length(); if ((4)['$===']($case)) {rgb = color['$[]'](1, 3)} else if ((3)['$===']($case)) {rgb = color} else {self.$raise("" + "invalid color: " + (color.$inspect()))}; return $rb_plus($rb_plus("rgb(", rgb.$join(", ")), ")"); }, TMP_Image__rgb_29.$$arity = 1); Opal.defn(self, '$_rgba', TMP_Image__rgba_30 = function $$_rgba(color) { var self = this; return $rb_plus($rb_plus("rgba(", self.$_rgba_ary(color).$join(", ")), ")") }, TMP_Image__rgba_30.$$arity = 1); return (Opal.defn(self, '$_rgba_ary', TMP_Image__rgba_ary_31 = 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_31.$$arity = 1), nil) && '_rgba_ary'; })($nesting[0], Opal.const_get_relative($nesting, 'RemoteResource'), $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $Sound(){}; var self = $Sound = $klass($base, $super, 'Sound', $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; def.decoded = 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() { 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) { var self = this, snd = nil, snd_promise = nil; snd = self.$new(path_or_url); snd_promise = new Promise(function(resolve, reject) { var request = new XMLHttpRequest(); request.open('GET', path_or_url, true); request.responseType = 'arraybuffer'; request.onload = function() { var audioData = request.response; var context = Opal.const_get_relative($nesting, 'Sound').$audio_context(); context.decodeAudioData(audioData, function(decoded) { snd['$decoded='](decoded); resolve(); }); }; request.send(); }); ; return [snd, snd_promise]; }, TMP_Sound__load_2.$$arity = 1); Opal.defn(self, '$initialize', TMP_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); self.$attr_accessor("decoded"); return (Opal.defn(self, '$play', TMP_Sound_play_4 = function $$play() { var self = this; if ($truthy(self.decoded)) { } else { self.$raise("" + "Sound " + (self.$path_or_url()) + " is not loaded yet") }; var context = Opal.const_get_relative($nesting, 'Sound').$audio_context(); var source = context.createBufferSource(); source.buffer = self.decoded; source.connect(context.destination); source.start(0); ; }, TMP_Sound_play_4.$$arity = 0), nil) && 'play'; })($nesting[0], Opal.const_get_relative($nesting, 'RemoteResource'), $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/sound_effect"] = function(Opal) { 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); } var self = Opal.top, $nesting = [], nil = Opal.nil, $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 def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $SoundEffect(){}; var self = $SoundEffect = $klass($base, $super, 'SoundEffect', $SoundEffect); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SoundEffect__load_1, TMP_SoundEffect_add_2; Opal.const_get_relative($nesting, 'RemoteResource').$add_class(Opal.const_get_relative($nesting, 'SoundEffect')); (function($base, $parent_nesting) { var $WaveTypes, self = $WaveTypes = $module($base, 'WaveTypes'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'WAVE_SIN', "sine"); Opal.const_set($nesting[0], 'WAVE_SAW', "sawtooth"); 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; if (wave_type == null) { wave_type = Opal.const_get_relative($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 n_ticks = time; var totalSeconds = $rb_divide(time, resolution); var valuesPerSecond = context.sampleRate; var n_values = totalSeconds * valuesPerSecond; var myArrayBuffer = context.createBuffer(n_channels, n_values, valuesPerSecond); var values = myArrayBuffer.getChannelData(0); var n = 0; for (var i = 0; i < n_ticks; i++) { var ret = block.$call(); var freq = ret[0], volume = ret[1]; if (freq < 0) freq = 0; if (freq > 44100) freq = 44100; if (volume < 0) volume = 0; if (volume > 255) volume = 255; var vol = volume / 255; // 0.0~1.0 var period = valuesPerSecond * 1 / freq; for (; n < ((i+1) / n_ticks * n_values); n++) { var phase = (n % period) / period; // 0.0~1.0 var value; // -1.0~1.0 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 < 0.25 ? 0+phase*4 : phase < 0.5 ? 1-(phase-0.25)*4 : phase < 0.75 ? 0-(phase-0.5)*4 : -1+(phase-0.75)*4; break; case "square": value = (phase < 0.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 = 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) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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.0) || (((x3 - x4) * (y1 - y3) + (y3 - y4) * (x3 - x1)) * ((x3 - x4) * (y2 - y3) + (y3 - y4) * (x3 - x2)) > 0.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*cy < r * r; var n2 = vx * vx + vy * vy; if (n1 > n2) { var len = (x2 - x)*(x2 - x) + (y2 - y)*(y2 - y); return len < r * r; } else { var n3 = cx * cx + cy * cy; return n3-(n1/n2)*n1 < r * r; } }; var CCk = { check_point_circle: function(px, py, cx, cy, cr) { return (cr*cr) >= ((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) < (x2) && (y) < (y2)); }, check_point_triangle: function(x, y, x1, y1, x2, y2, x3, y3){ if ((x1 - x3) * (y1 - y2) == (x1 - x2) * (y1 - y3)) return false; var cx = (x1 + x2 + x3) / 3, cy = (y1 + y2 + y3) / 3; if (intersect( x1, y1, x2, y2, x, y, cx, cy ) < 0.0 || intersect( x2, y2, x3, y3, x, y, cx, cy ) < 0.0 || intersect( x3, y3, x1, y1, x, y, cx, cy ) < 0.0 ) { return false; } return true; }, check_circle_circle: function(ox, oy, or, dx, dy, dr) { return ((or+dr) * (or+dr) >= (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) ) * 0.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 ax1 < bx2 && ay1 < by2 && bx1 < ax2 && by1 < ay2; }, // Rect(may be tilted) vs Triangle check_tilted_rect_triangle: function(ox1, oy1, ox2, oy2, ox3, oy3, ox4, oy4, dx1, dy1, dx2, dy2, dx3, dy3) { return check_line_line(ox1, oy1, ox2, oy2, dx1, dy1, dx2, dy2) || check_line_line(ox1, oy1, ox2, oy2, dx2, dy2, dx3, dy3) || check_line_line(ox1, oy1, ox2, oy2, dx3, dy3, dx1, dy1) || check_line_line(ox2, oy2, ox3, oy3, dx1, dy1, dx2, dy2) || check_line_line(ox2, oy2, ox3, oy3, dx2, dy2, dx3, dy3) || check_line_line(ox2, oy2, ox3, oy3, dx3, dy3, dx1, dy1) || check_line_line(ox3, oy3, ox4, oy4, dx1, dy1, dx2, dy2) || check_line_line(ox3, oy3, ox4, oy4, dx2, dy2, dx3, dy3) || check_line_line(ox3, oy3, ox4, oy4, dx3, dy3, dx1, dy1) || check_line_line(ox4, oy4, ox1, oy1, dx1, dy1, dx2, dy2) || check_line_line(ox4, oy4, ox1, oy1, dx2, dy2, dx3, dy3) || check_line_line(ox4, oy4, ox1, oy1, dx3, dy3, dx1, dy1) || CCk.check_point_triangle(dx1, dy1, ox1, oy1, ox2, oy2, ox3, oy3) || CCk.check_point_triangle(dx1, dy1, ox1, oy1, ox3, oy3, ox4, oy4) || CCk.check_point_triangle(ox1, oy1, dx1, dy1, dx2, dy2, dx3, dy3); }, // Triangle vs Triangle check_triangle_triangle: function(ox1, oy1, ox2, oy2, ox3, oy3, dx1, dy1, dx2, dy2, dx3, dy3) { return check_line_line(ox1, oy1, ox2, oy2, dx2, dy2, dx3, dy3) || check_line_line(ox1, oy1, ox2, oy2, dx3, dy3, dx1, dy1) || check_line_line(ox2, oy2, ox3, oy3, dx1, dy1, dx2, dy2) || check_line_line(ox2, oy2, ox3, oy3, dx3, dy3, dx1, dy1) || check_line_line(ox3, oy3, ox1, oy1, dx1, dy1, dx2, dy2) || check_line_line(ox3, oy3, ox1, oy1, dx2, dy2, dx3, dy3) || CCk.check_point_triangle(ox1, oy1, dx1, dy1, dx2, dy2, dx3, dy3) || CCk.check_point_triangle(dx1, dy1, ox1, oy1, ox2, oy2, ox3, oy3); } }; Opal.DXOpal.CollisionChecker = CCk; Opal.DXOpal.CCk = CCk; // Alias })(); }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/sprite/collision_area"] = function(Opal) { function $rb_plus(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_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; 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 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 $CollisionArea, self = $CollisionArea = $module($base, 'CollisionArea'); 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_type_1, TMP_Base_absolute_3, TMP_Base_absolute1_4, TMP_Base_transback_5, TMP_Base_transback1_6, TMP_Base_aabb_7; def.sprite = nil; self.$attr_reader("sprite"); Opal.defn(self, '$type', TMP_Base_type_1 = function $$type() { var self = this; return self.$raise("override me") }, TMP_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; 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; 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))}; angle = self.sprite.$angle(); cx = self.sprite.$center_x(); cy = self.sprite.$center_y(); sx = self.sprite.$scale_x(); sy = self.sprite.$scale_y(); ret = []; var rad = Math.PI / 180.0 * angle; var sin = Math.sin(rad); var cos = Math.cos(rad); poss.forEach(function(pos){ var x = pos[0], y = pos[1]; x2 = (x - cx) * sx * cos - (y - cy) * sy * sin + cx + ox; y2 = (x - cx) * sx * sin + (y - cy) * sy * cos + cy + oy; ret.push([x2, y2]); }); ; return ret; }, TMP_Base_absolute_3.$$arity = 1); Opal.defn(self, '$absolute1', TMP_Base_absolute1_4 = function $$absolute1(pos) { var self = this; return self.$absolute([pos]).$first() }, TMP_Base_absolute1_4.$$arity = 1); Opal.defn(self, '$transback', TMP_Base_transback_5 = function $$transback(poss, sprite) { var self = this, angle = nil, cx = nil, cy = nil, sx = nil, sy = nil, ret = nil; if ($truthy(sprite.$collision_sync()['$!']())) { return poss}; angle = sprite.$angle(); cx = $rb_plus(sprite.$x(), sprite.$center_x()); cy = $rb_plus(sprite.$y(), sprite.$center_y()); sx = sprite.$scale_x(); sy = sprite.$scale_y(); ret = []; var rad = Math.PI / 180.0 * -angle; var sin = Math.sin(rad); var cos = Math.cos(rad); poss.forEach(function(pos){ var x = pos[0], y = pos[1]; x2 = ((x - cx) * cos - (y - cy) * sin) / sx + cx; y2 = ((x - cx) * sin + (y - cy) * cos) / sy + cy; ret.push([x2, y2]); }); ; return ret; }, TMP_Base_transback_5.$$arity = 2); Opal.defn(self, '$transback1', TMP_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) { 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')['$-@']()); for(var i=0; i x2) 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); }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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.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.0); 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_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", "angle", "center_x", "center_y"], {"scale_x": self.scale_x, "scale_y": self.scale_y, "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); }; /* Generated by Opal 0.11.0 */ Opal.modules["dxopal/window"] = function(Opal) { function $rb_ge(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); } 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', '$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_4, TMP_Window_paused$q_5, TMP_Window_resume_6, TMP_Window_draw_pause_screen_7, TMP_Window__loop_11, TMP_Window__init_12, TMP_Window__img_13, TMP_Window_fps_14, TMP_Window_fps$eq_15, TMP_Window_real_fps_16, TMP_Window_width_17, TMP_Window_width$eq_18, TMP_Window_height_19, TMP_Window_height$eq_20, TMP_Window_bgcolor_21, TMP_Window_bgcolor$eq_22, TMP_Window_draw_23, TMP_Window_draw_scale_24, TMP_Window_draw_rot_25, TMP_Window_draw_ex_26, TMP_Window_draw_font_27, TMP_Window_draw_pixel_28, TMP_Window_draw_line_29, TMP_Window_draw_box_30, TMP_Window_draw_box_fill_31, TMP_Window_draw_circle_32, TMP_Window_draw_circle_fill_33, TMP_Window_draw_triangle_34, TMP_Window_draw_triangle_fill_35, TMP_Window_enqueue_draw_36; (Opal.class_variable_set($Window, '@@fps', 60)); (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, 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 } else { return self.$_loop() }; }, TMP_Window_loop_3.$$arity = 0); Opal.defs(self, '$pause', TMP_Window_pause_4 = 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_4.$$arity = 0); Opal.defs(self, '$paused?', TMP_Window_paused$q_5 = function() { var $a, self = this; return (($a = $Window.$$cvars['@@paused']) == null ? nil : $a) }, TMP_Window_paused$q_5.$$arity = 0); Opal.defs(self, '$resume', TMP_Window_resume_6 = 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_6.$$arity = 0); Opal.defs(self, '$draw_pause_screen', TMP_Window_draw_pause_screen_7 = 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_7.$$arity = 0); Opal.defs(self, '$_loop', TMP_Window__loop_11 = function $$_loop(time) { var $a, $b, TMP_8, TMP_9, TMP_10, self = this, t0 = nil, sorted = nil; if (time == null) { time = 0; } (Opal.class_variable_set($Window, '@@img', ($truthy($a = (($b = $Window.$$cvars['@@img']) == null ? nil : $b)) ? $a : self.$_init((($b = $Window.$$cvars['@@width']) == null ? nil : $b), (($b = $Window.$$cvars['@@height']) == null ? nil : $b))))); t0 = Opal.const_get_relative($nesting, 'Time').$now(); if ($truthy($rb_ge($rb_minus(t0, (($a = $Window.$$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', t0)); } 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(time)}; 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_8 = function(a, b){var self = TMP_8.$$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)['$<=>'](a['$[]'](1)) }}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8)); $send(sorted, 'each', [], (TMP_9 = function(item){var self = TMP_9.$$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_9.$$s = self, TMP_9.$$arity = 1, TMP_9)); return (window).requestAnimationFrame((TMP_10 = function(time){var self = TMP_10.$$s || this; if (time == null) time = nil; return self.$_loop(time)}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10)); }, TMP_Window__loop_11.$$arity = -1); Opal.defs(self, '$_init', TMP_Window__init_12 = function $$_init(w, h) { var self = this, canvas = nil, img = nil; canvas = document.getElementById("dxopal-canvas"); canvas.width = w; canvas.height = h; img = Opal.const_get_relative($nesting, 'Image').$new(w, h, $hash2(["canvas"], {"canvas": canvas})); Opal.const_get_relative($nesting, 'Input').$_init(canvas); return img; }, TMP_Window__init_12.$$arity = 2); Opal.defs(self, '$_img', TMP_Window__img_13 = function $$_img() { var $a, self = this; return (($a = $Window.$$cvars['@@img']) == null ? nil : $a) }, TMP_Window__img_13.$$arity = 0); Opal.defs(self, '$fps', TMP_Window_fps_14 = function $$fps() { var $a, self = this; return (($a = $Window.$$cvars['@@fps']) == null ? nil : $a) }, TMP_Window_fps_14.$$arity = 0); Opal.defs(self, '$fps=', TMP_Window_fps$eq_15 = function(w) { var self = this; return (Opal.class_variable_set($Window, '@@fps', w)) }, TMP_Window_fps$eq_15.$$arity = 1); Opal.defs(self, '$real_fps', TMP_Window_real_fps_16 = function $$real_fps() { var $a, self = this; return (($a = $Window.$$cvars['@@real_fps']) == null ? nil : $a) }, TMP_Window_real_fps_16.$$arity = 0); Opal.defs(self, '$width', TMP_Window_width_17 = function $$width() { var $a, self = this; return (($a = $Window.$$cvars['@@width']) == null ? nil : $a) }, TMP_Window_width_17.$$arity = 0); Opal.defs(self, '$width=', TMP_Window_width$eq_18 = function(w) { var self = this; return (Opal.class_variable_set($Window, '@@width', w)) }, TMP_Window_width$eq_18.$$arity = 1); Opal.defs(self, '$height', TMP_Window_height_19 = function $$height() { var $a, self = this; return (($a = $Window.$$cvars['@@height']) == null ? nil : $a) }, TMP_Window_height_19.$$arity = 0); Opal.defs(self, '$height=', TMP_Window_height$eq_20 = function(h) { var self = this; return (Opal.class_variable_set($Window, '@@height', h)) }, TMP_Window_height$eq_20.$$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_21 = function $$bgcolor() { var $a, self = this; return (($a = $Window.$$cvars['@@bgcolor']) == null ? nil : $a) }, TMP_Window_bgcolor_21.$$arity = 0); Opal.defs(self, '$bgcolor=', TMP_Window_bgcolor$eq_22 = function(col) { var self = this; return (Opal.class_variable_set($Window, '@@bgcolor', col)) }, TMP_Window_bgcolor$eq_22.$$arity = 1); Opal.defs(self, '$draw', TMP_Window_draw_23 = 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_23.$$arity = -4); Opal.defs(self, '$draw_scale', TMP_Window_draw_scale_24 = 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_24.$$arity = -6); Opal.defs(self, '$draw_rot', TMP_Window_draw_rot_25 = 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_25.$$arity = -5); Opal.defs(self, '$draw_ex', TMP_Window_draw_ex_26 = 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_26.$$arity = -4); Opal.defs(self, '$draw_font', TMP_Window_draw_font_27 = 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_27.$$arity = -5); Opal.defs(self, '$draw_pixel', TMP_Window_draw_pixel_28 = 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_28.$$arity = -4); Opal.defs(self, '$draw_line', TMP_Window_draw_line_29 = 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_29.$$arity = -6); Opal.defs(self, '$draw_box', TMP_Window_draw_box_30 = 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_30.$$arity = -6); Opal.defs(self, '$draw_box_fill', TMP_Window_draw_box_fill_31 = 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_31.$$arity = -6); Opal.defs(self, '$draw_circle', TMP_Window_draw_circle_32 = 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_32.$$arity = -5); Opal.defs(self, '$draw_circle_fill', TMP_Window_draw_circle_fill_33 = 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_33.$$arity = -5); Opal.defs(self, '$draw_triangle', TMP_Window_draw_triangle_34 = 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_34.$$arity = -8); Opal.defs(self, '$draw_triangle_fill', TMP_Window_draw_triangle_fill_35 = 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_35.$$arity = -8); Opal.defs(self, '$enqueue_draw', TMP_Window_enqueue_draw_36 = 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_36.$$arity = -2); })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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.1.0") })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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 < 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, $klass = Opal.klass, $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']); (function($base, $super, $parent_nesting) { function $Set(){}; var self = $Set = $klass($base, $super, 'Set', $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; def.hash = nil; self.$include(Opal.const_get_relative($nesting, 'Enumerable')); Opal.defs(self, '$[]', TMP_Set_$$_1 = function($a_rest) { var self = this, ary; 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); 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; if (enum$ == null) { enum$ = nil; } if ($iter) TMP_Set_initialize_2.$$p = null; self.hash = Opal.const_get_relative($nesting, 'Hash').$new(); 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(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 self.$merge(enum$) }; }, TMP_Set_initialize_2.$$arity = -1); Opal.defn(self, '$dup', TMP_Set_dup_4 = function $$dup() { var self = this, result = nil; result = self.$class().$new(); return result.$merge(self); }, TMP_Set_dup_4.$$arity = 0); Opal.defn(self, '$-', TMP_Set_$_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") }; return self.$dup().$subtract(enum$); }, TMP_Set_$_5.$$arity = 1); Opal.alias(self, "difference", "-"); Opal.defn(self, '$inspect', TMP_Set_inspect_6 = function $$inspect() { var self = this; return "" + "#" }, 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); }; /* Generated by Opal 0.11.0 */ 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); } 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, $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', '$index', '$is_a?', '$count', '$each_with_index', '$>=', '$to_sexp', '$inspect', '$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_a_10, TMP_Node_to_sexp_13, TMP_Node_inspect_16, TMP_Node_to_ast_17, TMP_Node_fancy_type_18; def.type = def.children = nil; self.$attr_reader("type"); self.$attr_reader("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_a', TMP_Node_to_a_10 = function $$to_a() { var self = this; return self.$children() }, TMP_Node_to_a_10.$$arity = 0); Opal.defn(self, '$to_sexp', TMP_Node_to_sexp_13 = function $$to_sexp(indent) { var $a, TMP_11, TMP_12, self = this, indented = nil, sexp = nil, first_node_child = nil; if (indent == null) { indent = 0; } indented = $rb_times(" ", indent); sexp = "" + (indented) + "(" + (self.$fancy_type()); first_node_child = ($truthy($a = $send(self.$children(), 'index', [], (TMP_11 = function(child){var self = TMP_11.$$s || this, $b; if (child == null) child = nil; return ($truthy($b = child['$is_a?'](Opal.const_get_relative($nesting, 'Node'))) ? $b : child['$is_a?'](Opal.const_get_relative($nesting, 'Array')))}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11))) ? $a : self.$children().$count()); $send(self.$children(), 'each_with_index', [], (TMP_12 = function(child, idx){var self = TMP_12.$$s || this, $b; if (child == null) child = nil;if (idx == null) idx = nil; if ($truthy(($truthy($b = child['$is_a?'](Opal.const_get_relative($nesting, 'Node'))) ? $rb_ge(idx, first_node_child) : $b))) { return (sexp = $rb_plus(sexp, "" + "\n" + (child.$to_sexp($rb_plus(indent, 1))))) } else { return (sexp = $rb_plus(sexp, "" + " " + (child.$inspect()))) }}, TMP_12.$$s = self, TMP_12.$$arity = 2, TMP_12)); sexp = $rb_plus(sexp, ")"); return sexp; }, TMP_Node_to_sexp_13.$$arity = -1); Opal.alias(self, "to_s", "to_sexp"); Opal.defn(self, '$inspect', TMP_Node_inspect_16 = function $$inspect(indent) { var $a, TMP_14, TMP_15, self = this, indented = nil, sexp = nil, first_node_child = nil; if (indent == null) { indent = 0; } indented = $rb_times(" ", indent); sexp = "" + (indented) + "s(:" + (self.type); first_node_child = ($truthy($a = $send(self.$children(), 'index', [], (TMP_14 = function(child){var self = TMP_14.$$s || this, $b; if (child == null) child = nil; return ($truthy($b = child['$is_a?'](Opal.const_get_relative($nesting, 'Node'))) ? $b : child['$is_a?'](Opal.const_get_relative($nesting, 'Array')))}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14))) ? $a : self.$children().$count()); $send(self.$children(), 'each_with_index', [], (TMP_15 = function(child, idx){var self = TMP_15.$$s || this, $b; if (child == null) child = nil;if (idx == null) idx = nil; if ($truthy(($truthy($b = child['$is_a?'](Opal.const_get_relative($nesting, 'Node'))) ? $rb_ge(idx, first_node_child) : $b))) { return (sexp = $rb_plus(sexp, "" + ",\n" + (child.$inspect($rb_plus(indent, 1))))) } else { return (sexp = $rb_plus(sexp, "" + ", " + (child.$inspect()))) }}, TMP_15.$$s = self, TMP_15.$$arity = 2, TMP_15)); sexp = $rb_plus(sexp, ")"); return sexp; }, TMP_Node_inspect_16.$$arity = -1); Opal.defn(self, '$to_ast', TMP_Node_to_ast_17 = function $$to_ast() { var self = this; return self }, TMP_Node_to_ast_17.$$arity = 0); self.$protected(); return (Opal.defn(self, '$fancy_type', TMP_Node_fancy_type_18 = function $$fancy_type() { var self = this; return self.type.$to_s().$gsub("_", "-") }, TMP_Node_fancy_type_18.$$arity = 0), nil) && 'fancy_type'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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; // 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((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); }; /* Generated by Opal 0.11.0 */ 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, $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("" + " --> " + (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); }; /* Generated by Opal 0.11.0 */ 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.0 */ 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); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_bsearch_1; 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; 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) } }; /* Generated by Opal 0.11.0 */ Opal.modules["parser/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 $Parser, self = $Parser = $module($base, 'Parser'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); Opal.const_set($nesting[0], 'VERSION', "2.3.3.1") })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$freeze']); return (function($base, $parent_nesting) { var $Parser, self = $Parser = $module($base, 'Parser'); var def = self.$$proto, $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", "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()) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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_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, $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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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 < 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(['$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']); 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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; // 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); 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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, 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]]; $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(), "\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()); 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 = "\u007F";; 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 = "\u007F";; 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 = "\u007F";; 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 = "\u007F";; 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 = "\u007F";; 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 = "\u007F";; 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$<', '$raise']); 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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Parser_check_for_encoding_support_1; self.$require("parser/version"); self.$require("parser/messages"); (function($base, $parent_nesting) { var $AST, self = $AST = $module($base, 'AST'); var def = self.$$proto, $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 $Source, self = $Source = $module($base, 'Source'); var def = self.$$proto, $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/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/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"); (function($base, $parent_nesting) { var $Builders, self = $Builders = $module($base, 'Builders'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); self.$require("parser/builders/default") })($nesting[0], $nesting); 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); })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["parser/ruby23"] = 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; 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']); 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 def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $Ruby23(){}; var self = $Ruby23 = $klass($base, $super, 'Ruby23', $Ruby23); 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; def.builder = def.lexer = def.static_env = def.def_level = nil; Opal.defn(self, '$version', TMP_Ruby23_version_1 = function $$version() { var self = this; return 23 }, TMP_Ruby23_version_1.$$arity = 0); Opal.defn(self, '$default_encoding', TMP_Ruby23_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)); 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; 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));}, 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)); 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; 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));}, 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)); 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; 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));}, 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)); 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; 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));}, 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); 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_debug_parser', false); Opal.defn(self, '$_reduce_2', TMP_Ruby23__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); Opal.defn(self, '$_reduce_3', TMP_Ruby23__reduce_3_12 = function $$_reduce_3(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_3_12.$$arity = 3); Opal.defn(self, '$_reduce_4', TMP_Ruby23__reduce_4_13 = function $$_reduce_4(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_4_13.$$arity = 3); Opal.defn(self, '$_reduce_5', TMP_Ruby23__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); Opal.defn(self, '$_reduce_6', TMP_Ruby23__reduce_6_15 = function $$_reduce_6(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_6_15.$$arity = 3); Opal.defn(self, '$_reduce_8', TMP_Ruby23__reduce_8_16 = function $$_reduce_8(val, _values, result) { var self = this; result = self.builder.$preexe(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); return result; }, TMP_Ruby23__reduce_8_16.$$arity = 3); Opal.defn(self, '$_reduce_9', TMP_Ruby23__reduce_9_17 = function $$_reduce_9(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; }, TMP_Ruby23__reduce_9_17.$$arity = 3); Opal.defn(self, '$_reduce_10', TMP_Ruby23__reduce_10_18 = function $$_reduce_10(val, _values, result) { var self = this; result = self.builder.$compstmt(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_10_18.$$arity = 3); Opal.defn(self, '$_reduce_11', TMP_Ruby23__reduce_11_19 = function $$_reduce_11(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_11_19.$$arity = 3); Opal.defn(self, '$_reduce_12', TMP_Ruby23__reduce_12_20 = function $$_reduce_12(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_12_20.$$arity = 3); Opal.defn(self, '$_reduce_13', TMP_Ruby23__reduce_13_21 = function $$_reduce_13(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_13_21.$$arity = 3); Opal.defn(self, '$_reduce_14', TMP_Ruby23__reduce_14_22 = function $$_reduce_14(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_14_22.$$arity = 3); Opal.defn(self, '$_reduce_16', TMP_Ruby23__reduce_16_23 = function $$_reduce_16(val, _values, result) { var self = this; self.$diagnostic("error", "begin_in_method", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_16_23.$$arity = 3); Opal.defn(self, '$_reduce_17', TMP_Ruby23__reduce_17_24 = function $$_reduce_17(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; }, TMP_Ruby23__reduce_17_24.$$arity = 3); Opal.defn(self, '$_reduce_18', TMP_Ruby23__reduce_18_25 = function $$_reduce_18(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); Opal.defn(self, '$_reduce_19', TMP_Ruby23__reduce_19_26 = function $$_reduce_19(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); Opal.defn(self, '$_reduce_20', TMP_Ruby23__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.$back_ref(val['$[]'](2))); return result; }, TMP_Ruby23__reduce_20_27.$$arity = 3); Opal.defn(self, '$_reduce_21', TMP_Ruby23__reduce_21_28 = function $$_reduce_21(val, _values, result) { var self = this; self.$diagnostic("error", "nth_ref_alias", nil, val['$[]'](2)); return result; }, TMP_Ruby23__reduce_21_28.$$arity = 3); Opal.defn(self, '$_reduce_22', TMP_Ruby23__reduce_22_29 = function $$_reduce_22(val, _values, result) { var self = this; result = self.builder.$undef_method(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_22_29.$$arity = 3); Opal.defn(self, '$_reduce_23', TMP_Ruby23__reduce_23_30 = function $$_reduce_23(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); Opal.defn(self, '$_reduce_24', TMP_Ruby23__reduce_24_31 = function $$_reduce_24(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); Opal.defn(self, '$_reduce_25', TMP_Ruby23__reduce_25_32 = function $$_reduce_25(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); Opal.defn(self, '$_reduce_26', TMP_Ruby23__reduce_26_33 = function $$_reduce_26(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); Opal.defn(self, '$_reduce_27', TMP_Ruby23__reduce_27_34 = function $$_reduce_27(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); Opal.defn(self, '$_reduce_28', TMP_Ruby23__reduce_28_35 = function $$_reduce_28(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); Opal.defn(self, '$_reduce_30', TMP_Ruby23__reduce_30_36 = function $$_reduce_30(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); Opal.defn(self, '$_reduce_31', TMP_Ruby23__reduce_31_37 = function $$_reduce_31(val, _values, result) { var self = this; result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_31_37.$$arity = 3); Opal.defn(self, '$_reduce_32', TMP_Ruby23__reduce_32_38 = function $$_reduce_32(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_32_38.$$arity = 3); Opal.defn(self, '$_reduce_33', TMP_Ruby23__reduce_33_39 = function $$_reduce_33(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_33_39.$$arity = 3); Opal.defn(self, '$_reduce_34', TMP_Ruby23__reduce_34_40 = function $$_reduce_34(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_34_40.$$arity = 3); Opal.defn(self, '$_reduce_35', TMP_Ruby23__reduce_35_41 = function $$_reduce_35(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_35_41.$$arity = 3); Opal.defn(self, '$_reduce_36', TMP_Ruby23__reduce_36_42 = 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)); return result; }, TMP_Ruby23__reduce_36_42.$$arity = 3); Opal.defn(self, '$_reduce_37', TMP_Ruby23__reduce_37_43 = function $$_reduce_37(val, _values, result) { var self = this; self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_37_43.$$arity = 3); Opal.defn(self, '$_reduce_38', TMP_Ruby23__reduce_38_44 = function $$_reduce_38(val, _values, result) { var self = this; result = self.builder.$assign(val['$[]'](0), val['$[]'](1), self.builder.$array(nil, val['$[]'](2), nil)); return result; }, TMP_Ruby23__reduce_38_44.$$arity = 3); Opal.defn(self, '$_reduce_39', TMP_Ruby23__reduce_39_45 = function $$_reduce_39(val, _values, result) { var self = this; result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_39_45.$$arity = 3); Opal.defn(self, '$_reduce_41', TMP_Ruby23__reduce_41_46 = function $$_reduce_41(val, _values, result) { var self = this; result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_41_46.$$arity = 3); Opal.defn(self, '$_reduce_42', TMP_Ruby23__reduce_42_47 = function $$_reduce_42(val, _values, result) { var self = this; result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_42_47.$$arity = 3); Opal.defn(self, '$_reduce_44', TMP_Ruby23__reduce_44_48 = function $$_reduce_44(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); Opal.defn(self, '$_reduce_45', TMP_Ruby23__reduce_45_49 = function $$_reduce_45(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); Opal.defn(self, '$_reduce_46', TMP_Ruby23__reduce_46_50 = function $$_reduce_46(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); Opal.defn(self, '$_reduce_47', TMP_Ruby23__reduce_47_51 = function $$_reduce_47(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); Opal.defn(self, '$_reduce_53', TMP_Ruby23__reduce_53_52 = function $$_reduce_53(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); Opal.defn(self, '$_reduce_54', TMP_Ruby23__reduce_54_53 = function $$_reduce_54(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; }, TMP_Ruby23__reduce_54_53.$$arity = 3); Opal.defn(self, '$_reduce_55', TMP_Ruby23__reduce_55_54 = function $$_reduce_55(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; self.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_55_54.$$arity = 3); Opal.defn(self, '$_reduce_57', TMP_Ruby23__reduce_57_55 = function $$_reduce_57(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); Opal.defn(self, '$_reduce_58', TMP_Ruby23__reduce_58_56 = function $$_reduce_58(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; }, TMP_Ruby23__reduce_58_56.$$arity = 3); Opal.defn(self, '$_reduce_59', TMP_Ruby23__reduce_59_57 = function $$_reduce_59(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); Opal.defn(self, '$_reduce_60', TMP_Ruby23__reduce_60_58 = function $$_reduce_60(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; }, TMP_Ruby23__reduce_60_58.$$arity = 3); Opal.defn(self, '$_reduce_61', TMP_Ruby23__reduce_61_59 = function $$_reduce_61(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); Opal.defn(self, '$_reduce_62', TMP_Ruby23__reduce_62_60 = function $$_reduce_62(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; }, TMP_Ruby23__reduce_62_60.$$arity = 3); Opal.defn(self, '$_reduce_63', TMP_Ruby23__reduce_63_61 = function $$_reduce_63(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); Opal.defn(self, '$_reduce_64', TMP_Ruby23__reduce_64_62 = function $$_reduce_64(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); Opal.defn(self, '$_reduce_65', TMP_Ruby23__reduce_65_63 = function $$_reduce_65(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); Opal.defn(self, '$_reduce_66', TMP_Ruby23__reduce_66_64 = function $$_reduce_66(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); Opal.defn(self, '$_reduce_67', TMP_Ruby23__reduce_67_65 = function $$_reduce_67(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); Opal.defn(self, '$_reduce_68', TMP_Ruby23__reduce_68_66 = function $$_reduce_68(val, _values, result) { var self = this; result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); return result; }, TMP_Ruby23__reduce_68_66.$$arity = 3); Opal.defn(self, '$_reduce_69', TMP_Ruby23__reduce_69_67 = function $$_reduce_69(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); Opal.defn(self, '$_reduce_70', TMP_Ruby23__reduce_70_68 = function $$_reduce_70(val, _values, result) { var self = this; result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); return result; }, TMP_Ruby23__reduce_70_68.$$arity = 3); Opal.defn(self, '$_reduce_71', TMP_Ruby23__reduce_71_69 = function $$_reduce_71(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); Opal.defn(self, '$_reduce_73', TMP_Ruby23__reduce_73_70 = function $$_reduce_73(val, _values, result) { var self = this; result = val['$[]'](0).$push(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_73_70.$$arity = 3); Opal.defn(self, '$_reduce_74', TMP_Ruby23__reduce_74_71 = function $$_reduce_74(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); Opal.defn(self, '$_reduce_75', TMP_Ruby23__reduce_75_72 = function $$_reduce_75(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); Opal.defn(self, '$_reduce_76', TMP_Ruby23__reduce_76_73 = function $$_reduce_76(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))); return result; }, TMP_Ruby23__reduce_76_73.$$arity = 3); Opal.defn(self, '$_reduce_77', TMP_Ruby23__reduce_77_74 = function $$_reduce_77(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); Opal.defn(self, '$_reduce_78', TMP_Ruby23__reduce_78_75 = function $$_reduce_78(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; }, TMP_Ruby23__reduce_78_75.$$arity = 3); Opal.defn(self, '$_reduce_79', TMP_Ruby23__reduce_79_76 = function $$_reduce_79(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); Opal.defn(self, '$_reduce_80', TMP_Ruby23__reduce_80_77 = function $$_reduce_80(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0))]; return result; }, TMP_Ruby23__reduce_80_77.$$arity = 3); Opal.defn(self, '$_reduce_81', TMP_Ruby23__reduce_81_78 = function $$_reduce_81(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); Opal.defn(self, '$_reduce_83', TMP_Ruby23__reduce_83_79 = function $$_reduce_83(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); Opal.defn(self, '$_reduce_84', TMP_Ruby23__reduce_84_80 = function $$_reduce_84(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_84_80.$$arity = 3); Opal.defn(self, '$_reduce_85', TMP_Ruby23__reduce_85_81 = function $$_reduce_85(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_85_81.$$arity = 3); Opal.defn(self, '$_reduce_86', TMP_Ruby23__reduce_86_82 = function $$_reduce_86(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_86_82.$$arity = 3); Opal.defn(self, '$_reduce_87', TMP_Ruby23__reduce_87_83 = function $$_reduce_87(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_87_83.$$arity = 3); Opal.defn(self, '$_reduce_88', TMP_Ruby23__reduce_88_84 = function $$_reduce_88(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_88_84.$$arity = 3); Opal.defn(self, '$_reduce_89', TMP_Ruby23__reduce_89_85 = function $$_reduce_89(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_89_85.$$arity = 3); Opal.defn(self, '$_reduce_90', TMP_Ruby23__reduce_90_86 = function $$_reduce_90(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); Opal.defn(self, '$_reduce_91', TMP_Ruby23__reduce_91_87 = function $$_reduce_91(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); Opal.defn(self, '$_reduce_92', TMP_Ruby23__reduce_92_88 = function $$_reduce_92(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); Opal.defn(self, '$_reduce_93', TMP_Ruby23__reduce_93_89 = function $$_reduce_93(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); Opal.defn(self, '$_reduce_94', TMP_Ruby23__reduce_94_90 = function $$_reduce_94(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); Opal.defn(self, '$_reduce_95', TMP_Ruby23__reduce_95_91 = function $$_reduce_95(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); Opal.defn(self, '$_reduce_96', TMP_Ruby23__reduce_96_92 = function $$_reduce_96(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_96_92.$$arity = 3); Opal.defn(self, '$_reduce_97', TMP_Ruby23__reduce_97_93 = function $$_reduce_97(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_97_93.$$arity = 3); Opal.defn(self, '$_reduce_98', TMP_Ruby23__reduce_98_94 = function $$_reduce_98(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_98_94.$$arity = 3); Opal.defn(self, '$_reduce_99', TMP_Ruby23__reduce_99_95 = function $$_reduce_99(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); Opal.defn(self, '$_reduce_100', TMP_Ruby23__reduce_100_96 = function $$_reduce_100(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); Opal.defn(self, '$_reduce_101', TMP_Ruby23__reduce_101_97 = function $$_reduce_101(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); Opal.defn(self, '$_reduce_102', TMP_Ruby23__reduce_102_98 = function $$_reduce_102(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); Opal.defn(self, '$_reduce_103', TMP_Ruby23__reduce_103_99 = function $$_reduce_103(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); Opal.defn(self, '$_reduce_104', TMP_Ruby23__reduce_104_100 = function $$_reduce_104(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); Opal.defn(self, '$_reduce_105', TMP_Ruby23__reduce_105_101 = function $$_reduce_105(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_105_101.$$arity = 3); Opal.defn(self, '$_reduce_106', TMP_Ruby23__reduce_106_102 = function $$_reduce_106(val, _values, result) { var self = this; self.$diagnostic("error", "module_name_const", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_106_102.$$arity = 3); Opal.defn(self, '$_reduce_108', TMP_Ruby23__reduce_108_103 = function $$_reduce_108(val, _values, result) { var self = this; result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_108_103.$$arity = 3); Opal.defn(self, '$_reduce_109', TMP_Ruby23__reduce_109_104 = function $$_reduce_109(val, _values, result) { var self = this; result = self.builder.$const(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_109_104.$$arity = 3); Opal.defn(self, '$_reduce_110', TMP_Ruby23__reduce_110_105 = function $$_reduce_110(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); Opal.defn(self, '$_reduce_116', TMP_Ruby23__reduce_116_106 = function $$_reduce_116(val, _values, result) { var self = this; result = self.builder.$symbol(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_116_106.$$arity = 3); Opal.defn(self, '$_reduce_120', TMP_Ruby23__reduce_120_107 = function $$_reduce_120(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_120_107.$$arity = 3); Opal.defn(self, '$_reduce_121', TMP_Ruby23__reduce_121_108 = function $$_reduce_121(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; }, TMP_Ruby23__reduce_121_108.$$arity = 3); Opal.defn(self, '$_reduce_122', TMP_Ruby23__reduce_122_109 = function $$_reduce_122(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](3)); return result; }, TMP_Ruby23__reduce_122_109.$$arity = 3); Opal.defn(self, '$_reduce_194', TMP_Ruby23__reduce_194_110 = function $$_reduce_194(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); 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) { 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); Opal.defn(self, '$_reduce_198', TMP_Ruby23__reduce_198_114 = function $$_reduce_198(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); Opal.defn(self, '$_reduce_199', TMP_Ruby23__reduce_199_115 = function $$_reduce_199(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); Opal.defn(self, '$_reduce_200', TMP_Ruby23__reduce_200_116 = function $$_reduce_200(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); Opal.defn(self, '$_reduce_201', TMP_Ruby23__reduce_201_117 = function $$_reduce_201(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); Opal.defn(self, '$_reduce_202', TMP_Ruby23__reduce_202_118 = function $$_reduce_202(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); Opal.defn(self, '$_reduce_203', TMP_Ruby23__reduce_203_119 = function $$_reduce_203(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); Opal.defn(self, '$_reduce_204', TMP_Ruby23__reduce_204_120 = function $$_reduce_204(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); Opal.defn(self, '$_reduce_205', TMP_Ruby23__reduce_205_121 = function $$_reduce_205(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); Opal.defn(self, '$_reduce_206', TMP_Ruby23__reduce_206_122 = function $$_reduce_206(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); Opal.defn(self, '$_reduce_207', TMP_Ruby23__reduce_207_123 = function $$_reduce_207(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); Opal.defn(self, '$_reduce_208', TMP_Ruby23__reduce_208_124 = function $$_reduce_208(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); Opal.defn(self, '$_reduce_209', TMP_Ruby23__reduce_209_125 = function $$_reduce_209(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); Opal.defn(self, '$_reduce_210', TMP_Ruby23__reduce_210_126 = function $$_reduce_210(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); Opal.defn(self, '$_reduce_211', TMP_Ruby23__reduce_211_127 = function $$_reduce_211(val, _values, result) { var self = this; result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_211_127.$$arity = 3); Opal.defn(self, '$_reduce_212', TMP_Ruby23__reduce_212_128 = function $$_reduce_212(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); Opal.defn(self, '$_reduce_213', TMP_Ruby23__reduce_213_129 = function $$_reduce_213(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)); return result; }, TMP_Ruby23__reduce_214_130.$$arity = 3); Opal.defn(self, '$_reduce_215', TMP_Ruby23__reduce_215_131 = function $$_reduce_215(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); Opal.defn(self, '$_reduce_220', TMP_Ruby23__reduce_220_136 = function $$_reduce_220(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); Opal.defn(self, '$_reduce_221', TMP_Ruby23__reduce_221_137 = function $$_reduce_221(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); Opal.defn(self, '$_reduce_222', TMP_Ruby23__reduce_222_138 = 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_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)); return result; }, TMP_Ruby23__reduce_227_143.$$arity = 3); Opal.defn(self, '$_reduce_228', TMP_Ruby23__reduce_228_144 = 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_228_144.$$arity = 3); Opal.defn(self, '$_reduce_229', TMP_Ruby23__reduce_229_145 = function $$_reduce_229(val, _values, result) { var self = this; result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); return result; }, TMP_Ruby23__reduce_229_145.$$arity = 3); Opal.defn(self, '$_reduce_230', TMP_Ruby23__reduce_230_146 = function $$_reduce_230(val, _values, result) { var self = this; result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_230_146.$$arity = 3); Opal.defn(self, '$_reduce_231', TMP_Ruby23__reduce_231_147 = 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_231_147.$$arity = 3); Opal.defn(self, '$_reduce_232', TMP_Ruby23__reduce_232_148 = 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_232_148.$$arity = 3); Opal.defn(self, '$_reduce_233', TMP_Ruby23__reduce_233_149 = function $$_reduce_233(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)); return result; }, TMP_Ruby23__reduce_236_152.$$arity = 3); Opal.defn(self, '$_reduce_241', TMP_Ruby23__reduce_241_153 = function $$_reduce_241(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); return result; }, TMP_Ruby23__reduce_241_153.$$arity = 3); Opal.defn(self, '$_reduce_242', TMP_Ruby23__reduce_242_154 = function $$_reduce_242(val, _values, result) { var self = this; result = [self.builder.$associate(nil, val['$[]'](0), nil)]; return result; }, TMP_Ruby23__reduce_242_154.$$arity = 3); Opal.defn(self, '$_reduce_243', TMP_Ruby23__reduce_243_155 = function $$_reduce_243(val, _values, result) { var self = this; result = val; return result; }, TMP_Ruby23__reduce_243_155.$$arity = 3); Opal.defn(self, '$_reduce_244', TMP_Ruby23__reduce_244_156 = function $$_reduce_244(val, _values, result) { var self = this; result = [nil, [], nil]; return result; }, TMP_Ruby23__reduce_244_156.$$arity = 3); Opal.defn(self, '$_reduce_246', TMP_Ruby23__reduce_246_157 = function $$_reduce_246(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_246_157.$$arity = 3); Opal.defn(self, '$_reduce_249', TMP_Ruby23__reduce_249_158 = function $$_reduce_249(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); Opal.defn(self, '$_reduce_250', TMP_Ruby23__reduce_250_159 = function $$_reduce_250(val, _values, result) { var self = this; result = [self.builder.$associate(nil, val['$[]'](0), nil)]; return result; }, TMP_Ruby23__reduce_250_159.$$arity = 3); Opal.defn(self, '$_reduce_251', TMP_Ruby23__reduce_251_160 = function $$_reduce_251(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_251_160.$$arity = 3); Opal.defn(self, '$_reduce_252', TMP_Ruby23__reduce_252_161 = function $$_reduce_252(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_252_161.$$arity = 3); Opal.defn(self, '$_reduce_253', TMP_Ruby23__reduce_253_162 = function $$_reduce_253(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); Opal.defn(self, '$_reduce_254', TMP_Ruby23__reduce_254_163 = function $$_reduce_254(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; }, TMP_Ruby23__reduce_254_163.$$arity = 3); Opal.defn(self, '$_reduce_255', TMP_Ruby23__reduce_255_164 = function $$_reduce_255(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_255_164.$$arity = 3); Opal.defn(self, '$_reduce_256', TMP_Ruby23__reduce_256_165 = function $$_reduce_256(val, _values, result) { var self = this; result = self.lexer.$cmdarg().$dup(); self.lexer.$cmdarg().$push(true); return result; }, TMP_Ruby23__reduce_256_165.$$arity = 3); Opal.defn(self, '$_reduce_257', TMP_Ruby23__reduce_257_166 = function $$_reduce_257(val, _values, result) { var self = this, $writer = nil; $writer = [val['$[]'](0)]; $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_257_166.$$arity = 3); Opal.defn(self, '$_reduce_258', TMP_Ruby23__reduce_258_167 = function $$_reduce_258(val, _values, result) { var self = this; result = self.builder.$block_pass(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_258_167.$$arity = 3); Opal.defn(self, '$_reduce_259', TMP_Ruby23__reduce_259_168 = function $$_reduce_259(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_259_168.$$arity = 3); Opal.defn(self, '$_reduce_260', TMP_Ruby23__reduce_260_169 = function $$_reduce_260(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_260_169.$$arity = 3); Opal.defn(self, '$_reduce_261', TMP_Ruby23__reduce_261_170 = function $$_reduce_261(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_261_170.$$arity = 3); Opal.defn(self, '$_reduce_262', TMP_Ruby23__reduce_262_171 = function $$_reduce_262(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; }, TMP_Ruby23__reduce_262_171.$$arity = 3); Opal.defn(self, '$_reduce_263', TMP_Ruby23__reduce_263_172 = function $$_reduce_263(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_263_172.$$arity = 3); Opal.defn(self, '$_reduce_264', TMP_Ruby23__reduce_264_173 = function $$_reduce_264(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); Opal.defn(self, '$_reduce_265', TMP_Ruby23__reduce_265_174 = function $$_reduce_265(val, _values, result) { var self = this; result = self.builder.$array(nil, val['$[]'](0), nil); return result; }, TMP_Ruby23__reduce_265_174.$$arity = 3); Opal.defn(self, '$_reduce_267', TMP_Ruby23__reduce_267_175 = function $$_reduce_267(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_267_175.$$arity = 3); Opal.defn(self, '$_reduce_268', TMP_Ruby23__reduce_268_176 = function $$_reduce_268(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); Opal.defn(self, '$_reduce_269', TMP_Ruby23__reduce_269_177 = function $$_reduce_269(val, _values, result) { var self = this; result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; return result; }, TMP_Ruby23__reduce_269_177.$$arity = 3); Opal.defn(self, '$_reduce_280', TMP_Ruby23__reduce_280_178 = function $$_reduce_280(val, _values, result) { var self = this; result = self.builder.$call_method(nil, nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_280_178.$$arity = 3); Opal.defn(self, '$_reduce_281', TMP_Ruby23__reduce_281_179 = function $$_reduce_281(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)); return result; }, TMP_Ruby23__reduce_282_180.$$arity = 3); Opal.defn(self, '$_reduce_283', TMP_Ruby23__reduce_283_181 = function $$_reduce_283(val, _values, result) { var self = this; result = self.lexer.$cmdarg().$dup(); self.lexer.$cmdarg().$clear(); return result; }, TMP_Ruby23__reduce_283_181.$$arity = 3); Opal.defn(self, '$_reduce_284', TMP_Ruby23__reduce_284_182 = function $$_reduce_284(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; }, TMP_Ruby23__reduce_284_182.$$arity = 3); Opal.defn(self, '$_reduce_285', TMP_Ruby23__reduce_285_183 = function $$_reduce_285(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(val['$[]'](0), val['$[]'](2), val['$[]'](5)); return result; }, TMP_Ruby23__reduce_285_183.$$arity = 3); Opal.defn(self, '$_reduce_286', TMP_Ruby23__reduce_286_184 = function $$_reduce_286(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; }, TMP_Ruby23__reduce_286_184.$$arity = 3); Opal.defn(self, '$_reduce_287', TMP_Ruby23__reduce_287_185 = function $$_reduce_287(val, _values, result) { var self = this; result = self.builder.$begin(val['$[]'](0), nil, val['$[]'](3)); return result; }, TMP_Ruby23__reduce_287_185.$$arity = 3); Opal.defn(self, '$_reduce_288', TMP_Ruby23__reduce_288_186 = function $$_reduce_288(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); Opal.defn(self, '$_reduce_289', TMP_Ruby23__reduce_289_187 = function $$_reduce_289(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); Opal.defn(self, '$_reduce_290', TMP_Ruby23__reduce_290_188 = function $$_reduce_290(val, _values, result) { var self = this; result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_290_188.$$arity = 3); Opal.defn(self, '$_reduce_291', TMP_Ruby23__reduce_291_189 = function $$_reduce_291(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); Opal.defn(self, '$_reduce_292', TMP_Ruby23__reduce_292_190 = function $$_reduce_292(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); Opal.defn(self, '$_reduce_293', TMP_Ruby23__reduce_293_191 = function $$_reduce_293(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("return", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_293_191.$$arity = 3); Opal.defn(self, '$_reduce_294', TMP_Ruby23__reduce_294_192 = function $$_reduce_294(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); Opal.defn(self, '$_reduce_295', TMP_Ruby23__reduce_295_193 = function $$_reduce_295(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); Opal.defn(self, '$_reduce_296', TMP_Ruby23__reduce_296_194 = function $$_reduce_296(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("yield", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_296_194.$$arity = 3); Opal.defn(self, '$_reduce_297', TMP_Ruby23__reduce_297_195 = function $$_reduce_297(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); Opal.defn(self, '$_reduce_298', TMP_Ruby23__reduce_298_196 = function $$_reduce_298(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); Opal.defn(self, '$_reduce_299', TMP_Ruby23__reduce_299_197 = function $$_reduce_299(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); Opal.defn(self, '$_reduce_300', TMP_Ruby23__reduce_300_198 = function $$_reduce_300(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; }, TMP_Ruby23__reduce_300_198.$$arity = 3); Opal.defn(self, '$_reduce_302', TMP_Ruby23__reduce_302_199 = function $$_reduce_302(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); Opal.defn(self, '$_reduce_303', TMP_Ruby23__reduce_303_200 = function $$_reduce_303(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; }, TMP_Ruby23__reduce_303_200.$$arity = 3); Opal.defn(self, '$_reduce_304', TMP_Ruby23__reduce_304_201 = function $$_reduce_304(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); Opal.defn(self, '$_reduce_305', TMP_Ruby23__reduce_305_202 = function $$_reduce_305(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); Opal.defn(self, '$_reduce_308', TMP_Ruby23__reduce_308_205 = function $$_reduce_308(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(); return result; }, TMP_Ruby23__reduce_310_207.$$arity = 3); Opal.defn(self, '$_reduce_311', TMP_Ruby23__reduce_311_208 = function $$_reduce_311(val, _values, result) { var self = this; result = self.builder.$loop("until", val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](5), val['$[]'](6)); return result; }, TMP_Ruby23__reduce_311_208.$$arity = 3); Opal.defn(self, '$_reduce_312', TMP_Ruby23__reduce_312_209 = function $$_reduce_312(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); Opal.defn(self, '$_reduce_313', TMP_Ruby23__reduce_313_210 = function $$_reduce_313(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); Opal.defn(self, '$_reduce_314', TMP_Ruby23__reduce_314_211 = function $$_reduce_314(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)); return result; }, TMP_Ruby23__reduce_316_213.$$arity = 3); Opal.defn(self, '$_reduce_317', TMP_Ruby23__reduce_317_214 = function $$_reduce_317(val, _values, result) { var self = this; self.static_env.$extend_static(); self.lexer.$push_cmdarg(); return result; }, TMP_Ruby23__reduce_317_214.$$arity = 3); Opal.defn(self, '$_reduce_318', TMP_Ruby23__reduce_318_215 = function $$_reduce_318(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))}; $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.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_318_215.$$arity = 3); Opal.defn(self, '$_reduce_319', TMP_Ruby23__reduce_319_216 = function $$_reduce_319(val, _values, result) { var self = this; result = self.def_level; self.def_level = 0; self.static_env.$extend_static(); self.lexer.$push_cmdarg(); return result; }, TMP_Ruby23__reduce_319_216.$$arity = 3); Opal.defn(self, '$_reduce_320', TMP_Ruby23__reduce_320_217 = function $$_reduce_320(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.static_env.$unextend(); self.def_level = val['$[]'](4); return result; }, TMP_Ruby23__reduce_320_217.$$arity = 3); Opal.defn(self, '$_reduce_321', TMP_Ruby23__reduce_321_218 = function $$_reduce_321(val, _values, result) { var self = this; self.static_env.$extend_static(); self.lexer.$push_cmdarg(); return result; }, TMP_Ruby23__reduce_321_218.$$arity = 3); Opal.defn(self, '$_reduce_322', TMP_Ruby23__reduce_322_219 = function $$_reduce_322(val, _values, result) { var self = this; if ($truthy(self['$in_def?']())) { 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.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_322_219.$$arity = 3); Opal.defn(self, '$_reduce_323', TMP_Ruby23__reduce_323_220 = function $$_reduce_323(val, _values, result) { var self = this; self.def_level = $rb_plus(self.def_level, 1); self.static_env.$extend_static(); self.lexer.$push_cmdarg(); return result; }, TMP_Ruby23__reduce_323_220.$$arity = 3); Opal.defn(self, '$_reduce_324', TMP_Ruby23__reduce_324_221 = function $$_reduce_324(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.static_env.$unextend(); self.def_level = $rb_minus(self.def_level, 1); return result; }, TMP_Ruby23__reduce_324_221.$$arity = 3); Opal.defn(self, '$_reduce_325', TMP_Ruby23__reduce_325_222 = function $$_reduce_325(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; }, TMP_Ruby23__reduce_325_222.$$arity = 3); Opal.defn(self, '$_reduce_326', TMP_Ruby23__reduce_326_223 = function $$_reduce_326(val, _values, result) { var self = this; self.def_level = $rb_plus(self.def_level, 1); self.static_env.$extend_static(); self.lexer.$push_cmdarg(); return result; }, TMP_Ruby23__reduce_326_223.$$arity = 3); Opal.defn(self, '$_reduce_327', TMP_Ruby23__reduce_327_224 = function $$_reduce_327(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.static_env.$unextend(); self.def_level = $rb_minus(self.def_level, 1); return result; }, TMP_Ruby23__reduce_327_224.$$arity = 3); Opal.defn(self, '$_reduce_328', TMP_Ruby23__reduce_328_225 = function $$_reduce_328(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("break", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_328_225.$$arity = 3); Opal.defn(self, '$_reduce_329', TMP_Ruby23__reduce_329_226 = function $$_reduce_329(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("next", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_329_226.$$arity = 3); Opal.defn(self, '$_reduce_330', TMP_Ruby23__reduce_330_227 = function $$_reduce_330(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("redo", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_330_227.$$arity = 3); Opal.defn(self, '$_reduce_331', TMP_Ruby23__reduce_331_228 = function $$_reduce_331(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("retry", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_331_228.$$arity = 3); Opal.defn(self, '$_reduce_335', TMP_Ruby23__reduce_335_229 = function $$_reduce_335(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_335_229.$$arity = 3); Opal.defn(self, '$_reduce_339', TMP_Ruby23__reduce_339_230 = function $$_reduce_339(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); Opal.defn(self, '$_reduce_341', TMP_Ruby23__reduce_341_231 = function $$_reduce_341(val, _values, result) { var self = this; result = val; return result; }, TMP_Ruby23__reduce_341_231.$$arity = 3); Opal.defn(self, '$_reduce_344', TMP_Ruby23__reduce_344_232 = function $$_reduce_344(val, _values, result) { var self = this; result = self.builder.$arg(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_344_232.$$arity = 3); Opal.defn(self, '$_reduce_345', TMP_Ruby23__reduce_345_233 = function $$_reduce_345(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); Opal.defn(self, '$_reduce_346', TMP_Ruby23__reduce_346_234 = function $$_reduce_346(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_346_234.$$arity = 3); Opal.defn(self, '$_reduce_347', TMP_Ruby23__reduce_347_235 = function $$_reduce_347(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_347_235.$$arity = 3); Opal.defn(self, '$_reduce_349', TMP_Ruby23__reduce_349_236 = function $$_reduce_349(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); Opal.defn(self, '$_reduce_350', TMP_Ruby23__reduce_350_237 = function $$_reduce_350(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); Opal.defn(self, '$_reduce_351', TMP_Ruby23__reduce_351_238 = function $$_reduce_351(val, _values, result) { var self = this; result = val['$[]'](0).$push(self.builder.$restarg(val['$[]'](2))); return result; }, TMP_Ruby23__reduce_351_238.$$arity = 3); Opal.defn(self, '$_reduce_352', TMP_Ruby23__reduce_352_239 = function $$_reduce_352(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); Opal.defn(self, '$_reduce_353', TMP_Ruby23__reduce_353_240 = function $$_reduce_353(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))]; return result; }, TMP_Ruby23__reduce_353_240.$$arity = 3); Opal.defn(self, '$_reduce_354', TMP_Ruby23__reduce_354_241 = function $$_reduce_354(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); Opal.defn(self, '$_reduce_355', TMP_Ruby23__reduce_355_242 = function $$_reduce_355(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0))]; return result; }, TMP_Ruby23__reduce_355_242.$$arity = 3); Opal.defn(self, '$_reduce_356', TMP_Ruby23__reduce_356_243 = function $$_reduce_356(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); Opal.defn(self, '$_reduce_357', TMP_Ruby23__reduce_357_244 = function $$_reduce_357(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_357_244.$$arity = 3); Opal.defn(self, '$_reduce_358', TMP_Ruby23__reduce_358_245 = function $$_reduce_358(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_358_245.$$arity = 3); Opal.defn(self, '$_reduce_359', TMP_Ruby23__reduce_359_246 = function $$_reduce_359(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_359_246.$$arity = 3); Opal.defn(self, '$_reduce_360', TMP_Ruby23__reduce_360_247 = function $$_reduce_360(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_360_247.$$arity = 3); Opal.defn(self, '$_reduce_361', TMP_Ruby23__reduce_361_248 = function $$_reduce_361(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_361_248.$$arity = 3); Opal.defn(self, '$_reduce_362', TMP_Ruby23__reduce_362_249 = function $$_reduce_362(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_362_249.$$arity = 3); Opal.defn(self, '$_reduce_363', TMP_Ruby23__reduce_363_250 = function $$_reduce_363(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); Opal.defn(self, '$_reduce_364', TMP_Ruby23__reduce_364_251 = function $$_reduce_364(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); Opal.defn(self, '$_reduce_365', TMP_Ruby23__reduce_365_252 = function $$_reduce_365(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_365_252.$$arity = 3); Opal.defn(self, '$_reduce_366', TMP_Ruby23__reduce_366_253 = function $$_reduce_366(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); Opal.defn(self, '$_reduce_367', TMP_Ruby23__reduce_367_254 = function $$_reduce_367(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_367_254.$$arity = 3); Opal.defn(self, '$_reduce_369', TMP_Ruby23__reduce_369_255 = function $$_reduce_369(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); Opal.defn(self, '$_reduce_370', TMP_Ruby23__reduce_370_256 = function $$_reduce_370(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; }, TMP_Ruby23__reduce_370_256.$$arity = 3); Opal.defn(self, '$_reduce_371', TMP_Ruby23__reduce_371_257 = function $$_reduce_371(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_371_257.$$arity = 3); Opal.defn(self, '$_reduce_372', TMP_Ruby23__reduce_372_258 = function $$_reduce_372(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); Opal.defn(self, '$_reduce_373', TMP_Ruby23__reduce_373_259 = function $$_reduce_373(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_373_259.$$arity = 3); Opal.defn(self, '$_reduce_374', TMP_Ruby23__reduce_374_260 = function $$_reduce_374(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_374_260.$$arity = 3); Opal.defn(self, '$_reduce_375', TMP_Ruby23__reduce_375_261 = function $$_reduce_375(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_375_261.$$arity = 3); Opal.defn(self, '$_reduce_376', TMP_Ruby23__reduce_376_262 = function $$_reduce_376(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_376_262.$$arity = 3); Opal.defn(self, '$_reduce_378', TMP_Ruby23__reduce_378_263 = function $$_reduce_378(val, _values, result) { var self = this; result = self.builder.$args(nil, [], nil); return result; }, TMP_Ruby23__reduce_378_263.$$arity = 3); Opal.defn(self, '$_reduce_379', TMP_Ruby23__reduce_379_264 = function $$_reduce_379(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; }, TMP_Ruby23__reduce_379_264.$$arity = 3); Opal.defn(self, '$_reduce_380', TMP_Ruby23__reduce_380_265 = function $$_reduce_380(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); Opal.defn(self, '$_reduce_381', TMP_Ruby23__reduce_381_266 = function $$_reduce_381(val, _values, result) { var self = this; result = self.builder.$args(val['$[]'](0), [], val['$[]'](0)); return result; }, TMP_Ruby23__reduce_381_266.$$arity = 3); Opal.defn(self, '$_reduce_382', TMP_Ruby23__reduce_382_267 = function $$_reduce_382(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); Opal.defn(self, '$_reduce_383', TMP_Ruby23__reduce_383_268 = function $$_reduce_383(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_383_268.$$arity = 3); Opal.defn(self, '$_reduce_384', TMP_Ruby23__reduce_384_269 = function $$_reduce_384(val, _values, result) { var self = this; result = val['$[]'](2); return result; }, TMP_Ruby23__reduce_384_269.$$arity = 3); Opal.defn(self, '$_reduce_385', TMP_Ruby23__reduce_385_270 = function $$_reduce_385(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_385_270.$$arity = 3); Opal.defn(self, '$_reduce_386', TMP_Ruby23__reduce_386_271 = function $$_reduce_386(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_386_271.$$arity = 3); Opal.defn(self, '$_reduce_387', TMP_Ruby23__reduce_387_272 = function $$_reduce_387(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); Opal.defn(self, '$_reduce_389', TMP_Ruby23__reduce_389_273 = function $$_reduce_389(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; }, TMP_Ruby23__reduce_389_273.$$arity = 3); Opal.defn(self, '$_reduce_390', TMP_Ruby23__reduce_390_274 = function $$_reduce_390(val, _values, result) { var self = this; result = self.lexer.$cmdarg().$dup(); self.lexer.$cmdarg().$clear(); return result; }, TMP_Ruby23__reduce_390_274.$$arity = 3); Opal.defn(self, '$_reduce_391', TMP_Ruby23__reduce_391_275 = function $$_reduce_391(val, _values, result) { var self = this, $writer = nil; $writer = [val['$[]'](2)]; $send(self.lexer, 'cmdarg=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.lexer.$cmdarg().$lexpop(); result = [val['$[]'](1), val['$[]'](3)]; self.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_391_275.$$arity = 3); Opal.defn(self, '$_reduce_392', TMP_Ruby23__reduce_392_276 = function $$_reduce_392(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); Opal.defn(self, '$_reduce_393', TMP_Ruby23__reduce_393_277 = function $$_reduce_393(val, _values, result) { var self = this; result = self.builder.$args(nil, val['$[]'](0), nil); return result; }, TMP_Ruby23__reduce_393_277.$$arity = 3); Opal.defn(self, '$_reduce_394', TMP_Ruby23__reduce_394_278 = function $$_reduce_394(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1), val['$[]'](2)]; return result; }, TMP_Ruby23__reduce_394_278.$$arity = 3); Opal.defn(self, '$_reduce_395', TMP_Ruby23__reduce_395_279 = function $$_reduce_395(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1), val['$[]'](2)]; return result; }, TMP_Ruby23__reduce_395_279.$$arity = 3); Opal.defn(self, '$_reduce_396', TMP_Ruby23__reduce_396_280 = function $$_reduce_396(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; }, TMP_Ruby23__reduce_396_280.$$arity = 3); Opal.defn(self, '$_reduce_397', TMP_Ruby23__reduce_397_281 = function $$_reduce_397(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; self.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_397_281.$$arity = 3); Opal.defn(self, '$_reduce_398', TMP_Ruby23__reduce_398_282 = function $$_reduce_398(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); Opal.defn(self, '$_reduce_399', TMP_Ruby23__reduce_399_283 = function $$_reduce_399(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); Opal.defn(self, '$_reduce_400', TMP_Ruby23__reduce_400_284 = function $$_reduce_400(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; }, TMP_Ruby23__reduce_400_284.$$arity = 3); Opal.defn(self, '$_reduce_401', TMP_Ruby23__reduce_401_285 = function $$_reduce_401(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; }, TMP_Ruby23__reduce_401_285.$$arity = 3); Opal.defn(self, '$_reduce_402', TMP_Ruby23__reduce_402_286 = function $$_reduce_402(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); Opal.defn(self, '$_reduce_403', TMP_Ruby23__reduce_403_287 = 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_403_287.$$arity = 3); Opal.defn(self, '$_reduce_404', TMP_Ruby23__reduce_404_288 = function $$_reduce_404(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); Opal.defn(self, '$_reduce_405', TMP_Ruby23__reduce_405_289 = function $$_reduce_405(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); Opal.defn(self, '$_reduce_406', TMP_Ruby23__reduce_406_290 = function $$_reduce_406(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); Opal.defn(self, '$_reduce_407', TMP_Ruby23__reduce_407_291 = function $$_reduce_407(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); Opal.defn(self, '$_reduce_408', TMP_Ruby23__reduce_408_292 = function $$_reduce_408(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); Opal.defn(self, '$_reduce_409', TMP_Ruby23__reduce_409_293 = function $$_reduce_409(val, _values, result) { var self = this; result = self.builder.$keyword_cmd("zsuper", val['$[]'](0)); return result; }, TMP_Ruby23__reduce_409_293.$$arity = 3); Opal.defn(self, '$_reduce_410', TMP_Ruby23__reduce_410_294 = function $$_reduce_410(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); Opal.defn(self, '$_reduce_411', TMP_Ruby23__reduce_411_295 = function $$_reduce_411(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; }, TMP_Ruby23__reduce_411_295.$$arity = 3); Opal.defn(self, '$_reduce_412', TMP_Ruby23__reduce_412_296 = function $$_reduce_412(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; self.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_412_296.$$arity = 3); Opal.defn(self, '$_reduce_413', TMP_Ruby23__reduce_413_297 = function $$_reduce_413(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); return result; }, TMP_Ruby23__reduce_413_297.$$arity = 3); Opal.defn(self, '$_reduce_414', TMP_Ruby23__reduce_414_298 = function $$_reduce_414(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3), val['$[]'](4)]; self.static_env.$unextend(); return result; }, TMP_Ruby23__reduce_414_298.$$arity = 3); Opal.defn(self, '$_reduce_415', TMP_Ruby23__reduce_415_299 = function $$_reduce_415(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); Opal.defn(self, '$_reduce_416', TMP_Ruby23__reduce_416_300 = function $$_reduce_416(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_416_300.$$arity = 3); Opal.defn(self, '$_reduce_418', TMP_Ruby23__reduce_418_301 = function $$_reduce_418(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; }, TMP_Ruby23__reduce_418_301.$$arity = 3); Opal.defn(self, '$_reduce_419', TMP_Ruby23__reduce_419_302 = function $$_reduce_419(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_419_302.$$arity = 3); Opal.defn(self, '$_reduce_420', TMP_Ruby23__reduce_420_303 = function $$_reduce_420(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_420_303.$$arity = 3); Opal.defn(self, '$_reduce_423', TMP_Ruby23__reduce_423_304 = function $$_reduce_423(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_423_304.$$arity = 3); Opal.defn(self, '$_reduce_425', TMP_Ruby23__reduce_425_305 = function $$_reduce_425(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_425_305.$$arity = 3); Opal.defn(self, '$_reduce_430', TMP_Ruby23__reduce_430_306 = function $$_reduce_430(val, _values, result) { var self = this; result = self.builder.$string_compose(nil, val['$[]'](0), nil); return result; }, TMP_Ruby23__reduce_430_306.$$arity = 3); Opal.defn(self, '$_reduce_431', TMP_Ruby23__reduce_431_307 = function $$_reduce_431(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_431_307.$$arity = 3); Opal.defn(self, '$_reduce_432', TMP_Ruby23__reduce_432_308 = function $$_reduce_432(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_432_308.$$arity = 3); Opal.defn(self, '$_reduce_433', TMP_Ruby23__reduce_433_309 = function $$_reduce_433(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); Opal.defn(self, '$_reduce_434', TMP_Ruby23__reduce_434_310 = function $$_reduce_434(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); Opal.defn(self, '$_reduce_435', TMP_Ruby23__reduce_435_311 = function $$_reduce_435(val, _values, result) { var self = this; result = self.builder.$character(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_435_311.$$arity = 3); Opal.defn(self, '$_reduce_436', TMP_Ruby23__reduce_436_312 = function $$_reduce_436(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); Opal.defn(self, '$_reduce_437', TMP_Ruby23__reduce_437_313 = function $$_reduce_437(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); Opal.defn(self, '$_reduce_438', TMP_Ruby23__reduce_438_314 = function $$_reduce_438(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); Opal.defn(self, '$_reduce_439', TMP_Ruby23__reduce_439_315 = function $$_reduce_439(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_439_315.$$arity = 3); Opal.defn(self, '$_reduce_440', TMP_Ruby23__reduce_440_316 = function $$_reduce_440(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); return result; }, TMP_Ruby23__reduce_440_316.$$arity = 3); Opal.defn(self, '$_reduce_441', TMP_Ruby23__reduce_441_317 = function $$_reduce_441(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_441_317.$$arity = 3); Opal.defn(self, '$_reduce_442', TMP_Ruby23__reduce_442_318 = function $$_reduce_442(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_442_318.$$arity = 3); Opal.defn(self, '$_reduce_443', TMP_Ruby23__reduce_443_319 = function $$_reduce_443(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); Opal.defn(self, '$_reduce_444', TMP_Ruby23__reduce_444_320 = function $$_reduce_444(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_444_320.$$arity = 3); Opal.defn(self, '$_reduce_445', TMP_Ruby23__reduce_445_321 = function $$_reduce_445(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); return result; }, TMP_Ruby23__reduce_445_321.$$arity = 3); Opal.defn(self, '$_reduce_446', TMP_Ruby23__reduce_446_322 = function $$_reduce_446(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); Opal.defn(self, '$_reduce_447', TMP_Ruby23__reduce_447_323 = function $$_reduce_447(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); Opal.defn(self, '$_reduce_448', TMP_Ruby23__reduce_448_324 = function $$_reduce_448(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_448_324.$$arity = 3); Opal.defn(self, '$_reduce_449', TMP_Ruby23__reduce_449_325 = function $$_reduce_449(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$string_internal(val['$[]'](1))); return result; }, TMP_Ruby23__reduce_449_325.$$arity = 3); Opal.defn(self, '$_reduce_450', TMP_Ruby23__reduce_450_326 = function $$_reduce_450(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_450_326.$$arity = 3); Opal.defn(self, '$_reduce_451', TMP_Ruby23__reduce_451_327 = function $$_reduce_451(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](self.builder.$symbol_internal(val['$[]'](1))); return result; }, TMP_Ruby23__reduce_451_327.$$arity = 3); Opal.defn(self, '$_reduce_452', TMP_Ruby23__reduce_452_328 = function $$_reduce_452(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_452_328.$$arity = 3); Opal.defn(self, '$_reduce_453', TMP_Ruby23__reduce_453_329 = function $$_reduce_453(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_453_329.$$arity = 3); Opal.defn(self, '$_reduce_454', TMP_Ruby23__reduce_454_330 = function $$_reduce_454(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_454_330.$$arity = 3); Opal.defn(self, '$_reduce_455', TMP_Ruby23__reduce_455_331 = function $$_reduce_455(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_455_331.$$arity = 3); Opal.defn(self, '$_reduce_456', TMP_Ruby23__reduce_456_332 = function $$_reduce_456(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_456_332.$$arity = 3); Opal.defn(self, '$_reduce_457', TMP_Ruby23__reduce_457_333 = function $$_reduce_457(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, TMP_Ruby23__reduce_457_333.$$arity = 3); Opal.defn(self, '$_reduce_458', TMP_Ruby23__reduce_458_334 = function $$_reduce_458(val, _values, result) { var self = this; result = self.builder.$string_internal(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_458_334.$$arity = 3); Opal.defn(self, '$_reduce_459', TMP_Ruby23__reduce_459_335 = function $$_reduce_459(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_459_335.$$arity = 3); Opal.defn(self, '$_reduce_460', TMP_Ruby23__reduce_460_336 = function $$_reduce_460(val, _values, result) { var self = this; self.lexer.$cond().$push(false); self.lexer.$cmdarg().$push(false); return result; }, TMP_Ruby23__reduce_460_336.$$arity = 3); Opal.defn(self, '$_reduce_461', TMP_Ruby23__reduce_461_337 = function $$_reduce_461(val, _values, result) { var self = this; self.lexer.$cond().$lexpop(); self.lexer.$cmdarg().$lexpop(); result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); return result; }, TMP_Ruby23__reduce_461_337.$$arity = 3); Opal.defn(self, '$_reduce_462', TMP_Ruby23__reduce_462_338 = function $$_reduce_462(val, _values, result) { var self = this; result = self.builder.$gvar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_462_338.$$arity = 3); Opal.defn(self, '$_reduce_463', TMP_Ruby23__reduce_463_339 = function $$_reduce_463(val, _values, result) { var self = this; result = self.builder.$ivar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_463_339.$$arity = 3); Opal.defn(self, '$_reduce_464', TMP_Ruby23__reduce_464_340 = function $$_reduce_464(val, _values, result) { var self = this; result = self.builder.$cvar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_464_340.$$arity = 3); Opal.defn(self, '$_reduce_466', TMP_Ruby23__reduce_466_341 = function $$_reduce_466(val, _values, result) { var self = this; result = self.builder.$symbol(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_466_341.$$arity = 3); Opal.defn(self, '$_reduce_467', TMP_Ruby23__reduce_467_342 = function $$_reduce_467(val, _values, result) { var self = this; result = self.builder.$symbol_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, TMP_Ruby23__reduce_467_342.$$arity = 3); Opal.defn(self, '$_reduce_468', TMP_Ruby23__reduce_468_343 = function $$_reduce_468(val, _values, result) { var self = this; result = val['$[]'](0); return result; }, TMP_Ruby23__reduce_468_343.$$arity = 3); Opal.defn(self, '$_reduce_469', TMP_Ruby23__reduce_469_344 = function $$_reduce_469(val, _values, result) { var self = this; result = self.builder.$negate(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_469_344.$$arity = 3); Opal.defn(self, '$_reduce_470', TMP_Ruby23__reduce_470_345 = function $$_reduce_470(val, _values, result) { var self = this; result = self.builder.$integer(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_470_345.$$arity = 3); Opal.defn(self, '$_reduce_471', TMP_Ruby23__reduce_471_346 = function $$_reduce_471(val, _values, result) { var self = this; result = self.builder.$float(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_471_346.$$arity = 3); Opal.defn(self, '$_reduce_472', TMP_Ruby23__reduce_472_347 = function $$_reduce_472(val, _values, result) { var self = this; result = self.builder.$rational(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_472_347.$$arity = 3); Opal.defn(self, '$_reduce_473', TMP_Ruby23__reduce_473_348 = function $$_reduce_473(val, _values, result) { var self = this; result = self.builder.$complex(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_473_348.$$arity = 3); Opal.defn(self, '$_reduce_474', TMP_Ruby23__reduce_474_349 = function $$_reduce_474(val, _values, result) { var self = this; result = self.builder.$ident(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_474_349.$$arity = 3); Opal.defn(self, '$_reduce_475', TMP_Ruby23__reduce_475_350 = function $$_reduce_475(val, _values, result) { var self = this; result = self.builder.$ivar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_475_350.$$arity = 3); Opal.defn(self, '$_reduce_476', TMP_Ruby23__reduce_476_351 = function $$_reduce_476(val, _values, result) { var self = this; result = self.builder.$gvar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_476_351.$$arity = 3); Opal.defn(self, '$_reduce_477', TMP_Ruby23__reduce_477_352 = function $$_reduce_477(val, _values, result) { var self = this; result = self.builder.$const(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_477_352.$$arity = 3); Opal.defn(self, '$_reduce_478', TMP_Ruby23__reduce_478_353 = function $$_reduce_478(val, _values, result) { var self = this; result = self.builder.$cvar(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_478_353.$$arity = 3); Opal.defn(self, '$_reduce_479', TMP_Ruby23__reduce_479_354 = function $$_reduce_479(val, _values, result) { var self = this; result = self.builder.$nil(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_479_354.$$arity = 3); Opal.defn(self, '$_reduce_480', TMP_Ruby23__reduce_480_355 = function $$_reduce_480(val, _values, result) { var self = this; result = self.builder.$self(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_480_355.$$arity = 3); Opal.defn(self, '$_reduce_481', TMP_Ruby23__reduce_481_356 = function $$_reduce_481(val, _values, result) { var self = this; result = self.builder.$true(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_481_356.$$arity = 3); Opal.defn(self, '$_reduce_482', TMP_Ruby23__reduce_482_357 = function $$_reduce_482(val, _values, result) { var self = this; result = self.builder.$false(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_482_357.$$arity = 3); Opal.defn(self, '$_reduce_483', TMP_Ruby23__reduce_483_358 = function $$_reduce_483(val, _values, result) { var self = this; result = self.builder.$__FILE__(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_483_358.$$arity = 3); Opal.defn(self, '$_reduce_484', TMP_Ruby23__reduce_484_359 = function $$_reduce_484(val, _values, result) { var self = this; result = self.builder.$__LINE__(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_484_359.$$arity = 3); Opal.defn(self, '$_reduce_485', TMP_Ruby23__reduce_485_360 = function $$_reduce_485(val, _values, result) { var self = this; result = self.builder.$__ENCODING__(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_485_360.$$arity = 3); Opal.defn(self, '$_reduce_486', TMP_Ruby23__reduce_486_361 = function $$_reduce_486(val, _values, result) { var self = this; result = self.builder.$accessible(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_486_361.$$arity = 3); Opal.defn(self, '$_reduce_487', TMP_Ruby23__reduce_487_362 = function $$_reduce_487(val, _values, result) { var self = this; result = self.builder.$accessible(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_487_362.$$arity = 3); Opal.defn(self, '$_reduce_488', TMP_Ruby23__reduce_488_363 = function $$_reduce_488(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_488_363.$$arity = 3); Opal.defn(self, '$_reduce_489', TMP_Ruby23__reduce_489_364 = function $$_reduce_489(val, _values, result) { var self = this; result = self.builder.$assignable(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_489_364.$$arity = 3); Opal.defn(self, '$_reduce_490', TMP_Ruby23__reduce_490_365 = function $$_reduce_490(val, _values, result) { var self = this; result = self.builder.$nth_ref(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_490_365.$$arity = 3); Opal.defn(self, '$_reduce_491', TMP_Ruby23__reduce_491_366 = function $$_reduce_491(val, _values, result) { var self = this; result = self.builder.$back_ref(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_491_366.$$arity = 3); Opal.defn(self, '$_reduce_492', TMP_Ruby23__reduce_492_367 = function $$_reduce_492(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; }, TMP_Ruby23__reduce_492_367.$$arity = 3); Opal.defn(self, '$_reduce_493', TMP_Ruby23__reduce_493_368 = function $$_reduce_493(val, _values, result) { var self = this; result = [val['$[]'](0), val['$[]'](2)]; return result; }, TMP_Ruby23__reduce_493_368.$$arity = 3); Opal.defn(self, '$_reduce_494', TMP_Ruby23__reduce_494_369 = function $$_reduce_494(val, _values, result) { var self = this; result = nil; return result; }, TMP_Ruby23__reduce_494_369.$$arity = 3); Opal.defn(self, '$_reduce_495', TMP_Ruby23__reduce_495_370 = function $$_reduce_495(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; }, TMP_Ruby23__reduce_495_370.$$arity = 3); Opal.defn(self, '$_reduce_496', TMP_Ruby23__reduce_496_371 = function $$_reduce_496(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; }, TMP_Ruby23__reduce_496_371.$$arity = 3); Opal.defn(self, '$_reduce_497', TMP_Ruby23__reduce_497_372 = function $$_reduce_497(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; }, TMP_Ruby23__reduce_497_372.$$arity = 3); Opal.defn(self, '$_reduce_498', TMP_Ruby23__reduce_498_373 = function $$_reduce_498(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_498_373.$$arity = 3); Opal.defn(self, '$_reduce_499', TMP_Ruby23__reduce_499_374 = function $$_reduce_499(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_499_374.$$arity = 3); Opal.defn(self, '$_reduce_500', TMP_Ruby23__reduce_500_375 = function $$_reduce_500(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_500_375.$$arity = 3); Opal.defn(self, '$_reduce_501', TMP_Ruby23__reduce_501_376 = function $$_reduce_501(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_501_376.$$arity = 3); Opal.defn(self, '$_reduce_502', TMP_Ruby23__reduce_502_377 = function $$_reduce_502(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_502_377.$$arity = 3); Opal.defn(self, '$_reduce_503', TMP_Ruby23__reduce_503_378 = function $$_reduce_503(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_503_378.$$arity = 3); Opal.defn(self, '$_reduce_504', TMP_Ruby23__reduce_504_379 = function $$_reduce_504(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); Opal.defn(self, '$_reduce_505', TMP_Ruby23__reduce_505_380 = function $$_reduce_505(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); Opal.defn(self, '$_reduce_506', TMP_Ruby23__reduce_506_381 = function $$_reduce_506(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_506_381.$$arity = 3); Opal.defn(self, '$_reduce_507', TMP_Ruby23__reduce_507_382 = function $$_reduce_507(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); Opal.defn(self, '$_reduce_508', TMP_Ruby23__reduce_508_383 = function $$_reduce_508(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_508_383.$$arity = 3); Opal.defn(self, '$_reduce_509', TMP_Ruby23__reduce_509_384 = function $$_reduce_509(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); Opal.defn(self, '$_reduce_510', TMP_Ruby23__reduce_510_385 = function $$_reduce_510(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_510_385.$$arity = 3); Opal.defn(self, '$_reduce_511', TMP_Ruby23__reduce_511_386 = function $$_reduce_511(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_511_386.$$arity = 3); Opal.defn(self, '$_reduce_512', TMP_Ruby23__reduce_512_387 = function $$_reduce_512(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); Opal.defn(self, '$_reduce_513', TMP_Ruby23__reduce_513_388 = function $$_reduce_513(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_513_388.$$arity = 3); Opal.defn(self, '$_reduce_514', TMP_Ruby23__reduce_514_389 = function $$_reduce_514(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_514_389.$$arity = 3); Opal.defn(self, '$_reduce_515', TMP_Ruby23__reduce_515_390 = function $$_reduce_515(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, TMP_Ruby23__reduce_515_390.$$arity = 3); Opal.defn(self, '$_reduce_516', TMP_Ruby23__reduce_516_391 = function $$_reduce_516(val, _values, result) { var self = this; result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, TMP_Ruby23__reduce_516_391.$$arity = 3); Opal.defn(self, '$_reduce_517', TMP_Ruby23__reduce_517_392 = function $$_reduce_517(val, _values, result) { var self = this; result = val['$[]'](0); return result; }, TMP_Ruby23__reduce_517_392.$$arity = 3); Opal.defn(self, '$_reduce_518', TMP_Ruby23__reduce_518_393 = function $$_reduce_518(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_518_393.$$arity = 3); Opal.defn(self, '$_reduce_519', TMP_Ruby23__reduce_519_394 = function $$_reduce_519(val, _values, result) { var self = this; self.$diagnostic("error", "argument_const", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_519_394.$$arity = 3); Opal.defn(self, '$_reduce_520', TMP_Ruby23__reduce_520_395 = function $$_reduce_520(val, _values, result) { var self = this; self.$diagnostic("error", "argument_ivar", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_520_395.$$arity = 3); Opal.defn(self, '$_reduce_521', TMP_Ruby23__reduce_521_396 = function $$_reduce_521(val, _values, result) { var self = this; self.$diagnostic("error", "argument_gvar", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_521_396.$$arity = 3); Opal.defn(self, '$_reduce_522', TMP_Ruby23__reduce_522_397 = function $$_reduce_522(val, _values, result) { var self = this; self.$diagnostic("error", "argument_cvar", nil, val['$[]'](0)); return result; }, TMP_Ruby23__reduce_522_397.$$arity = 3); Opal.defn(self, '$_reduce_524', TMP_Ruby23__reduce_524_398 = function $$_reduce_524(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); Opal.defn(self, '$_reduce_525', TMP_Ruby23__reduce_525_399 = function $$_reduce_525(val, _values, result) { var self = this; result = val['$[]'](0); return result; }, TMP_Ruby23__reduce_525_399.$$arity = 3); Opal.defn(self, '$_reduce_526', TMP_Ruby23__reduce_526_400 = function $$_reduce_526(val, _values, result) { var self = this; result = self.builder.$arg(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_526_400.$$arity = 3); Opal.defn(self, '$_reduce_527', TMP_Ruby23__reduce_527_401 = function $$_reduce_527(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); Opal.defn(self, '$_reduce_528', TMP_Ruby23__reduce_528_402 = function $$_reduce_528(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_528_402.$$arity = 3); Opal.defn(self, '$_reduce_529', TMP_Ruby23__reduce_529_403 = function $$_reduce_529(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_529_403.$$arity = 3); Opal.defn(self, '$_reduce_530', TMP_Ruby23__reduce_530_404 = function $$_reduce_530(val, _values, result) { var self = this; self.$check_kwarg_name(val['$[]'](0)); self.static_env.$declare(val['$[]'](0)['$[]'](0)); result = val['$[]'](0); return result; }, TMP_Ruby23__reduce_530_404.$$arity = 3); Opal.defn(self, '$_reduce_531', TMP_Ruby23__reduce_531_405 = function $$_reduce_531(val, _values, result) { var self = this; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_531_405.$$arity = 3); Opal.defn(self, '$_reduce_532', TMP_Ruby23__reduce_532_406 = function $$_reduce_532(val, _values, result) { var self = this; result = self.builder.$kwarg(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_532_406.$$arity = 3); Opal.defn(self, '$_reduce_533', TMP_Ruby23__reduce_533_407 = function $$_reduce_533(val, _values, result) { var self = this; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_533_407.$$arity = 3); Opal.defn(self, '$_reduce_534', TMP_Ruby23__reduce_534_408 = function $$_reduce_534(val, _values, result) { var self = this; result = self.builder.$kwarg(val['$[]'](0)); return result; }, TMP_Ruby23__reduce_534_408.$$arity = 3); Opal.defn(self, '$_reduce_535', TMP_Ruby23__reduce_535_409 = function $$_reduce_535(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_535_409.$$arity = 3); Opal.defn(self, '$_reduce_536', TMP_Ruby23__reduce_536_410 = function $$_reduce_536(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_536_410.$$arity = 3); Opal.defn(self, '$_reduce_537', TMP_Ruby23__reduce_537_411 = function $$_reduce_537(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_537_411.$$arity = 3); Opal.defn(self, '$_reduce_538', TMP_Ruby23__reduce_538_412 = function $$_reduce_538(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_538_412.$$arity = 3); Opal.defn(self, '$_reduce_541', TMP_Ruby23__reduce_541_413 = function $$_reduce_541(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); Opal.defn(self, '$_reduce_542', TMP_Ruby23__reduce_542_414 = function $$_reduce_542(val, _values, result) { var self = this; result = [self.builder.$kwrestarg(val['$[]'](0))]; return result; }, TMP_Ruby23__reduce_542_414.$$arity = 3); Opal.defn(self, '$_reduce_543', TMP_Ruby23__reduce_543_415 = function $$_reduce_543(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); Opal.defn(self, '$_reduce_544', TMP_Ruby23__reduce_544_416 = function $$_reduce_544(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); Opal.defn(self, '$_reduce_545', TMP_Ruby23__reduce_545_417 = function $$_reduce_545(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_545_417.$$arity = 3); Opal.defn(self, '$_reduce_546', TMP_Ruby23__reduce_546_418 = function $$_reduce_546(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_546_418.$$arity = 3); Opal.defn(self, '$_reduce_547', TMP_Ruby23__reduce_547_419 = function $$_reduce_547(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_547_419.$$arity = 3); Opal.defn(self, '$_reduce_548', TMP_Ruby23__reduce_548_420 = function $$_reduce_548(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_548_420.$$arity = 3); Opal.defn(self, '$_reduce_551', TMP_Ruby23__reduce_551_421 = function $$_reduce_551(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); Opal.defn(self, '$_reduce_552', TMP_Ruby23__reduce_552_422 = function $$_reduce_552(val, _values, result) { var self = this; result = [self.builder.$restarg(val['$[]'](0))]; return result; }, TMP_Ruby23__reduce_552_422.$$arity = 3); Opal.defn(self, '$_reduce_555', TMP_Ruby23__reduce_555_423 = function $$_reduce_555(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); Opal.defn(self, '$_reduce_556', TMP_Ruby23__reduce_556_424 = function $$_reduce_556(val, _values, result) { var self = this; result = [val['$[]'](1)]; return result; }, TMP_Ruby23__reduce_556_424.$$arity = 3); Opal.defn(self, '$_reduce_557', TMP_Ruby23__reduce_557_425 = function $$_reduce_557(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_557_425.$$arity = 3); Opal.defn(self, '$_reduce_559', TMP_Ruby23__reduce_559_426 = function $$_reduce_559(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_559_426.$$arity = 3); Opal.defn(self, '$_reduce_560', TMP_Ruby23__reduce_560_427 = function $$_reduce_560(val, _values, result) { var self = this; result = []; return result; }, TMP_Ruby23__reduce_560_427.$$arity = 3); Opal.defn(self, '$_reduce_562', TMP_Ruby23__reduce_562_428 = function $$_reduce_562(val, _values, result) { var self = this; result = [val['$[]'](0)]; return result; }, TMP_Ruby23__reduce_562_428.$$arity = 3); Opal.defn(self, '$_reduce_563', TMP_Ruby23__reduce_563_429 = function $$_reduce_563(val, _values, result) { var self = this; result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, TMP_Ruby23__reduce_563_429.$$arity = 3); Opal.defn(self, '$_reduce_564', TMP_Ruby23__reduce_564_430 = function $$_reduce_564(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); Opal.defn(self, '$_reduce_565', TMP_Ruby23__reduce_565_431 = function $$_reduce_565(val, _values, result) { var self = this; result = self.builder.$pair_keyword(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_565_431.$$arity = 3); Opal.defn(self, '$_reduce_566', TMP_Ruby23__reduce_566_432 = function $$_reduce_566(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); Opal.defn(self, '$_reduce_567', TMP_Ruby23__reduce_567_433 = function $$_reduce_567(val, _values, result) { var self = this; result = self.builder.$kwsplat(val['$[]'](0), val['$[]'](1)); return result; }, TMP_Ruby23__reduce_567_433.$$arity = 3); Opal.defn(self, '$_reduce_580', TMP_Ruby23__reduce_580_434 = function $$_reduce_580(val, _values, result) { var self = this; result = ["dot", val['$[]'](0)['$[]'](1)]; return result; }, TMP_Ruby23__reduce_580_434.$$arity = 3); Opal.defn(self, '$_reduce_581', TMP_Ruby23__reduce_581_435 = function $$_reduce_581(val, _values, result) { var self = this; result = ["anddot", val['$[]'](0)['$[]'](1)]; return result; }, TMP_Ruby23__reduce_581_435.$$arity = 3); Opal.defn(self, '$_reduce_586', TMP_Ruby23__reduce_586_436 = function $$_reduce_586(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_586_436.$$arity = 3); Opal.defn(self, '$_reduce_587', TMP_Ruby23__reduce_587_437 = function $$_reduce_587(val, _values, result) { var self = this; result = val['$[]'](1); return result; }, TMP_Ruby23__reduce_587_437.$$arity = 3); Opal.defn(self, '$_reduce_591', TMP_Ruby23__reduce_591_438 = function $$_reduce_591(val, _values, result) { var self = this; self.$yyerrok(); return result; }, TMP_Ruby23__reduce_591_438.$$arity = 3); Opal.defn(self, '$_reduce_595', TMP_Ruby23__reduce_595_439 = function $$_reduce_595(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) { 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) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$new']); self.$require("opal/ast/node"); self.$require("parser/ruby23"); 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 $Builder(){}; var self = $Builder = $klass($base, $super, 'Builder', $Builder); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Builder_n_1; return (Opal.defn(self, '$n', TMP_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) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ Opal.modules["opal/rewriters/base"] = 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', '$new', '$nil?', '$include?', '$type', '$updated', '$s']); self.$require("parser"); self.$require("opal/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 $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); 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_s_1, TMP_Base_s_2, TMP_Base_prepend_to_body_3, TMP_Base_append_to_body_4; Opal.defn(self, '$s', TMP_Base_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_Base_s_1.$$arity = -2); Opal.defs(self, '$s', TMP_Base_s_2 = 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_Base_s_2.$$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.defn(self, '$prepend_to_body', TMP_Base_prepend_to_body_3 = function $$prepend_to_body(body, node) { var self = this; 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_3.$$arity = 2); return (Opal.defn(self, '$append_to_body', TMP_Base_append_to_body_4 = function $$append_to_body(body, 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) } }, TMP_Base_append_to_body_4.$$arity = 2), nil) && 'append_to_body'; })($nesting[0], Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified('::', 'Parser'), 'AST'), 'Processor'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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 $OpalEngineCheck(){}; var self = $OpalEngineCheck = $klass($base, $super, 'OpalEngineCheck', $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; Opal.defn(self, '$on_if', TMP_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])); }, TMP_OpalEngineCheck_on_if_1.$$arity = 1); Opal.defn(self, '$skip_check_present?', TMP_OpalEngineCheck_skip_check_present$q_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); Opal.defn(self, '$skip_check_present_not?', TMP_OpalEngineCheck_skip_check_present_not$q_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); 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) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$+', '$find', '$map', '$s', '$next_tmp', '$class', '$type', '$===', '$<<', '$prepend_to_body', '$private', '$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 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 $ForRewriter(){}; var self = $ForRewriter = $klass($base, $super, 'ForRewriter', $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; Opal.defs(self, '$reset_tmp_counter!', TMP_ForRewriter_reset_tmp_counter$B_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() { 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); }, TMP_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; $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)); 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)); }, TMP_ForRewriter_on_for_4.$$arity = 1); self.$private(); return (function($base, $super, $parent_nesting) { function $LocalVariableAssigns(){}; var self = $LocalVariableAssigns = $klass($base, $super, 'LocalVariableAssigns', $LocalVariableAssigns); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_LocalVariableAssigns_find_5, TMP_LocalVariableAssigns_initialize_6, TMP_LocalVariableAssigns_on_lvasgn_7; self.$attr_reader("result"); Opal.defs(self, '$find', TMP_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); Opal.defn(self, '$initialize', TMP_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; if ($iter) TMP_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]; } $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) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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 $ExplicitWriterReturn(){}; var self = $ExplicitWriterReturn = $klass($base, $super, 'ExplicitWriterReturn', $ExplicitWriterReturn); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ExplicitWriterReturn_initialize_1, TMP_ExplicitWriterReturn_on_send_2, TMP_ExplicitWriterReturn_on_masgn_3; def.in_masgn = nil; Opal.defn(self, '$initialize', TMP_ExplicitWriterReturn_initialize_1 = function $$initialize() { var self = this; return (self.in_masgn = false) }, TMP_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.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; if ($iter) TMP_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)}; $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()['$==']("[]=")))) { 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) }; }, 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; if ($iter) TMP_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); 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) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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 $JsReservedWords(){}; var self = $JsReservedWords = $klass($base, $super, 'JsReservedWords', $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; 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) { 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) { 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); Opal.defn(self, '$fix_var_name', TMP_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() } }, TMP_JsReservedWords_fix_var_name_3.$$arity = 1); Opal.defn(self, '$fix_ivar_name', TMP_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() } }, TMP_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; if ($iter) TMP_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); 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; if ($iter) TMP_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); 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; if ($iter) TMP_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); 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; if ($iter) TMP_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); Opal.defn(self, '$on_restarg', TMP_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; }, 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; if ($iter) TMP_JsReservedWords_on_argument_10.$$p = null; node = $send(self, Opal.find_super_dispatcher(self, 'on_argument', TMP_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})})); }, TMP_JsReservedWords_on_argument_10.$$arity = 1), nil) && 'on_argument'; })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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 $BlockToIter(){}; var self = $BlockToIter = $klass($base, $super, 'BlockToIter', $BlockToIter); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_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; if ($iter) TMP_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; 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) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$==', '$type', '$===', '$!=', '$size', '$raise', '$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 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 $DotJsSyntax(){}; var self = $DotJsSyntax = $klass($base, $super, 'DotJsSyntax', $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; 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; if ($iter) TMP_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]; } $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.$raise(Opal.const_get_relative($nesting, 'SyntaxError'), ".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")}; $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) }; } else { return $send(self, Opal.find_super_dispatcher(self, 'on_send', TMP_DotJsSyntax_on_send_1, false), $zuper, $iter) }; }, TMP_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) { var self = this; return $send(self, 's', ["jscall", recv, meth].concat(Opal.to_a(args))) }, TMP_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) { 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) { 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) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$+', '$lambda', '$updated', '$s', '$[]', '$==', '$type', '$new_temp', '$call', '$fetch', '$raise', '$process', '$include?']); self.$require("opal/rewriters/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 $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $LogicalOperatorAssignment(){}; var self = $LogicalOperatorAssignment = $klass($base, $super, 'LogicalOperatorAssignment', $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; Opal.defs(self, '$reset_tmp_counter!', TMP_LogicalOperatorAssignment_reset_tmp_counter$B_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() { 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; 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")); (function($base, $super, $parent_nesting) { function $SendHandler(){}; var self = $SendHandler = $klass($base, $super, 'SendHandler', $SendHandler); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SendHandler_call_5; return Opal.defs(self, '$call', TMP_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 }; }, TMP_SendHandler_call_5.$$arity = 3) })($nesting[0], self, $nesting); (function($base, $super, $parent_nesting) { function $ConditionalSendHandler(){}; var self = $ConditionalSendHandler = $klass($base, $super, 'ConditionalSendHandler', $ConditionalSendHandler); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConditionalSendHandler_call_6; return Opal.defs(self, '$call', TMP_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)); }, TMP_ConditionalSendHandler_call_6.$$arity = 3) })($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.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; $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; 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.$process(result); }, TMP_LogicalOperatorAssignment_on_or_asgn_8.$$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; $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; 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.$process(result); }, TMP_LogicalOperatorAssignment_on_and_asgn_10.$$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; if ($iter) TMP_LogicalOperatorAssignment_on_defined$q_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) }; }, TMP_LogicalOperatorAssignment_on_defined$q_11.$$arity = 1), nil) && 'on_defined?'; })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; Opal.add_stubs(['$require', '$+', '$lambda', '$updated', '$s', '$[]', '$==', '$type', '$new_temp', '$call', '$fetch', '$raise', '$process']); self.$require("opal/rewriters/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 $Rewriters, self = $Rewriters = $module($base, 'Rewriters'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $BinaryOperatorAssignment(){}; var self = $BinaryOperatorAssignment = $klass($base, $super, 'BinaryOperatorAssignment', $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; Opal.defs(self, '$reset_tmp_counter!', TMP_BinaryOperatorAssignment_reset_tmp_counter$B_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() { 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; 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")); (function($base, $super, $parent_nesting) { function $SendHandler(){}; var self = $SendHandler = $klass($base, $super, 'SendHandler', $SendHandler); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SendHandler_call_5; return Opal.defs(self, '$call', TMP_SendHandler_call_5 = function $$call(lhs, op, 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, op, 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 }; }, TMP_SendHandler_call_5.$$arity = 3) })($nesting[0], self, $nesting); (function($base, $super, $parent_nesting) { function $ConditionalSendHandler(){}; var self = $ConditionalSendHandler = $klass($base, $super, 'ConditionalSendHandler', $ConditionalSendHandler); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ConditionalSendHandler_call_6; return Opal.defs(self, '$call', TMP_ConditionalSendHandler_call_6 = function $$call(lhs, op, 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, op, 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) })($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.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; $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; 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.$process(result); }, TMP_BinaryOperatorAssignment_on_op_asgn_8.$$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; if ($iter) TMP_BinaryOperatorAssignment_on_defined$q_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) }; }, TMP_BinaryOperatorAssignment_on_defined$q_9.$$arity = 1), nil) && 'on_defined?'; })($nesting[0], Opal.const_get_relative($nesting, 'Base'), $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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, $parent_nesting) { var $Hashes, self = $Hashes = $module($base, 'Hashes'); var def = self.$$proto, $nesting = [self].concat($parent_nesting); (function($base, $super, $parent_nesting) { function $KeyDuplicatesRewriter(){}; var self = $KeyDuplicatesRewriter = $klass($base, $super, 'KeyDuplicatesRewriter', $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; def.keys = nil; Opal.defn(self, '$initialize', TMP_KeyDuplicatesRewriter_initialize_1 = function $$initialize() { var self = this; return (self.keys = Opal.const_get_relative($nesting, 'UniqKeysSet').$new()) }, TMP_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; if ($iter) TMP_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); } finally { (self.keys = previous_keys) }; })() }, TMP_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; if ($iter) TMP_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); Opal.defn(self, '$on_kwsplat', TMP_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]); }, TMP_KeyDuplicatesRewriter_on_kwsplat_4.$$arity = 1); return (function($base, $super, $parent_nesting) { function $UniqKeysSet(){}; var self = $UniqKeysSet = $klass($base, $super, 'UniqKeysSet', $UniqKeysSet); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UniqKeysSet_initialize_5, TMP_UniqKeysSet_$lt$lt_6; def.set = nil; Opal.defn(self, '$initialize', TMP_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) { 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 Opal.const_get_relative($nesting, 'Kernel').$warn("" + "warning: key " + (key) + " is duplicated and overwritten"); } else { return self.set['$<<'](element) } }, TMP_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], $nesting) })($nesting[0], $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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"); 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 $Rewriter(){}; var self = $Rewriter = $klass($base, $super, 'Rewriter', $Rewriter); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rewriter_initialize_6, TMP_Rewriter_process_8; def.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; Opal.defn(self, '$list', TMP_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); Opal.defn(self, '$use', TMP_use_2 = function $$use(rewriter) { var self = this; return self.$list()['$<<'](rewriter) }, TMP_use_2.$$arity = 1); Opal.defn(self, '$delete', TMP_delete_3 = function(rewriter) { var self = this; return self.$list().$delete(rewriter) }, TMP_delete_3.$$arity = 1); Opal.defn(self, '$disable', TMP_disable_4 = function $$disable() { var self = this, $iter = TMP_disable_4.$$p, $yield = $iter || nil; if ($iter) TMP_disable_4.$$p = null; return (function() { try { self.disabled = true; return Opal.yieldX($yield, []);; } finally { (self.disabled = false) }; })() }, TMP_disable_4.$$arity = 0); return (Opal.defn(self, '$disabled?', TMP_disabled$q_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 } }, TMP_disabled$q_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) { 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; 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; 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));}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7)); return self.sexp; }, TMP_Rewriter_process_8.$$arity = 0), nil) && 'process'; })($nesting[0], null, $nesting) })($nesting[0], $nesting); }; /* Generated by Opal 0.11.0 */ 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; 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 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; 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; if ($iter) TMP_Buffer_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); 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; (function(self, $parent_nesting) { var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_default_parser_2; 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; 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)];; $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")) { $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))]; $send(parser.$diagnostics(), 'consumer=', Opal.to_a($writer)); $writer[$rb_minus($writer["length"], 1)]; } else { nil }; return parser; }, TMP_default_parser_2.$$arity = 0), nil) && 'default_parser'; })(Opal.get_singleton_class(self), $nesting); $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; 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; 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; 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 0.11.0 */ 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; Opal.add_stubs(['$attr_reader', '$to_s', '$inspect', '$def?', '$find_parent_def', '$mid', '$line', '$column']); 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 $Fragment(){}; var self = $Fragment = $klass($base, $super, 'Fragment', $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; def.code = def.scope = def.sexp = nil; self.$attr_reader("code"); Opal.defn(self, '$initialize', TMP_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); Opal.defn(self, '$inspect', TMP_Fragment_inspect_2 = function $$inspect() { var self = this; return "" + "f(" + (self.code.$inspect()) + ")" }, TMP_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; 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); Opal.defn(self, '$line', TMP_Fragment_line_4 = function $$line() { var self = this; if ($truthy(self.sexp)) { return self.sexp.$line() } else { return nil } }, TMP_Fragment_line_4.$$arity = 0); return (Opal.defn(self, '$column', TMP_Fragment_column_5 = function $$column() { var self = this; if ($truthy(self.sexp)) { return self.sexp.$column() } else { return nil } }, TMP_Fragment_column_5.$$arity = 0), nil) && 'column'; })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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; 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 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, $parent_nesting) { var $Helpers, self = $Helpers = $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; Opal.defn(self, '$property', TMP_Helpers_property_1 = function $$property(name) { var self = this; if ($truthy(self['$valid_name?'](name))) { return "" + "." + (name) } else { return "" + "[" + (name.$inspect()) + "]" } }, TMP_Helpers_property_1.$$arity = 1); Opal.defn(self, '$valid_name?', TMP_Helpers_valid_name$q_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); Opal.defn(self, '$mid_to_jsid', TMP_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) } }, 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); 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); }; /* Generated by Opal 0.11.0 */ 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; // 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.$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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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['$==']("\u0000")) { 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); $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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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; 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); }; /* Generated by Opal 0.11.0 */ 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; 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; // 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([], {}); 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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', '$==', '$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 self = this, body_code = nil; body_code = (function() {if (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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); 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; // 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); 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; // 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); 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); }; /* Generated by Opal 0.11.0 */ 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.0") })($nesting[0], $nesting) }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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; // 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); 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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"); }; /* Generated by Opal 0.11.0 */ 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) }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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); }; /* Generated by Opal 0.11.0 */ 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 < len; i++) { tag = tags[i]; if (tag.type === "text/ruby") { if (tag.src) Opal.Kernel.$require_remote(tag.src); if (tag.innerHTML) Opal.Kernel.$eval(tag.innerHTML); } } } if (typeof(document) !== 'undefined') { if (window.addEventListener) { window.addEventListener('DOMContentLoaded', run_ruby_scripts, false); } else { window.attachEvent('onload', run_ruby_scripts); } } ; }; /* Generated by Opal 0.11.0 */ Opal.modules["pp"] = function(Opal) { 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, $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 def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_pretty_inspect_1, TMP_Kernel_pp_3; Opal.defn(self, '$pretty_inspect', TMP_Kernel_pretty_inspect_1 = function $$pretty_inspect() { var self = this; return self.$inspect() }, TMP_Kernel_pretty_inspect_1.$$arity = 0); Opal.defn(self, '$pp', TMP_Kernel_pp_3 = function $$pp($a_rest) { var TMP_2, self = this, objs; 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)); if ($truthy($rb_le(objs.$size(), 1))) { return objs.$first() } else { return objs }; }, TMP_Kernel_pp_3.$$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 def = self.$$proto, $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; if ($truthy((typeof(console) === "undefined" || typeof(console.log) === "undefined"))) { Opal.defn(self, '$pp', TMP_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 { Opal.defn(self, '$pp', TMP_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))) { return $rb_plus($rb_plus(out, obj.$inspect()), "\n") } else { return out['$<<']($rb_plus(obj.$inspect(), "\n")) } }, TMP_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.0 */ (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, TMP_require_remote_2, 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', '$eval', '$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"); Opal.defn(Opal.Object, '$require_remote', TMP_require_remote_2 = function $$require_remote(url) { var self = this; var r = new XMLHttpRequest(); r.overrideMimeType("text/plain"); // Patch for Firefox + file:// r.open("GET", url, false); r.send(''); ; return self.$eval(r.responseText); }, TMP_require_remote_2.$$arity = 1); self.$require("pp"); (function($base, $parent_nesting) { var $DXOpal, self = $DXOpal = $module($base, 'DXOpal'); var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DXOpal_dump_error_3, TMP_DXOpal_4, TMP_DXOpal_p__5; 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_3 = function $$dump_error() { var self = this, $iter = TMP_DXOpal_dump_error_3.$$p, block = $iter || nil, ex = nil, div = nil; if ($iter) TMP_DXOpal_dump_error_3.$$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'); // Note: ex.backtrace may be an Array or a String 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_3.$$arity = 0); Opal.const_set($nesting[0], 'P_CT', $send(Opal.const_get_relative($nesting, 'Hash'), 'new', [], (TMP_DXOpal_4 = function(h, k){var self = TMP_DXOpal_4.$$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_4.$$s = self, TMP_DXOpal_4.$$arity = 2, TMP_DXOpal_4))); Opal.defn(self, '$p_', TMP_DXOpal_p__5 = 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__5.$$arity = -2); })($nesting[0], $nesting); // Like `console.log`, but prints only limited times. // Example: // Opal.DXOpal.p_("player", player) (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] < n) { console.log(key, obj); P_CT[key] += 1; } }; })(); ; return self.$include(Opal.const_get_relative($nesting, 'DXOpal')); })(Opal);